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