164064216a8433360745f69edddce19a606659163The Android Open Source Project/****************************************************************************
264064216a8433360745f69edddce19a606659163The Android Open Source Project**+-----------------------------------------------------------------------+**
364064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                       |**
464064216a8433360745f69edddce19a606659163The Android Open Source Project**| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved.      |**
564064216a8433360745f69edddce19a606659163The Android Open Source Project**| All rights reserved.                                                  |**
664064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                       |**
764064216a8433360745f69edddce19a606659163The Android Open Source Project**| Redistribution and use in source and binary forms, with or without    |**
864064216a8433360745f69edddce19a606659163The Android Open Source Project**| modification, are permitted provided that the following conditions    |**
964064216a8433360745f69edddce19a606659163The Android Open Source Project**| are met:                                                              |**
1064064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                       |**
1164064216a8433360745f69edddce19a606659163The Android Open Source Project**|  * Redistributions of source code must retain the above copyright     |**
1264064216a8433360745f69edddce19a606659163The Android Open Source Project**|    notice, this list of conditions and the following disclaimer.      |**
1364064216a8433360745f69edddce19a606659163The Android Open Source Project**|  * Redistributions in binary form must reproduce the above copyright  |**
1464064216a8433360745f69edddce19a606659163The Android Open Source Project**|    notice, this list of conditions and the following disclaimer in    |**
1564064216a8433360745f69edddce19a606659163The Android Open Source Project**|    the documentation and/or other materials provided with the         |**
1664064216a8433360745f69edddce19a606659163The Android Open Source Project**|    distribution.                                                      |**
1764064216a8433360745f69edddce19a606659163The Android Open Source Project**|  * Neither the name Texas Instruments nor the names of its            |**
1864064216a8433360745f69edddce19a606659163The Android Open Source Project**|    contributors may be used to endorse or promote products derived    |**
1964064216a8433360745f69edddce19a606659163The Android Open Source Project**|    from this software without specific prior written permission.      |**
2064064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                       |**
2164064216a8433360745f69edddce19a606659163The Android Open Source Project**| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |**
2264064216a8433360745f69edddce19a606659163The Android Open Source Project**| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |**
2364064216a8433360745f69edddce19a606659163The Android Open Source Project**| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |**
2464064216a8433360745f69edddce19a606659163The Android Open Source Project**| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |**
2564064216a8433360745f69edddce19a606659163The Android Open Source Project**| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |**
2664064216a8433360745f69edddce19a606659163The Android Open Source Project**| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |**
2764064216a8433360745f69edddce19a606659163The Android Open Source Project**| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |**
2864064216a8433360745f69edddce19a606659163The Android Open Source Project**| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |**
2964064216a8433360745f69edddce19a606659163The Android Open Source Project**| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |**
3064064216a8433360745f69edddce19a606659163The Android Open Source Project**| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |**
3164064216a8433360745f69edddce19a606659163The Android Open Source Project**| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |**
3264064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                       |**
3364064216a8433360745f69edddce19a606659163The Android Open Source Project**+-----------------------------------------------------------------------+**
3464064216a8433360745f69edddce19a606659163The Android Open Source Project****************************************************************************/
3564064216a8433360745f69edddce19a606659163The Android Open Source Project
3664064216a8433360745f69edddce19a606659163The Android Open Source Project/****************************************************************************
3764064216a8433360745f69edddce19a606659163The Android Open Source Project *
3864064216a8433360745f69edddce19a606659163The Android Open Source Project *   MODULE:    TNETW_Driver.c
3964064216a8433360745f69edddce19a606659163The Android Open Source Project *   PURPOSE:   TNETW_Driver layer used to handle the MAC Services
4064064216a8433360745f69edddce19a606659163The Android Open Source Project *              and the HAL Modules
4164064216a8433360745f69edddce19a606659163The Android Open Source Project *
4264064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/
4364064216a8433360745f69edddce19a606659163The Android Open Source Project
4464064216a8433360745f69edddce19a606659163The Android Open Source Project#include "commonTypes.h"
4564064216a8433360745f69edddce19a606659163The Android Open Source Project#include "report.h"
4664064216a8433360745f69edddce19a606659163The Android Open Source Project#include "TNETW_Driver_api.h"
4764064216a8433360745f69edddce19a606659163The Android Open Source Project#include "MacServices_api.h"
4864064216a8433360745f69edddce19a606659163The Android Open Source Project#include "txCtrlBlk_api.h"
4964064216a8433360745f69edddce19a606659163The Android Open Source Project#include "txHwQueue_api.h"
5064064216a8433360745f69edddce19a606659163The Android Open Source Project#include "txXfer_api.h"
5164064216a8433360745f69edddce19a606659163The Android Open Source Project#include "txResult_api.h"
5264064216a8433360745f69edddce19a606659163The Android Open Source Project#include "rxXfer_api.h"
5364064216a8433360745f69edddce19a606659163The Android Open Source Project#include "TNETWIF.h"
5464064216a8433360745f69edddce19a606659163The Android Open Source Project#include "FwEvent_api.h"
5564064216a8433360745f69edddce19a606659163The Android Open Source Project#include "CmdMBox_api.h"
5664064216a8433360745f69edddce19a606659163The Android Open Source Project#include "CmdQueue_api.h"
5764064216a8433360745f69edddce19a606659163The Android Open Source Project#include "eventMbox_api.h"
5864064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef TI_DBG
5964064216a8433360745f69edddce19a606659163The Android Open Source Project#include "DebugTraceXfer_api.h"
6064064216a8433360745f69edddce19a606659163The Android Open Source Project#endif /* TI_DBG */
6164064216a8433360745f69edddce19a606659163The Android Open Source Project#include "osApi.h"
6264064216a8433360745f69edddce19a606659163The Android Open Source Project#include "TNETW_Driver.h"
6364064216a8433360745f69edddce19a606659163The Android Open Source Project#include "recoveryCtrl_API.h"
6464064216a8433360745f69edddce19a606659163The Android Open Source Project#include "HwInit_api.h"
6564064216a8433360745f69edddce19a606659163The Android Open Source Project
6664064216a8433360745f69edddce19a606659163The Android Open Source Projectstatic TI_STATUS TnetwDrv_SetInitParams (TI_HANDLE hTnetwDrv, TnetwDrv_InitParams_t* pInitParams);
6764064216a8433360745f69edddce19a606659163The Android Open Source Project
6864064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef GWSI_LIB
6964064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid GWSI_FinalizeDownload(TI_HANDLE hGwsiMgr, TI_STATUS eStatus);
7064064216a8433360745f69edddce19a606659163The Android Open Source Project#endif
7164064216a8433360745f69edddce19a606659163The Android Open Source Project
7264064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid TnetwDrv_TxXferDone (TI_HANDLE hTnetwDrv, txCtrlBlkEntry_t *pPktCtrlBlk);
7364064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid TnetwDrv_TxComplete (TI_HANDLE hTnetwDrv, TxResultDescriptor_t *pTxResultInfo);
7464064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid TnetwDrv_TxXferDebug (TI_HANDLE hTnetwDrv, txCtrlBlkEntry_t *pPktCtrlBlk, UINT32 uDebugInfo);
7564064216a8433360745f69edddce19a606659163The Android Open Source Projectstatic void TnetwDrv_ConfigureCb (TI_HANDLE hTnetwDrv);
7664064216a8433360745f69edddce19a606659163The Android Open Source Projectstatic void TnetwDrv_ConfigureCb1 (TI_HANDLE hTnetwDrv);
7764064216a8433360745f69edddce19a606659163The Android Open Source Project
7864064216a8433360745f69edddce19a606659163The Android Open Source Project
7964064216a8433360745f69edddce19a606659163The Android Open Source Project/****************************************************************************/
8064064216a8433360745f69edddce19a606659163The Android Open Source Project
8164064216a8433360745f69edddce19a606659163The Android Open Source Project
8264064216a8433360745f69edddce19a606659163The Android Open Source Project/****************************************************************************/
8364064216a8433360745f69edddce19a606659163The Android Open Source Project/*                      TnetwDrv_Create()
8464064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************
8564064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION: Create the Module
8664064216a8433360745f69edddce19a606659163The Android Open Source Project *
8764064216a8433360745f69edddce19a606659163The Android Open Source Project * INPUTS:  Handle to the OS
8864064216a8433360745f69edddce19a606659163The Android Open Source Project *
8964064216a8433360745f69edddce19a606659163The Android Open Source Project * OUTPUT:
9064064216a8433360745f69edddce19a606659163The Android Open Source Project *
9164064216a8433360745f69edddce19a606659163The Android Open Source Project * RETURNS: Handle to the module on success or NULL on failure
9264064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/
9364064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_HANDLE TnetwDrv_Create (TI_HANDLE hOs)
9464064216a8433360745f69edddce19a606659163The Android Open Source Project{
9564064216a8433360745f69edddce19a606659163The Android Open Source Project    TnetwDrv_t *pTnetwDrv;
9664064216a8433360745f69edddce19a606659163The Android Open Source Project
9764064216a8433360745f69edddce19a606659163The Android Open Source Project    /* Allocate the TNETW_Driver module */
9864064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv = (TnetwDrv_t *)os_memoryAlloc (hOs, sizeof(TnetwDrv_t));
9964064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv == NULL)
10064064216a8433360745f69edddce19a606659163The Android Open Source Project        return NULL;
10164064216a8433360745f69edddce19a606659163The Android Open Source Project
10264064216a8433360745f69edddce19a606659163The Android Open Source Project    os_memoryZero (hOs, pTnetwDrv, sizeof(TnetwDrv_t));
10364064216a8433360745f69edddce19a606659163The Android Open Source Project
10464064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->hOs = hOs;
10564064216a8433360745f69edddce19a606659163The Android Open Source Project
10664064216a8433360745f69edddce19a606659163The Android Open Source Project    /* Create the HAL Ctrl module */
10764064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->hHalCtrl = whalCtrl_Create(hOs);
10864064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hHalCtrl == NULL)
10964064216a8433360745f69edddce19a606659163The Android Open Source Project    {
11064064216a8433360745f69edddce19a606659163The Android Open Source Project        WLAN_OS_REPORT(("TnetwDrv whalCtrl_Create failed!!!\n"));
11164064216a8433360745f69edddce19a606659163The Android Open Source Project        TnetwDrv_Destroy((TI_HANDLE)pTnetwDrv);
11264064216a8433360745f69edddce19a606659163The Android Open Source Project        return NULL;
11364064216a8433360745f69edddce19a606659163The Android Open Source Project    }
11464064216a8433360745f69edddce19a606659163The Android Open Source Project
11564064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->hTNETWIF = whalCtrl_GetTnetwifHandle (pTnetwDrv->hHalCtrl);
11664064216a8433360745f69edddce19a606659163The Android Open Source Project
11764064216a8433360745f69edddce19a606659163The Android Open Source Project    /* Create the MAC Services module */
11864064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->hMacServices = MacServices_create(hOs);
11964064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hMacServices == NULL)
12064064216a8433360745f69edddce19a606659163The Android Open Source Project    {
12164064216a8433360745f69edddce19a606659163The Android Open Source Project        WLAN_OS_REPORT(("TnetwDrv MacServices_create failed!!!\n"));
12264064216a8433360745f69edddce19a606659163The Android Open Source Project        TnetwDrv_Destroy((TI_HANDLE)pTnetwDrv);
12364064216a8433360745f69edddce19a606659163The Android Open Source Project        return NULL;
12464064216a8433360745f69edddce19a606659163The Android Open Source Project    }
12564064216a8433360745f69edddce19a606659163The Android Open Source Project
12664064216a8433360745f69edddce19a606659163The Android Open Source Project    /* Create the Ctrl module */
12764064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->hCmdQueue = CmdQueue_Create(hOs);
12864064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hCmdQueue == NULL)
12964064216a8433360745f69edddce19a606659163The Android Open Source Project    {
13064064216a8433360745f69edddce19a606659163The Android Open Source Project        WLAN_OS_REPORT(("TnetwDrv CmdQueue_Create failed!!!\n"));
13164064216a8433360745f69edddce19a606659163The Android Open Source Project        TnetwDrv_Destroy((TI_HANDLE)pTnetwDrv);
13264064216a8433360745f69edddce19a606659163The Android Open Source Project        return NULL;
13364064216a8433360745f69edddce19a606659163The Android Open Source Project    }
13464064216a8433360745f69edddce19a606659163The Android Open Source Project
13564064216a8433360745f69edddce19a606659163The Android Open Source Project    /*
13664064216a8433360745f69edddce19a606659163The Android Open Source Project     * Create the FW-Transfer modules:
13764064216a8433360745f69edddce19a606659163The Android Open Source Project     */
13864064216a8433360745f69edddce19a606659163The Android Open Source Project
13964064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->hTxXfer = txXfer_Create(hOs);
14064064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hTxXfer == NULL)
14164064216a8433360745f69edddce19a606659163The Android Open Source Project    {
14264064216a8433360745f69edddce19a606659163The Android Open Source Project        WLAN_OS_REPORT(("TnetwDrv txXfer_Create failed!!!\n"));
14364064216a8433360745f69edddce19a606659163The Android Open Source Project        TnetwDrv_Destroy((TI_HANDLE)pTnetwDrv);
14464064216a8433360745f69edddce19a606659163The Android Open Source Project        return NULL;
14564064216a8433360745f69edddce19a606659163The Android Open Source Project    }
14664064216a8433360745f69edddce19a606659163The Android Open Source Project
14764064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->hTxResult = txResult_Create(hOs);
14864064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hTxResult == NULL)
14964064216a8433360745f69edddce19a606659163The Android Open Source Project    {
15064064216a8433360745f69edddce19a606659163The Android Open Source Project        WLAN_OS_REPORT(("TnetwDrv txResult_Create failed!!!\n"));
15164064216a8433360745f69edddce19a606659163The Android Open Source Project        TnetwDrv_Destroy((TI_HANDLE)pTnetwDrv);
15264064216a8433360745f69edddce19a606659163The Android Open Source Project        return NULL;
15364064216a8433360745f69edddce19a606659163The Android Open Source Project    }
15464064216a8433360745f69edddce19a606659163The Android Open Source Project
15564064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->hRxXfer = rxXfer_Create(hOs);
15664064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hRxXfer == NULL)
15764064216a8433360745f69edddce19a606659163The Android Open Source Project    {
15864064216a8433360745f69edddce19a606659163The Android Open Source Project        WLAN_OS_REPORT(("TnetwDrv rxXfer_Create failed!!!\n"));
15964064216a8433360745f69edddce19a606659163The Android Open Source Project        TnetwDrv_Destroy((TI_HANDLE)pTnetwDrv);
16064064216a8433360745f69edddce19a606659163The Android Open Source Project        return NULL;
16164064216a8433360745f69edddce19a606659163The Android Open Source Project    }
16264064216a8433360745f69edddce19a606659163The Android Open Source Project
16364064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->hFwEvent = FwEvent_Create(hOs);
16464064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hFwEvent == NULL)
16564064216a8433360745f69edddce19a606659163The Android Open Source Project    {
16664064216a8433360745f69edddce19a606659163The Android Open Source Project        WLAN_OS_REPORT(("TnetwDrv FwEvent_Create failed!!!\n"));
16764064216a8433360745f69edddce19a606659163The Android Open Source Project        TnetwDrv_Destroy((TI_HANDLE)pTnetwDrv);
16864064216a8433360745f69edddce19a606659163The Android Open Source Project        return NULL;
16964064216a8433360745f69edddce19a606659163The Android Open Source Project    }
17064064216a8433360745f69edddce19a606659163The Android Open Source Project
17164064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->hEventMbox = eventMbox_Create(hOs);
17264064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hEventMbox == NULL)
17364064216a8433360745f69edddce19a606659163The Android Open Source Project    {
17464064216a8433360745f69edddce19a606659163The Android Open Source Project        WLAN_OS_REPORT(("TnetwDrv eventMbox_Create failed!!!\n"));
17564064216a8433360745f69edddce19a606659163The Android Open Source Project        TnetwDrv_Destroy((TI_HANDLE)pTnetwDrv);
17664064216a8433360745f69edddce19a606659163The Android Open Source Project        return NULL;
17764064216a8433360745f69edddce19a606659163The Android Open Source Project    }
17864064216a8433360745f69edddce19a606659163The Android Open Source Project
17964064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef TI_DBG
18064064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->hDebugTrace = debugTrace_Create(hOs);
18164064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hDebugTrace == NULL)
18264064216a8433360745f69edddce19a606659163The Android Open Source Project    {
18364064216a8433360745f69edddce19a606659163The Android Open Source Project        WLAN_OS_REPORT(("TnetwDrv debugTrace_Create failed!!!\n"));
18464064216a8433360745f69edddce19a606659163The Android Open Source Project        TnetwDrv_Destroy((TI_HANDLE)pTnetwDrv);
18564064216a8433360745f69edddce19a606659163The Android Open Source Project        return NULL;
18664064216a8433360745f69edddce19a606659163The Android Open Source Project    }
18764064216a8433360745f69edddce19a606659163The Android Open Source Project#endif /* TI_DBG */
18864064216a8433360745f69edddce19a606659163The Android Open Source Project
18964064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->hCmdMBox = CmdMBox_Create(hOs);
19064064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hCmdMBox == NULL)
19164064216a8433360745f69edddce19a606659163The Android Open Source Project    {
19264064216a8433360745f69edddce19a606659163The Android Open Source Project        WLAN_OS_REPORT(("TnetwDrv CmdMBox_Create failed!!!\n"));
19364064216a8433360745f69edddce19a606659163The Android Open Source Project        TnetwDrv_Destroy((TI_HANDLE)pTnetwDrv);
19464064216a8433360745f69edddce19a606659163The Android Open Source Project        return NULL;
19564064216a8433360745f69edddce19a606659163The Android Open Source Project    }
19664064216a8433360745f69edddce19a606659163The Android Open Source Project
19764064216a8433360745f69edddce19a606659163The Android Open Source Project    /*
19864064216a8433360745f69edddce19a606659163The Android Open Source Project     * Create the Data-Services modules:
19964064216a8433360745f69edddce19a606659163The Android Open Source Project     */
20064064216a8433360745f69edddce19a606659163The Android Open Source Project
20164064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->hTxCtrlBlk = txCtrlBlk_Create(hOs);
20264064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hTxCtrlBlk == NULL)
20364064216a8433360745f69edddce19a606659163The Android Open Source Project    {
20464064216a8433360745f69edddce19a606659163The Android Open Source Project        WLAN_OS_REPORT(("TnetwDrv txCtrlBlk_Create failed!!!\n"));
20564064216a8433360745f69edddce19a606659163The Android Open Source Project        TnetwDrv_Destroy((TI_HANDLE)pTnetwDrv);
20664064216a8433360745f69edddce19a606659163The Android Open Source Project        return NULL;
20764064216a8433360745f69edddce19a606659163The Android Open Source Project    }
20864064216a8433360745f69edddce19a606659163The Android Open Source Project
20964064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->hTxHwQueue = txHwQueue_Create(hOs);
21064064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hTxHwQueue == NULL)
21164064216a8433360745f69edddce19a606659163The Android Open Source Project    {
21264064216a8433360745f69edddce19a606659163The Android Open Source Project        WLAN_OS_REPORT(("TnetwDrv txHwQueue_Create failed!!!\n"));
21364064216a8433360745f69edddce19a606659163The Android Open Source Project        TnetwDrv_Destroy((TI_HANDLE)pTnetwDrv);
21464064216a8433360745f69edddce19a606659163The Android Open Source Project        return NULL;
21564064216a8433360745f69edddce19a606659163The Android Open Source Project    }
21664064216a8433360745f69edddce19a606659163The Android Open Source Project
21764064216a8433360745f69edddce19a606659163The Android Open Source Project#if !defined(GWSI_DRIVER) && !defined(GWSI_LIB)
21864064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->hRecoveryCtrl = recoveryCtrl_create(hOs);
21964064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef USE_RECOVERY
22064064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hRecoveryCtrl == NULL)
22164064216a8433360745f69edddce19a606659163The Android Open Source Project    {
22264064216a8433360745f69edddce19a606659163The Android Open Source Project        WLAN_OS_REPORT(("TnetwDrv recoveryCtrl_create failed!!!\n"));
22364064216a8433360745f69edddce19a606659163The Android Open Source Project        TnetwDrv_Destroy((TI_HANDLE)pTnetwDrv);
22464064216a8433360745f69edddce19a606659163The Android Open Source Project        return NULL;
22564064216a8433360745f69edddce19a606659163The Android Open Source Project    }
22664064216a8433360745f69edddce19a606659163The Android Open Source Project#endif /* USE_RECOVERY */
22764064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->hHwInit = hwInit_create(hOs);
22864064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef USE_RECOVERY
22964064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hHwInit == NULL)
23064064216a8433360745f69edddce19a606659163The Android Open Source Project    {
23164064216a8433360745f69edddce19a606659163The Android Open Source Project        WLAN_OS_REPORT(("TnetwDrv hwInit_create failed!!!\n"));
23264064216a8433360745f69edddce19a606659163The Android Open Source Project        TnetwDrv_Destroy((TI_HANDLE)pTnetwDrv);
23364064216a8433360745f69edddce19a606659163The Android Open Source Project        return NULL;
23464064216a8433360745f69edddce19a606659163The Android Open Source Project    }
23564064216a8433360745f69edddce19a606659163The Android Open Source Project#endif /* USE_RECOVERY */
23664064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->bRecoveryFlag = FALSE; /* init value is not Recovery */
23764064216a8433360745f69edddce19a606659163The Android Open Source Project#endif
23864064216a8433360745f69edddce19a606659163The Android Open Source Project    WLAN_INIT_REPORT (("TnetwDrv_Create: CREATED !!!\n"));
23964064216a8433360745f69edddce19a606659163The Android Open Source Project
24064064216a8433360745f69edddce19a606659163The Android Open Source Project    return (TI_HANDLE)pTnetwDrv;
24164064216a8433360745f69edddce19a606659163The Android Open Source Project}
24264064216a8433360745f69edddce19a606659163The Android Open Source Project
24364064216a8433360745f69edddce19a606659163The Android Open Source Project
24464064216a8433360745f69edddce19a606659163The Android Open Source Project
24564064216a8433360745f69edddce19a606659163The Android Open Source Project/****************************************************************************/
24664064216a8433360745f69edddce19a606659163The Android Open Source Project/*                      TnetwDrv_Destroy()
24764064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************
24864064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION: Clear The module
24964064216a8433360745f69edddce19a606659163The Android Open Source Project *
25064064216a8433360745f69edddce19a606659163The Android Open Source Project * INPUTS:  Handle to the module
25164064216a8433360745f69edddce19a606659163The Android Open Source Project *
25264064216a8433360745f69edddce19a606659163The Android Open Source Project * OUTPUT:
25364064216a8433360745f69edddce19a606659163The Android Open Source Project *
25464064216a8433360745f69edddce19a606659163The Android Open Source Project * RETURNS:
25564064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/
25664064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid TnetwDrv_Destroy (TI_HANDLE hTnetwDrv)
25764064216a8433360745f69edddce19a606659163The Android Open Source Project{
25864064216a8433360745f69edddce19a606659163The Android Open Source Project
25964064216a8433360745f69edddce19a606659163The Android Open Source Project    TnetwDrv_t *pTnetwDrv = (TnetwDrv_t *)hTnetwDrv;
26064064216a8433360745f69edddce19a606659163The Android Open Source Project
26164064216a8433360745f69edddce19a606659163The Android Open Source Project    WLAN_INIT_REPORT(("TnetwDrv_Destroy !!!\n"));
26264064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv == NULL)
26364064216a8433360745f69edddce19a606659163The Android Open Source Project    {
26464064216a8433360745f69edddce19a606659163The Android Open Source Project        return;
26564064216a8433360745f69edddce19a606659163The Android Open Source Project    }
26664064216a8433360745f69edddce19a606659163The Android Open Source Project
26764064216a8433360745f69edddce19a606659163The Android Open Source Project    /* free the hal ctrl */
26864064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hHalCtrl != NULL)
26964064216a8433360745f69edddce19a606659163The Android Open Source Project    {
27064064216a8433360745f69edddce19a606659163The Android Open Source Project        whalCtrl_Destroy(pTnetwDrv->hHalCtrl);
27164064216a8433360745f69edddce19a606659163The Android Open Source Project        pTnetwDrv->hHalCtrl = NULL;
27264064216a8433360745f69edddce19a606659163The Android Open Source Project    }
27364064216a8433360745f69edddce19a606659163The Android Open Source Project    WLAN_INIT_REPORT(("TNETW_Driver_Destroy hHalCtrl released!!!\n"));
27464064216a8433360745f69edddce19a606659163The Android Open Source Project
27564064216a8433360745f69edddce19a606659163The Android Open Source Project    /* free the MAC Services */
27664064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hMacServices != NULL)
27764064216a8433360745f69edddce19a606659163The Android Open Source Project    {
27864064216a8433360745f69edddce19a606659163The Android Open Source Project        MacServices_destroy(pTnetwDrv->hMacServices);
27964064216a8433360745f69edddce19a606659163The Android Open Source Project        pTnetwDrv->hMacServices = NULL;
28064064216a8433360745f69edddce19a606659163The Android Open Source Project    }
28164064216a8433360745f69edddce19a606659163The Android Open Source Project    WLAN_INIT_REPORT(("TNETW_Driver_Destroy hMacServices released!!!\n"));
28264064216a8433360745f69edddce19a606659163The Android Open Source Project
28364064216a8433360745f69edddce19a606659163The Android Open Source Project    /*
28464064216a8433360745f69edddce19a606659163The Android Open Source Project     * Free the Ctrl modules
28564064216a8433360745f69edddce19a606659163The Android Open Source Project     */
28664064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hCmdQueue != NULL)
28764064216a8433360745f69edddce19a606659163The Android Open Source Project    {
28864064216a8433360745f69edddce19a606659163The Android Open Source Project        CmdQueue_Destroy(pTnetwDrv->hCmdQueue);
28964064216a8433360745f69edddce19a606659163The Android Open Source Project        pTnetwDrv->hCmdQueue = NULL;
29064064216a8433360745f69edddce19a606659163The Android Open Source Project    }
29164064216a8433360745f69edddce19a606659163The Android Open Source Project
29264064216a8433360745f69edddce19a606659163The Android Open Source Project    /*
29364064216a8433360745f69edddce19a606659163The Android Open Source Project     * Free the FW-Transfer modules:
29464064216a8433360745f69edddce19a606659163The Android Open Source Project     */
29564064216a8433360745f69edddce19a606659163The Android Open Source Project
29664064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hTxXfer != NULL)
29764064216a8433360745f69edddce19a606659163The Android Open Source Project    {
29864064216a8433360745f69edddce19a606659163The Android Open Source Project        txXfer_Destroy(pTnetwDrv->hTxXfer);
29964064216a8433360745f69edddce19a606659163The Android Open Source Project        pTnetwDrv->hTxXfer = NULL;
30064064216a8433360745f69edddce19a606659163The Android Open Source Project    }
30164064216a8433360745f69edddce19a606659163The Android Open Source Project
30264064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hTxResult != NULL)
30364064216a8433360745f69edddce19a606659163The Android Open Source Project    {
30464064216a8433360745f69edddce19a606659163The Android Open Source Project        txResult_Destroy(pTnetwDrv->hTxResult);
30564064216a8433360745f69edddce19a606659163The Android Open Source Project        pTnetwDrv->hTxResult = NULL;
30664064216a8433360745f69edddce19a606659163The Android Open Source Project    }
30764064216a8433360745f69edddce19a606659163The Android Open Source Project
30864064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hRxXfer != NULL)
30964064216a8433360745f69edddce19a606659163The Android Open Source Project    {
31064064216a8433360745f69edddce19a606659163The Android Open Source Project        rxXfer_Destroy(pTnetwDrv->hRxXfer);
31164064216a8433360745f69edddce19a606659163The Android Open Source Project        pTnetwDrv->hRxXfer = NULL;
31264064216a8433360745f69edddce19a606659163The Android Open Source Project    }
31364064216a8433360745f69edddce19a606659163The Android Open Source Project
31464064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hEventMbox != NULL)
31564064216a8433360745f69edddce19a606659163The Android Open Source Project    {
31664064216a8433360745f69edddce19a606659163The Android Open Source Project        eventMbox_Destroy(pTnetwDrv->hEventMbox);
31764064216a8433360745f69edddce19a606659163The Android Open Source Project        pTnetwDrv->hEventMbox = NULL;
31864064216a8433360745f69edddce19a606659163The Android Open Source Project    }
31964064216a8433360745f69edddce19a606659163The Android Open Source Project
32064064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef TI_DBG
32164064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hDebugTrace != NULL)
32264064216a8433360745f69edddce19a606659163The Android Open Source Project    {
32364064216a8433360745f69edddce19a606659163The Android Open Source Project        debugTrace_Destroy(pTnetwDrv->hDebugTrace);
32464064216a8433360745f69edddce19a606659163The Android Open Source Project        pTnetwDrv->hDebugTrace = NULL;
32564064216a8433360745f69edddce19a606659163The Android Open Source Project    }
32664064216a8433360745f69edddce19a606659163The Android Open Source Project#endif /* TI_DBG */
32764064216a8433360745f69edddce19a606659163The Android Open Source Project
32864064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hFwEvent != NULL)
32964064216a8433360745f69edddce19a606659163The Android Open Source Project    {
33064064216a8433360745f69edddce19a606659163The Android Open Source Project        FwEvent_Destroy(pTnetwDrv->hFwEvent);
33164064216a8433360745f69edddce19a606659163The Android Open Source Project        pTnetwDrv->hFwEvent = NULL;
33264064216a8433360745f69edddce19a606659163The Android Open Source Project    }
33364064216a8433360745f69edddce19a606659163The Android Open Source Project
33464064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hCmdMBox != NULL)
33564064216a8433360745f69edddce19a606659163The Android Open Source Project    {
33664064216a8433360745f69edddce19a606659163The Android Open Source Project        CmdMBox_Destroy(pTnetwDrv->hCmdMBox);
33764064216a8433360745f69edddce19a606659163The Android Open Source Project        pTnetwDrv->hCmdMBox = NULL;
33864064216a8433360745f69edddce19a606659163The Android Open Source Project    }
33964064216a8433360745f69edddce19a606659163The Android Open Source Project
34064064216a8433360745f69edddce19a606659163The Android Open Source Project    /*
34164064216a8433360745f69edddce19a606659163The Android Open Source Project     * Free the Data-Services modules:
34264064216a8433360745f69edddce19a606659163The Android Open Source Project     */
34364064216a8433360745f69edddce19a606659163The Android Open Source Project
34464064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hTxCtrlBlk != NULL)
34564064216a8433360745f69edddce19a606659163The Android Open Source Project    {
34664064216a8433360745f69edddce19a606659163The Android Open Source Project        txCtrlBlk_Destroy(pTnetwDrv->hTxCtrlBlk);
34764064216a8433360745f69edddce19a606659163The Android Open Source Project        pTnetwDrv->hTxCtrlBlk = NULL;
34864064216a8433360745f69edddce19a606659163The Android Open Source Project    }
34964064216a8433360745f69edddce19a606659163The Android Open Source Project
35064064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hTxHwQueue != NULL)
35164064216a8433360745f69edddce19a606659163The Android Open Source Project    {
35264064216a8433360745f69edddce19a606659163The Android Open Source Project        txHwQueue_Destroy(pTnetwDrv->hTxHwQueue);
35364064216a8433360745f69edddce19a606659163The Android Open Source Project        pTnetwDrv->hTxHwQueue = NULL;
35464064216a8433360745f69edddce19a606659163The Android Open Source Project    }
35564064216a8433360745f69edddce19a606659163The Android Open Source Project
35664064216a8433360745f69edddce19a606659163The Android Open Source Project#if !defined(GWSI_DRIVER) && !defined(GWSI_LIB)
35764064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hRecoveryCtrl != NULL)
35864064216a8433360745f69edddce19a606659163The Android Open Source Project    {
35964064216a8433360745f69edddce19a606659163The Android Open Source Project        recoveryCtrl_destroy(pTnetwDrv->hRecoveryCtrl);
36064064216a8433360745f69edddce19a606659163The Android Open Source Project        pTnetwDrv->hRecoveryCtrl = NULL;
36164064216a8433360745f69edddce19a606659163The Android Open Source Project    }
36264064216a8433360745f69edddce19a606659163The Android Open Source Project
36364064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->hHwInit != NULL)
36464064216a8433360745f69edddce19a606659163The Android Open Source Project    {
36564064216a8433360745f69edddce19a606659163The Android Open Source Project        hwInit_destroy(pTnetwDrv->hHwInit);
36664064216a8433360745f69edddce19a606659163The Android Open Source Project        pTnetwDrv->hHwInit = NULL;
36764064216a8433360745f69edddce19a606659163The Android Open Source Project    }
36864064216a8433360745f69edddce19a606659163The Android Open Source Project#endif
36964064216a8433360745f69edddce19a606659163The Android Open Source Project
37064064216a8433360745f69edddce19a606659163The Android Open Source Project    /* free the TNETW driver */
37164064216a8433360745f69edddce19a606659163The Android Open Source Project    if ( NULL != pTnetwDrv->pInitTableCopy )
37264064216a8433360745f69edddce19a606659163The Android Open Source Project    {
37364064216a8433360745f69edddce19a606659163The Android Open Source Project        os_memoryFree( pTnetwDrv->hOs, pTnetwDrv->pInitTableCopy, sizeof(TnetwDrv_InitParams_t) );
37464064216a8433360745f69edddce19a606659163The Android Open Source Project        pTnetwDrv->pInitTableCopy = NULL;
37564064216a8433360745f69edddce19a606659163The Android Open Source Project    }
37664064216a8433360745f69edddce19a606659163The Android Open Source Project
37764064216a8433360745f69edddce19a606659163The Android Open Source Project    os_memoryFree(pTnetwDrv->hOs, (TI_HANDLE)pTnetwDrv, sizeof(TnetwDrv_t));
37864064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv = NULL;
37964064216a8433360745f69edddce19a606659163The Android Open Source Project
38064064216a8433360745f69edddce19a606659163The Android Open Source Project    WLAN_INIT_REPORT(("TNETW_Driver_Destroy pTNETW_Driver released!!!\n"));
38164064216a8433360745f69edddce19a606659163The Android Open Source Project
38264064216a8433360745f69edddce19a606659163The Android Open Source Project    return;
38364064216a8433360745f69edddce19a606659163The Android Open Source Project}
38464064216a8433360745f69edddce19a606659163The Android Open Source Project
38564064216a8433360745f69edddce19a606659163The Android Open Source Project
38664064216a8433360745f69edddce19a606659163The Android Open Source Project/****************************************************************************/
38764064216a8433360745f69edddce19a606659163The Android Open Source Project/*                      TnetwDrv_Init()
38864064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************
38964064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION: TNETW Driver Init
39064064216a8433360745f69edddce19a606659163The Android Open Source Project *
39164064216a8433360745f69edddce19a606659163The Android Open Source Project * INPUTS:
39264064216a8433360745f69edddce19a606659163The Android Open Source Project *
39364064216a8433360745f69edddce19a606659163The Android Open Source Project * OUTPUT:
39464064216a8433360745f69edddce19a606659163The Android Open Source Project *
39564064216a8433360745f69edddce19a606659163The Android Open Source Project * RETURNS:
39664064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/
39764064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS TnetwDrv_Init (TI_HANDLE hTnetwDrv, TI_HANDLE hReport, TI_HANDLE hMemMgr, TI_HANDLE hUser, UINT32 *pFWImage, TnetwDrv_InitParams_t* pInitParams, TnetDrv_callback_t fUserConf)
39864064216a8433360745f69edddce19a606659163The Android Open Source Project{
39964064216a8433360745f69edddce19a606659163The Android Open Source Project    TnetwDrv_t *pTnetwDrv = (TnetwDrv_t *)hTnetwDrv;
40064064216a8433360745f69edddce19a606659163The Android Open Source Project    whalCtrl_config_t       whalCtrl_config;
40164064216a8433360745f69edddce19a606659163The Android Open Source Project    TI_STATUS               status;
40264064216a8433360745f69edddce19a606659163The Android Open Source Project
40364064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->bInitSuccess = FALSE;
40464064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->hUser = hUser;
40564064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->fUserConf = fUserConf;
40664064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->hReport = hReport;
40764064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->hMemMgr = hMemMgr;
40864064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->hWhalParams = whalCtrl_GetWhalParams (pTnetwDrv->hHalCtrl);
40964064216a8433360745f69edddce19a606659163The Android Open Source Project
41064064216a8433360745f69edddce19a606659163The Android Open Source Project    WLAN_REPORT_INIT(pTnetwDrv->hReport, HAL_CTRL_MODULE_LOG,
41164064216a8433360745f69edddce19a606659163The Android Open Source Project        ("TnetwDrv_Init %x\n",hReport));
41264064216a8433360745f69edddce19a606659163The Android Open Source Project
41364064216a8433360745f69edddce19a606659163The Android Open Source Project    if (NULL != pInitParams)
41464064216a8433360745f69edddce19a606659163The Android Open Source Project    {
41564064216a8433360745f69edddce19a606659163The Android Open Source Project        if (OK != TnetwDrv_SetInitParams (hTnetwDrv, (TnetwDrv_InitParams_t *)pInitParams))
41664064216a8433360745f69edddce19a606659163The Android Open Source Project        {
41764064216a8433360745f69edddce19a606659163The Android Open Source Project            TnetwDrv_Destroy (hTnetwDrv);
41864064216a8433360745f69edddce19a606659163The Android Open Source Project            return NOK;
41964064216a8433360745f69edddce19a606659163The Android Open Source Project        }
42064064216a8433360745f69edddce19a606659163The Android Open Source Project    }
42164064216a8433360745f69edddce19a606659163The Android Open Source Project
42264064216a8433360745f69edddce19a606659163The Android Open Source Project    /*
42364064216a8433360745f69edddce19a606659163The Android Open Source Project     * Configure the HAL Ctrl
42464064216a8433360745f69edddce19a606659163The Android Open Source Project     */
42564064216a8433360745f69edddce19a606659163The Android Open Source Project    whalCtrl_config.hMemMgr             = hMemMgr;
42664064216a8433360745f69edddce19a606659163The Android Open Source Project    whalCtrl_config.hReport             = hReport;
42764064216a8433360745f69edddce19a606659163The Android Open Source Project    whalCtrl_config.hFwEvent            = pTnetwDrv->hFwEvent;
42864064216a8433360745f69edddce19a606659163The Android Open Source Project    whalCtrl_config.hRxXfer             = pTnetwDrv->hRxXfer;
42964064216a8433360745f69edddce19a606659163The Android Open Source Project    whalCtrl_config.hTxXfer             = pTnetwDrv->hTxXfer;
43064064216a8433360745f69edddce19a606659163The Android Open Source Project    whalCtrl_config.hTxHwQueue          = pTnetwDrv->hTxHwQueue;
43164064216a8433360745f69edddce19a606659163The Android Open Source Project    whalCtrl_config.hTxResult           = pTnetwDrv->hTxResult;
43264064216a8433360745f69edddce19a606659163The Android Open Source Project    whalCtrl_config.hEventMbox          = pTnetwDrv->hEventMbox;
43364064216a8433360745f69edddce19a606659163The Android Open Source Project
43464064216a8433360745f69edddce19a606659163The Android Open Source Project        /* CB at the end of TnetwDrv_Configure(). not called if no registration was done */
43564064216a8433360745f69edddce19a606659163The Android Open Source Project        pTnetwDrv->fConfigureCmplteteCB     = NULL;
43664064216a8433360745f69edddce19a606659163The Android Open Source Project        pTnetwDrv->hConfigureCompleteOBj    = NULL;
43764064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->fConfigureEndCB = TnetwDrv_ConfigureCb1;
43864064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->fConfigureEndObj= hTnetwDrv;
43964064216a8433360745f69edddce19a606659163The Android Open Source Project
44064064216a8433360745f69edddce19a606659163The Android Open Source Project    whalCtrl_config.hCmdQueue           = pTnetwDrv->hCmdQueue;
44164064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef TI_DBG
44264064216a8433360745f69edddce19a606659163The Android Open Source Project    whalCtrl_config.hDebugTrace         = pTnetwDrv->hDebugTrace;
44364064216a8433360745f69edddce19a606659163The Android Open Source Project#endif /* TI_DBG */
44464064216a8433360745f69edddce19a606659163The Android Open Source Project
44564064216a8433360745f69edddce19a606659163The Android Open Source Project    /* Call the config func */
44664064216a8433360745f69edddce19a606659163The Android Open Source Project    if ((status = whalCtrl_Config (pTnetwDrv->hHalCtrl, hTnetwDrv, &whalCtrl_config, pFWImage)) == TNETWIF_ERROR)
44764064216a8433360745f69edddce19a606659163The Android Open Source Project    {
44864064216a8433360745f69edddce19a606659163The Android Open Source Project        WLAN_OS_REPORT(("TNETW_Driver whalCtrl_Config failed!!!\n"));
44964064216a8433360745f69edddce19a606659163The Android Open Source Project        TnetwDrv_Destroy (hTnetwDrv);
45064064216a8433360745f69edddce19a606659163The Android Open Source Project        return NOK;
45164064216a8433360745f69edddce19a606659163The Android Open Source Project    }
45264064216a8433360745f69edddce19a606659163The Android Open Source Project
45364064216a8433360745f69edddce19a606659163The Android Open Source Project    return status;
45464064216a8433360745f69edddce19a606659163The Android Open Source Project}
45564064216a8433360745f69edddce19a606659163The Android Open Source Project
45664064216a8433360745f69edddce19a606659163The Android Open Source Project
45764064216a8433360745f69edddce19a606659163The Android Open Source Project/****************************************************************************
45864064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION: Configure the TNET Driver Module callback
45964064216a8433360745f69edddce19a606659163The Android Open Source Project *
46064064216a8433360745f69edddce19a606659163The Android Open Source Project * INPUTS:
46164064216a8433360745f69edddce19a606659163The Android Open Source Project *
46264064216a8433360745f69edddce19a606659163The Android Open Source Project * OUTPUT:
46364064216a8433360745f69edddce19a606659163The Android Open Source Project *
46464064216a8433360745f69edddce19a606659163The Android Open Source Project * RETURNS: OK if succeeded, NOK if failed in HW configuration.
46564064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/
46664064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid TnetwDrv_ConfigureCb (TI_HANDLE hTnetwDrv)
46764064216a8433360745f69edddce19a606659163The Android Open Source Project{
46864064216a8433360745f69edddce19a606659163The Android Open Source Project    TnetwDrv_t *pTnetwDrv = (TnetwDrv_t *)hTnetwDrv;
46964064216a8433360745f69edddce19a606659163The Android Open Source Project
47064064216a8433360745f69edddce19a606659163The Android Open Source Project    /* Configure the Tx-HW-Queue module */
47164064216a8433360745f69edddce19a606659163The Android Open Source Project    txHwQueue_Config (pTnetwDrv->hTxHwQueue, pTnetwDrv->pInitTableCopy);
47264064216a8433360745f69edddce19a606659163The Android Open Source Project
47364064216a8433360745f69edddce19a606659163The Android Open Source Project    /* Configure the TX XFER module */
47464064216a8433360745f69edddce19a606659163The Android Open Source Project    txXfer_config(pTnetwDrv->hTxXfer, pTnetwDrv->pInitTableCopy);
47564064216a8433360745f69edddce19a606659163The Android Open Source Project
47664064216a8433360745f69edddce19a606659163The Android Open Source Project    /* Configure the MAC services */
47764064216a8433360745f69edddce19a606659163The Android Open Source Project    MacServices_config (pTnetwDrv->hMacServices, pTnetwDrv->pInitTableCopy);
47864064216a8433360745f69edddce19a606659163The Android Open Source Project
47964064216a8433360745f69edddce19a606659163The Android Open Source Project#if !defined(GWSI_DRIVER) && !defined(GWSI_LIB)
48064064216a8433360745f69edddce19a606659163The Android Open Source Project    recoveryCtrl_config(pTnetwDrv->hRecoveryCtrl,
48164064216a8433360745f69edddce19a606659163The Android Open Source Project                        pTnetwDrv->hReport,
48264064216a8433360745f69edddce19a606659163The Android Open Source Project                        pTnetwDrv->hTNETWIF,
48364064216a8433360745f69edddce19a606659163The Android Open Source Project                        pTnetwDrv->hTxXfer,
48464064216a8433360745f69edddce19a606659163The Android Open Source Project                        pTnetwDrv->hRxXfer,
48564064216a8433360745f69edddce19a606659163The Android Open Source Project                        pTnetwDrv->hTxResult,
48664064216a8433360745f69edddce19a606659163The Android Open Source Project                        pTnetwDrv->hMacServices,
48764064216a8433360745f69edddce19a606659163The Android Open Source Project                        pTnetwDrv->hTxCtrlBlk,
48864064216a8433360745f69edddce19a606659163The Android Open Source Project                        pTnetwDrv->hTxHwQueue,
48964064216a8433360745f69edddce19a606659163The Android Open Source Project                        pTnetwDrv->hHalCtrl,
49064064216a8433360745f69edddce19a606659163The Android Open Source Project                        pTnetwDrv->hHwIntr,
49164064216a8433360745f69edddce19a606659163The Android Open Source Project                        pTnetwDrv->hWhalParams,
49264064216a8433360745f69edddce19a606659163The Android Open Source Project                        pTnetwDrv->hCmdQueue,
49364064216a8433360745f69edddce19a606659163The Android Open Source Project                        pTnetwDrv->hFwEvent,
49464064216a8433360745f69edddce19a606659163The Android Open Source Project                        pTnetwDrv->hCmdMBox,
49564064216a8433360745f69edddce19a606659163The Android Open Source Project                        pTnetwDrv->hHwInit);
49664064216a8433360745f69edddce19a606659163The Android Open Source Project
49764064216a8433360745f69edddce19a606659163The Android Open Source Project    hwInit_config(pTnetwDrv->hHwInit, pTnetwDrv->hReport, pTnetwDrv->hTNETWIF);
49864064216a8433360745f69edddce19a606659163The Android Open Source Project#endif
49964064216a8433360745f69edddce19a606659163The Android Open Source Project    /* Register the Data Path callback functions */
50064064216a8433360745f69edddce19a606659163The Android Open Source Project    TnetwDrv_Register_CB (pTnetwDrv, TNETW_DRIVER_TX_XFER_SEND_PKT_TRANSFER, (void *)TnetwDrv_TxXferDone, hTnetwDrv);
50164064216a8433360745f69edddce19a606659163The Android Open Source Project
50264064216a8433360745f69edddce19a606659163The Android Open Source Project    /* Register the send packet debug callback */
50364064216a8433360745f69edddce19a606659163The Android Open Source Project  #ifdef TI_DBG
50464064216a8433360745f69edddce19a606659163The Android Open Source Project    TnetwDrv_Register_CB (pTnetwDrv, TNETW_DRIVER_TX_XFER_SEND_PKT_DEBUG, (void *)TnetwDrv_TxXferDebug, hTnetwDrv);
50564064216a8433360745f69edddce19a606659163The Android Open Source Project  #endif
50664064216a8433360745f69edddce19a606659163The Android Open Source Project
50764064216a8433360745f69edddce19a606659163The Android Open Source Project    /* Register the send packet complete callback */
50864064216a8433360745f69edddce19a606659163The Android Open Source Project    TnetwDrv_Register_CB (pTnetwDrv, TNETW_DRIVER_TX_RESULT_SEND_PKT_COMPLETE, (void *)TnetwDrv_TxComplete, hTnetwDrv);
50964064216a8433360745f69edddce19a606659163The Android Open Source Project
51064064216a8433360745f69edddce19a606659163The Android Open Source Project    /* Call user application configuration callback */
51164064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->fUserConf)
51264064216a8433360745f69edddce19a606659163The Android Open Source Project        (*pTnetwDrv->fUserConf) (pTnetwDrv->hUser);
51364064216a8433360745f69edddce19a606659163The Android Open Source Project
51464064216a8433360745f69edddce19a606659163The Android Open Source Project}
51564064216a8433360745f69edddce19a606659163The Android Open Source Project
51664064216a8433360745f69edddce19a606659163The Android Open Source Project/****************************************************************************
51764064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION: Configure the TNET Driver Module callback
51864064216a8433360745f69edddce19a606659163The Android Open Source Project *
51964064216a8433360745f69edddce19a606659163The Android Open Source Project * INPUTS:
52064064216a8433360745f69edddce19a606659163The Android Open Source Project *
52164064216a8433360745f69edddce19a606659163The Android Open Source Project * OUTPUT:
52264064216a8433360745f69edddce19a606659163The Android Open Source Project *
52364064216a8433360745f69edddce19a606659163The Android Open Source Project * RETURNS: OK if succeeded, NOK if failed in HW configuration.
52464064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/
52564064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid TnetwDrv_ConfigureCb1 (TI_HANDLE hTnetwDrv)
52664064216a8433360745f69edddce19a606659163The Android Open Source Project{
52764064216a8433360745f69edddce19a606659163The Android Open Source Project    TnetwDrv_t *pTnetwDrv = (TnetwDrv_t *)hTnetwDrv;
52864064216a8433360745f69edddce19a606659163The Android Open Source Project
52964064216a8433360745f69edddce19a606659163The Android Open Source Project        /* if the configure complete function was registered, we call it here - end of TnetwDrv_Configure stage */
53064064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->fConfigureCmplteteCB)
53164064216a8433360745f69edddce19a606659163The Android Open Source Project    {
53264064216a8433360745f69edddce19a606659163The Android Open Source Project        pTnetwDrv->fConfigureCmplteteCB(pTnetwDrv->hConfigureCompleteOBj);
53364064216a8433360745f69edddce19a606659163The Android Open Source Project    }
53464064216a8433360745f69edddce19a606659163The Android Open Source Project
53564064216a8433360745f69edddce19a606659163The Android Open Source Project#ifndef GWSI_LIB
53664064216a8433360745f69edddce19a606659163The Android Open Source Project    /*
53764064216a8433360745f69edddce19a606659163The Android Open Source Project        * This will be the last thing that will be done here so all the download
53864064216a8433360745f69edddce19a606659163The Android Open Source Project        * will go back down to HALto send FINISH to TNETWIF where it began
53964064216a8433360745f69edddce19a606659163The Android Open Source Project        */
54064064216a8433360745f69edddce19a606659163The Android Open Source Project        os_Complete (pTnetwDrv->hOs);
54164064216a8433360745f69edddce19a606659163The Android Open Source Project#endif
54264064216a8433360745f69edddce19a606659163The Android Open Source Project
54364064216a8433360745f69edddce19a606659163The Android Open Source Project}
54464064216a8433360745f69edddce19a606659163The Android Open Source Project
54564064216a8433360745f69edddce19a606659163The Android Open Source Project
54664064216a8433360745f69edddce19a606659163The Android Open Source Project
54764064216a8433360745f69edddce19a606659163The Android Open Source Project/****************************************************************************
54864064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION: Configure the TNET Driver Module
54964064216a8433360745f69edddce19a606659163The Android Open Source Project *
55064064216a8433360745f69edddce19a606659163The Android Open Source Project * INPUTS:
55164064216a8433360745f69edddce19a606659163The Android Open Source Project *
55264064216a8433360745f69edddce19a606659163The Android Open Source Project * OUTPUT:
55364064216a8433360745f69edddce19a606659163The Android Open Source Project *
55464064216a8433360745f69edddce19a606659163The Android Open Source Project * RETURNS: OK if succeeded, NOK if failed in HW configuration.
55564064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/
55664064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS TnetwDrv_Configure (TI_HANDLE hTnetwDrv, TnetwDrv_InitParams_t* pInitParams)
55764064216a8433360745f69edddce19a606659163The Android Open Source Project{
55864064216a8433360745f69edddce19a606659163The Android Open Source Project    TnetwDrv_t *pTnetwDrv = (TnetwDrv_t *)hTnetwDrv;
55964064216a8433360745f69edddce19a606659163The Android Open Source Project    TnetwDrv_InitParams_t* pInitParam;
56064064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->bInitSuccess)
56164064216a8433360745f69edddce19a606659163The Android Open Source Project    {
56264064216a8433360745f69edddce19a606659163The Android Open Source Project        /* If called with init params as null - it means that this is a recovery */
56364064216a8433360745f69edddce19a606659163The Android Open Source Project        if (NULL != pInitParams)
56464064216a8433360745f69edddce19a606659163The Android Open Source Project        {
56564064216a8433360745f69edddce19a606659163The Android Open Source Project            if (OK != TnetwDrv_SetInitParams (hTnetwDrv, pInitParams))
56664064216a8433360745f69edddce19a606659163The Android Open Source Project            {
56764064216a8433360745f69edddce19a606659163The Android Open Source Project                return NOK;
56864064216a8433360745f69edddce19a606659163The Android Open Source Project            }
56964064216a8433360745f69edddce19a606659163The Android Open Source Project        }
57064064216a8433360745f69edddce19a606659163The Android Open Source Project
57164064216a8433360745f69edddce19a606659163The Android Open Source Project#if !defined(GWSI_DRIVER) && !defined(GWSI_LIB)
57264064216a8433360745f69edddce19a606659163The Android Open Source Project        if(pTnetwDrv->bRecoveryFlag == TRUE)
57364064216a8433360745f69edddce19a606659163The Android Open Source Project            pInitParam = NULL;
57464064216a8433360745f69edddce19a606659163The Android Open Source Project        else
57564064216a8433360745f69edddce19a606659163The Android Open Source Project#endif
57664064216a8433360745f69edddce19a606659163The Android Open Source Project            pInitParam = pTnetwDrv->pInitTableCopy;
57764064216a8433360745f69edddce19a606659163The Android Open Source Project
57864064216a8433360745f69edddce19a606659163The Android Open Source Project
57964064216a8433360745f69edddce19a606659163The Android Open Source Project        /* If it's recovery call function with NULL instead of ini-file params */
58064064216a8433360745f69edddce19a606659163The Android Open Source Project        if (whalCtrl_ConfigHw (pTnetwDrv->hHalCtrl,
58164064216a8433360745f69edddce19a606659163The Android Open Source Project                               pInitParam,
58264064216a8433360745f69edddce19a606659163The Android Open Source Project                               (void *)TnetwDrv_ConfigureCb,
58364064216a8433360745f69edddce19a606659163The Android Open Source Project                               hTnetwDrv) != OK)
58464064216a8433360745f69edddce19a606659163The Android Open Source Project        {
58564064216a8433360745f69edddce19a606659163The Android Open Source Project            WLAN_REPORT_ERROR(pTnetwDrv->hReport, TNETW_DRV_MODULE_LOG,("\n.....WhalCtrl configuration failure \n"));
58664064216a8433360745f69edddce19a606659163The Android Open Source Project            return NOK;
58764064216a8433360745f69edddce19a606659163The Android Open Source Project        }
58864064216a8433360745f69edddce19a606659163The Android Open Source Project
58964064216a8433360745f69edddce19a606659163The Android Open Source Project        return OK;
59064064216a8433360745f69edddce19a606659163The Android Open Source Project    }
59164064216a8433360745f69edddce19a606659163The Android Open Source Project
59264064216a8433360745f69edddce19a606659163The Android Open Source Project    return NOK;
59364064216a8433360745f69edddce19a606659163The Android Open Source Project}
59464064216a8433360745f69edddce19a606659163The Android Open Source Project
59564064216a8433360745f69edddce19a606659163The Android Open Source Project
59664064216a8433360745f69edddce19a606659163The Android Open Source Project/****************************************************************************
59764064216a8433360745f69edddce19a606659163The Android Open Source Project *                      TnetwDrv_FinalizeDownload()
59864064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************
59964064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION: Finalize all the remaining initialization after the downloaD HAS FINISHED
60064064216a8433360745f69edddce19a606659163The Android Open Source Project                Register the ERRORS indications events to the FW
60164064216a8433360745f69edddce19a606659163The Android Open Source Project *
60264064216a8433360745f69edddce19a606659163The Android Open Source Project * INPUTS:
60364064216a8433360745f69edddce19a606659163The Android Open Source Project *
60464064216a8433360745f69edddce19a606659163The Android Open Source Project * OUTPUT:  None
60564064216a8433360745f69edddce19a606659163The Android Open Source Project *
60664064216a8433360745f69edddce19a606659163The Android Open Source Project * RETURNS: OK or NOK
60764064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/
60864064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS TnetwDrv_FinalizeDownload (TI_HANDLE hTnetwDrv)
60964064216a8433360745f69edddce19a606659163The Android Open Source Project{
61064064216a8433360745f69edddce19a606659163The Android Open Source Project    TnetwDrv_t *pTnetwDrv = (TnetwDrv_t *)hTnetwDrv;
61164064216a8433360745f69edddce19a606659163The Android Open Source Project
61264064216a8433360745f69edddce19a606659163The Android Open Source Project    /* Here at the end call the Initialize Complete callback that will release the user Init semaphore */
61364064216a8433360745f69edddce19a606659163The Android Open Source Project    WLAN_REPORT_INIT(pTnetwDrv->hReport, HAL_CTRL_MODULE_LOG,
61464064216a8433360745f69edddce19a606659163The Android Open Source Project                ("hTNETW_Driver %x!!!!!\n", hTnetwDrv));
61564064216a8433360745f69edddce19a606659163The Android Open Source Project
61664064216a8433360745f69edddce19a606659163The Android Open Source Project    /* Here at the end call the Initialize Complete callback that will release the user Init semaphore */
61764064216a8433360745f69edddce19a606659163The Android Open Source Project    WLAN_REPORT_INIT(pTnetwDrv->hReport, HAL_CTRL_MODULE_LOG,
61864064216a8433360745f69edddce19a606659163The Android Open Source Project        ("Call MacServices_init!!!!!\n"));
61964064216a8433360745f69edddce19a606659163The Android Open Source Project
62064064216a8433360745f69edddce19a606659163The Android Open Source Project    /*
62164064216a8433360745f69edddce19a606659163The Android Open Source Project     * Initialize the FW-Transfer modules
62264064216a8433360745f69edddce19a606659163The Android Open Source Project     */
62364064216a8433360745f69edddce19a606659163The Android Open Source Project    txXfer_init (pTnetwDrv->hTxXfer, pTnetwDrv->hReport, pTnetwDrv->hTNETWIF, pTnetwDrv->hTxResult);
62464064216a8433360745f69edddce19a606659163The Android Open Source Project    txResult_init (pTnetwDrv->hTxResult, pTnetwDrv->hReport, pTnetwDrv->hTNETWIF, pTnetwDrv->hFwEvent);
62564064216a8433360745f69edddce19a606659163The Android Open Source Project    rxXfer_Config (pTnetwDrv->hRxXfer, pTnetwDrv->hFwEvent, pTnetwDrv->hMemMgr, pTnetwDrv->hReport,pTnetwDrv->hTNETWIF);
62664064216a8433360745f69edddce19a606659163The Android Open Source Project
62764064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef TI_DBG
62864064216a8433360745f69edddce19a606659163The Android Open Source Project    debugTrace_Config (pTnetwDrv->hDebugTrace,
62964064216a8433360745f69edddce19a606659163The Android Open Source Project                       pTnetwDrv->hWhalParams,
63064064216a8433360745f69edddce19a606659163The Android Open Source Project                       pTnetwDrv->hReport,
63164064216a8433360745f69edddce19a606659163The Android Open Source Project                       pTnetwDrv->hMemMgr,
63264064216a8433360745f69edddce19a606659163The Android Open Source Project                       pTnetwDrv->hTNETWIF,
63364064216a8433360745f69edddce19a606659163The Android Open Source Project                       pTnetwDrv->hFwEvent);
63464064216a8433360745f69edddce19a606659163The Android Open Source Project#endif /* TI_DBG */
63564064216a8433360745f69edddce19a606659163The Android Open Source Project
63664064216a8433360745f69edddce19a606659163The Android Open Source Project    /*
63764064216a8433360745f69edddce19a606659163The Android Open Source Project     * Initialize the MAC Services
63864064216a8433360745f69edddce19a606659163The Android Open Source Project     */
63964064216a8433360745f69edddce19a606659163The Android Open Source Project    MacServices_init (pTnetwDrv->hMacServices,
64064064216a8433360745f69edddce19a606659163The Android Open Source Project                      pTnetwDrv->hReport,
64164064216a8433360745f69edddce19a606659163The Android Open Source Project                      pTnetwDrv->hHalCtrl);
64264064216a8433360745f69edddce19a606659163The Android Open Source Project
64364064216a8433360745f69edddce19a606659163The Android Open Source Project    /*
64464064216a8433360745f69edddce19a606659163The Android Open Source Project     * Initialize the Data-Services modules
64564064216a8433360745f69edddce19a606659163The Android Open Source Project     */
64664064216a8433360745f69edddce19a606659163The Android Open Source Project    txCtrlBlk_init (pTnetwDrv->hTxCtrlBlk, pTnetwDrv->hReport);
64764064216a8433360745f69edddce19a606659163The Android Open Source Project    txHwQueue_init (pTnetwDrv->hTxHwQueue, pTnetwDrv->hReport, pTnetwDrv->hWhalParams);
64864064216a8433360745f69edddce19a606659163The Android Open Source Project
64964064216a8433360745f69edddce19a606659163The Android Open Source Project    /* Here at the end call the Initialize Complete callback that will release the user Init semaphore */
65064064216a8433360745f69edddce19a606659163The Android Open Source Project    WLAN_REPORT_INIT(pTnetwDrv->hReport, HAL_CTRL_MODULE_LOG,
65164064216a8433360745f69edddce19a606659163The Android Open Source Project        ("Before sending the Init Complet callback !!!!!\n"));
65264064216a8433360745f69edddce19a606659163The Android Open Source Project
65364064216a8433360745f69edddce19a606659163The Android Open Source Project    /* Sign that init has succeeded */
65464064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->bInitSuccess = TRUE;
65564064216a8433360745f69edddce19a606659163The Android Open Source Project
65664064216a8433360745f69edddce19a606659163The Android Open Source Project    /* When working with GWSI Call the Init Complete callback */
65764064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef GWSI_LIB
65864064216a8433360745f69edddce19a606659163The Android Open Source Project    /*
65964064216a8433360745f69edddce19a606659163The Android Open Source Project     * The callback function does not need the handle of the GWSI
66064064216a8433360745f69edddce19a606659163The Android Open Source Project     * since it takes it from the global handle
66164064216a8433360745f69edddce19a606659163The Android Open Source Project     */
66264064216a8433360745f69edddce19a606659163The Android Open Source Project    GWSI_FinalizeDownload (pTnetwDrv->hUser, OK);
66364064216a8433360745f69edddce19a606659163The Android Open Source Project    /*
66464064216a8433360745f69edddce19a606659163The Android Open Source Project     * When working with CORE call the os_Init_Complete
66564064216a8433360745f69edddce19a606659163The Android Open Source Project     * that will release the OS semaphore that the
66664064216a8433360745f69edddce19a606659163The Android Open Source Project     * user is lock on it in the esta_drb to go on call the next stage
66764064216a8433360745f69edddce19a606659163The Android Open Source Project     */
66864064216a8433360745f69edddce19a606659163The Android Open Source Project#else
66964064216a8433360745f69edddce19a606659163The Android Open Source Project    /* Here at the end call the Initialize Complete callback that will release the user Init semaphore */
67064064216a8433360745f69edddce19a606659163The Android Open Source Project    WLAN_REPORT_INIT(pTnetwDrv->hReport, HAL_CTRL_MODULE_LOG,
67164064216a8433360745f69edddce19a606659163The Android Open Source Project        ("Call os_Complete !!!!!\n"));
67264064216a8433360745f69edddce19a606659163The Android Open Source Project
67364064216a8433360745f69edddce19a606659163The Android Open Source Project    /* Start configuring driver */
67464064216a8433360745f69edddce19a606659163The Android Open Source Project    if (TnetwDrv_Configure (hTnetwDrv, NULL) != OK)
67564064216a8433360745f69edddce19a606659163The Android Open Source Project    {
67664064216a8433360745f69edddce19a606659163The Android Open Source Project        WLAN_REPORT_ERROR (pTnetwDrv->hReport, TNETW_DRV_MODULE_LOG,
67764064216a8433360745f69edddce19a606659163The Android Open Source Project                           ("TnetwDrv_FinalizeDownload: configuration failure!\n"));
67864064216a8433360745f69edddce19a606659163The Android Open Source Project    }
67964064216a8433360745f69edddce19a606659163The Android Open Source Project
68064064216a8433360745f69edddce19a606659163The Android Open Source Project#endif
68164064216a8433360745f69edddce19a606659163The Android Open Source Project
68264064216a8433360745f69edddce19a606659163The Android Open Source Project    return TNETWIF_COMPLETE;
68364064216a8433360745f69edddce19a606659163The Android Open Source Project}
68464064216a8433360745f69edddce19a606659163The Android Open Source Project
68564064216a8433360745f69edddce19a606659163The Android Open Source Project
68664064216a8433360745f69edddce19a606659163The Android Open Source Project/****************************************************************************
68764064216a8433360745f69edddce19a606659163The Android Open Source Project *                      TnetwDrv_FinalizeOnFailue()
68864064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************
68964064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION: Finalize all the initialization upon failure
69064064216a8433360745f69edddce19a606659163The Android Open Source Project *
69164064216a8433360745f69edddce19a606659163The Android Open Source Project * INPUTS:
69264064216a8433360745f69edddce19a606659163The Android Open Source Project *
69364064216a8433360745f69edddce19a606659163The Android Open Source Project * OUTPUT:  None
69464064216a8433360745f69edddce19a606659163The Android Open Source Project *
69564064216a8433360745f69edddce19a606659163The Android Open Source Project * RETURNS: OK or NOK
69664064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/
69764064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS TnetwDrv_FinalizeOnFailure (TI_HANDLE hTNETW_Driver)
69864064216a8433360745f69edddce19a606659163The Android Open Source Project{
69964064216a8433360745f69edddce19a606659163The Android Open Source Project    TnetwDrv_t  *pTnetwDrv = (TnetwDrv_t *)hTNETW_Driver;
70064064216a8433360745f69edddce19a606659163The Android Open Source Project
70164064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef GWSI_LIB
70264064216a8433360745f69edddce19a606659163The Android Open Source Project
70364064216a8433360745f69edddce19a606659163The Android Open Source Project    /* Stop Init phase of GWSI and return TNETWIF_ERROR */
70464064216a8433360745f69edddce19a606659163The Android Open Source Project    GWSI_FinalizeDownload (pTnetwDrv->hUser, TNETWIF_ERROR);
70564064216a8433360745f69edddce19a606659163The Android Open Source Project
70664064216a8433360745f69edddce19a606659163The Android Open Source Project    /* When working with CORE call the os_Init_Complete that will release the OS semaphore taht the
70764064216a8433360745f69edddce19a606659163The Android Open Source Project    user is lock on it in the esta_drb to go on call the next stage */
70864064216a8433360745f69edddce19a606659163The Android Open Source Project
70964064216a8433360745f69edddce19a606659163The Android Open Source Project#else
71064064216a8433360745f69edddce19a606659163The Android Open Source Project
71164064216a8433360745f69edddce19a606659163The Android Open Source Project    /* Here at the end call the Initialize Complete callback that will release the user Init semaphore */
71264064216a8433360745f69edddce19a606659163The Android Open Source Project    WLAN_REPORT_INIT (pTnetwDrv->hReport, HAL_CTRL_MODULE_LOG, ("Call os_Complete !!!!!\n"));
71364064216a8433360745f69edddce19a606659163The Android Open Source Project
71464064216a8433360745f69edddce19a606659163The Android Open Source Project    /*
71564064216a8433360745f69edddce19a606659163The Android Open Source Project     * This will be the last thing that will be done here so all the download
71664064216a8433360745f69edddce19a606659163The Android Open Source Project     * will go back down to HAL to send FINISH to TNETWIF where it began
71764064216a8433360745f69edddce19a606659163The Android Open Source Project     */
71864064216a8433360745f69edddce19a606659163The Android Open Source Project    os_Complete (pTnetwDrv->hOs);
71964064216a8433360745f69edddce19a606659163The Android Open Source Project
72064064216a8433360745f69edddce19a606659163The Android Open Source Project#endif
72164064216a8433360745f69edddce19a606659163The Android Open Source Project
72264064216a8433360745f69edddce19a606659163The Android Open Source Project    return TNETWIF_COMPLETE;
72364064216a8433360745f69edddce19a606659163The Android Open Source Project}
72464064216a8433360745f69edddce19a606659163The Android Open Source Project
72564064216a8433360745f69edddce19a606659163The Android Open Source Project
72664064216a8433360745f69edddce19a606659163The Android Open Source Project/****************************************************************************/
72764064216a8433360745f69edddce19a606659163The Android Open Source Project/*                      TNETW_Driver_Register_CB()
72864064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************
72964064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION: Register the MAC Services and the HAL modules callbacks
73064064216a8433360745f69edddce19a606659163The Android Open Source Project *
73164064216a8433360745f69edddce19a606659163The Android Open Source Project * INPUTS:
73264064216a8433360745f69edddce19a606659163The Android Open Source Project *
73364064216a8433360745f69edddce19a606659163The Android Open Source Project * OUTPUT:
73464064216a8433360745f69edddce19a606659163The Android Open Source Project *
73564064216a8433360745f69edddce19a606659163The Android Open Source Project * RETURNS:
73664064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/
73764064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid TnetwDrv_Register_CB (TI_HANDLE hTnetwDrv,tiUINT32 EventID,void *CBFunc, void *pData)
73864064216a8433360745f69edddce19a606659163The Android Open Source Project{
73964064216a8433360745f69edddce19a606659163The Android Open Source Project
74064064216a8433360745f69edddce19a606659163The Android Open Source Project    TnetwDrv_t * pTnetwDrv = (TnetwDrv_t *)hTnetwDrv;
74164064216a8433360745f69edddce19a606659163The Android Open Source Project
74264064216a8433360745f69edddce19a606659163The Android Open Source Project    WLAN_REPORT_INFORMATION(pTnetwDrv->hReport, TNETW_DRV_MODULE_LOG, ("TnetwDrv_Register_CB (Value = 0x%x)\n", EventID));
74364064216a8433360745f69edddce19a606659163The Android Open Source Project
74464064216a8433360745f69edddce19a606659163The Android Open Source Project    /* First detect which module is the owner */
74564064216a8433360745f69edddce19a606659163The Android Open Source Project    switch((tiUINT16)(EventID & TNETW_DRIVER_CB_MODULE_OWNER_MASK))
74664064216a8433360745f69edddce19a606659163The Android Open Source Project    {
74764064216a8433360745f69edddce19a606659163The Android Open Source Project
74864064216a8433360745f69edddce19a606659163The Android Open Source Project    case  TNETW_DRIVER_TX_XFER_OWNER:
74964064216a8433360745f69edddce19a606659163The Android Open Source Project        EventID &= TNETW_DRIVER_CB_TYPE_MASK;
75064064216a8433360745f69edddce19a606659163The Android Open Source Project        WLAN_REPORT_INFORMATION(pTnetwDrv->hReport, TNETW_DRV_MODULE_LOG,("TnetwDrv_Register_CB: TNETW_DRIVER_TX_XFER_OWNER\n"));
75164064216a8433360745f69edddce19a606659163The Android Open Source Project        txXfer_RegisterCB(pTnetwDrv->hTxXfer, EventID, CBFunc, pData);
75264064216a8433360745f69edddce19a606659163The Android Open Source Project        break;
75364064216a8433360745f69edddce19a606659163The Android Open Source Project
75464064216a8433360745f69edddce19a606659163The Android Open Source Project    case  TNETW_DRIVER_TX_RESULT_OWNER:
75564064216a8433360745f69edddce19a606659163The Android Open Source Project        EventID &= TNETW_DRIVER_CB_TYPE_MASK;
75664064216a8433360745f69edddce19a606659163The Android Open Source Project        WLAN_REPORT_INFORMATION(pTnetwDrv->hReport, TNETW_DRV_MODULE_LOG,("TnetwDrv_Register_CB: TNETW_DRIVER_TX_RESULT_OWNER\n"));
75764064216a8433360745f69edddce19a606659163The Android Open Source Project        txResult_RegisterCB(pTnetwDrv->hTxResult, EventID, CBFunc, pData);
75864064216a8433360745f69edddce19a606659163The Android Open Source Project        break;
75964064216a8433360745f69edddce19a606659163The Android Open Source Project
76064064216a8433360745f69edddce19a606659163The Android Open Source Project    case TNETW_DRIVER_RX_XFER_OWNER:
76164064216a8433360745f69edddce19a606659163The Android Open Source Project        EventID &= TNETW_DRIVER_CB_TYPE_MASK;
76264064216a8433360745f69edddce19a606659163The Android Open Source Project        WLAN_REPORT_INFORMATION(pTnetwDrv->hReport, TNETW_DRV_MODULE_LOG,("TnetwDrv_Register_CB: TNETW_DRIVER_RX_XFER_OWNER\n"));
76364064216a8433360745f69edddce19a606659163The Android Open Source Project        rxXfer_Register_CB(pTnetwDrv->hRxXfer, EventID,CBFunc,pData);
76464064216a8433360745f69edddce19a606659163The Android Open Source Project        break;
76564064216a8433360745f69edddce19a606659163The Android Open Source Project
76664064216a8433360745f69edddce19a606659163The Android Open Source Project    case TNETW_DRIVER_HAL_CTRL_OWNER:
76764064216a8433360745f69edddce19a606659163The Android Open Source Project        EventID &= TNETW_DRIVER_CB_TYPE_MASK;
76864064216a8433360745f69edddce19a606659163The Android Open Source Project        whalCtrl_Register_CB(pTnetwDrv->hHalCtrl, EventID,CBFunc,pData);
76964064216a8433360745f69edddce19a606659163The Android Open Source Project        break;
77064064216a8433360745f69edddce19a606659163The Android Open Source Project
77164064216a8433360745f69edddce19a606659163The Android Open Source Project    case TNETW_DRIVER_MAC_SERVICES_OWNER:
77264064216a8433360745f69edddce19a606659163The Android Open Source Project        switch (EventID & TNETW_DRIVER_CB_TYPE_MASK)
77364064216a8433360745f69edddce19a606659163The Android Open Source Project        {
77464064216a8433360745f69edddce19a606659163The Android Open Source Project        case HAL_EVENT_SCAN_CMPLT:
77564064216a8433360745f69edddce19a606659163The Android Open Source Project            MacServices_scanSRV_registerScanCompleteCB(pTnetwDrv->hMacServices, (scan_srvCompleteCB_t)CBFunc, pData);
77664064216a8433360745f69edddce19a606659163The Android Open Source Project            break;
77764064216a8433360745f69edddce19a606659163The Android Open Source Project        default:
77864064216a8433360745f69edddce19a606659163The Android Open Source Project            WLAN_REPORT_WARNING(pTnetwDrv->hReport, TNETW_DRV_MODULE_LOG,("TNETW_DRIVER_MAC_SERVICES_OWNER - Illegal value\n"));
77964064216a8433360745f69edddce19a606659163The Android Open Source Project        }
78064064216a8433360745f69edddce19a606659163The Android Open Source Project        break;
78164064216a8433360745f69edddce19a606659163The Android Open Source Project
78264064216a8433360745f69edddce19a606659163The Android Open Source Project    case TNETW_DRIVER_TWD_OWNER:
78364064216a8433360745f69edddce19a606659163The Android Open Source Project        WLAN_REPORT_INFORMATION(pTnetwDrv->hReport, TNETW_DRV_MODULE_LOG,("TnetwDrv_Register_CB: TNETW_DRIVER_TWD_OWNER\n"));
78464064216a8433360745f69edddce19a606659163The Android Open Source Project        pTnetwDrv->fConfigureCmplteteCB  = (TnetDrv_callback_t)CBFunc;
78564064216a8433360745f69edddce19a606659163The Android Open Source Project        pTnetwDrv->hConfigureCompleteOBj = (TI_HANDLE)pData;
78664064216a8433360745f69edddce19a606659163The Android Open Source Project        break;
78764064216a8433360745f69edddce19a606659163The Android Open Source Project
78864064216a8433360745f69edddce19a606659163The Android Open Source Project    default:
78964064216a8433360745f69edddce19a606659163The Android Open Source Project        if (EventID == HAL_INTERNAL_EVENT_FAILURE)
79064064216a8433360745f69edddce19a606659163The Android Open Source Project        {
79164064216a8433360745f69edddce19a606659163The Android Open Source Project
79264064216a8433360745f69edddce19a606659163The Android Open Source Project
79364064216a8433360745f69edddce19a606659163The Android Open Source Project            /* register the Hal failure event callback  including the RX
79464064216a8433360745f69edddce19a606659163The Android Open Source Project                 in the Hal Cttl the errors are :
79564064216a8433360745f69edddce19a606659163The Android Open Source Project                MBOX_FAILURE,
79664064216a8433360745f69edddce19a606659163The Android Open Source Project                    BUS_ERROR,
79764064216a8433360745f69edddce19a606659163The Android Open Source Project                DEVICE_ERROR,
79864064216a8433360745f69edddce19a606659163The Android Open Source Project                DISCONNECT_TIMEOUT,*/
79964064216a8433360745f69edddce19a606659163The Android Open Source Project
80064064216a8433360745f69edddce19a606659163The Android Open Source Project
80164064216a8433360745f69edddce19a606659163The Android Open Source Project
80264064216a8433360745f69edddce19a606659163The Android Open Source Project            EventID &= TNETW_DRIVER_CB_TYPE_MASK;
80364064216a8433360745f69edddce19a606659163The Android Open Source Project            whalCtrl_Register_CB(pTnetwDrv->hHalCtrl, EventID,CBFunc,pData);
80464064216a8433360745f69edddce19a606659163The Android Open Source Project
80564064216a8433360745f69edddce19a606659163The Android Open Source Project            /* register the Elp controller failure event callback to the TNET interface
80664064216a8433360745f69edddce19a606659163The Android Open Source Project                HW_AWAKE_FAILURE*/
80764064216a8433360745f69edddce19a606659163The Android Open Source Project            TNETWIF_RegisterFailureEventCB(pTnetwDrv->hTNETWIF,CBFunc,pData);
80864064216a8433360745f69edddce19a606659163The Android Open Source Project
80964064216a8433360745f69edddce19a606659163The Android Open Source Project            /* register the Mac services failure events callbacks
81064064216a8433360745f69edddce19a606659163The Android Open Source Project                POWER_SAVE_FAILURE,
81164064216a8433360745f69edddce19a606659163The Android Open Source Project                MEASUREMENT_FAILURE,
81264064216a8433360745f69edddce19a606659163The Android Open Source Project                NO_SCAN_COMPLETE_FAILURE,*/
81364064216a8433360745f69edddce19a606659163The Android Open Source Project            MacServices_registerFailureEventCB(pTnetwDrv->hMacServices, CBFunc, pData);
81464064216a8433360745f69edddce19a606659163The Android Open Source Project
81564064216a8433360745f69edddce19a606659163The Android Open Source Project
81664064216a8433360745f69edddce19a606659163The Android Open Source Project            /* register the TX failure call back in the  Xfer
81764064216a8433360745f69edddce19a606659163The Android Open Source Project                TX_STUCK,*/
81864064216a8433360745f69edddce19a606659163The Android Open Source Project            txXfer_RegisterFailureEventCB(pTnetwDrv->hTxXfer, CBFunc, pData);
81964064216a8433360745f69edddce19a606659163The Android Open Source Project
82064064216a8433360745f69edddce19a606659163The Android Open Source Project
82164064216a8433360745f69edddce19a606659163The Android Open Source Project        }
82264064216a8433360745f69edddce19a606659163The Android Open Source Project        else
82364064216a8433360745f69edddce19a606659163The Android Open Source Project        WLAN_REPORT_WARNING(pTnetwDrv->hReport, TNETW_DRV_MODULE_LOG,("TnetwDrv_Register_CB - Illegal value\n"));
82464064216a8433360745f69edddce19a606659163The Android Open Source Project
82564064216a8433360745f69edddce19a606659163The Android Open Source Project    }
82664064216a8433360745f69edddce19a606659163The Android Open Source Project    return;
82764064216a8433360745f69edddce19a606659163The Android Open Source Project}
82864064216a8433360745f69edddce19a606659163The Android Open Source Project
82964064216a8433360745f69edddce19a606659163The Android Open Source Project/****************************************************************************/
83064064216a8433360745f69edddce19a606659163The Android Open Source Project/*                      TnetwDrv_SetInitParams()
83164064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/
83264064216a8433360745f69edddce19a606659163The Android Open Source Projectstatic TI_STATUS TnetwDrv_SetInitParams (TI_HANDLE hTnetwDrv, TnetwDrv_InitParams_t* pInitParams)
83364064216a8433360745f69edddce19a606659163The Android Open Source Project{
83464064216a8433360745f69edddce19a606659163The Android Open Source Project    TnetwDrv_t * pTnetwDrv = (TnetwDrv_t *)hTnetwDrv;
83564064216a8433360745f69edddce19a606659163The Android Open Source Project    TnetwDrv_InitParams_t *pInitTableCopy;
83664064216a8433360745f69edddce19a606659163The Android Open Source Project    UINT32       index;
83764064216a8433360745f69edddce19a606659163The Android Open Source Project
83864064216a8433360745f69edddce19a606659163The Android Open Source Project    pInitTableCopy = pTnetwDrv->pInitTableCopy = os_memoryAlloc (pTnetwDrv->hOs, sizeof(TnetwDrv_InitParams_t));
83964064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->pInitTableCopy != NULL)
84064064216a8433360745f69edddce19a606659163The Android Open Source Project    {
84164064216a8433360745f69edddce19a606659163The Android Open Source Project        os_memoryZero (pTnetwDrv->hOs, pTnetwDrv->pInitTableCopy, sizeof(TnetwDrv_InitParams_t));
84264064216a8433360745f69edddce19a606659163The Android Open Source Project        /* Copy the init info to the buffer */
84364064216a8433360745f69edddce19a606659163The Android Open Source Project        os_memoryCopy (pTnetwDrv->hOs, pTnetwDrv->pInitTableCopy, pInitParams, sizeof(TnetwDrv_InitParams_t));
84464064216a8433360745f69edddce19a606659163The Android Open Source Project        /* Change the Severity table to character */
84564064216a8433360745f69edddce19a606659163The Android Open Source Project        for (index = 0; index < sizeof(((report_t *)pTnetwDrv->hReport)->SeverityTable); index++)
84664064216a8433360745f69edddce19a606659163The Android Open Source Project        {
84764064216a8433360745f69edddce19a606659163The Android Open Source Project            pInitTableCopy->reportParams.SeverityTable[index] += '0';
84864064216a8433360745f69edddce19a606659163The Android Open Source Project        }
84964064216a8433360745f69edddce19a606659163The Android Open Source Project        /* Change the module table to character */
85064064216a8433360745f69edddce19a606659163The Android Open Source Project        for (index = 0; index < sizeof(((report_t *)pTnetwDrv->hReport)->ModuleTable); index++)
85164064216a8433360745f69edddce19a606659163The Android Open Source Project        {
85264064216a8433360745f69edddce19a606659163The Android Open Source Project            pInitTableCopy->reportParams.ModuleTable[index] += '0';
85364064216a8433360745f69edddce19a606659163The Android Open Source Project        }
85464064216a8433360745f69edddce19a606659163The Android Open Source Project    }
85564064216a8433360745f69edddce19a606659163The Android Open Source Project    else
85664064216a8433360745f69edddce19a606659163The Android Open Source Project    {
85764064216a8433360745f69edddce19a606659163The Android Open Source Project        WLAN_REPORT_ERROR(pTnetwDrv->hReport, TNETW_DRV_MODULE_LOG,
85864064216a8433360745f69edddce19a606659163The Android Open Source Project                          ("TnetwDrv_SetInitParams: unable to allocate init params buffer!\n") );
85964064216a8433360745f69edddce19a606659163The Android Open Source Project        return NOK;
86064064216a8433360745f69edddce19a606659163The Android Open Source Project    }
86164064216a8433360745f69edddce19a606659163The Android Open Source Project
86264064216a8433360745f69edddce19a606659163The Android Open Source Project    return OK;
86364064216a8433360745f69edddce19a606659163The Android Open Source Project}
86464064216a8433360745f69edddce19a606659163The Android Open Source Project
86564064216a8433360745f69edddce19a606659163The Android Open Source Project/****************************************************************************/
86664064216a8433360745f69edddce19a606659163The Android Open Source Project/*                      TnetwDrv_GetInitParams()
86764064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/
86864064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid TnetwDrv_GetInitParams (TI_HANDLE hTnetwDrv, UINT8 *pcommand, UINT16 *OutBufLen)
86964064216a8433360745f69edddce19a606659163The Android Open Source Project{
87064064216a8433360745f69edddce19a606659163The Android Open Source Project    TnetwDrv_t * pTnetwDrv = (TnetwDrv_t *)hTnetwDrv;
87164064216a8433360745f69edddce19a606659163The Android Open Source Project
87264064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->pInitTableCopy)
87364064216a8433360745f69edddce19a606659163The Android Open Source Project    {
87464064216a8433360745f69edddce19a606659163The Android Open Source Project        *(UINT32 *)pcommand = sizeof(TnetwDrv_InitParams_t);
87564064216a8433360745f69edddce19a606659163The Android Open Source Project        pcommand += sizeof(UINT32);
87664064216a8433360745f69edddce19a606659163The Android Open Source Project        os_memoryCopy(NULL, (void *)pcommand, (void *)pTnetwDrv->pInitTableCopy, sizeof(TnetwDrv_InitParams_t));
87764064216a8433360745f69edddce19a606659163The Android Open Source Project    }
87864064216a8433360745f69edddce19a606659163The Android Open Source Project    else
87964064216a8433360745f69edddce19a606659163The Android Open Source Project    {
88064064216a8433360745f69edddce19a606659163The Android Open Source Project        /* The table information is not available */
88164064216a8433360745f69edddce19a606659163The Android Open Source Project        *(UINT32 *)pcommand = 0;
88264064216a8433360745f69edddce19a606659163The Android Open Source Project        WLAN_OS_REPORT(("TNETW_Driver_GetInitParams :ERROR Getting Buffer for the INI File !!!\n"));
88364064216a8433360745f69edddce19a606659163The Android Open Source Project    }
88464064216a8433360745f69edddce19a606659163The Android Open Source Project
88564064216a8433360745f69edddce19a606659163The Android Open Source Project    *OutBufLen = (sizeof(TnetwDrv_InitParams_t) + sizeof(UINT32));
88664064216a8433360745f69edddce19a606659163The Android Open Source Project}
88764064216a8433360745f69edddce19a606659163The Android Open Source Project
88864064216a8433360745f69edddce19a606659163The Android Open Source Project
88964064216a8433360745f69edddce19a606659163The Android Open Source Project
89064064216a8433360745f69edddce19a606659163The Android Open Source Project/****************************************************************************/
89164064216a8433360745f69edddce19a606659163The Android Open Source Project/*                      TnetwDrv_PrintInfo()
89264064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************
89364064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION:  Call the requested print function.
89464064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/
89564064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid  TnetwDrv_PrintInfo (TI_HANDLE hTnetwDrv, TnetwDrv_PrintInfoType_e printInfo)
89664064216a8433360745f69edddce19a606659163The Android Open Source Project{
89764064216a8433360745f69edddce19a606659163The Android Open Source Project    TnetwDrv_t *pTnetwDrv = (TnetwDrv_t *)hTnetwDrv;
89864064216a8433360745f69edddce19a606659163The Android Open Source Project
89964064216a8433360745f69edddce19a606659163The Android Open Source Project    switch(printInfo)
90064064216a8433360745f69edddce19a606659163The Android Open Source Project    {
90164064216a8433360745f69edddce19a606659163The Android Open Source Project        case TNETW_DRV_PRINT_TX_CTRL_BLK_TBL:
90264064216a8433360745f69edddce19a606659163The Android Open Source Project            txCtrlBlk_printTable(pTnetwDrv->hTxCtrlBlk);
90364064216a8433360745f69edddce19a606659163The Android Open Source Project            break;
90464064216a8433360745f69edddce19a606659163The Android Open Source Project
90564064216a8433360745f69edddce19a606659163The Android Open Source Project        case TNETW_DRV_PRINT_TX_HW_QUEUE_INFO:
90664064216a8433360745f69edddce19a606659163The Android Open Source Project            txHwQueue_printInfo(pTnetwDrv->hTxHwQueue);
90764064216a8433360745f69edddce19a606659163The Android Open Source Project            break;
90864064216a8433360745f69edddce19a606659163The Android Open Source Project
90964064216a8433360745f69edddce19a606659163The Android Open Source Project        case TNETW_DRV_PRINT_TX_XFER_INFO:
91064064216a8433360745f69edddce19a606659163The Android Open Source Project            txXfer_printInfo(pTnetwDrv->hTxXfer);
91164064216a8433360745f69edddce19a606659163The Android Open Source Project            break;
91264064216a8433360745f69edddce19a606659163The Android Open Source Project
91364064216a8433360745f69edddce19a606659163The Android Open Source Project        case TNETW_DRV_PRINT_TX_RESULT_INFO:
91464064216a8433360745f69edddce19a606659163The Android Open Source Project            txResult_printInfo(pTnetwDrv->hTxResult);
91564064216a8433360745f69edddce19a606659163The Android Open Source Project            break;
91664064216a8433360745f69edddce19a606659163The Android Open Source Project
91764064216a8433360745f69edddce19a606659163The Android Open Source Project        case TNETW_DRV_CLEAR_TX_RESULT_INFO:
91864064216a8433360745f69edddce19a606659163The Android Open Source Project            txResult_clearInfo(pTnetwDrv->hTxResult);
91964064216a8433360745f69edddce19a606659163The Android Open Source Project            break;
92064064216a8433360745f69edddce19a606659163The Android Open Source Project
92164064216a8433360745f69edddce19a606659163The Android Open Source Project        default:
92264064216a8433360745f69edddce19a606659163The Android Open Source Project            WLAN_REPORT_ERROR( pTnetwDrv->hReport, TNETW_DRV_MODULE_LOG,
92364064216a8433360745f69edddce19a606659163The Android Open Source Project                               ("$s: invalid print info request code: %d\n", __FUNCTION__, printInfo) );
92464064216a8433360745f69edddce19a606659163The Android Open Source Project    }
92564064216a8433360745f69edddce19a606659163The Android Open Source Project}
92664064216a8433360745f69edddce19a606659163The Android Open Source Project
92764064216a8433360745f69edddce19a606659163The Android Open Source Project
92864064216a8433360745f69edddce19a606659163The Android Open Source Project
92964064216a8433360745f69edddce19a606659163The Android Open Source Project
93064064216a8433360745f69edddce19a606659163The Android Open Source Project/****************************************************************************/
93164064216a8433360745f69edddce19a606659163The Android Open Source Project/*                      TnetwDrv_TEMP_GetHandles()
93264064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************
93364064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION:
93464064216a8433360745f69edddce19a606659163The Android Open Source Project
93564064216a8433360745f69edddce19a606659163The Android Open Source Project       TEMPORARY!! - untill the new TNETW-Driver architecture is completed!!
93664064216a8433360745f69edddce19a606659163The Android Open Source Project
93764064216a8433360745f69edddce19a606659163The Android Open Source Project       In the new architecture all external calls to the driver will be through
93864064216a8433360745f69edddce19a606659163The Android Open Source Project         the hTnetwDrv handle.
93964064216a8433360745f69edddce19a606659163The Android Open Source Project
94064064216a8433360745f69edddce19a606659163The Android Open Source Project       Called by the driver creation process.
94164064216a8433360745f69edddce19a606659163The Android Open Source Project       Gets the TNETW-Driver modules handles needed externally.
94264064216a8433360745f69edddce19a606659163The Android Open Source Project
94364064216a8433360745f69edddce19a606659163The Android Open Source Project****************************************************************************/
94464064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid  TnetwDrv_TEMP_GetHandles(TI_HANDLE hTnetwDrv, TI_HANDLE *pHalCtrl, TI_HANDLE *pMacServices)
94564064216a8433360745f69edddce19a606659163The Android Open Source Project{
94664064216a8433360745f69edddce19a606659163The Android Open Source Project    TnetwDrv_t *pTnetwDrv = (TnetwDrv_t *)hTnetwDrv;
94764064216a8433360745f69edddce19a606659163The Android Open Source Project
94864064216a8433360745f69edddce19a606659163The Android Open Source Project    *pHalCtrl       = pTnetwDrv->hHalCtrl;
94964064216a8433360745f69edddce19a606659163The Android Open Source Project    *pMacServices   = pTnetwDrv->hMacServices;
95064064216a8433360745f69edddce19a606659163The Android Open Source Project}
95164064216a8433360745f69edddce19a606659163The Android Open Source Project
95264064216a8433360745f69edddce19a606659163The Android Open Source Project#if !defined(GWSI_DRIVER) && !defined(GWSI_LIB)
95364064216a8433360745f69edddce19a606659163The Android Open Source Project/****************************************************************************/
95464064216a8433360745f69edddce19a606659163The Android Open Source Project/*                      TnetwDrv_StartRecovery()
95564064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************
95664064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION:
95764064216a8433360745f69edddce19a606659163The Android Open Source Project          API function called by RecoverMgr to start TWD recovery process
95864064216a8433360745f69edddce19a606659163The Android Open Source Project****************************************************************************/
95964064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid TnetwDrv_StartRecovery(TI_HANDLE hTnetwDrv, void *endOfRecoveryCB, TI_HANDLE hRecoveryMgr)
96064064216a8433360745f69edddce19a606659163The Android Open Source Project{
96164064216a8433360745f69edddce19a606659163The Android Open Source Project    TnetwDrv_t *pTnetwDrv = (TnetwDrv_t *)hTnetwDrv;
96264064216a8433360745f69edddce19a606659163The Android Open Source Project    pTnetwDrv->bRecoveryFlag = TRUE;
96364064216a8433360745f69edddce19a606659163The Android Open Source Project    recoveryCtrl_restartTWD(pTnetwDrv->hRecoveryCtrl, endOfRecoveryCB, hRecoveryMgr);
96464064216a8433360745f69edddce19a606659163The Android Open Source Project
96564064216a8433360745f69edddce19a606659163The Android Open Source Project}
96664064216a8433360745f69edddce19a606659163The Android Open Source Project
96764064216a8433360745f69edddce19a606659163The Android Open Source Project/****************************************************************************/
96864064216a8433360745f69edddce19a606659163The Android Open Source Project/*                      TnetwDrv_InitHw_FinalizeDownload()
96964064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************
97064064216a8433360745f69edddce19a606659163The Android Open Source Project * DESCRIPTION:
97164064216a8433360745f69edddce19a606659163The Android Open Source Project          API function called by RecoverMgr to start TWD recovery process
97264064216a8433360745f69edddce19a606659163The Android Open Source Project****************************************************************************/
97364064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS TnetwDrv_InitHw_FinalizeDownload(TI_HANDLE hTnetwDrv)
97464064216a8433360745f69edddce19a606659163The Android Open Source Project{
97564064216a8433360745f69edddce19a606659163The Android Open Source Project    TnetwDrv_t *pTnetwDrv = (TnetwDrv_t *)hTnetwDrv;
97664064216a8433360745f69edddce19a606659163The Android Open Source Project
97764064216a8433360745f69edddce19a606659163The Android Open Source Project    if (pTnetwDrv->bRecoveryFlag)
97864064216a8433360745f69edddce19a606659163The Android Open Source Project    {
97964064216a8433360745f69edddce19a606659163The Android Open Source Project        pTnetwDrv->bRecoveryFlag = FALSE;
98064064216a8433360745f69edddce19a606659163The Android Open Source Project        return InitHw_FinalizeDownload(pTnetwDrv->hHwInit);
98164064216a8433360745f69edddce19a606659163The Android Open Source Project    }
98264064216a8433360745f69edddce19a606659163The Android Open Source Project    else
98364064216a8433360745f69edddce19a606659163The Android Open Source Project    {
98464064216a8433360745f69edddce19a606659163The Android Open Source Project        return TnetwDrv_FinalizeDownload(hTnetwDrv);
98564064216a8433360745f69edddce19a606659163The Android Open Source Project    }
98664064216a8433360745f69edddce19a606659163The Android Open Source Project}
98764064216a8433360745f69edddce19a606659163The Android Open Source Project#endif
98864064216a8433360745f69edddce19a606659163The Android Open Source Project
98964064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef GWSI_SPI_TEST
99064064216a8433360745f69edddce19a606659163The Android Open Source Project
99164064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_HANDLE TnetwDrv_GetTnetwifHandle (TI_HANDLE hTnetwDrv)
99264064216a8433360745f69edddce19a606659163The Android Open Source Project{
99364064216a8433360745f69edddce19a606659163The Android Open Source Project	return ((TnetwDrv_t *)hTnetwDrv)->hTNETWIF;
99464064216a8433360745f69edddce19a606659163The Android Open Source Project}
99564064216a8433360745f69edddce19a606659163The Android Open Source Project
99664064216a8433360745f69edddce19a606659163The Android Open Source Project#endif /* GWSI_SPI_TEST */
997