• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /** \file GWSI_Synchronizer.h
2  *  \brief GWSI Synchronizer include file
3  *
4  *  \see GWSI_Synchronizer.c
5  */
6 /****************************************************************************
7 **+-----------------------------------------------------------------------+**
8 **|                                                                       |**
9 **| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved.      |**
10 **| All rights reserved.                                                  |**
11 **|                                                                       |**
12 **| Redistribution and use in source and binary forms, with or without    |**
13 **| modification, are permitted provided that the following conditions    |**
14 **| are met:                                                              |**
15 **|                                                                       |**
16 **|  * Redistributions of source code must retain the above copyright     |**
17 **|    notice, this list of conditions and the following disclaimer.      |**
18 **|  * Redistributions in binary form must reproduce the above copyright  |**
19 **|    notice, this list of conditions and the following disclaimer in    |**
20 **|    the documentation and/or other materials provided with the         |**
21 **|    distribution.                                                      |**
22 **|  * Neither the name Texas Instruments nor the names of its            |**
23 **|    contributors may be used to endorse or promote products derived    |**
24 **|    from this software without specific prior written permission.      |**
25 **|                                                                       |**
26 **| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |**
27 **| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |**
28 **| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |**
29 **| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |**
30 **| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |**
31 **| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |**
32 **| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |**
33 **| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |**
34 **| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |**
35 **| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |**
36 **| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |**
37 **|                                                                       |**
38 **+-----------------------------------------------------------------------+**
39 ****************************************************************************/
40 
41 /***************************************************************************/
42 /*                                                                         */
43 /*    MODULE:   TNETWIF.h                                                  */
44 /*    PURPOSE:  TNETWIF api file                                            */
45 /*                                                                         */
46 /***************************************************************************/
47 
48 #ifndef TNETWIF_H
49 #define TNETWIF_H
50 
51 #include "commonTypes.h"
52 #include "TNETW_Driver_types.h"
53 
54 
55 /* Modules ID's */
56 enum
57 {
58     DEFAULT_MODULE_ID = 0,
59     TX_XFER_MODULE_ID,
60     HAL_RX_MODULE_ID,
61     HAL_INT_MODULE_ID,
62     HAL_CMD_MODULE_ID,
63     FW_EVENT_MODULE_ID,
64     HAL_INIT_MODULE_ID,
65 
66     NUM_OF_TNETWIF_MODULES,
67     TNETWIF_LAST_MODULE_ID = NUM_OF_TNETWIF_MODULES - 1
68 };
69 
70 
71 typedef enum
72 {
73     HW_ACCESS_DOWNLOAD,
74     HW_ACCESS_WORKING,
75 
76 } TNETIF_HwAccess_SetPartition_mode_e;
77 
78 
79 /*
80  * Defines a TNETWIF read/write field with padding.
81  * A low level driver may use this padding internally
82  */
83 #if defined(HW_ACCESS_WSPI)
84 #define PADDING(field) \
85     UINT8 padding [TNETWIF_READ_OFFSET_BYTES]; \
86     field;
87 #else
88 #define PADDING(field) field;
89 #endif
90 /*
91  * A pointer to the read offset of the padded field
92  */
93 #define PADREAD(field_ptr) \
94    (((UINT8*)field_ptr) - TNETWIF_READ_OFFSET_BYTES)
95 
96 /*
97  * A pointer to the write offset of the padded field
98  */
99 #define PADWRITE(field_ptr) \
100    (((UINT8*)field_ptr) - TNETWIF_WRITE_OFFSET_BYTES)
101 
102 
103 typedef void (*TNETWIF_callback_t)(TI_HANDLE CB_Handle, UINT8 module_id, TI_STATUS status);
104 
105 /**************************** TNETWIF_CB ********************************/
106 /****************************************************************************/
107 typedef struct T_TNETWIF_CB
108 {
109     TI_HANDLE           hOs;
110     TI_HANDLE           hReport;
111     TI_HANDLE           hTNETWArb;
112     TI_HANDLE           hHwAccess;
113     TI_HANDLE           hELPCtrl;
114     UINT32              uInitStage;
115     UINT32              uRegBaseAddr;
116     UINT32              uMemBaseAddr;
117     TNETWIF_callback_t  fCb;
118     TI_HANDLE           hCb;
119     TI_STATUS           status;
120 } TNETWIF_t;
121 
122 
123 /* API for external module in charge of creating the gwsi_synchronizer initialization */
124 TI_HANDLE TNETWIF_Create              (TI_HANDLE hOs);
125 TI_STATUS TNETWIF_Config              (TI_HANDLE hTNETWIF, TI_HANDLE hReport, UINT32 uRegBaseAddr, UINT32 uMemBaseAddr, TNETWIF_callback_t fCb, TI_HANDLE hCb);
126 TI_STATUS TNETWIF_Destroy             (TI_HANDLE hTNETWIF);
127 
128 /************************************************************************
129  API for the recovery
130 ************************************************************************/
131 TI_STATUS TNETWIF_ReConfig            (TI_HANDLE hTNETWIF);
132 
133 /************************************************************************
134  API for the OS (PALAU) to handle the running module's Callbacks.
135 ************************************************************************/
136 void      TNETWIF_BusTxn_Complete     (TI_HANDLE hTNETWIF);
137 
138 /************************************************************************
139  API for the Client to send an event to the Synchronizer : It can be :
140             EV_REG_ID (PERFORM_IMMEDIATE or start time for future use)
141             EV_FINISH_ID (To be called by the client when if finishes its State Machine
142 ************************************************************************/
143 TI_STATUS TNETWIF_Start               (TI_HANDLE hTNETWIF, UINT8 module_id, TI_HANDLE CB_Handle,TNETWIF_callback_t CallBack_Func);
144 TI_STATUS TNETWIF_Restart             (TI_HANDLE hTNETWIF, UINT8 module_id, TI_HANDLE CB_Handle,TNETWIF_callback_t CallBack_Func);
145 TI_STATUS TNETWIF_Finish              (TI_HANDLE hTNETWIF, UINT8 module_id, TI_HANDLE CB_Handle,TNETWIF_callback_t CallBack_Func);
146 
147 /************************************************************************
148  API for the Client to use the ElpCtrl
149 ************************************************************************/
150 int TNETWIF_ElpCtrl_Mode              (TI_HANDLE hTNETWIF, elpCtrl_Mode_e mode);
151 int TNETWIF_ElpCtrl_HostIF_required   (TI_HANDLE hTNETWIF, int flag);
152 TI_STATUS TNETWIF_UnMux (TI_HANDLE hTNETWIF);
153 
154 /************************************************************************
155  API for the Client to do I/O operations write/read Memory/Register
156 ************************************************************************/
157 TI_STATUS   TNETWIF_SetPartitionsOpt  (TI_HANDLE hTNETWIF, TNETIF_HwAccess_SetPartition_mode_e partitionMode, UINT32 partition_start, UINT8 module_id, TNETWIF_callback_t CBFunc, TI_HANDLE CB_Handle);
158 void TNETWIF_RegisterFailureEventCB   (TI_HANDLE hTNETWIF, void *failureEventCB, TI_HANDLE hFailureEventObj );
159 void TNETWIF_RegisterBusFailureEventCB(TI_HANDLE hTNETWIF, void *failureEventCB, TI_HANDLE hFailureEventObj );
160 void TNETWIF_RegisterFailureEventCB   (TI_HANDLE hTNETWIF, void *failureEventCB, TI_HANDLE hFailureEventObj);
161 
162 /************************************************************************
163  Optimized IO mode : In this mode the SDIO/SPI Driver will decide with its inner thresholds if to make a DMA or not
164 ************************************************************************/
165 TI_STATUS   TNETWIF_ReadMemOpt        (TI_HANDLE hTNETWIF, UINT32 addr, UINT8* data, UINT32 len, UINT8 module_id, TNETWIF_callback_t CBFunc, TI_HANDLE CB_Handle);
166 TI_STATUS   TNETWIF_WriteMemOpt       (TI_HANDLE hTNETWIF, UINT32 addr, UINT8* data, UINT32 len, UINT8 module_id, TNETWIF_callback_t CBFunc, TI_HANDLE CB_Handle);
167 TI_STATUS   TNETWIF_ReadRegOpt        (TI_HANDLE hTNETWIF, UINT32 addr, UINT32* data,            UINT8 module_id, TNETWIF_callback_t CBFunc, TI_HANDLE CB_Handle);
168 TI_STATUS   TNETWIF_WriteRegOpt       (TI_HANDLE hTNETWIF, UINT32 addr, UINT32 data,             UINT8 module_id, TNETWIF_callback_t CBFunc, TI_HANDLE CB_Handle);
169 TI_STATUS   TNETWIF_WriteELPOpt       (TI_HANDLE hTNETWIF,              UINT32 data,             UINT8 module_id, TNETWIF_callback_t CBFunc, TI_HANDLE CB_Handle, BOOL bMore);
170 TI_STATUS   TNETWIF_ReadELPOpt        (TI_HANDLE hTNETWIF,              UINT8 *data, UINT8 module_id, TNETWIF_callback_t fCb, TI_HANDLE hCb, BOOL bMore);
171 
172 #ifdef USE_SYNC_API
173 
174 TI_STATUS   TNETWIF_SetPartitions     (TI_HANDLE hTNETWIF, TNETIF_HwAccess_SetPartition_mode_e partitionMode, UINT32 partition_start);
175 
176 /************************************************************************
177  Synchronous IO mode
178 ************************************************************************/
179 TI_STATUS   TNETWIF_ReadMemSync       (TI_HANDLE hTNETWIF, UINT32 addr, UINT8* data, UINT32 len);
180 TI_STATUS   TNETWIF_WriteMemSync      (TI_HANDLE hTNETWIF, UINT32 addr, UINT8* data, UINT32 len);
181 TI_STATUS   TNETWIF_ReadRegSync       (TI_HANDLE hTNETWIF, UINT32 addr, UINT32* data);
182 TI_STATUS   TNETWIF_WriteRegSync      (TI_HANDLE hTNETWIF, UINT32 addr, UINT32 data);
183 TI_STATUS   TNETWIF_WriteELPSync      (TI_HANDLE hTNETWIF,              UINT32 data);
184 
185 /*
186  * Hardware memory API
187  */
188 UINT8       TNETWIF_GetU08            (TI_HANDLE hTNETWIF, UINT32 addr);
189 void        TNETWIF_SetU08            (TI_HANDLE hTNETWIF, UINT32 addr, UINT8  Val);
190 void        TNETWIF_SetU08_Bits       (TI_HANDLE hTNETWIF, UINT32 addr, UINT8  BitsVal);
191 void        TNETWIF_ResetU08_Bits     (TI_HANDLE hTNETWIF, UINT32 addr, UINT8  BitsVal);
192 UINT16      TNETWIF_GetU16            (TI_HANDLE hTNETWIF, UINT32 addr);
193 void        TNETWIF_SetU16            (TI_HANDLE hTNETWIF, UINT32 addr, UINT16 Val);
194 void        TNETWIF_SetU16_Bits       (TI_HANDLE hTNETWIF, UINT32 addr, UINT16 BitsVal);
195 void        TNETWIF_ResetU16_Bits     (TI_HANDLE hTNETWIF, UINT32 addr, UINT16 BitsVal);
196 UINT32      TNETWIF_GetU32            (TI_HANDLE hTNETWIF, UINT32 addr);
197 void        TNETWIF_SetU32            (TI_HANDLE hTNETWIF, UINT32 addr, UINT32 Val);
198 void        TNETWIF_SetU32_Bits       (TI_HANDLE hTNETWIF, UINT32 addr, UINT32 BitsVal);
199 void        TNETWIF_ResetU32_Bits     (TI_HANDLE hTNETWIF, UINT32 addr, UINT32 BitsVal);
200 
201 /*
202  * Hardware Registers API
203  */
204 void        TNETWIF_RegSetBitVal      (TI_HANDLE hTNETWIF, UINT32 addr, UINT32 BitVal);
205 void        TNETWIF_RegResetBitVal    (TI_HANDLE hTNETWIF, UINT32 addr, UINT32 BitVal);
206 int         TNETWIF_RegIsBitSet       (TI_HANDLE hTNETWIF, UINT32 addr, UINT32 BitVal);
207 
208 #endif /* USE_SYNC_API */
209 
210 char* TNETWIF_ModuleIdToString(UINT32 module_id);
211 void  TNETWIF_printErrorLog(void);
212 
213 #endif /* TNETWIF_H */
214 
215