Home | History | Annotate | Download | only in TNETWIF
      1 /****************************************************************************
      2 **+-----------------------------------------------------------------------+**
      3 **|                                                                       |**
      4 **| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved.      |**
      5 **| All rights reserved.                                                  |**
      6 **|                                                                       |**
      7 **| Redistribution and use in source and binary forms, with or without    |**
      8 **| modification, are permitted provided that the following conditions    |**
      9 **| are met:                                                              |**
     10 **|                                                                       |**
     11 **|  * Redistributions of source code must retain the above copyright     |**
     12 **|    notice, this list of conditions and the following disclaimer.      |**
     13 **|  * Redistributions in binary form must reproduce the above copyright  |**
     14 **|    notice, this list of conditions and the following disclaimer in    |**
     15 **|    the documentation and/or other materials provided with the         |**
     16 **|    distribution.                                                      |**
     17 **|  * Neither the name Texas Instruments nor the names of its            |**
     18 **|    contributors may be used to endorse or promote products derived    |**
     19 **|    from this software without specific prior written permission.      |**
     20 **|                                                                       |**
     21 **| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |**
     22 **| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |**
     23 **| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |**
     24 **| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |**
     25 **| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |**
     26 **| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |**
     27 **| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |**
     28 **| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |**
     29 **| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |**
     30 **| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |**
     31 **| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |**
     32 **|                                                                       |**
     33 **+-----------------------------------------------------------------------+**
     34 ****************************************************************************/
     35 
     36 /****************************************************************************
     37  *
     38  *   MODULE:  GWSI_Synchronizer.c
     39  *   PURPOSE: GWSI Synchronizer used to synchronize between the CMD,INT,TX
     40  *
     41  ****************************************************************************/
     42 
     43 #include "commonTypes.h"
     44 #include "report.h"
     45 #include "osApi.h"
     46 /* Need tthe TNETWARB API Function to create and confit it */
     47 #include "TNETWArb.h"
     48 #include "TNETWIF.h"
     49 /* Need the HwAcess API Function to create and confit it */
     50 #include "whalHwAccess.h"
     51 /* Need the ELP Control API Function to create and confit it */
     52 #include "ElpCtrl.h"
     53 
     54 /*
     55  * Special debug mode to trace all calls to TNETWIF_XXX
     56  */
     57 #ifdef TNETWIF_DEBUG
     58 
     59 typedef enum
     60 {
     61 	No_FUNC,
     62 	Start_FUNC,
     63 	Restart_FUNC,
     64 	Finish_FUNC,
     65 	WriteMem_FUNC,
     66 	ReadMem_FUNC,
     67 	WriteReg_FUNC,
     68 	ReadReg_FUNC,
     69 	WriteElp_FUNC,
     70 	ReadElp_FUNC,
     71 	BusComplete_FUNC,
     72 	UnMux_FUNC
     73 } ETNETIF_Functions;
     74 
     75 typedef struct
     76 {
     77 	UINT32				uData;
     78 	UINT32				uModule;
     79 	UINT32				uTS;
     80 	ETNETIF_Functions	eFunc;
     81 
     82 } TTNETWIF_DEBUG;
     83 
     84 /* Should be the max value of uDebugCounter */
     85 #define TNETWIF_SIZE_OF_DEBUG_ARRAY 256
     86 
     87 /* Global variables for debug */
     88 UINT8				uDebugCounter ;
     89 TTNETWIF_DEBUG		tDebug[TNETWIF_SIZE_OF_DEBUG_ARRAY];
     90 
     91 #define TNETWIF_TRACE(hOs,func,module,data) \
     92 		tDebug[uDebugCounter].uData   = (UINT32)(data); \
     93 		tDebug[uDebugCounter].uModule = module; \
     94 		tDebug[uDebugCounter].uTS     = os_timeStampUs(hOs); \
     95 		tDebug[uDebugCounter].eFunc   = func; \
     96 		uDebugCounter++;
     97 
     98 /****************************************************************************
     99 *                      TNETWIF_FuncEnumdToString()
    100 *****************************************************************************/
    101 char* TNETWIF_FuncEnumToString(ETNETIF_Functions eFunc)
    102 {
    103 	switch (eFunc)
    104 	{
    105 	case No_FUNC:			return "(No_FUNC)           ";
    106 	case Start_FUNC:		return "(Start_FUNC)        ";
    107 	case Restart_FUNC:		return "(Restart_FUNC)      ";
    108 	case Finish_FUNC:		return "(Finish_FUNC)       ";
    109 	case WriteMem_FUNC:		return "(WriteMem_FUNC)     ";
    110 	case ReadMem_FUNC:		return "(ReadMem_FUNC)      ";
    111 	case WriteReg_FUNC:		return "(WriteReg_FUNC)     ";
    112 	case ReadReg_FUNC:		return "(ReadReg_FUNC)      ";
    113 	case WriteElp_FUNC:		return "(WriteElp_FUNC)     ";
    114 	case ReadElp_FUNC:		return "(ReadElp_FUNC)      ";
    115 	case BusComplete_FUNC:  return "(BusComplete_FUNC)  ";
    116 	case UnMux_FUNC:		return "(UnMux_FUNC)        ";
    117 	default :
    118 		return " No_FUNC???)";
    119 	}
    120 }
    121 /****************************************************************************
    122 *                      TNETWIF_printErrorLog()
    123 *****************************************************************************/
    124 void TNETWIF_printErrorLog(void)
    125 {
    126 	int i;
    127 	WLAN_OS_REPORT(("\n%s\n",__FUNCTION__));
    128 	WLAN_OS_REPORT(("Counter at %d (i.e. last operation is %d)\n",uDebugCounter,uDebugCounter-1));
    129 	for ( i = 0  ; i < TNETWIF_SIZE_OF_DEBUG_ARRAY ; i++)
    130 	{
    131 		WLAN_OS_REPORT(("%03d %s: %s TS(Diff) = %07d data = 0x%x\n",i,
    132 			TNETWIF_FuncEnumToString(tDebug[i].eFunc),
    133 			TNETWIF_ModuleIdToString(tDebug[i].uModule),
    134 			tDebug[i].uTS - tDebug[(UINT8)(i-1)].uTS,
    135 			tDebug[i].uData));
    136 	}
    137 }
    138 
    139 #else /* TNETWIF_DEBUG */
    140 
    141 #define TNETWIF_TRACE(hOs,func,module_id,data)
    142 void TNETWIF_printErrorLog(void) { WLAN_OS_REPORT(("%s define TNETWIF_DEBUG to debug error\n",__FUNCTION__)); }
    143 
    144 #endif
    145 
    146 extern void os_TNETWIF_BusTxn_Complete(TI_HANDLE OsContext,int status);
    147 
    148 
    149 /***********************************************************************************
    150  Internal TNETWIF function use
    151 
    152 
    153 
    154 **************************************************************************************/
    155 /****************************************************************************/
    156 /*                      TNETWIF_Create()
    157  ****************************************************************************
    158  * DESCRIPTION: Request The Bus
    159  *
    160  * INPUTS:
    161  *
    162  * OUTPUT:  String the name of the Queue
    163  *
    164  * RETURNS:
    165  ****************************************************************************/
    166 TI_HANDLE TNETWIF_Create (TI_HANDLE hOs)
    167 {
    168     TNETWIF_t *pTNETWIF;
    169 
    170     /* Allocate the TNETWIF module */
    171     pTNETWIF = os_memoryAlloc (hOs, sizeof(TNETWIF_t));
    172 
    173     if (pTNETWIF == NULL)
    174         return NULL;
    175 
    176     os_memoryZero (hOs, pTNETWIF, sizeof(TNETWIF_t));
    177 
    178     pTNETWIF->hOs = hOs;
    179 
    180     /* Create the TNETW Arbiter module */
    181     pTNETWIF->hTNETWArb = TNETWArb_Init (hOs);
    182 
    183     /* Create the Hw Access module */
    184     pTNETWIF->hHwAccess = whal_hwAccess_Create (hOs);
    185 
    186     /* Create the ELP Controller module */
    187     pTNETWIF->hELPCtrl = elpCtrl_Create (hOs);
    188 
    189     return (TI_HANDLE)pTNETWIF;
    190 }
    191 
    192 
    193 /****************************************************************************/
    194 /*                      TNETWIF_Destroy()
    195  ****************************************************************************
    196  * DESCRIPTION: Destroy The TNETWIF Module
    197  *
    198  * INPUTS:
    199  *
    200  * OUTPUT:  String the name of the Queue
    201  *
    202  * RETURNS:
    203  ****************************************************************************/
    204 TI_STATUS TNETWIF_Destroy (TI_HANDLE hTNETWIF)
    205 {
    206     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    207 
    208     /* Destroy the ELP Controller module */
    209     elpCtrl_Destroy (pTNETWIF->hELPCtrl);
    210 
    211     /* Destroy the HwAccess Module */
    212     whal_hwAccess_Destroy (pTNETWIF->hHwAccess);
    213 
    214     /* Destroy the TNETW Arbiter */
    215     TNETWArb_Destroy (pTNETWIF->hTNETWArb);
    216 
    217     /* Free the TNETWIF Memory */
    218     os_memoryFree (pTNETWIF->hOs, pTNETWIF, sizeof(TNETWIF_t));
    219 
    220 
    221     return OK;
    222 }
    223 
    224 
    225 /****************************************************************************/
    226 /*                      TNETWIF_ConfigCb()
    227  ****************************************************************************
    228  * DESCRIPTION: TNETWIF module configuration state machine
    229  *
    230  * INPUTS:
    231  *
    232  * OUTPUT:
    233  *
    234  * RETURNS:
    235  ****************************************************************************/
    236 static void TNETWIF_ConfigCb (TI_HANDLE hTNETWIF, UINT8 module_id, TI_STATUS status)
    237 {
    238     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    239 
    240     switch (pTNETWIF->uInitStage)
    241     {
    242     case 0:
    243         pTNETWIF->uInitStage ++;
    244 
    245 	#ifdef GWSI_SPI_TEST
    246 		/*
    247 		* This is a special build meant only for testing the SPI bus. We don't need anything
    248 		* but initiating the TNETWIF. That's why we skip partition and ELP phase
    249 		*/
    250 		pTNETWIF->uInitStage = 3;
    251 	#endif /* GWSI_SPI_TEST */
    252 
    253         /* Register the arbiter callback */
    254         TNETWArb_register_handler (pTNETWIF->hTNETWArb,
    255                                    HAL_INIT_MODULE_ID,
    256                                    TNETWIF_ConfigCb,
    257                                    hTNETWIF);
    258 
    259         /* Configure the HwAccess with the DMA Done callback */
    260         status = (TI_STATUS)whal_hwAccess_Config (pTNETWIF->hHwAccess,
    261                                        pTNETWIF->hReport,
    262                                        pTNETWIF->uRegBaseAddr,
    263                                        pTNETWIF->uMemBaseAddr,
    264                                        os_TNETWIF_BusTxn_Complete,
    265                                        pTNETWIF->hOs);
    266 
    267         if (status == TNETWIF_PENDING)
    268         {
    269             pTNETWIF->status = TNETWIF_PENDING;
    270             return;
    271         }
    272 		else if (status == TNETWIF_ERROR)
    273 		{	/* This case is mainly used for the SPI test */
    274 			pTNETWIF->status = TNETWIF_ERROR;
    275 		}
    276         else
    277         {
    278             pTNETWIF->status = TNETWIF_COMPLETE;
    279         }
    280 
    281     case 1:
    282         pTNETWIF->uInitStage ++;
    283 
    284       #if defined(HW_ACCESS_SDIO) || defined(HW_ACCESS_WSPI)
    285         status = TNETWIF_SetPartitionsOpt (hTNETWIF,
    286                                            HW_ACCESS_DOWNLOAD,
    287                                            HW_ACCESS_DOWN_PART0_ADDR,
    288                                            module_id,
    289                                            (TNETWIF_callback_t)TNETWIF_ConfigCb,
    290                                            hTNETWIF);
    291         if (status == TNETWIF_PENDING)
    292         {
    293             pTNETWIF->status = TNETWIF_PENDING;
    294             return;
    295         }
    296         else
    297         {
    298             pTNETWIF->status = TNETWIF_COMPLETE;
    299         }
    300       #endif
    301 
    302     case 2:
    303         pTNETWIF->uInitStage ++;
    304 
    305         /* Awake firmware */
    306         if (TNETWIF_WriteELPOpt (hTNETWIF,
    307                                  ELPCTRL_WAKE_UP,
    308                                  HAL_INIT_MODULE_ID,
    309                                  TNETWIF_ConfigCb,
    310                                  hTNETWIF,
    311                                  TRUE) == TNETWIF_PENDING)
    312         {
    313             pTNETWIF->status = TNETWIF_PENDING;
    314             return;
    315         }
    316         else
    317         {
    318             pTNETWIF->status = TNETWIF_COMPLETE;
    319         }
    320 
    321     case 3:
    322         /* Call upper module callback */
    323         pTNETWIF->fCb (pTNETWIF->hCb, module_id, pTNETWIF->status);
    324         pTNETWIF->uInitStage = 0;
    325 
    326         WLAN_REPORT_INIT (pTNETWIF->hReport, TNETW_IF_MODULE_LOG,
    327                           ("%s(%d) - TNETWIF Initialized\n", __FILE__, __LINE__));
    328     }
    329 }
    330 
    331 
    332 /****************************************************************************/
    333 /*                      TNETWIF_Config()
    334  ****************************************************************************
    335  * DESCRIPTION: Configure the TNETWIF module
    336  *
    337  * INPUTS:
    338  *
    339  * OUTPUT:
    340  *
    341  * RETURNS:
    342  ****************************************************************************/
    343 TI_STATUS TNETWIF_Config (TI_HANDLE hTNETWIF, TI_HANDLE hReport, UINT32 uRegBaseAddr, UINT32 uMemBaseAddr, TNETWIF_callback_t fCb, TI_HANDLE hCb)
    344 {
    345     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    346 
    347     pTNETWIF->hReport = hReport;
    348     pTNETWIF->uInitStage = 0;
    349     pTNETWIF->uRegBaseAddr = uRegBaseAddr;
    350     pTNETWIF->uMemBaseAddr = uMemBaseAddr;
    351     pTNETWIF->fCb = fCb;
    352     pTNETWIF->hCb = hCb;
    353     pTNETWIF->status = TNETWIF_PENDING;
    354 #ifdef TNETWIF_DEBUG
    355 	uDebugCounter = 0;
    356 	os_memoryZero(pTNETWIF->hOs, (void*)tDebug, sizeof(tDebug));
    357 	WLAN_OS_REPORT(("Using Debug Arbiter\n"));
    358 #endif
    359 
    360     /* Send the ELP Controller handle to the TNETW Arbiter */
    361     TNETWArb_Config (pTNETWIF->hTNETWArb, hReport, pTNETWIF->hELPCtrl);
    362 
    363     /* Configure ELP control before the 1st TNETWIF_Start call */
    364     elpCtrl_Configure (pTNETWIF->hELPCtrl, hTNETWIF, TNETWArb_TxnCb);
    365 
    366     /* Start TNETWIF config state machine */
    367     TNETWIF_Start (hTNETWIF, HAL_INIT_MODULE_ID, hTNETWIF, TNETWIF_ConfigCb);
    368 
    369     return pTNETWIF->status;
    370 }
    371 
    372 
    373 /****************************************************************************/
    374 /*                      TNETWIF_ReConfig()
    375  ****************************************************************************
    376  * DESCRIPTION: stop the SDIO in Recovery process
    377  *
    378  * INPUTS:
    379  *
    380  * OUTPUT:  status
    381  *
    382  * RETURNS:
    383  ****************************************************************************/
    384 TI_STATUS TNETWIF_ReConfig (TI_HANDLE hTNETWIF)
    385 {
    386     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    387     TI_STATUS status = OK;
    388     #if (defined(_WINDOWS) && defined(HW_ACCESS_SDIO))
    389     #else
    390     whal_hwAccess_Stop (pTNETWIF->hHwAccess);
    391     #endif
    392 
    393     return (status);
    394 }
    395 
    396 
    397 /****************************************************************************/
    398 /*                      TNETWIF_Start()
    399  ****************************************************************************
    400  * DESCRIPTION: Request The Bus
    401  *
    402  * INPUTS:
    403  *
    404  * OUTPUT:  String the name of the Queue
    405  *
    406  * RETURNS:
    407  ****************************************************************************/
    408 TI_STATUS TNETWIF_Start (TI_HANDLE hTNETWIF, UINT8 module_id, TI_HANDLE hCb, TNETWIF_callback_t fCb)
    409 {
    410     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    411     TI_STATUS  status;
    412 
    413 	TNETWIF_TRACE(pTNETWIF->hOs,Start_FUNC,module_id,fCb)
    414 
    415     /* Call the TNETW Arbiter for the start operation - the client requests access the bus */
    416     status = TNETWArb_Start (pTNETWIF->hTNETWArb, module_id, hCb, fCb);
    417 
    418     return status;
    419 }
    420 
    421 
    422 /****************************************************************************/
    423 /*                      TNETWIF_Restart()
    424  ****************************************************************************
    425  * DESCRIPTION: Re-Request The Bus
    426  *
    427  * INPUTS:
    428  *
    429  * OUTPUT:
    430  *
    431  * RETURNS:
    432  ****************************************************************************/
    433 TI_STATUS TNETWIF_Restart (TI_HANDLE hTNETWIF, UINT8 module_id, TI_HANDLE hCb, TNETWIF_callback_t fCb)
    434 {
    435     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    436     TI_STATUS  status;
    437 
    438 	TNETWIF_TRACE(pTNETWIF->hOs,Restart_FUNC,module_id,fCb)
    439 
    440     /* Call the TNETW Arbiter for the restart operation - the client requests access to the bus */
    441     status = TNETWArb_Restart (pTNETWIF->hTNETWArb, module_id, hCb, fCb);
    442 
    443     return status;
    444 }
    445 
    446 
    447 /****************************************************************************/
    448 /*                      TNETWIF_Finish()
    449  ****************************************************************************
    450  * DESCRIPTION: Release The Bus
    451  *
    452  * INPUTS:
    453  *
    454  * OUTPUT:
    455  *
    456  * RETURNS:
    457  ****************************************************************************/
    458 TI_STATUS TNETWIF_Finish (TI_HANDLE hTNETWIF, UINT8 module_id, TI_HANDLE hCb, TNETWIF_callback_t fCb)
    459 {
    460     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    461     TI_STATUS  status;
    462 
    463 	TNETWIF_TRACE(pTNETWIF->hOs,Finish_FUNC,module_id,fCb)
    464 
    465     /* Call the TNETW Arbiter for the finish operation - the client frees the bus */
    466     status = TNETWArb_Finish (pTNETWIF->hTNETWArb, module_id, hCb, fCb);
    467 
    468     return status;
    469 }
    470 
    471 /******************************************************************************
    472 **                                                                           **
    473 **  Function Name: TNETWIF_UnMux                                   **
    474 **                                                                           **
    475 **  Description: This should be called FwEvent to switch MUX from WLAN_READY to FwEvent.        **
    476 **                                                                           **
    477 ******************************************************************************/
    478 TI_STATUS TNETWIF_UnMux (TI_HANDLE hTNETWIF)
    479 {
    480     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    481 
    482 	TNETWIF_TRACE(pTNETWIF->hOs,UnMux_FUNC,0xFF,0)
    483 
    484     return (TI_STATUS)elpCtrl_UnMux(pTNETWIF->hELPCtrl);
    485 
    486 }
    487 
    488 
    489 /******************************************************************************
    490 **                                                                           **
    491 **  Function Name: TNETWIF_BusTxn_Complete                                   **
    492 **                                                                           **
    493 **  Description: This should be called now from the tasklet
    494                 Distribute SPI interrupt to all running modules     .        **
    495 **                                                                           **
    496 ******************************************************************************/
    497 void TNETWIF_BusTxn_Complete (TI_HANDLE hTNETWIF)
    498 {
    499     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    500 
    501 	TNETWIF_TRACE(pTNETWIF->hOs,BusComplete_FUNC,0xFF,0)
    502 
    503     TNETWArb_CallTxnCb (pTNETWIF->hTNETWArb);
    504 }
    505 
    506 
    507 /******************************************************************************
    508 **                                                                           **
    509 **  Function Name: TNETWIF_ElpCtrl_Mode                                      **
    510 **                                                                           **
    511 **  Description:    this function changes the mode of the ElpCtrl            **
    512 **                                                                           **
    513 ******************************************************************************/
    514 int TNETWIF_ElpCtrl_Mode (TI_HANDLE hTNETWIF, elpCtrl_Mode_e mode)
    515 {
    516     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    517 
    518     elpCtrl_Mode (pTNETWIF->hELPCtrl, mode);
    519 
    520     return OK;
    521 
    522 }
    523 
    524 
    525 /******************************************************************************
    526 **                                                                           **
    527 **  Function Name: TNETWIF_ElpCtrl_HostIF_required                                       **
    528 **                                                                           **
    529 **  Description:
    530 **                                                                           **
    531 ******************************************************************************/
    532 int TNETWIF_ElpCtrl_HostIF_required (TI_HANDLE hTNETWIF, int flag)
    533 {
    534     /* TODO: what is the purpose of this API? */
    535     return OK;
    536 }
    537 
    538 
    539 /******************************************************************************
    540                   IO Operations : There are 3 modes of operation:
    541                                 1) Synchronous mode : The caller context is blocked till the Transcation has finished
    542                                 2) Asynchronous mode : The caller context is unblocked and the Transcation will end later by DMA
    543 ******************************************************************************/
    544 #ifdef USE_SYNC_API
    545 
    546 /******* Synchronous IO mode **************************************************/
    547 /****************************************************************************
    548  *                      TNETWIF_WriteMemSync()
    549  ****************************************************************************
    550  * DESCRIPTION: Request an Synchronous IO with the Bus
    551  *
    552  * INPUTS:
    553  *
    554  * OUTPUT:
    555  *
    556  * RETURNS:
    557  ****************************************************************************/
    558 TI_STATUS   TNETWIF_WriteMemSync (TI_HANDLE hTNETWIF, UINT32 addr, UINT8* data, UINT32 len)
    559 {
    560     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    561     int  status;
    562 
    563     /* Then Call the HwAccess to operate the I/O */
    564     status = whal_hwAccess_WriteMem (pTNETWIF->hHwAccess, addr, data, len);
    565 
    566     /* The return status could be TNETWIF_COMPLETE in case of Success
    567                                   TNETWIF_ERROR in case of ERROR */
    568     if (status == OK)
    569         return TNETWIF_COMPLETE;
    570     else
    571         return TNETWIF_ERROR;
    572 }
    573 
    574 
    575 /****************************************************************************
    576  *                      TNETWIF_ReadMemSync()
    577  ****************************************************************************
    578  * DESCRIPTION: Request an Synchronous IO with the Bus
    579  *
    580  * INPUTS:
    581  *
    582  * OUTPUT:
    583  *
    584  * RETURNS:
    585  ****************************************************************************/
    586 TI_STATUS   TNETWIF_ReadMemSync (TI_HANDLE hTNETWIF, UINT32 addr, UINT8* data, UINT32 len)
    587 {
    588     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    589     TI_STATUS  status;
    590 
    591     /* Then Call the HwAccess to operate the I/O */
    592     status = (TI_STATUS)whal_hwAccess_ReadMem (pTNETWIF->hHwAccess, addr, data, len);
    593 
    594     /* The return status could be TNETWIF_COMPLETE in case of Success
    595                                   TNETWIF_ERROR in case of ERROR */
    596     return status;
    597 }
    598 
    599 
    600 /****************************************************************************
    601  *                      TNETWIF_ReadRegSync()
    602  ****************************************************************************
    603  * DESCRIPTION: Request an Synchronous IO with the Bus
    604  *
    605  * INPUTS:
    606  *
    607  * OUTPUT:
    608  *
    609  * RETURNS:
    610  ****************************************************************************/
    611 TI_STATUS   TNETWIF_ReadRegSync (TI_HANDLE hTNETWIF, UINT32 addr, UINT32* data)
    612 {
    613     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    614     TI_STATUS  status;
    615 
    616     /* Then Call the HwAccess to operate the I/O */
    617     status = (TI_STATUS)whal_hwAccess_ReadReg (pTNETWIF->hHwAccess, addr, data);
    618 
    619     /* The return status could be TNETWIF_COMPLETE in case of Success
    620                                   TNETWIF_ERROR in case of ERROR */
    621     return status;
    622 }
    623 
    624 
    625 /****************************************************************************
    626  *                      TNETWIF_WriteRegSync()
    627  ****************************************************************************
    628  * DESCRIPTION: Request an Synchronous IO with the Bus
    629  *
    630  * INPUTS:
    631  *
    632  * OUTPUT:  TI_STATUS    TNETWIF_COMPLETE or TNETWIF_ERROR
    633  *
    634  * RETURNS:
    635  ****************************************************************************/
    636 TI_STATUS   TNETWIF_WriteRegSync (TI_HANDLE hTNETWIF, UINT32 addr, UINT32 data)
    637 {
    638     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    639     TI_STATUS  status;
    640 
    641     /* Then Call the HwAccess to operate the I/O */
    642     status = (TI_STATUS)whal_hwAccess_WriteReg (pTNETWIF->hHwAccess, addr, data);
    643 
    644     /* The return status could be TNETWIF_COMPLETE in case of Success
    645                                   TNETWIF_ERROR in case of ERROR */
    646     return status;
    647 }
    648 #endif /* USE_SYNC_API */
    649 
    650 
    651 /******* Optimized IO mode : In this mode the SDIO/SPI Driver will decide with its inner thresholds if to make a DMA or not  **************************************************/
    652 
    653 /****************************************************************************
    654  *                      TNETWIF_ReadMemOpt()
    655  ****************************************************************************
    656  * DESCRIPTION: Request an Unspecified Read Memory IO with the Bus
    657  *              Note: Currently, only Sync read is implemented!
    658  *
    659  * INPUTS:
    660  *
    661  * OUTPUT:  TI_STATUS    TNETWIF_COMPLETE or TNETWIF_ERROR
    662  *
    663  * RETURNS:
    664  ****************************************************************************/
    665 TI_STATUS   TNETWIF_ReadMemOpt
    666 (
    667     TI_HANDLE          hTNETWIF,
    668     UINT32             addr,
    669     UINT8             *data,
    670     UINT32             len,
    671     UINT8              module_id,
    672     TNETWIF_callback_t fCb,
    673     TI_HANDLE          hCb)
    674 {
    675     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    676 
    677 	TNETWIF_TRACE(pTNETWIF->hOs,ReadMem_FUNC,module_id,data)
    678 
    679     /* First Register the Callback to the TNET Arbiter where the DMA DONE Callback will be received */
    680     TNETWArb_register_handler (pTNETWIF->hTNETWArb, module_id, fCb, hCb);
    681 
    682     /* Call the HwAccess to operate the I/O */
    683     return (TI_STATUS)whal_hwAccess_ReadMemAsync (pTNETWIF->hHwAccess, addr, data, len);
    684 }
    685 
    686 
    687 /****************************************************************************
    688  *                      TNETWIF_WriteMemOpt()
    689  ****************************************************************************
    690  * DESCRIPTION: Request an Unspecified Write Memory IO with the Bus
    691  *
    692  * INPUTS:
    693  *
    694  * OUTPUT:  TI_STATUS    TNETWIF_COMPLETE or TNETWIF_ERROR
    695  *
    696  * RETURNS:
    697  ****************************************************************************/
    698 TI_STATUS   TNETWIF_WriteMemOpt
    699 (
    700     TI_HANDLE          hTNETWIF,
    701     UINT32             addr,
    702     UINT8             *data,
    703     UINT32             len,
    704     UINT8              module_id,
    705     TNETWIF_callback_t fCb,
    706     TI_HANDLE          hCb)
    707 {
    708     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    709 
    710 	TNETWIF_TRACE(pTNETWIF->hOs,WriteMem_FUNC,module_id,*(UINT32*)(data + TNETWIF_WRITE_OFFSET_BYTES))
    711 
    712     /* First Register the Callback to the TNET Arbiter where the DMA DONE Callback will be received */
    713     TNETWArb_register_handler (pTNETWIF->hTNETWArb, module_id, fCb, hCb);
    714 
    715     /* Then Call the HwAccess to operate the I/O */
    716     return whal_hwAccess_WriteMemAsync (pTNETWIF->hHwAccess, addr, data, len);
    717 }
    718 
    719 
    720 /****************************************************************************
    721  *                      TNETWIF_ReadRegOpt()
    722  ****************************************************************************
    723  * DESCRIPTION: Request an Unspecified Read Register IO with the Bus
    724  *
    725  * INPUTS:
    726  *
    727  * OUTPUT:  TI_STATUS    TNETWIF_COMPLETE or TNETWIF_ERROR or TNETWIF_PENDING
    728  *
    729  * RETURNS:
    730  ****************************************************************************/
    731 TI_STATUS  TNETWIF_ReadRegOpt (TI_HANDLE hTNETWIF, UINT32 addr, UINT32* data, UINT8 module_id, TNETWIF_callback_t fCb, TI_HANDLE hCb)
    732 {
    733     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    734 
    735 	TNETWIF_TRACE(pTNETWIF->hOs,ReadReg_FUNC,module_id,data)
    736 
    737     /* First Register the Callback to the TNET Arbiter where the DMA DONE Callback will be received */
    738     TNETWArb_register_handler (pTNETWIF->hTNETWArb, module_id, fCb, hCb);
    739 
    740    /* Call the HwAccess to operate the I/O */
    741     return (TI_STATUS)whal_hwAccess_ReadRegAsync (pTNETWIF->hHwAccess, addr, data);
    742 }
    743 
    744 
    745 /****************************************************************************
    746  *                      TNETWIF_WriteRegOpt()
    747  ****************************************************************************
    748  * DESCRIPTION: Request an Unspecified Read Register IO with the Bus
    749  *
    750  * INPUTS:
    751  *
    752  * OUTPUT:  TI_STATUS    TNETWIF_COMPLETE or TNETWIF_ERROR or TNETWIF_PENDING
    753  *
    754  * RETURNS:
    755  ****************************************************************************/
    756 TI_STATUS  TNETWIF_WriteRegOpt (TI_HANDLE hTNETWIF, UINT32 addr, UINT32 data, UINT8 module_id, TNETWIF_callback_t fCb, TI_HANDLE hCb)
    757 {
    758     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    759 
    760 	TNETWIF_TRACE(pTNETWIF->hOs,WriteReg_FUNC,module_id,data)
    761 
    762     /* First Register the Callback to the TNET Arbiter where the DMA DONE Callback will be received */
    763     TNETWArb_register_handler (pTNETWIF->hTNETWArb, module_id, fCb, hCb);
    764 
    765     /* Then Call the HwAccess to operate the I/O */
    766     return (TI_STATUS)whal_hwAccess_WriteRegAsync (pTNETWIF->hHwAccess, addr, data);
    767 }
    768 
    769 #ifdef USE_SYNC_API
    770 /****************************************************************************
    771  *                      TNETWIF_WriteELPSync()
    772  ****************************************************************************
    773  * DESCRIPTION: Request an Unspecified Read Register IO with the Bus
    774  *
    775  * INPUTS:
    776  *
    777  * OUTPUT:  TI_STATUS    TNETWIF_COMPLETE or TNETWIF_ERROR or TNETWIF_PENDING
    778  *
    779  * RETURNS:
    780  ****************************************************************************/
    781 TI_STATUS   TNETWIF_WriteELPSync (TI_HANDLE hTNETWIF, UINT32 data)
    782 {
    783     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    784 
    785     /* Call the HwAccess to operate the I/O */
    786     return (TI_STATUS)whal_hwAccess_WriteELP (pTNETWIF->hHwAccess, data);
    787 }
    788 #endif /* USE_SYNC_API */
    789 
    790 
    791 /****************************************************************************
    792  *                      TNETWIF_WriteELPOpt()
    793  ****************************************************************************
    794  * DESCRIPTION: Request an Unspecified Read Register IO with the Bus
    795  *
    796  * INPUTS:  bMore - indicate whether more txn on the bus are about to happen
    797  *
    798  * OUTPUT:  TI_STATUS    TNETWIF_COMPLETE or TNETWIF_ERROR or TNETWIF_PENDING
    799  *
    800  * RETURNS:
    801  ****************************************************************************/
    802 TI_STATUS   TNETWIF_WriteELPOpt (TI_HANDLE hTNETWIF, UINT32 data, UINT8 module_id, TNETWIF_callback_t fCb, TI_HANDLE hCb, BOOL bMore)
    803 {
    804     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    805 
    806 	TNETWIF_TRACE(pTNETWIF->hOs,WriteElp_FUNC,module_id,data)
    807 
    808     /* Register a callback */
    809     if(fCb)
    810       TNETWArb_register_handler (pTNETWIF->hTNETWArb, module_id, fCb, hCb);
    811 
    812     /* Call the HwAccess to operate the I/O */
    813     return  (TI_STATUS)whal_hwAccess_WriteELPAsync (pTNETWIF->hHwAccess, data, fCb != NULL, bMore);
    814 }
    815 
    816 /****************************************************************************
    817  *                      TNETWIF_ReadELPOpt()
    818  ****************************************************************************
    819  * DESCRIPTION: Request an Unspecified Read Register IO with the Bus
    820  *
    821  * INPUTS:  bMore - indicate whether more txn on the bus are about to happen
    822  *
    823  * OUTPUT:  TI_STATUS    TNETWIF_COMPLETE or TNETWIF_ERROR or TNETWIF_PENDING
    824  *
    825  * RETURNS:
    826  ****************************************************************************/
    827 TI_STATUS   TNETWIF_ReadELPOpt (TI_HANDLE hTNETWIF, UINT8 *data, UINT8 module_id, TNETWIF_callback_t fCb, TI_HANDLE hCb, BOOL bMore)
    828 {
    829     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    830 
    831 	TNETWIF_TRACE(pTNETWIF->hOs,ReadElp_FUNC,module_id,data)
    832 
    833     /* Register a callback */
    834     if(fCb)
    835       TNETWArb_register_handler (pTNETWIF->hTNETWArb, module_id, fCb, hCb);
    836 
    837     /* Call the HwAccess to operate the I/O */
    838     return  (TI_STATUS)whal_hwAccess_ReadELPAsync (pTNETWIF->hHwAccess, data, fCb != NULL, bMore);
    839 }
    840 
    841 
    842 /*****************************************************************************************************
    843 *             Registers API : All the following API are synchronous only and the return value can be:
    844                                 ** TNEDTWIF_ERROR - In case the action did not succeed
    845                                 ** TNETWIF_COMPLETE - In case the action succeeded
    846 
    847 *******************************************************************************************************/
    848 #ifdef USE_SYNC_API
    849 /****************************************************************************
    850  *                      TNETWIF_GetU08()
    851  ****************************************************************************
    852  * DESCRIPTION: Request an U8 Value from the Hw Access
    853  *
    854  * INPUTS:
    855  *
    856  * OUTPUT:  String the name of the Queue
    857  *
    858  * RETURNS:
    859  ****************************************************************************/
    860 UINT8  TNETWIF_GetU08 (TI_HANDLE hTNETWIF, UINT32 Addr)
    861 {
    862     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    863     UINT8      Value;
    864 
    865     Value = whal_hwAccess_GetU08 (pTNETWIF->hHwAccess, Addr);
    866 
    867     return Value;
    868 
    869 }
    870 
    871 
    872 /****************************************************************************
    873  *                      TNETWIF_SetU08()
    874  ****************************************************************************
    875  * DESCRIPTION: Set an U8 Value from the Hw Access
    876  *
    877  * INPUTS:
    878  *
    879  * OUTPUT:  String the name of the Queue
    880  *
    881  * RETURNS:
    882  ****************************************************************************/
    883 void  TNETWIF_SetU08 (TI_HANDLE hTNETWIF, UINT32 Addr, UINT8 Val)
    884 {
    885     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    886 
    887     whal_hwAccess_SetU08 (pTNETWIF->hHwAccess, Addr, Val);
    888 }
    889 
    890 
    891 void  TNETWIF_ResetU08_Bits (TI_HANDLE hTNETWIF, UINT32 Addr, UINT8  BitsVal)
    892 {
    893     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    894 
    895     whal_hwAccess_ResetU08_Bits (pTNETWIF->hHwAccess, Addr, BitsVal);
    896 
    897 }
    898 
    899 
    900 UINT16  TNETWIF_GetU16 (TI_HANDLE hTNETWIF, UINT32 Addr)
    901 {
    902     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    903     UINT16     U16Value;
    904 
    905     U16Value = whal_hwAccess_GetU16 (pTNETWIF->hHwAccess,Addr);
    906 
    907     return U16Value;
    908 }
    909 
    910 
    911 void  TNETWIF_SetU16 (TI_HANDLE hTNETWIF, UINT32 Addr, UINT16 Val)
    912 {
    913     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    914 
    915     whal_hwAccess_SetU16 (pTNETWIF->hHwAccess, Addr, Val);
    916 }
    917 
    918 
    919 void  TNETWIF_SetU16_Bits (TI_HANDLE hTNETWIF, UINT32 Addr, UINT16 BitsVal)
    920 {
    921     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    922 
    923     whal_hwAccess_SetU16_Bits (pTNETWIF->hHwAccess,Addr,BitsVal);
    924 }
    925 
    926 
    927 void  TNETWIF_ResetU16_Bits (TI_HANDLE hTNETWIF, UINT32 Addr, UINT16 BitsVal)
    928 {
    929     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    930 
    931     whal_hwAccess_ResetU16_Bits (pTNETWIF->hHwAccess, Addr, BitsVal);
    932 }
    933 
    934 
    935 UINT32  TNETWIF_GetU32 (TI_HANDLE hTNETWIF, UINT32 Addr)
    936 {
    937     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    938     UINT32     U32Value;
    939 
    940     U32Value = whal_hwAccess_GetU32 (pTNETWIF->hHwAccess, Addr);
    941 
    942     return U32Value;
    943 }
    944 
    945 
    946 void TNETWIF_SetU32 (TI_HANDLE hTNETWIF, UINT32 Addr, UINT32 Val)
    947 {
    948     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    949 
    950     whal_hwAccess_SetU32 (pTNETWIF->hHwAccess ,Addr, Val);
    951 
    952 }
    953 
    954 
    955 void  TNETWIF_SetU32_Bits (TI_HANDLE hTNETWIF, UINT32 Addr, UINT32 BitsVal)
    956 {
    957     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    958 
    959     whal_hwAccess_SetU32_Bits (pTNETWIF->hHwAccess, Addr, BitsVal);
    960 
    961 }
    962 
    963 
    964 void  TNETWIF_ResetU32_Bits (TI_HANDLE hTNETWIF, UINT32 Addr, UINT32 BitsVal)
    965 {
    966     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    967 
    968     whal_hwAccess_ResetU32_Bits (pTNETWIF->hHwAccess, Addr, BitsVal);
    969 
    970 }
    971 
    972 
    973 /*
    974  * Hardware Registers Api
    975  */
    976 void  TNETWIF_RegSetBitVal (TI_HANDLE hTNETWIF, UINT32 RegAddr, UINT32 BitVal)
    977 {
    978     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    979 
    980     whal_hwAccess_RegSetBitVal (pTNETWIF->hHwAccess, RegAddr, BitVal);
    981 
    982 }
    983 
    984 
    985 void  TNETWIF_RegResetBitVal (TI_HANDLE hTNETWIF, UINT32 RegAddr, UINT32 BitVal)
    986 {
    987     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    988 
    989     whal_hwAccess_RegResetBitVal (pTNETWIF->hHwAccess, RegAddr, BitVal);
    990 
    991 }
    992 
    993 
    994 int  TNETWIF_RegIsBitSet (TI_HANDLE hTNETWIF, UINT32 RegAddr, UINT32 BitVal)
    995 {
    996     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
    997     int        status;
    998 
    999     status = whal_hwAccess_RegIsBitSet (pTNETWIF->hHwAccess, RegAddr, BitVal);
   1000     return status;
   1001 }
   1002 
   1003 #endif /* USE_SYNC_API */
   1004 
   1005 
   1006 /***********************************************************************************
   1007 **                           Client implementation
   1008 ***********************************************************************************/
   1009 /******************************************************************************
   1010 **                                                                           **
   1011 **  Function Name: gwsi_rx_start_instance                                    **
   1012 **                                                                           **
   1013 **  Description: GWSI Rx Data Path Start Instance.                           **
   1014 **                                                                           **
   1015 ******************************************************************************/
   1016 void TNETWIF_rx_start_instance (TI_HANDLE CB_Handle, TI_HANDLE module_id, TI_STATUS status)
   1017 {
   1018 /*  WLAN_REPORT_ERROR (GWSI_handle->hReport, TNETW_IF_MODULE_LOG,
   1019                         ("\n gwsi_rx_start_instance() : Not implemented Yet !!! \n\n"));*/
   1020 
   1021     return;
   1022 }
   1023 
   1024 
   1025 #ifdef USE_SYNC_API
   1026 
   1027 TI_STATUS TNETWIF_SetPartitions (TI_HANDLE hTNETWIF, TNETIF_HwAccess_SetPartition_mode_e partitionMode, UINT32 partition_start)
   1028 {
   1029     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
   1030 
   1031     return (TI_STATUS)whal_hwAccess_SetPartitions (pTNETWIF->hHwAccess, partitionMode, partition_start);
   1032 }
   1033 
   1034 #endif /* USE_SYNC_API */
   1035 
   1036 
   1037 TI_STATUS TNETWIF_SetPartitionsOpt (TI_HANDLE hTNETWIF, TNETIF_HwAccess_SetPartition_mode_e partitionMode, UINT32 partition_start, UINT8 module_id, TNETWIF_callback_t fCb, TI_HANDLE hCb)
   1038 {
   1039     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
   1040 
   1041     /* Register a callback */
   1042     TNETWArb_register_handler (pTNETWIF->hTNETWArb, module_id, fCb, hCb);
   1043 
   1044     return (TI_STATUS)whal_hwAccess_SetPartitionsAsync (pTNETWIF->hHwAccess, partitionMode, partition_start);
   1045 }
   1046 
   1047 
   1048 /****************************************************************************************
   1049  *                       TNETWIF_RegisterFailureEventCB                                                 *
   1050  ****************************************************************************************
   1051 DESCRIPTION: Registers a failure event callback to the elp controler.
   1052 
   1053 
   1054 INPUT:      - hTNETWIF      - handle to the TNETWIF object.
   1055             - failureEventCB    - the failure event callback function.\n
   1056             - hFailureEventObj - handle to the object passed to the failure event callback function.
   1057 
   1058 OUTPUT:
   1059 RETURN:    void.
   1060 ****************************************************************************************/
   1061 
   1062 void TNETWIF_RegisterFailureEventCB (TI_HANDLE  hTNETWIF,
   1063                                      void      *failureEventCB,
   1064                                      TI_HANDLE  hFailureEventObj )
   1065 {
   1066     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
   1067 
   1068     elpCtrl_RegisterFailureEventCB (pTNETWIF->hELPCtrl, failureEventCB, hFailureEventObj);
   1069 }
   1070 
   1071 
   1072 /****************************************************************************************
   1073  *                       TNETWIF_RegisterBusFailureEventCB                                                  *
   1074  ****************************************************************************************
   1075 DESCRIPTION: Registers a failure event to the hal ctrl for case of SDIO bus fail.
   1076 
   1077 
   1078 INPUT:      - hTNETWIF      - handle to the TNETWIF object.
   1079             - failureEventCB    - the failure event callback function.\n
   1080             - hFailureEventObj - handle to the object passed to the failure event callback function.
   1081 
   1082 OUTPUT:
   1083 RETURN:    void.
   1084 ****************************************************************************************/
   1085 
   1086 void TNETWIF_RegisterBusFailureEventCB (TI_HANDLE  hTNETWIF,
   1087                                         void      *failureEventCB,
   1088                                         TI_HANDLE  hFailureEventObj)
   1089 {
   1090     TNETWIF_t *pTNETWIF = (TNETWIF_t *)hTNETWIF;
   1091     whal_hwAccess_RegisterForErrorCB (pTNETWIF->hHwAccess, failureEventCB, hFailureEventObj);
   1092 
   1093 }
   1094 
   1095 /****************************************************************************
   1096 *                      TNETWIF_ModuleIdToString()
   1097 ****************************************************************************
   1098 * DESCRIPTION: Convert the module ID to the Name of the module in string
   1099 *
   1100 * INPUTS:  UINT32 module_id
   1101 *
   1102 * OUTPUT:  String the name of the module
   1103 *
   1104 * RETURNS:
   1105 ****************************************************************************/
   1106 char* TNETWIF_ModuleIdToString(UINT32 module_id)
   1107 {
   1108 	switch (module_id)
   1109 	{
   1110 	case DEFAULT_MODULE_ID:  return "(DEFAULT_MODULE_ID)  ";
   1111 	case TX_XFER_MODULE_ID:  return "(TX_XFER_MODULE_ID)  ";
   1112 	case HAL_RX_MODULE_ID:   return "(HAL_RX_MODULE_ID )  ";
   1113 	case HAL_INT_MODULE_ID:  return "(HAL_INT_MODULE_ID)  ";
   1114 	case HAL_CMD_MODULE_ID:  return "(HAL_CMD_MODULE_ID ) ";
   1115 	case FW_EVENT_MODULE_ID: return "(FW_EVENT_MODULE_ID) ";
   1116 	case HAL_INIT_MODULE_ID: return "(HAL_INIT_MODULE_ID )";
   1117 
   1118 	default :
   1119 		return "(NOT_SUPPORTED)      ";
   1120 	}
   1121 
   1122 }
   1123 
   1124