OSDN Git Service

original
[gb-231r1-is01/Gingerbread_2.3.3_r1_IS01.git] / system / wlan / ti / sta_dk_4_0_4_32 / common / src / TNETW_Driver / FW_Transfer / Cmd_MBox / CmdMBox.h
1
2 /****************************************************************************
3 **+-----------------------------------------------------------------------+**
4 **|                                                                       |**
5 **| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved.      |**
6 **| All rights reserved.                                                  |**
7 **|                                                                       |**
8 **| Redistribution and use in source and binary forms, with or without    |**
9 **| modification, are permitted provided that the following conditions    |**
10 **| are met:                                                              |**
11 **|                                                                       |**
12 **|  * Redistributions of source code must retain the above copyright     |**
13 **|    notice, this list of conditions and the following disclaimer.      |**
14 **|  * Redistributions in binary form must reproduce the above copyright  |**
15 **|    notice, this list of conditions and the following disclaimer in    |**
16 **|    the documentation and/or other materials provided with the         |**
17 **|    distribution.                                                      |**
18 **|  * Neither the name Texas Instruments nor the names of its            |**
19 **|    contributors may be used to endorse or promote products derived    |**
20 **|    from this software without specific prior written permission.      |**
21 **|                                                                       |**
22 **| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |**
23 **| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |**
24 **| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |**
25 **| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |**
26 **| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |**
27 **| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |**
28 **| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |**
29 **| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |**
30 **| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |**
31 **| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |**
32 **| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |**
33 **|                                                                       |**
34 **+-----------------------------------------------------------------------+**
35 ****************************************************************************/
36
37 /*********************************************************************************/
38 /*                                                                                */
39 /*   MODULE:  CmdMBox.h                                                       */
40 /*   PURPOSE: Acx mailbox object api                                              */
41 /*                                                                                */
42 /**********************************************************************************/
43 #ifndef _CMDMBOX_H_
44 #define _CMDMBOX_H_
45
46 #include "whalCommon.h"
47 #include "whalHwDefs.h"
48
49 /*****************************************************************************
50  **         Defines                                                        **
51  *****************************************************************************/
52  /* wait for a Mail box command to complete  */
53 #define CMDMBOX_WAIT_TIMEOUT    500 /* ms */
54
55 #define CMDMBOX_HEADER_LEN 4
56 #define CMDMBOX_INFO_ELEM_HEADER_LEN 4
57 #define CMDMBOX_WAIT_CMPLT_STALL_TIME 50 /* us */
58 #define CMDMBOX_US_TO_MS 1000
59
60 /*****************************************************************************
61  **         Enums                                                    **
62  *****************************************************************************/
63 typedef enum 
64 {
65     CMDMBOX_EVENT_SEND_CMD,
66     CMDMBOX_EVENT_CMD_CMPLT,
67     CMDMBOX_EVENT_BUS_READY,
68     CMDMBOX_EVENT_TXN_CMPLT,
69     CMDMBOX_EVENT_GET_RESULT,
70     CMDMBOX_EVENT_NUM,
71 } CmdMBox_SMEvents_e;
72
73 typedef enum 
74 {
75     CMDMBOX_STATE_SENDCMD_NORMAL_IDLE = 0,
76     CMDMBOX_STATE_SENDCMD_NORMAL_WAIT_BUS,
77     CMDMBOX_STATE_SENDCMD_NORMAL_WAIT_TXN_BUF,
78     CMDMBOX_STATE_SENDCMD_NORMAL_WRITE_TRIG_v,
79     CMDMBOX_STATE_SENDCMD_NORMAL_WAIT_TXN_TRIG,
80 } CmdMBox_SMStates_SendCmd_Normal_e;
81
82 typedef enum 
83 {
84     CMDMBOX_STATE_SENDCMD_BLOCKING_IDLE = 10,
85     CMDMBOX_STATE_SENDCMD_BLOCKING_WAIT_BUS,
86     CMDMBOX_STATE_SENDCMD_BLOCKING_WAIT_TXN_BUF,
87     CMDMBOX_STATE_SENDCMD_BLOCKING_WRITE_TRIG_v,
88     CMDMBOX_STATE_SENDCMD_BLOCKING_WAIT_TXN_TRIG,
89     CMDMBOX_STATE_SENDCMD_BLOCKING_POLL_CMPLT_v,
90     CMDMBOX_STATE_SENDCMD_BLOCKING_FINISH_v,
91 } CmdMBox_SMStates_SendCmd_Blocking_e;
92
93 typedef enum 
94 {
95     CMDMBOX_STATE_GETRESULT_NORMAL_IDLE = 20,
96     CMDMBOX_STATE_GETRESULT_NORMAL_WAIT_TXN,
97 } CmdMBox_SMStates_GetResult_Normal_e;
98
99 typedef enum 
100 {
101     CMDMBOX_STATE_GETRESULT_BLOCKING_IDLE = 30,
102     CMDMBOX_STATE_GETRESULT_BLOCKING_WAIT_TXN,
103     CMDMBOX_STATE_NUM,
104 } CmdMBox_SMStates_GetResult_Blocking_e;
105
106 /*****************************************************************************
107  **         Types                                                    **
108  *****************************************************************************/
109 typedef struct _CmdMBox_T CmdMBox_T; 
110 typedef int (*SM_Func_t)(CmdMBox_T* pCmdMBox, CmdMBox_SMEvents_e event);
111
112
113 /*****************************************************************************
114  **         Structures                                                      **
115  *****************************************************************************/
116
117 struct _CmdMBox_T
118 {   
119     /* handles */
120     TI_HANDLE               hOs;
121     TI_HANDLE               hReport;
122     TI_HANDLE               hTNETWIF;
123     TI_HANDLE               hFwEvent;
124     TI_HANDLE               hTimer; 
125     TI_HANDLE               hCmdQueue;
126
127     /* SM */
128     CmdMBox_SMStates_GetResult_Normal_e     GetResultNormal_State;
129     CmdMBox_SMStates_GetResult_Blocking_e   GetResultBlocking_State;
130     CmdMBox_SMStates_SendCmd_Normal_e   SendCmdNormal_State;
131     CmdMBox_SMStates_SendCmd_Blocking_e SendCmdBlocking_State;
132     SM_Func_t               ActiveSM;
133     SM_Func_t               SendCmdSM;
134     SM_Func_t               GetResultSM;    
135
136     /* HW params */
137     /* use a struct to read buffers from the bus - used for extra bytes reserving */
138     PADDING (Command_t  HW_CmdMBox)
139     
140     UINT32                  CmdMBox_FW_address;
141     UINT32                  CmdLen;
142
143     UINT8*                  GetResult_ParamsBuf;
144     UINT32                  GetResult_ParamsLen;
145
146     BOOLEAN                 useOpt;
147     
148     TNETWIF_callback_t      fCb;
149     TI_HANDLE               hCb;
150 };
151
152 /*****************************************************************************
153  **         Internal functions definitions                                  **
154  *****************************************************************************/
155 int             CmdMBox_SM_GetResultNormal(CmdMBox_T* pCmdMBox, CmdMBox_SMEvents_e event);
156 int             CmdMBox_SM_GetResultBlocking(CmdMBox_T* pCmdMBox, CmdMBox_SMEvents_e event);
157 int             CmdMBox_SM_SendCmdNormal(CmdMBox_T* pCmdMBox, CmdMBox_SMEvents_e event);
158 int             CmdMBox_SM_SendCmdBlocking(CmdMBox_T* pCmdMBox, CmdMBox_SMEvents_e event);
159
160 /*****************************************************************************
161  **         CB functions definitions                                  **
162  *****************************************************************************/
163 void            CmdMBox_TimeOut(TI_HANDLE hCmdMBox);
164 void                CmdMBox_TxnCmplt(TI_HANDLE hCmdMBox, UINT8 module_id ,TI_STATUS status);
165 void                CmdMBox_BusReady(TI_HANDLE hCmdMBox, UINT8 module_id ,TI_STATUS status);
166
167 #endif