WL865E4-P  36.07.001
m2mb_sdio_slave.h
Go to the documentation of this file.
1 /*===============================================================================================*/
2 /* >>> Copyright (C) Telit Communications S.p.A. Italy All Rights Reserved. <<< */
30 /* Global declarations ==========================================================================*/
31 #ifndef M2MB_SLAVE_SDIO_API_H
32 #define M2MB_SLAVE_SDIO_API_H
33 
43 /*-----------------------------------------------------------------------------------------------*/
44 
49 /*-----------------------------------------------------------------------------------------------*/
50 
51 /* Global typedefs ==============================================================================*/
52 
53 #define M2MB_SLAVE_WRITE_DONE_EVT (0x00000001)
54 #define M2MB_SLAVE_INIT_DONE_EVT (0x00000002)
56 #define M2MB_SDIO_SLAVE_RECEIVE_BUFFER_COUNT (16)
57 #define M2MB_SDIO_SLAVE_RECEIVE_BUFFER_SIZE (1536)
59 #define M2MB_NUM_BUFFERS_PER_MBOX (16)
61 #define M2MB_SDIO_SLAVE_WRITE_BUFFER_SIZE (2048)
63 #define M2MB_MBOX_BLOCK_SIZE 256
64 #define M2MB_MBOX_MSG_HDR_SIZE (2)
65 #define M2MB_MBOX_PAYLOAD_MAX_SIZE (M2MB_SDIO_SLAVE_RECEIVE_BUFFER_SIZE-M2MB_MBOX_MSG_HDR_SIZE)
67 #ifdef M2MB_TX_MULTIPLE_ENQ_ENABLE
68 #define M2MB_SDIO_SLAVE_WRITE_BUFFER_MAX ((M2MB_SDIO_SLAVE_WRITE_BUFFER_SIZE/M2MB_SDIO_SLAVE_RECEIVE_BUFFER_SIZE)+1)
69 #else
70 #define M2MB_SDIO_SLAVE_WRITE_BUFFER_MAX (1)
71 #endif
72 
73 //#define M2MB_MBOX_MAX_TX_SIZE 1536
74 #define M2MB_MBOX_MAX_TX_SIZE 256
76 #define M2MB_SDIO_SLAVE_FLOW_CTRL_LOW_THRESHOLD 6
77 #define M2MB_SDIO_SLAVE_FLOW_CTRL_HIGH_THRESHOLD 9
79 #define M2MB_SDIO_SLAVE_MBOX_ID (0)
82 typedef struct M2MB_SLAVE_SDIO_WRITE_REQUEST_S {
86 
89 typedef struct M2MB_SLAVE_MBOX_MSG_S {
91  UINT8 buffer[2048];
93 
95 typedef struct M2M_SLAVE_SDIO_BUFFER_S {
104 
106 typedef struct M2MB_SLAVE_SDIO_S {
107 
113 
117 #ifdef M2MB_TX_MULTIPLE_ENQ_ENABLE
118  UINT8 tx_req_cnt;
119  UINT8 tx_done_cnt;
120 #endif
135 #if 1
136 
137 typedef enum {
142 #endif
143 
144 /* Global functions =============================================================================*/
145 /*-----------------------------------------------------------------------------------------------*/
195 /*-----------------------------------------------------------------------------------------------*/
197 /*-----------------------------------------------------------------------------------------------*/
251 /*-----------------------------------------------------------------------------------------------*/
309 /*-----------------------------------------------------------------------------------------------*/
374 /*-----------------------------------------------------------------------------------------------*/
440 void m2mb_slave_sdio_resume_recv(INT32 instance_id, INT32 mbox);
441 /*-----------------------------------------------------------------------------------------------*/
509 void m2mb_slave_sdio_pause_recv(INT32 instance_id, INT32 mbox);
510 /*-----------------------------------------------------------------------------------------------*/
578 void m2mb_slave_sdio_tx_credit_inc(INT32 instance_id, INT32 mbox);
579 /*-----------------------------------------------------------------------------------------------*/
649 void m2mb_slave_sdio_deinit(int instance_id, int mbox);
650 /*-----------------------------------------------------------------------------------------------*/
688 void m2mb_slave_sdio_post_init(UINT32 instance_id,INT32 mbox,
689  UINT32 block_size, UINT32 rxmsg_size,void *pResetCb);
690 /*-----------------------------------------------------------------------------------------------*/
691 
699 
700 /*-----------------------------------------------------------------------------------------------*/
803 INT32 m2mb_slave_sdio_pre_init(UINT32 instance_id,INT32 mbox, UINT32 rx_buf_size,
804  void *pInitCb,void *pSendCb,void *pRecvCb, void *pContext);
808 /*-----------------------------------------------------------------------------------------------*/
809 
810 /*-----------------------------------------------------------------------------------------------*/
811 #endif /* M2MB_SLAVE_SDIO_API_H */
unsigned char UINT8
Definition: m2mb_types.h:83
M2MB_SLAVE_SDIO_BUFFER_T tx_buf_info[M2MB_SDIO_SLAVE_WRITE_BUFFER_MAX]
struct M2MB_SLAVE_SDIO_S M2MB_SLAVE_SDIO_T
#define M2MB_SDIO_SLAVE_RECEIVE_BUFFER_SIZE
INT32 m2m_slave_sdio_is_initialized(void)
mobox initialisation
struct M2MB_SLAVE_MBOX_MSG_S M2MB_SLAVE_MBOX_MSG_T
void m2mb_slave_sdio_post_init(UINT32 instance_id, INT32 mbox, UINT32 block_size, UINT32 rxmsg_size, void *pResetCb)
additional initialisation needed for mbox
void m2mb_slave_sdio_pause_recv(INT32 instance_id, INT32 mbox)
sends rx pause indication to host
INT32 m2mb_slave_sdio_pre_init(UINT32 instance_id, INT32 mbox, UINT32 rx_buf_size, void *pInitCb, void *pSendCb, void *pRecvCb, void *pContext)
mobox initialisation
qapi_HTC_Instance_id_t
struct M2MB_SLAVE_SDIO_WRITE_REQUEST_S M2MB_SLAVE_SDIO_WRITE_REQUEST_T
M2MB_OS_EV_HANDLE ev_tx_handle
M2MB_OS_SEM_HANDLE sem_handle
#define M2MB_SDIO_SLAVE_WRITE_BUFFER_MAX
M2MB_OS_EV_HANDLE ev_init_handle
M2MB_SLAVE_SDIO_WRITE_REQUEST_T write_req
INT32 m2mb_slave_sdio_recv_buflist_enqueue(INT32 instance_id, INT32 mbox, M2MB_SLAVE_SDIO_BUFFER_T *bufinfo)
enques recieve buffer.
unsigned short UINT16
Definition: m2mb_types.h:84
void m2mb_slave_sdio_tx_credit_inc(INT32 instance_id, INT32 mbox)
Increments the Host Tx credit counter registers.
unsigned long int UINT32
Definition: m2mb_types.h:85
char CHAR
Definition: m2mb_types.h:74
HANDLE M2MB_OS_SEM_HANDLE
Definition: m2mb_os_sem.h:92
INT32 m2mb_slave_sdio_send_buflist_enqueue(INT32 instance_id, INT32 mbox, M2MB_SLAVE_SDIO_BUFFER_T *bufinfo)
enques tx buffer.
CHAR rx_buffer[M2MB_SDIO_SLAVE_RECEIVE_BUFFER_COUNT][M2MB_SDIO_SLAVE_RECEIVE_BUFFER_SIZE]
INT32 m2mb_slave_sdio_send_buflist_dequeue(INT32 instance_id, INT32 mbox, M2MB_SLAVE_SDIO_BUFFER_T **pbufinfo)
deques a list of completed send buffers.
INT32 m2mb_slave_sdio_recv_buflist_dequeue(INT32 instance_id, INT32 mbox, M2MB_SLAVE_SDIO_BUFFER_T **pbufinfo)
deques a list of completed receive buffers.
void m2mb_slave_sdio_deinit(int instance_id, int mbox)
stops mbox h/w and deallocates dma resources
signed int INT32
Definition: m2mb_types.h:80
M2MB_SLAVE_SDIO_BUFFER_T rx_buf_info[M2MB_SDIO_SLAVE_RECEIVE_BUFFER_COUNT]
void m2mb_slave_sdio_resume_recv(INT32 instance_id, INT32 mbox)
sends rx resume indication to host
struct M2M_SLAVE_SDIO_BUFFER_S M2MB_SLAVE_SDIO_BUFFER_T
struct M2M_SLAVE_SDIO_BUFFER_S * next
HANDLE M2MB_OS_EV_HANDLE
Definition: m2mb_os_ev.h:103
UINT8 tx_buffer[M2MB_SDIO_SLAVE_WRITE_BUFFER_MAX][2048]
#define M2MB_SDIO_SLAVE_RECEIVE_BUFFER_COUNT