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