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