164064216a8433360745f69edddce19a606659163The Android Open Source Project
264064216a8433360745f69edddce19a606659163The Android Open Source Project/****************************************************************************
364064216a8433360745f69edddce19a606659163The Android Open Source Project**+-----------------------------------------------------------------------+**
464064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                       |**
564064216a8433360745f69edddce19a606659163The Android Open Source Project**| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved.      |**
664064216a8433360745f69edddce19a606659163The Android Open Source Project**| All rights reserved.                                                  |**
764064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                       |**
864064216a8433360745f69edddce19a606659163The Android Open Source Project**| Redistribution and use in source and binary forms, with or without    |**
964064216a8433360745f69edddce19a606659163The Android Open Source Project**| modification, are permitted provided that the following conditions    |**
1064064216a8433360745f69edddce19a606659163The Android Open Source Project**| are met:                                                              |**
1164064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                       |**
1264064216a8433360745f69edddce19a606659163The Android Open Source Project**|  * Redistributions of source code must retain the above copyright     |**
1364064216a8433360745f69edddce19a606659163The Android Open Source Project**|    notice, this list of conditions and the following disclaimer.      |**
1464064216a8433360745f69edddce19a606659163The Android Open Source Project**|  * Redistributions in binary form must reproduce the above copyright  |**
1564064216a8433360745f69edddce19a606659163The Android Open Source Project**|    notice, this list of conditions and the following disclaimer in    |**
1664064216a8433360745f69edddce19a606659163The Android Open Source Project**|    the documentation and/or other materials provided with the         |**
1764064216a8433360745f69edddce19a606659163The Android Open Source Project**|    distribution.                                                      |**
1864064216a8433360745f69edddce19a606659163The Android Open Source Project**|  * Neither the name Texas Instruments nor the names of its            |**
1964064216a8433360745f69edddce19a606659163The Android Open Source Project**|    contributors may be used to endorse or promote products derived    |**
2064064216a8433360745f69edddce19a606659163The Android Open Source Project**|    from this software without specific prior written permission.      |**
2164064216a8433360745f69edddce19a606659163The Android Open Source Project**|                                                                       |**
2264064216a8433360745f69edddce19a606659163The Android Open Source Project**| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |**
2364064216a8433360745f69edddce19a606659163The Android Open Source Project**| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |**
2464064216a8433360745f69edddce19a606659163The Android Open Source Project**| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |**
2564064216a8433360745f69edddce19a606659163The Android Open Source Project**| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |**
2664064216a8433360745f69edddce19a606659163The Android Open Source Project**| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |**
2764064216a8433360745f69edddce19a606659163The Android Open Source Project**| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |**
2864064216a8433360745f69edddce19a606659163The Android Open Source Project**| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |**
2964064216a8433360745f69edddce19a606659163The Android Open Source Project**| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |**
3064064216a8433360745f69edddce19a606659163The Android Open Source Project**| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |**
3164064216a8433360745f69edddce19a606659163The Android Open Source Project**| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |**
3264064216a8433360745f69edddce19a606659163The Android Open Source Project**| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |**
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/*                                                                                */
3964064216a8433360745f69edddce19a606659163The Android Open Source Project/*   MODULE:  CmdMBox.h                                                       */
4064064216a8433360745f69edddce19a606659163The Android Open Source Project/*   PURPOSE: Acx mailbox object api                                              */
4164064216a8433360745f69edddce19a606659163The Android Open Source Project/*                                                                                */
4264064216a8433360745f69edddce19a606659163The Android Open Source Project/**********************************************************************************/
4364064216a8433360745f69edddce19a606659163The Android Open Source Project#ifndef _CMDMBOX_H_
4464064216a8433360745f69edddce19a606659163The Android Open Source Project#define _CMDMBOX_H_
4564064216a8433360745f69edddce19a606659163The Android Open Source Project
4664064216a8433360745f69edddce19a606659163The Android Open Source Project#include "whalCommon.h"
4764064216a8433360745f69edddce19a606659163The Android Open Source Project#include "whalHwDefs.h"
4864064216a8433360745f69edddce19a606659163The Android Open Source Project
4964064216a8433360745f69edddce19a606659163The Android Open Source Project/*****************************************************************************
5064064216a8433360745f69edddce19a606659163The Android Open Source Project **         Defines                                                        **
5164064216a8433360745f69edddce19a606659163The Android Open Source Project *****************************************************************************/
5264064216a8433360745f69edddce19a606659163The Android Open Source Project /* wait for a Mail box command to complete  */
5364064216a8433360745f69edddce19a606659163The Android Open Source Project#define CMDMBOX_WAIT_TIMEOUT    500 /* ms */
5464064216a8433360745f69edddce19a606659163The Android Open Source Project
5564064216a8433360745f69edddce19a606659163The Android Open Source Project#define CMDMBOX_HEADER_LEN 4
5664064216a8433360745f69edddce19a606659163The Android Open Source Project#define CMDMBOX_INFO_ELEM_HEADER_LEN 4
5764064216a8433360745f69edddce19a606659163The Android Open Source Project#define CMDMBOX_WAIT_CMPLT_STALL_TIME 50 /* us */
5864064216a8433360745f69edddce19a606659163The Android Open Source Project#define CMDMBOX_US_TO_MS 1000
5964064216a8433360745f69edddce19a606659163The Android Open Source Project
6064064216a8433360745f69edddce19a606659163The Android Open Source Project/*****************************************************************************
6164064216a8433360745f69edddce19a606659163The Android Open Source Project **         Enums                                                    **
6264064216a8433360745f69edddce19a606659163The Android Open Source Project *****************************************************************************/
6364064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef enum
6464064216a8433360745f69edddce19a606659163The Android Open Source Project{
6564064216a8433360745f69edddce19a606659163The Android Open Source Project    CMDMBOX_EVENT_SEND_CMD,
6664064216a8433360745f69edddce19a606659163The Android Open Source Project    CMDMBOX_EVENT_CMD_CMPLT,
6764064216a8433360745f69edddce19a606659163The Android Open Source Project    CMDMBOX_EVENT_BUS_READY,
6864064216a8433360745f69edddce19a606659163The Android Open Source Project    CMDMBOX_EVENT_TXN_CMPLT,
6964064216a8433360745f69edddce19a606659163The Android Open Source Project    CMDMBOX_EVENT_GET_RESULT,
7064064216a8433360745f69edddce19a606659163The Android Open Source Project    CMDMBOX_EVENT_NUM,
7164064216a8433360745f69edddce19a606659163The Android Open Source Project} CmdMBox_SMEvents_e;
7264064216a8433360745f69edddce19a606659163The Android Open Source Project
7364064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef enum
7464064216a8433360745f69edddce19a606659163The Android Open Source Project{
7564064216a8433360745f69edddce19a606659163The Android Open Source Project    CMDMBOX_STATE_SENDCMD_NORMAL_IDLE = 0,
7664064216a8433360745f69edddce19a606659163The Android Open Source Project    CMDMBOX_STATE_SENDCMD_NORMAL_WAIT_BUS,
7764064216a8433360745f69edddce19a606659163The Android Open Source Project    CMDMBOX_STATE_SENDCMD_NORMAL_WAIT_TXN_BUF,
7864064216a8433360745f69edddce19a606659163The Android Open Source Project    CMDMBOX_STATE_SENDCMD_NORMAL_WRITE_TRIG_v,
7964064216a8433360745f69edddce19a606659163The Android Open Source Project    CMDMBOX_STATE_SENDCMD_NORMAL_WAIT_TXN_TRIG,
8064064216a8433360745f69edddce19a606659163The Android Open Source Project} CmdMBox_SMStates_SendCmd_Normal_e;
8164064216a8433360745f69edddce19a606659163The Android Open Source Project
8264064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef enum
8364064216a8433360745f69edddce19a606659163The Android Open Source Project{
8464064216a8433360745f69edddce19a606659163The Android Open Source Project    CMDMBOX_STATE_SENDCMD_BLOCKING_IDLE = 10,
8564064216a8433360745f69edddce19a606659163The Android Open Source Project    CMDMBOX_STATE_SENDCMD_BLOCKING_WAIT_BUS,
8664064216a8433360745f69edddce19a606659163The Android Open Source Project    CMDMBOX_STATE_SENDCMD_BLOCKING_WAIT_TXN_BUF,
8764064216a8433360745f69edddce19a606659163The Android Open Source Project    CMDMBOX_STATE_SENDCMD_BLOCKING_WRITE_TRIG_v,
8864064216a8433360745f69edddce19a606659163The Android Open Source Project    CMDMBOX_STATE_SENDCMD_BLOCKING_WAIT_TXN_TRIG,
8964064216a8433360745f69edddce19a606659163The Android Open Source Project    CMDMBOX_STATE_SENDCMD_BLOCKING_POLL_CMPLT_v,
9064064216a8433360745f69edddce19a606659163The Android Open Source Project    CMDMBOX_STATE_SENDCMD_BLOCKING_FINISH_v,
9164064216a8433360745f69edddce19a606659163The Android Open Source Project} CmdMBox_SMStates_SendCmd_Blocking_e;
9264064216a8433360745f69edddce19a606659163The Android Open Source Project
9364064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef enum
9464064216a8433360745f69edddce19a606659163The Android Open Source Project{
9564064216a8433360745f69edddce19a606659163The Android Open Source Project    CMDMBOX_STATE_GETRESULT_NORMAL_IDLE = 20,
9664064216a8433360745f69edddce19a606659163The Android Open Source Project    CMDMBOX_STATE_GETRESULT_NORMAL_WAIT_TXN,
9764064216a8433360745f69edddce19a606659163The Android Open Source Project} CmdMBox_SMStates_GetResult_Normal_e;
9864064216a8433360745f69edddce19a606659163The Android Open Source Project
9964064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef enum
10064064216a8433360745f69edddce19a606659163The Android Open Source Project{
10164064216a8433360745f69edddce19a606659163The Android Open Source Project    CMDMBOX_STATE_GETRESULT_BLOCKING_IDLE = 30,
10264064216a8433360745f69edddce19a606659163The Android Open Source Project    CMDMBOX_STATE_GETRESULT_BLOCKING_WAIT_TXN,
10364064216a8433360745f69edddce19a606659163The Android Open Source Project    CMDMBOX_STATE_NUM,
10464064216a8433360745f69edddce19a606659163The Android Open Source Project} CmdMBox_SMStates_GetResult_Blocking_e;
10564064216a8433360745f69edddce19a606659163The Android Open Source Project
10664064216a8433360745f69edddce19a606659163The Android Open Source Project/*****************************************************************************
10764064216a8433360745f69edddce19a606659163The Android Open Source Project **         Types                                                    **
10864064216a8433360745f69edddce19a606659163The Android Open Source Project *****************************************************************************/
10964064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef struct _CmdMBox_T CmdMBox_T;
11064064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef int (*SM_Func_t)(CmdMBox_T* pCmdMBox, CmdMBox_SMEvents_e event);
11164064216a8433360745f69edddce19a606659163The Android Open Source Project
11264064216a8433360745f69edddce19a606659163The Android Open Source Project
11364064216a8433360745f69edddce19a606659163The Android Open Source Project/*****************************************************************************
11464064216a8433360745f69edddce19a606659163The Android Open Source Project **         Structures                                                      **
11564064216a8433360745f69edddce19a606659163The Android Open Source Project *****************************************************************************/
11664064216a8433360745f69edddce19a606659163The Android Open Source Project
11764064216a8433360745f69edddce19a606659163The Android Open Source Projectstruct _CmdMBox_T
11864064216a8433360745f69edddce19a606659163The Android Open Source Project{
11964064216a8433360745f69edddce19a606659163The Android Open Source Project    /* handles */
12064064216a8433360745f69edddce19a606659163The Android Open Source Project    TI_HANDLE               hOs;
12164064216a8433360745f69edddce19a606659163The Android Open Source Project    TI_HANDLE               hReport;
12264064216a8433360745f69edddce19a606659163The Android Open Source Project    TI_HANDLE               hTNETWIF;
12364064216a8433360745f69edddce19a606659163The Android Open Source Project    TI_HANDLE               hFwEvent;
12464064216a8433360745f69edddce19a606659163The Android Open Source Project    TI_HANDLE               hTimer;
12564064216a8433360745f69edddce19a606659163The Android Open Source Project    TI_HANDLE               hCmdQueue;
12664064216a8433360745f69edddce19a606659163The Android Open Source Project
12764064216a8433360745f69edddce19a606659163The Android Open Source Project    /* SM */
12864064216a8433360745f69edddce19a606659163The Android Open Source Project    CmdMBox_SMStates_GetResult_Normal_e     GetResultNormal_State;
12964064216a8433360745f69edddce19a606659163The Android Open Source Project    CmdMBox_SMStates_GetResult_Blocking_e   GetResultBlocking_State;
13064064216a8433360745f69edddce19a606659163The Android Open Source Project    CmdMBox_SMStates_SendCmd_Normal_e   SendCmdNormal_State;
13164064216a8433360745f69edddce19a606659163The Android Open Source Project    CmdMBox_SMStates_SendCmd_Blocking_e SendCmdBlocking_State;
13264064216a8433360745f69edddce19a606659163The Android Open Source Project    SM_Func_t               ActiveSM;
13364064216a8433360745f69edddce19a606659163The Android Open Source Project    SM_Func_t               SendCmdSM;
13464064216a8433360745f69edddce19a606659163The Android Open Source Project    SM_Func_t               GetResultSM;
13564064216a8433360745f69edddce19a606659163The Android Open Source Project
13664064216a8433360745f69edddce19a606659163The Android Open Source Project    /* HW params */
13764064216a8433360745f69edddce19a606659163The Android Open Source Project    /* use a struct to read buffers from the bus - used for extra bytes reserving */
13864064216a8433360745f69edddce19a606659163The Android Open Source Project    PADDING (Command_t  HW_CmdMBox)
13964064216a8433360745f69edddce19a606659163The Android Open Source Project
14064064216a8433360745f69edddce19a606659163The Android Open Source Project    UINT32                  CmdMBox_FW_address;
14164064216a8433360745f69edddce19a606659163The Android Open Source Project    UINT32                  CmdLen;
14264064216a8433360745f69edddce19a606659163The Android Open Source Project
14364064216a8433360745f69edddce19a606659163The Android Open Source Project    UINT8*                  GetResult_ParamsBuf;
14464064216a8433360745f69edddce19a606659163The Android Open Source Project    UINT32                  GetResult_ParamsLen;
14564064216a8433360745f69edddce19a606659163The Android Open Source Project
14664064216a8433360745f69edddce19a606659163The Android Open Source Project    BOOLEAN                 useOpt;
14764064216a8433360745f69edddce19a606659163The Android Open Source Project
14864064216a8433360745f69edddce19a606659163The Android Open Source Project    TNETWIF_callback_t      fCb;
14964064216a8433360745f69edddce19a606659163The Android Open Source Project    TI_HANDLE               hCb;
15064064216a8433360745f69edddce19a606659163The Android Open Source Project};
15164064216a8433360745f69edddce19a606659163The Android Open Source Project
15264064216a8433360745f69edddce19a606659163The Android Open Source Project/*****************************************************************************
15364064216a8433360745f69edddce19a606659163The Android Open Source Project **         Internal functions definitions                                  **
15464064216a8433360745f69edddce19a606659163The Android Open Source Project *****************************************************************************/
15564064216a8433360745f69edddce19a606659163The Android Open Source Projectint             CmdMBox_SM_GetResultNormal(CmdMBox_T* pCmdMBox, CmdMBox_SMEvents_e event);
15664064216a8433360745f69edddce19a606659163The Android Open Source Projectint             CmdMBox_SM_GetResultBlocking(CmdMBox_T* pCmdMBox, CmdMBox_SMEvents_e event);
15764064216a8433360745f69edddce19a606659163The Android Open Source Projectint             CmdMBox_SM_SendCmdNormal(CmdMBox_T* pCmdMBox, CmdMBox_SMEvents_e event);
15864064216a8433360745f69edddce19a606659163The Android Open Source Projectint             CmdMBox_SM_SendCmdBlocking(CmdMBox_T* pCmdMBox, CmdMBox_SMEvents_e event);
15964064216a8433360745f69edddce19a606659163The Android Open Source Project
16064064216a8433360745f69edddce19a606659163The Android Open Source Project/*****************************************************************************
16164064216a8433360745f69edddce19a606659163The Android Open Source Project **         CB functions definitions                                  **
16264064216a8433360745f69edddce19a606659163The Android Open Source Project *****************************************************************************/
16364064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid            CmdMBox_TimeOut(TI_HANDLE hCmdMBox);
16464064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid                CmdMBox_TxnCmplt(TI_HANDLE hCmdMBox, UINT8 module_id ,TI_STATUS status);
16564064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid                CmdMBox_BusReady(TI_HANDLE hCmdMBox, UINT8 module_id ,TI_STATUS status);
16664064216a8433360745f69edddce19a606659163The Android Open Source Project
16764064216a8433360745f69edddce19a606659163The Android Open Source Project#endif
168