Home | History | Annotate | Download | only in Export_Inc
      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