phy: rockchip-inno-usb2: add SDP detect retry
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8188eu / hal / OUTSRC-BTCoexist / HalBtcOutSrc.h
1 #ifndef __HALBTC_OUT_SRC_H__\r
2 #define __HALBTC_OUT_SRC_H__\r
3 \r
4 #define         NORMAL_EXEC                                     FALSE\r
5 #define         FORCE_EXEC                                              TRUE\r
6 \r
7 #define         BTC_RF_A                                        0x0\r
8 #define         BTC_RF_B                                        0x1\r
9 #define         BTC_RF_C                                        0x2\r
10 #define         BTC_RF_D                                        0x3\r
11 \r
12 #define         BTC_SMSP                                SINGLEMAC_SINGLEPHY\r
13 #define         BTC_DMDP                                DUALMAC_DUALPHY\r
14 #define         BTC_DMSP                                DUALMAC_SINGLEPHY\r
15 #define         BTC_MP_UNKNOWN          0xff\r
16 \r
17 #define         BT_COEX_ANT_TYPE_PG                     0\r
18 #define         BT_COEX_ANT_TYPE_ANTDIV         1\r
19 #define         BT_COEX_ANT_TYPE_DETECTED       2\r
20 \r
21 #define         BTC_MIMO_PS_STATIC                      0       // 1ss\r
22 #define         BTC_MIMO_PS_DYNAMIC                     1       // 2ss\r
23 \r
24 #define         BTC_RATE_DISABLE                        0\r
25 #define         BTC_RATE_ENABLE                         1\r
26 \r
27 // single Antenna definition\r
28 #define         BTC_ANT_PATH_WIFI                       0\r
29 #define         BTC_ANT_PATH_BT                         1\r
30 #define         BTC_ANT_PATH_PTA                        2\r
31 // dual Antenna definition\r
32 #define         BTC_ANT_WIFI_AT_MAIN            0\r
33 #define         BTC_ANT_WIFI_AT_AUX                     1\r
34 // coupler Antenna definition\r
35 #define         BTC_ANT_WIFI_AT_CPL_MAIN        0\r
36 #define         BTC_ANT_WIFI_AT_CPL_AUX         1\r
37 \r
38 typedef enum _BTC_POWERSAVE_TYPE{\r
39         BTC_PS_WIFI_NATIVE                      = 0,    // wifi original power save behavior\r
40         BTC_PS_LPS_ON                           = 1,\r
41         BTC_PS_LPS_OFF                          = 2,\r
42         BTC_PS_MAX\r
43 } BTC_POWERSAVE_TYPE, *PBTC_POWERSAVE_TYPE;\r
44 \r
45 typedef enum _BTC_CHIP_INTERFACE{\r
46         BTC_INTF_UNKNOWN        = 0,\r
47         BTC_INTF_PCI                    = 1,\r
48         BTC_INTF_USB                    = 2,\r
49         BTC_INTF_SDIO           = 3,\r
50         BTC_INTF_MAX\r
51 } BTC_CHIP_INTERFACE, *PBTC_CHIP_INTERFACE;\r
52 \r
53 typedef enum _BTC_CHIP_TYPE{\r
54         BTC_CHIP_UNDEF          = 0,\r
55         BTC_CHIP_CSR_BC4                = 1,\r
56         BTC_CHIP_CSR_BC8                = 2,\r
57         BTC_CHIP_RTL8723A       = 3,\r
58         BTC_CHIP_RTL8821        = 4,\r
59         BTC_CHIP_RTL8723B       = 5,\r
60         BTC_CHIP_MAX\r
61 } BTC_CHIP_TYPE, *PBTC_CHIP_TYPE;\r
62 \r
63 typedef enum _BTC_MSG_TYPE{\r
64         BTC_MSG_INTERFACE                       = 0x0,\r
65         BTC_MSG_ALGORITHM                       = 0x1,\r
66         BTC_MSG_MAX\r
67 }BTC_MSG_TYPE;\r
68 extern u4Byte                                   GLBtcDbgType[];\r
69 \r
70 // following is for BTC_MSG_INTERFACE\r
71 #define         INTF_INIT                                               BIT0\r
72 #define         INTF_NOTIFY                                             BIT2\r
73 \r
74 // following is for BTC_ALGORITHM\r
75 #define         ALGO_BT_RSSI_STATE                              BIT0\r
76 #define         ALGO_WIFI_RSSI_STATE                            BIT1\r
77 #define         ALGO_BT_MONITOR                         BIT2\r
78 #define         ALGO_TRACE                                              BIT3\r
79 #define         ALGO_TRACE_FW                                   BIT4\r
80 #define         ALGO_TRACE_FW_DETAIL                    BIT5\r
81 #define         ALGO_TRACE_FW_EXEC                              BIT6\r
82 #define         ALGO_TRACE_SW                                   BIT7\r
83 #define         ALGO_TRACE_SW_DETAIL                    BIT8\r
84 #define         ALGO_TRACE_SW_EXEC                              BIT9\r
85 \r
86 // following is for wifi link status\r
87 #define         WIFI_STA_CONNECTED                              BIT0\r
88 #define         WIFI_AP_CONNECTED                               BIT1\r
89 #define         WIFI_HS_CONNECTED                               BIT2\r
90 #define         WIFI_P2P_GO_CONNECTED                   BIT3\r
91 #define         WIFI_P2P_GC_CONNECTED                   BIT4\r
92 \r
93 // following is for command line utility\r
94 #define CL_SPRINTF      rsprintf\r
95 #define CL_PRINTF       DCMD_Printf\r
96 \r
97 // The following is for dbgview print\r
98 #if DBG\r
99 #define BTC_PRINT(dbgtype, dbgflag, printstr)\\r
100 {\\r
101         if (GLBtcDbgType[dbgtype] & dbgflag)\\r
102         {\\r
103                 DbgPrint printstr;\\r
104         }\\r
105 }\r
106 \r
107 #define BTC_PRINT_F(dbgtype, dbgflag, printstr)\\r
108 {\\r
109         if (GLBtcDbgType[dbgtype] & dbgflag)\\r
110         {\\r
111                 DbgPrint("%s(): ", __FUNCTION__);\\r
112                 DbgPrint printstr;\\r
113         }\\r
114 }\r
115 \r
116 #define BTC_PRINT_ADDR(dbgtype, dbgflag, printstr, _Ptr)\\r
117 {\\r
118         if (GLBtcDbgType[dbgtype] & dbgflag)\\r
119         {\\r
120                                 int __i;                                                \\r
121                                 pu1Byte ptr = (pu1Byte)_Ptr;    \\r
122                                 DbgPrint printstr;                              \\r
123                                 DbgPrint(" ");                                  \\r
124                                 for( __i=0; __i<6; __i++ )              \\r
125                                         DbgPrint("%02X%s", ptr[__i], (__i==5)?"":"-");          \\r
126                                 DbgPrint("\n");                                                 \\r
127         }\\r
128 }\r
129 \r
130 #define         BTC_PRINT_DATA(dbgtype, dbgflag, _TitleString, _HexData, _HexDataLen)\\r
131 {\\r
132         if (GLBtcDbgType[dbgtype] & dbgflag)\\r
133         {\\r
134                 int __i;                                                                        \\r
135                 pu1Byte ptr = (pu1Byte)_HexData;                        \\r
136                 DbgPrint(_TitleString);                                 \\r
137                 for( __i=0; __i<(int)_HexDataLen; __i++ )       \\r
138                 {                                                                               \\r
139                         DbgPrint("%02X%s", ptr[__i], (((__i + 1) % 4) == 0)?"  ":" ");\\r
140                         if (((__i + 1) % 16) == 0)      DbgPrint("\n");\\r
141                 }                                                                               \\r
142                 DbgPrint("\n");                                                 \\r
143         }\\r
144 }\r
145 \r
146 #else\r
147 #define BTC_PRINT(dbgtype, dbgflag, printstr)\r
148 #define BTC_PRINT_F(dbgtype, dbgflag, printstr)\r
149 #define BTC_PRINT_ADDR(dbgtype, dbgflag, printstr, _Ptr)\r
150 #define         BTC_PRINT_DATA(dbgtype, dbgflag, _TitleString, _HexData, _HexDataLen)\r
151 #endif\r
152 \r
153 typedef struct _BTC_BOARD_INFO{\r
154         // The following is some board information\r
155         u1Byte                          btChipType;\r
156         u1Byte                          pgAntNum;       // pg ant number\r
157         u1Byte                          btdmAntNum;     // ant number for btdm\r
158         u1Byte                          btdmAntPos;             //Bryant Add to indicate Antenna Position for (pgAntNum = 2) && (btdmAntNum =1)  (DPDT+1Ant case)\r
159         BOOLEAN                         bBtExist;\r
160 } BTC_BOARD_INFO, *PBTC_BOARD_INFO;\r
161 \r
162 typedef enum _BTC_DBG_OPCODE{\r
163         BTC_DBG_SET_COEX_NORMAL                         = 0x0,\r
164         BTC_DBG_SET_COEX_WIFI_ONLY                              = 0x1,\r
165         BTC_DBG_SET_COEX_BT_ONLY                                = 0x2,\r
166         BTC_DBG_SET_COEX_DEC_BT_PWR                             = 0x3,\r
167         BTC_DBG_SET_COEX_BT_AFH_MAP                             = 0x4,\r
168         BTC_DBG_SET_COEX_BT_IGNORE_WLAN_ACT             = 0x5,\r
169         BTC_DBG_MAX\r
170 }BTC_DBG_OPCODE,*PBTC_DBG_OPCODE;\r
171 \r
172 typedef enum _BTC_RSSI_STATE{\r
173         BTC_RSSI_STATE_HIGH                                             = 0x0,\r
174         BTC_RSSI_STATE_MEDIUM                                   = 0x1,\r
175         BTC_RSSI_STATE_LOW                                              = 0x2,\r
176         BTC_RSSI_STATE_STAY_HIGH                                        = 0x3,\r
177         BTC_RSSI_STATE_STAY_MEDIUM                              = 0x4,\r
178         BTC_RSSI_STATE_STAY_LOW                                 = 0x5,\r
179         BTC_RSSI_MAX\r
180 }BTC_RSSI_STATE,*PBTC_RSSI_STATE;\r
181 #define BTC_RSSI_HIGH(_rssi_)   ((_rssi_==BTC_RSSI_STATE_HIGH||_rssi_==BTC_RSSI_STATE_STAY_HIGH)? TRUE:FALSE)\r
182 #define BTC_RSSI_MEDIUM(_rssi_) ((_rssi_==BTC_RSSI_STATE_MEDIUM||_rssi_==BTC_RSSI_STATE_STAY_MEDIUM)? TRUE:FALSE)\r
183 #define BTC_RSSI_LOW(_rssi_)    ((_rssi_==BTC_RSSI_STATE_LOW||_rssi_==BTC_RSSI_STATE_STAY_LOW)? TRUE:FALSE)\r
184 \r
185 typedef enum _BTC_WIFI_ROLE{\r
186         BTC_ROLE_STATION                                                = 0x0,\r
187         BTC_ROLE_AP                                                             = 0x1,\r
188         BTC_ROLE_IBSS                                                   = 0x2,\r
189         BTC_ROLE_HS_MODE                                                = 0x3,\r
190         BTC_ROLE_MAX\r
191 }BTC_WIFI_ROLE,*PBTC_WIFI_ROLE;\r
192 \r
193 typedef enum _BTC_WIFI_BW_MODE{\r
194         BTC_WIFI_BW_LEGACY                                      = 0x0,\r
195         BTC_WIFI_BW_HT20                                        = 0x1,\r
196         BTC_WIFI_BW_HT40                                        = 0x2,\r
197         BTC_WIFI_BW_MAX \r
198 }BTC_WIFI_BW_MODE,*PBTC_WIFI_BW_MODE;\r
199 \r
200 typedef enum _BTC_WIFI_TRAFFIC_DIR{\r
201         BTC_WIFI_TRAFFIC_TX                                     = 0x0,\r
202         BTC_WIFI_TRAFFIC_RX                                     = 0x1,\r
203         BTC_WIFI_TRAFFIC_MAX    \r
204 }BTC_WIFI_TRAFFIC_DIR,*PBTC_WIFI_TRAFFIC_DIR;\r
205 \r
206 typedef enum _BTC_WIFI_PNP{\r
207         BTC_WIFI_PNP_WAKE_UP                                    = 0x0,\r
208         BTC_WIFI_PNP_SLEEP                                              = 0x1,\r
209         BTC_WIFI_PNP_MAX\r
210 }BTC_WIFI_PNP,*PBTC_WIFI_PNP;\r
211 \r
212 // defined for BFP_BTC_GET\r
213 typedef enum _BTC_GET_TYPE{\r
214         // type BOOLEAN\r
215         BTC_GET_BL_HS_OPERATION,\r
216         BTC_GET_BL_HS_CONNECTING,\r
217         BTC_GET_BL_WIFI_CONNECTED,\r
218         BTC_GET_BL_WIFI_BUSY,\r
219         BTC_GET_BL_WIFI_SCAN,\r
220         BTC_GET_BL_WIFI_LINK,\r
221         BTC_GET_BL_WIFI_ROAM,\r
222         BTC_GET_BL_WIFI_4_WAY_PROGRESS,\r
223         BTC_GET_BL_WIFI_UNDER_5G,\r
224         BTC_GET_BL_WIFI_AP_MODE_ENABLE,\r
225         BTC_GET_BL_WIFI_ENABLE_ENCRYPTION,\r
226         BTC_GET_BL_WIFI_UNDER_B_MODE,\r
227         BTC_GET_BL_EXT_SWITCH,\r
228 \r
229         // type s4Byte\r
230         BTC_GET_S4_WIFI_RSSI,\r
231         BTC_GET_S4_HS_RSSI,\r
232         \r
233         // type u4Byte\r
234         BTC_GET_U4_WIFI_BW,\r
235         BTC_GET_U4_WIFI_TRAFFIC_DIRECTION,\r
236         BTC_GET_U4_WIFI_FW_VER,\r
237         BTC_GET_U4_WIFI_LINK_STATUS,\r
238         BTC_GET_U4_BT_PATCH_VER,\r
239 \r
240         // type u1Byte\r
241         BTC_GET_U1_WIFI_DOT11_CHNL,\r
242         BTC_GET_U1_WIFI_CENTRAL_CHNL,\r
243         BTC_GET_U1_WIFI_HS_CHNL,\r
244         BTC_GET_U1_MAC_PHY_MODE,\r
245         BTC_GET_U1_AP_NUM,\r
246 \r
247         //===== for 1Ant ======\r
248         BTC_GET_U1_LPS_MODE,\r
249 \r
250         BTC_GET_MAX\r
251 }BTC_GET_TYPE,*PBTC_GET_TYPE;\r
252 \r
253 // defined for BFP_BTC_SET\r
254 typedef enum _BTC_SET_TYPE{\r
255         // type BOOLEAN\r
256         BTC_SET_BL_BT_DISABLE,\r
257         BTC_SET_BL_BT_TRAFFIC_BUSY,\r
258         BTC_SET_BL_BT_LIMITED_DIG,\r
259         BTC_SET_BL_FORCE_TO_ROAM,\r
260         BTC_SET_BL_TO_REJ_AP_AGG_PKT,\r
261         BTC_SET_BL_BT_CTRL_AGG_SIZE,\r
262         BTC_SET_BL_INC_SCAN_DEV_NUM,\r
263 \r
264         // type u1Byte\r
265         BTC_SET_U1_RSSI_ADJ_VAL_FOR_AGC_TABLE_ON,\r
266         BTC_SET_U1_AGG_BUF_SIZE,\r
267 \r
268         // type trigger some action\r
269         BTC_SET_ACT_GET_BT_RSSI,\r
270         BTC_SET_ACT_AGGREGATE_CTRL,\r
271         //===== for 1Ant ======\r
272         // type BOOLEAN\r
273 \r
274         // type u1Byte\r
275         BTC_SET_U1_RSSI_ADJ_VAL_FOR_1ANT_COEX_TYPE,\r
276         BTC_SET_U1_LPS_VAL,\r
277         BTC_SET_U1_RPWM_VAL,\r
278         // type trigger some action\r
279         BTC_SET_ACT_LEAVE_LPS,\r
280         BTC_SET_ACT_ENTER_LPS,\r
281         BTC_SET_ACT_NORMAL_LPS,\r
282         BTC_SET_ACT_DISABLE_LOW_POWER,\r
283         BTC_SET_ACT_UPDATE_RAMASK,\r
284         BTC_SET_ACT_SEND_MIMO_PS,\r
285         // BT Coex related\r
286         BTC_SET_ACT_CTRL_BT_INFO,\r
287         BTC_SET_ACT_CTRL_BT_COEX,\r
288         //=================\r
289         BTC_SET_MAX\r
290 }BTC_SET_TYPE,*PBTC_SET_TYPE;\r
291 \r
292 typedef enum _BTC_DBG_DISP_TYPE{\r
293         BTC_DBG_DISP_COEX_STATISTICS                            = 0x0,\r
294         BTC_DBG_DISP_BT_LINK_INFO                               = 0x1,\r
295         BTC_DBG_DISP_FW_PWR_MODE_CMD                    = 0x2,\r
296         BTC_DBG_DISP_MAX\r
297 }BTC_DBG_DISP_TYPE,*PBTC_DBG_DISP_TYPE;\r
298 \r
299 typedef enum _BTC_NOTIFY_TYPE_IPS{\r
300         BTC_IPS_LEAVE                                                   = 0x0,\r
301         BTC_IPS_ENTER                                                   = 0x1,\r
302         BTC_IPS_MAX\r
303 }BTC_NOTIFY_TYPE_IPS,*PBTC_NOTIFY_TYPE_IPS;\r
304 typedef enum _BTC_NOTIFY_TYPE_LPS{\r
305         BTC_LPS_DISABLE                                                 = 0x0,\r
306         BTC_LPS_ENABLE                                                  = 0x1,\r
307         BTC_LPS_MAX\r
308 }BTC_NOTIFY_TYPE_LPS,*PBTC_NOTIFY_TYPE_LPS;\r
309 typedef enum _BTC_NOTIFY_TYPE_SCAN{\r
310         BTC_SCAN_FINISH                                                 = 0x0,\r
311         BTC_SCAN_START                                                  = 0x1,\r
312         BTC_SCAN_MAX\r
313 }BTC_NOTIFY_TYPE_SCAN,*PBTC_NOTIFY_TYPE_SCAN;\r
314 typedef enum _BTC_NOTIFY_TYPE_ASSOCIATE{\r
315         BTC_ASSOCIATE_FINISH                                            = 0x0,\r
316         BTC_ASSOCIATE_START                                             = 0x1,\r
317         BTC_ASSOCIATE_MAX\r
318 }BTC_NOTIFY_TYPE_ASSOCIATE,*PBTC_NOTIFY_TYPE_ASSOCIATE;\r
319 typedef enum _BTC_NOTIFY_TYPE_MEDIA_STATUS{\r
320         BTC_MEDIA_DISCONNECT                                    = 0x0,\r
321         BTC_MEDIA_CONNECT                                               = 0x1,\r
322         BTC_MEDIA_MAX\r
323 }BTC_NOTIFY_TYPE_MEDIA_STATUS,*PBTC_NOTIFY_TYPE_MEDIA_STATUS;\r
324 typedef enum _BTC_NOTIFY_TYPE_SPECIAL_PACKET{\r
325         BTC_PACKET_UNKNOWN                                      = 0x0,\r
326         BTC_PACKET_DHCP                                                 = 0x1,\r
327         BTC_PACKET_ARP                                                  = 0x2,\r
328         BTC_PACKET_EAPOL                                                = 0x3,\r
329         BTC_PACKET_MAX\r
330 }BTC_NOTIFY_TYPE_SPECIAL_PACKET,*PBTC_NOTIFY_TYPE_SPECIAL_PACKET;\r
331 typedef enum _BTC_NOTIFY_TYPE_STACK_OPERATION{\r
332         BTC_STACK_OP_NONE                                       = 0x0,\r
333         BTC_STACK_OP_INQ_PAGE_PAIR_START                = 0x1,\r
334         BTC_STACK_OP_INQ_PAGE_PAIR_FINISH       = 0x2,\r
335         BTC_STACK_OP_MAX\r
336 }BTC_NOTIFY_TYPE_STACK_OPERATION,*PBTC_NOTIFY_TYPE_STACK_OPERATION;\r
337 \r
338 //Bryant Add\r
339 typedef enum _BTC_ANTENNA_POS{\r
340         BTC_ANTENNA_AT_MAIN_PORT                                = 0x1,\r
341         BTC_ANTENNA_AT_AUX_PORT                         = 0x2,\r
342 }BTC_ANTENNA_POS,*PBTC_ANTENNA_POS;\r
343 \r
344 typedef u1Byte\r
345 (*BFP_BTC_R1)(\r
346         IN      PVOID                   pBtcContext,\r
347         IN      u4Byte                  RegAddr\r
348         );\r
349 typedef u2Byte\r
350 (*BFP_BTC_R2)(\r
351         IN      PVOID                   pBtcContext,\r
352         IN      u4Byte                  RegAddr\r
353         );\r
354 typedef u4Byte\r
355 (*BFP_BTC_R4)(\r
356         IN      PVOID                   pBtcContext,\r
357         IN      u4Byte                  RegAddr\r
358         );\r
359 typedef VOID\r
360 (*BFP_BTC_W1)(\r
361         IN      PVOID                   pBtcContext,\r
362         IN      u4Byte                  RegAddr,\r
363         IN      u1Byte                  Data\r
364         );\r
365 typedef VOID\r
366 (*BFP_BTC_W1_BIT_MASK)(\r
367         IN      PVOID                   pBtcContext,\r
368         IN      u4Byte                  regAddr,\r
369         IN      u1Byte                  bitMask,\r
370         IN      u1Byte                  data1b\r
371         );\r
372 typedef VOID\r
373 (*BFP_BTC_W2)(\r
374         IN      PVOID                   pBtcContext,\r
375         IN      u4Byte                  RegAddr,\r
376         IN      u2Byte                  Data\r
377         );\r
378 typedef VOID\r
379 (*BFP_BTC_W4)(\r
380         IN      PVOID                   pBtcContext,\r
381         IN      u4Byte                  RegAddr,\r
382         IN      u4Byte                  Data\r
383         );\r
384 typedef VOID\r
385 (*BFP_BTC_SET_BB_REG)(\r
386         IN      PVOID                   pBtcContext,\r
387         IN      u4Byte                  RegAddr,\r
388         IN      u4Byte                  BitMask,\r
389         IN      u4Byte                  Data\r
390         );\r
391 typedef u4Byte \r
392 (*BFP_BTC_GET_BB_REG)(\r
393         IN      PVOID                   pBtcContext,\r
394         IN      u4Byte                  RegAddr,\r
395         IN      u4Byte                  BitMask\r
396         );\r
397 typedef VOID\r
398 (*BFP_BTC_SET_RF_REG)(  \r
399         IN      PVOID                   pBtcContext,\r
400         IN      u1Byte                  eRFPath,\r
401         IN      u4Byte                  RegAddr,\r
402         IN      u4Byte                  BitMask,\r
403         IN      u4Byte                  Data\r
404         );\r
405 typedef u4Byte \r
406 (*BFP_BTC_GET_RF_REG)(\r
407         IN      PVOID                   pBtcContext,\r
408         IN      u1Byte                  eRFPath,\r
409         IN      u4Byte                  RegAddr,\r
410         IN      u4Byte                  BitMask\r
411         );\r
412 typedef VOID\r
413 (*BFP_BTC_SET_BT_REG)(  \r
414         IN      PVOID                   pBtcContext,\r
415         IN      u1Byte                  RegType,\r
416         IN      u4Byte                  RegAddr,\r
417         IN      u4Byte                  Data\r
418         );\r
419 typedef VOID\r
420 (*BFP_BTC_FILL_H2C)(\r
421         IN      PVOID                   pBtcContext,\r
422         IN      u1Byte                  elementId,\r
423         IN      u4Byte                  cmdLen,\r
424         IN      pu1Byte                 pCmdBuffer\r
425         );\r
426 \r
427 typedef BOOLEAN\r
428 (*BFP_BTC_GET)(\r
429         IN      PVOID                   pBtCoexist,\r
430         IN      u1Byte                  getType,\r
431         OUT     PVOID                   pOutBuf\r
432         );\r
433 \r
434 typedef BOOLEAN\r
435 (*BFP_BTC_SET)(\r
436         IN      PVOID                   pBtCoexist,\r
437         IN      u1Byte                  setType,\r
438         OUT     PVOID                   pInBuf\r
439         );\r
440 typedef VOID\r
441 (*BFP_BTC_DISP_DBG_MSG)(\r
442         IN      PVOID                   pBtCoexist,\r
443         IN      u1Byte                  dispType\r
444         );\r
445 \r
446 typedef struct _BTC_BT_INFO{\r
447         BOOLEAN                                 bBtDisabled;\r
448         u1Byte                                  rssiAdjustForAgcTableOn;\r
449         u1Byte                                  rssiAdjustFor1AntCoexType;\r
450         BOOLEAN                                 bPreBtCtrlAggBufSize;\r
451         BOOLEAN                                 bBtCtrlAggBufSize;\r
452         BOOLEAN                                 bRejectAggPkt;\r
453         BOOLEAN                                 bIncreaseScanDevNum;\r
454         u1Byte                                  preAggBufSize;\r
455         u1Byte                                  aggBufSize;\r
456         BOOLEAN                                 bBtBusy;\r
457         BOOLEAN                                 bLimitedDig;\r
458         u2Byte                                  btHciVer;\r
459         u2Byte                                  btRealFwVer;\r
460         u1Byte                                  btFwVer;\r
461 \r
462         BOOLEAN                                 bBtDisableLowPwr;\r
463 \r
464         BOOLEAN                                 bBtCtrlLps;\r
465         BOOLEAN                                 bBtLpsOn;\r
466         BOOLEAN                                 bForceToRoam;   // for 1Ant solution\r
467         u1Byte                                  lpsVal;\r
468         u1Byte                                  rpwmVal;\r
469         u4Byte                                  raMask;\r
470 } BTC_BT_INFO, *PBTC_BT_INFO;\r
471 \r
472 typedef struct _BTC_STACK_INFO{\r
473         BOOLEAN                                 bProfileNotified;\r
474         u2Byte                                  hciVersion;     // stack hci version\r
475         u1Byte                                  numOfLink;\r
476         BOOLEAN                                 bBtLinkExist;\r
477         BOOLEAN                                 bScoExist;\r
478         BOOLEAN                                 bAclExist;\r
479         BOOLEAN                                 bA2dpExist;\r
480         BOOLEAN                                 bHidExist;\r
481         u1Byte                                  numOfHid;\r
482         BOOLEAN                                 bPanExist;\r
483         BOOLEAN                                 bUnknownAclExist;\r
484         s1Byte                                  minBtRssi;\r
485 } BTC_STACK_INFO, *PBTC_STACK_INFO;\r
486 \r
487 typedef struct _BTC_BT_LINK_INFO{\r
488         BOOLEAN                                 bBtLinkExist;\r
489         BOOLEAN                                 bScoExist;\r
490         BOOLEAN                                 bScoOnly;\r
491         BOOLEAN                                 bA2dpExist;\r
492         BOOLEAN                                 bA2dpOnly;\r
493         BOOLEAN                                 bHidExist;\r
494         BOOLEAN                                 bHidOnly;\r
495         BOOLEAN                                 bPanExist;\r
496         BOOLEAN                                 bPanOnly;\r
497 } BTC_BT_LINK_INFO, *PBTC_BT_LINK_INFO;\r
498 \r
499 typedef struct _BTC_STATISTICS{\r
500         u4Byte                                  cntBind;\r
501         u4Byte                                  cntInitHwConfig;\r
502         u4Byte                                  cntInitCoexDm;\r
503         u4Byte                                  cntIpsNotify;\r
504         u4Byte                                  cntLpsNotify;\r
505         u4Byte                                  cntScanNotify;\r
506         u4Byte                                  cntConnectNotify;\r
507         u4Byte                                  cntMediaStatusNotify;\r
508         u4Byte                                  cntSpecialPacketNotify;\r
509         u4Byte                                  cntBtInfoNotify;\r
510         u4Byte                                  cntPeriodical;\r
511         u4Byte                                  cntCoexDmSwitch;\r
512         u4Byte                                  cntStackOperationNotify;\r
513         u4Byte                                  cntDbgCtrl;\r
514 } BTC_STATISTICS, *PBTC_STATISTICS;\r
515 \r
516 typedef struct _BTC_COEXIST{\r
517         BOOLEAN                         bBinded;                // make sure only one adapter can bind the data context\r
518         PVOID                           Adapter;                // default adapter\r
519         BTC_BOARD_INFO          boardInfo;\r
520         BTC_BT_INFO                     btInfo;         // some bt info referenced by non-bt module\r
521         BTC_STACK_INFO          stackInfo;\r
522         BTC_BT_LINK_INFO        btLinkInfo;\r
523         BTC_CHIP_INTERFACE      chipInterface;\r
524 \r
525         BOOLEAN                         bInitilized;\r
526         BOOLEAN                         bStopCoexDm;\r
527         BOOLEAN                         bManualControl;\r
528         pu1Byte                         cliBuf;\r
529         BTC_STATISTICS          statistics;\r
530         u1Byte                          pwrModeVal[10];\r
531                 \r
532         // function pointers\r
533         // io related\r
534         BFP_BTC_R1                      fBtcRead1Byte;\r
535         BFP_BTC_W1                      fBtcWrite1Byte;\r
536         BFP_BTC_W1_BIT_MASK     fBtcWrite1ByteBitMask;\r
537         BFP_BTC_R2                      fBtcRead2Byte;\r
538         BFP_BTC_W2                      fBtcWrite2Byte;\r
539         BFP_BTC_R4                      fBtcRead4Byte;\r
540         BFP_BTC_W4                      fBtcWrite4Byte;\r
541         // read/write bb related\r
542         BFP_BTC_SET_BB_REG      fBtcSetBbReg;\r
543         BFP_BTC_GET_BB_REG      fBtcGetBbReg;\r
544 \r
545         // read/write rf related\r
546         BFP_BTC_SET_RF_REG      fBtcSetRfReg;\r
547         BFP_BTC_GET_RF_REG      fBtcGetRfReg;\r
548         \r
549         //write bt reg related\r
550         BFP_BTC_SET_BT_REG      fBtcSetBtReg;\r
551         \r
552         // fill h2c related\r
553         BFP_BTC_FILL_H2C                fBtcFillH2c;\r
554         // other\r
555         BFP_BTC_DISP_DBG_MSG    fBtcDispDbgMsg;\r
556         // normal get/set related\r
557         BFP_BTC_GET                     fBtcGet;\r
558         BFP_BTC_SET                     fBtcSet;\r
559 } BTC_COEXIST, *PBTC_COEXIST;\r
560 \r
561 extern BTC_COEXIST                              GLBtCoexist;\r
562 \r
563 BOOLEAN\r
564 EXhalbtcoutsrc_InitlizeVariables(\r
565         IN      PVOID           Adapter\r
566         );\r
567 VOID\r
568 EXhalbtcoutsrc_InitHwConfig(\r
569         IN      PBTC_COEXIST            pBtCoexist\r
570         );\r
571 VOID\r
572 EXhalbtcoutsrc_InitCoexDm(\r
573         IN      PBTC_COEXIST            pBtCoexist\r
574         );\r
575 VOID\r
576 EXhalbtcoutsrc_IpsNotify(\r
577         IN      PBTC_COEXIST            pBtCoexist,\r
578         IN      u1Byte                  type\r
579         );\r
580 VOID\r
581 EXhalbtcoutsrc_LpsNotify(\r
582         IN      PBTC_COEXIST            pBtCoexist,\r
583         IN      u1Byte                  type\r
584         );\r
585 VOID\r
586 EXhalbtcoutsrc_ScanNotify(\r
587         IN      PBTC_COEXIST            pBtCoexist,\r
588         IN      u1Byte                  type\r
589         );\r
590 VOID\r
591 EXhalbtcoutsrc_ConnectNotify(\r
592         IN      PBTC_COEXIST            pBtCoexist,\r
593         IN      u1Byte                  action\r
594         );\r
595 VOID\r
596 EXhalbtcoutsrc_MediaStatusNotify(\r
597         IN      PBTC_COEXIST            pBtCoexist,\r
598         IN      RT_MEDIA_STATUS mediaStatus\r
599         );\r
600 VOID\r
601 EXhalbtcoutsrc_SpecialPacketNotify(\r
602         IN      PBTC_COEXIST            pBtCoexist,\r
603         IN      u1Byte                  pktType\r
604         );\r
605 VOID\r
606 EXhalbtcoutsrc_BtInfoNotify(\r
607         IN      PBTC_COEXIST            pBtCoexist,\r
608         IN      pu1Byte                 tmpBuf,\r
609         IN      u1Byte                  length\r
610         );\r
611 VOID\r
612 EXhalbtcoutsrc_StackOperationNotify(\r
613         IN      PBTC_COEXIST            pBtCoexist,\r
614         IN      u1Byte                  type\r
615         );\r
616 VOID\r
617 EXhalbtcoutsrc_HaltNotify(\r
618         IN      PBTC_COEXIST            pBtCoexist\r
619         );\r
620 VOID\r
621 EXhalbtcoutsrc_SwitchGntBt(\r
622         IN      PBTC_COEXIST            pBtCoexist\r
623         );\r
624 VOID\r
625 EXhalbtcoutsrc_PnpNotify(\r
626         IN      PBTC_COEXIST            pBtCoexist,\r
627         IN      u1Byte                  pnpState\r
628         );\r
629 VOID\r
630 EXhalbtcoutsrc_CoexDmSwitch(\r
631         IN      PBTC_COEXIST            pBtCoexist,\r
632         IN      BOOLEAN                         antInverse\r
633         );\r
634 VOID\r
635 EXhalbtcoutsrc_Periodical(\r
636         IN      PBTC_COEXIST            pBtCoexist\r
637         );\r
638 VOID\r
639 EXhalbtcoutsrc_DbgControl(\r
640         IN      PBTC_COEXIST                    pBtCoexist,\r
641         IN      u1Byte                          opCode,\r
642         IN      u1Byte                          opLen,\r
643         IN      pu1Byte                         pData\r
644         );\r
645 VOID\r
646 EXhalbtcoutsrc_StackUpdateProfileInfo(\r
647         VOID\r
648         );\r
649 VOID\r
650 EXhalbtcoutsrc_SetHciVersion(\r
651         IN      u2Byte  hciVersion\r
652         );\r
653 VOID\r
654 EXhalbtcoutsrc_SetBtPatchVersion(\r
655         IN      u2Byte  btHciVersion,\r
656         IN      u2Byte  btPatchVersion\r
657         );\r
658 VOID\r
659 EXhalbtcoutsrc_UpdateMinBtRssi(\r
660         IN      s1Byte  btRssi\r
661         );\r
662 VOID\r
663 EXhalbtcoutsrc_SetBtExist(\r
664         IN      BOOLEAN         bBtExist\r
665         );\r
666 VOID\r
667 EXhalbtcoutsrc_SetChipType(\r
668         IN      u1Byte          chipType\r
669         );\r
670 VOID\r
671 EXhalbtcoutsrc_SetAntNum(\r
672         IN      u1Byte          type,\r
673         IN      u1Byte          antNum,\r
674         IN      BOOLEAN         antInverse\r
675         );\r
676 VOID\r
677 EXhalbtcoutsrc_DisplayBtCoexInfo(\r
678         IN      PBTC_COEXIST            pBtCoexist\r
679         );\r
680 \r
681 #endif\r