blob: 496d6edc8397830f7521b7514a96a0b900d1a46f [file] [log] [blame]
/*
* This software program is licensed subject to the GNU General Public License
* (GPL).Version 2,June 1991, available at http://www.fsf.org/copyleft/gpl.html
* (C) Copyright 2012 Marvell International Ltd.
* All Rights Reserved
*/
#ifndef _PXA9XX_AMIPC_H_
#define _PXA9XX_AMIPC_H_
#define DEFAULT_TIMEOUT (100)
/* user level ioctl commands for accessing APIs */
#define AMIPC_IOC_MAGIC 0xD2
#define AMIPC_SET_EVENT _IO(AMIPC_IOC_MAGIC, 0)
#define AMIPC_GET_EVENT _IO(AMIPC_IOC_MAGIC, 1)
#define AMIPC_SEND_DATA _IO(AMIPC_IOC_MAGIC, 2)
#define AMIPC_READ_DATA _IO(AMIPC_IOC_MAGIC, 3)
#define AMIPC_BIND_EVENT _IO(AMIPC_IOC_MAGIC, 4)
#define AMIPC_UNBIND_EVENT _IO(AMIPC_IOC_MAGIC, 5)
#define AMIPC_IPC_CRL _IO(AMIPC_IOC_MAGIC, 6)
#define AMIPC_IPC_MSG_GET _IO(AMIPC_IOC_MAGIC, 7)
#define AMIPC_TEST_CRL _IO(AMIPC_IOC_MAGIC, 8)
/* TEST CRL */
#define TEST_CRL_CLR (1)
#define TEST_CRL_SET_TX (2)
#define TEST_CRL_SET_RX (3)
#define TEST_CRL_GEN_IRQ (4)
/* ACQ related */
#define AMIPC_ACQ_GET_MEM (0xF0000000)
#define AMIPC_ACQ_REL_MEM (0xF0000001)
#define AMIPC_ACQ_CACHE_FLUSH (0xF0000002)
#define AMIPC_ACQ_SET_TO_DMACHAIN (0xF0000003)
#define AMIPC_ACQ_CLR_DMACHAIN (0xF0000004)
typedef u32(*amipc_rec_event_callback) (u32 events_status);
enum amipc_events {
AMIPC_SHM_PACKET_NOTIFY = 0x00000001,
AMIPC_RINGBUF_FC = 0x00000002,
AMIPC_ACQ_COMMAND = 0x00000003,
AMIPC_LL_PING = 0x00000004,
AMIPC_EVENT_LAST = AMIPC_LL_PING,
};
enum amipc_return_code {
AMIPC_RC_OK = 0,
AMIPC_EVENT_ALREADY_BIND,
AMIPC_RC_FAILURE,
AMIPC_RC_TIMEOUT,
AMIPC_RC_AGAIN
};
#ifdef AMIPC_DEBUG
#define IPCTRACE(format, args...) \
pr_info(format, ## args)
#define IPC_ENTER() \
pr_info("IPC: ENTER %s\n", __func__)
#define IPC_LEAVE() \
pr_info("IPC: LEAVE %s\n", __func__)
#else
#define IPCTRACE(s...) do {} while (0)
#define IPC_ENTER() do {} while (0)
#define IPC_LEAVE() do {} while (0)
#endif
struct amipc_ioctl_arg {
enum amipc_events event;
u32 data1, data2;
u32 more_msgs;
};
/* declared the export APIs for TD telephony */
extern enum amipc_return_code amipc_setbase(phys_addr_t base_addr, int len);
extern enum amipc_return_code amipc_eventbind(u32 user_event,
amipc_rec_event_callback cb);
extern enum amipc_return_code amipc_eventunbind(u32 user_event);
extern enum amipc_return_code amipc_eventset(enum amipc_events user_event,
int timeout_ms);
extern enum amipc_return_code amipc_datasend(enum amipc_events user_event,
u32 data1, u32 data2, int timeout_ms);
extern enum amipc_return_code amipc_dataread(enum amipc_events user_event,
u32 *data1, u32 *data2);
extern enum amipc_return_code amipc_dump_debug_info(void);
#endif /* _PXA9XX_AMIPC_H_ */