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