xref: /linux/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h (revision f243bca13893f126476dd1db7705b4ad54b4d3c7)
1aa45a673SLarry Finger /******************************************************************************
2aa45a673SLarry Finger  *
3aa45a673SLarry Finger  * Copyright(c) 2009-2012  Realtek Corporation.
4aa45a673SLarry Finger  *
5aa45a673SLarry Finger  * This program is free software; you can redistribute it and/or modify it
6aa45a673SLarry Finger  * under the terms of version 2 of the GNU General Public License as
7aa45a673SLarry Finger  * published by the Free Software Foundation.
8aa45a673SLarry Finger  *
9aa45a673SLarry Finger  * This program is distributed in the hope that it will be useful, but WITHOUT
10aa45a673SLarry Finger  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11aa45a673SLarry Finger  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
12aa45a673SLarry Finger  * more details.
13aa45a673SLarry Finger  *
14aa45a673SLarry Finger  * The full GNU General Public License is included in this distribution in the
15aa45a673SLarry Finger  * file called LICENSE.
16aa45a673SLarry Finger  *
17aa45a673SLarry Finger  * Contact Information:
18aa45a673SLarry Finger  * wlanfae <wlanfae@realtek.com>
19aa45a673SLarry Finger  * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
20aa45a673SLarry Finger  * Hsinchu 300, Taiwan.
21aa45a673SLarry Finger  *
22aa45a673SLarry Finger  * Larry Finger <Larry.Finger@lwfinger.net>
23aa45a673SLarry Finger  *
24aa45a673SLarry Finger  *****************************************************************************/
25aa45a673SLarry Finger #ifndef	__HALBTC_OUT_SRC_H__
26aa45a673SLarry Finger #define __HALBTC_OUT_SRC_H__
27aa45a673SLarry Finger 
28aa45a673SLarry Finger #include	"../wifi.h"
29aa45a673SLarry Finger 
30aa45a673SLarry Finger #define		NORMAL_EXEC				false
31aa45a673SLarry Finger #define		FORCE_EXEC				true
32aa45a673SLarry Finger 
333ceac0a7SPing-Ke Shih #define		BTC_RF_OFF				0x0
343ceac0a7SPing-Ke Shih #define		BTC_RF_ON				0x1
353ceac0a7SPing-Ke Shih 
36aa45a673SLarry Finger #define		BTC_RF_A				RF90_PATH_A
37aa45a673SLarry Finger #define		BTC_RF_B				RF90_PATH_B
38aa45a673SLarry Finger #define		BTC_RF_C				RF90_PATH_C
39aa45a673SLarry Finger #define		BTC_RF_D				RF90_PATH_D
40aa45a673SLarry Finger 
41aa45a673SLarry Finger #define		BTC_SMSP				SINGLEMAC_SINGLEPHY
42aa45a673SLarry Finger #define		BTC_DMDP				DUALMAC_DUALPHY
43aa45a673SLarry Finger #define		BTC_DMSP				DUALMAC_SINGLEPHY
44aa45a673SLarry Finger #define		BTC_MP_UNKNOWN				0xff
45aa45a673SLarry Finger 
46aa45a673SLarry Finger #define		IN
47aa45a673SLarry Finger #define		OUT
48aa45a673SLarry Finger 
49aa45a673SLarry Finger #define		BT_TMP_BUF_SIZE				100
50aa45a673SLarry Finger 
51aa45a673SLarry Finger #define		BT_COEX_ANT_TYPE_PG			0
52aa45a673SLarry Finger #define		BT_COEX_ANT_TYPE_ANTDIV			1
53aa45a673SLarry Finger #define		BT_COEX_ANT_TYPE_DETECTED		2
54aa45a673SLarry Finger 
55aa45a673SLarry Finger #define		BTC_MIMO_PS_STATIC			0
56aa45a673SLarry Finger #define		BTC_MIMO_PS_DYNAMIC			1
57aa45a673SLarry Finger 
58aa45a673SLarry Finger #define		BTC_RATE_DISABLE			0
59aa45a673SLarry Finger #define		BTC_RATE_ENABLE				1
60aa45a673SLarry Finger 
61e79fff28SLarry Finger /* single Antenna definition */
62e79fff28SLarry Finger #define		BTC_ANT_PATH_WIFI			0
63e79fff28SLarry Finger #define		BTC_ANT_PATH_BT				1
64e79fff28SLarry Finger #define		BTC_ANT_PATH_PTA			2
65e79fff28SLarry Finger /* dual Antenna definition */
66e79fff28SLarry Finger #define		BTC_ANT_WIFI_AT_MAIN			0
67e79fff28SLarry Finger #define		BTC_ANT_WIFI_AT_AUX			1
68e79fff28SLarry Finger /* coupler Antenna definition */
69e79fff28SLarry Finger #define		BTC_ANT_WIFI_AT_CPL_MAIN		0
70e79fff28SLarry Finger #define		BTC_ANT_WIFI_AT_CPL_AUX			1
71e79fff28SLarry Finger 
72588a290bSYan-Hsuan Chuang enum btc_bt_reg_type {
73588a290bSYan-Hsuan Chuang 	BTC_BT_REG_RF		= 0,
74588a290bSYan-Hsuan Chuang 	BTC_BT_REG_MODEM	= 1,
75588a290bSYan-Hsuan Chuang 	BTC_BT_REG_BLUEWIZE	= 2,
76588a290bSYan-Hsuan Chuang 	BTC_BT_REG_VENDOR	= 3,
77588a290bSYan-Hsuan Chuang 	BTC_BT_REG_LE		= 4,
78588a290bSYan-Hsuan Chuang 	BTC_BT_REG_MAX
79588a290bSYan-Hsuan Chuang };
80588a290bSYan-Hsuan Chuang 
81aa45a673SLarry Finger enum btc_chip_interface {
82aa45a673SLarry Finger 	BTC_INTF_UNKNOWN	= 0,
83aa45a673SLarry Finger 	BTC_INTF_PCI		= 1,
84aa45a673SLarry Finger 	BTC_INTF_USB		= 2,
85aa45a673SLarry Finger 	BTC_INTF_SDIO		= 3,
86aa45a673SLarry Finger 	BTC_INTF_GSPI		= 4,
87aa45a673SLarry Finger 	BTC_INTF_MAX
88aa45a673SLarry Finger };
89aa45a673SLarry Finger 
90ed364abfSLarry Finger enum btc_chip_type {
91aa45a673SLarry Finger 	BTC_CHIP_UNDEF		= 0,
92aa45a673SLarry Finger 	BTC_CHIP_CSR_BC4	= 1,
93aa45a673SLarry Finger 	BTC_CHIP_CSR_BC8	= 2,
94aa45a673SLarry Finger 	BTC_CHIP_RTL8723A	= 3,
95aa45a673SLarry Finger 	BTC_CHIP_RTL8821	= 4,
96aa45a673SLarry Finger 	BTC_CHIP_RTL8723B	= 5,
97aa45a673SLarry Finger 	BTC_CHIP_MAX
98aa45a673SLarry Finger };
99aa45a673SLarry Finger 
100ed364abfSLarry Finger enum btc_msg_type {
101aa45a673SLarry Finger 	BTC_MSG_INTERFACE	= 0x0,
102aa45a673SLarry Finger 	BTC_MSG_ALGORITHM	= 0x1,
103aa45a673SLarry Finger 	BTC_MSG_MAX
104aa45a673SLarry Finger };
105ed364abfSLarry Finger 
106aa45a673SLarry Finger /* following is for BTC_MSG_INTERFACE */
107aa45a673SLarry Finger #define		INTF_INIT				BIT0
108aa45a673SLarry Finger #define		INTF_NOTIFY				BIT2
109aa45a673SLarry Finger 
110aa45a673SLarry Finger /* following is for BTC_ALGORITHM */
111aa45a673SLarry Finger #define		ALGO_BT_RSSI_STATE			BIT0
112aa45a673SLarry Finger #define		ALGO_WIFI_RSSI_STATE			BIT1
113aa45a673SLarry Finger #define		ALGO_BT_MONITOR				BIT2
114aa45a673SLarry Finger #define		ALGO_TRACE				BIT3
115aa45a673SLarry Finger #define		ALGO_TRACE_FW				BIT4
116aa45a673SLarry Finger #define		ALGO_TRACE_FW_DETAIL			BIT5
117aa45a673SLarry Finger #define		ALGO_TRACE_FW_EXEC			BIT6
118aa45a673SLarry Finger #define		ALGO_TRACE_SW				BIT7
119aa45a673SLarry Finger #define		ALGO_TRACE_SW_DETAIL			BIT8
120aa45a673SLarry Finger #define		ALGO_TRACE_SW_EXEC			BIT9
121aa45a673SLarry Finger 
122ed364abfSLarry Finger /* following is for wifi link status */
123ed364abfSLarry Finger #define		WIFI_STA_CONNECTED			BIT0
124ed364abfSLarry Finger #define		WIFI_AP_CONNECTED			BIT1
125ed364abfSLarry Finger #define		WIFI_HS_CONNECTED			BIT2
126ed364abfSLarry Finger #define		WIFI_P2P_GO_CONNECTED			BIT3
127ed364abfSLarry Finger #define		WIFI_P2P_GC_CONNECTED			BIT4
128aa45a673SLarry Finger 
129e79fff28SLarry Finger #define	BTC_RSSI_HIGH(_rssi_)	\
130e79fff28SLarry Finger 	((_rssi_ == BTC_RSSI_STATE_HIGH ||	\
131e79fff28SLarry Finger 	  _rssi_ == BTC_RSSI_STATE_STAY_HIGH) ? true : false)
132e79fff28SLarry Finger #define	BTC_RSSI_MEDIUM(_rssi_)	\
133e79fff28SLarry Finger 	((_rssi_ == BTC_RSSI_STATE_MEDIUM ||	\
134e79fff28SLarry Finger 	  _rssi_ == BTC_RSSI_STATE_STAY_MEDIUM) ? true : false)
135e79fff28SLarry Finger #define	BTC_RSSI_LOW(_rssi_)	\
136e79fff28SLarry Finger 	((_rssi_ == BTC_RSSI_STATE_LOW ||	\
137e79fff28SLarry Finger 	  _rssi_ == BTC_RSSI_STATE_STAY_LOW) ? true : false)
138e79fff28SLarry Finger 
139aa45a673SLarry Finger enum btc_power_save_type {
140aa45a673SLarry Finger 	BTC_PS_WIFI_NATIVE = 0,
141aa45a673SLarry Finger 	BTC_PS_LPS_ON = 1,
142aa45a673SLarry Finger 	BTC_PS_LPS_OFF = 2,
143aa45a673SLarry Finger 	BTC_PS_LPS_MAX
144aa45a673SLarry Finger };
145aa45a673SLarry Finger 
146aa45a673SLarry Finger struct btc_board_info {
147aa45a673SLarry Finger 	/* The following is some board information */
148aa45a673SLarry Finger 	u8 bt_chip_type;
149aa45a673SLarry Finger 	u8 pg_ant_num;	/* pg ant number */
150aa45a673SLarry Finger 	u8 btdm_ant_num;	/* ant number for btdm */
151aa45a673SLarry Finger 	u8 btdm_ant_pos;
1524e6becc0SYan-Hsuan Chuang 	u8 single_ant_path; /* current used for 8723b only, 1=>s0,  0=>s1 */
1530199103eSYan-Hsuan Chuang 	bool tfbga_package;
154188b6b09SPing-Ke Shih 
155188b6b09SPing-Ke Shih 	u8 rfe_type;
156*f243bca1SPing-Ke Shih 	u8 ant_div_cfg;
157aa45a673SLarry Finger };
158aa45a673SLarry Finger 
159aa45a673SLarry Finger enum btc_dbg_opcode {
160aa45a673SLarry Finger 	BTC_DBG_SET_COEX_NORMAL = 0x0,
161aa45a673SLarry Finger 	BTC_DBG_SET_COEX_WIFI_ONLY = 0x1,
162aa45a673SLarry Finger 	BTC_DBG_SET_COEX_BT_ONLY = 0x2,
163aa45a673SLarry Finger 	BTC_DBG_MAX
164aa45a673SLarry Finger };
165aa45a673SLarry Finger 
166aa45a673SLarry Finger enum btc_rssi_state {
167aa45a673SLarry Finger 	BTC_RSSI_STATE_HIGH = 0x0,
168aa45a673SLarry Finger 	BTC_RSSI_STATE_MEDIUM = 0x1,
169aa45a673SLarry Finger 	BTC_RSSI_STATE_LOW = 0x2,
170aa45a673SLarry Finger 	BTC_RSSI_STATE_STAY_HIGH = 0x3,
171aa45a673SLarry Finger 	BTC_RSSI_STATE_STAY_MEDIUM = 0x4,
172aa45a673SLarry Finger 	BTC_RSSI_STATE_STAY_LOW = 0x5,
173aa45a673SLarry Finger 	BTC_RSSI_MAX
174aa45a673SLarry Finger };
175aa45a673SLarry Finger 
176aa45a673SLarry Finger enum btc_wifi_role {
177aa45a673SLarry Finger 	BTC_ROLE_STATION = 0x0,
178aa45a673SLarry Finger 	BTC_ROLE_AP = 0x1,
179aa45a673SLarry Finger 	BTC_ROLE_IBSS = 0x2,
180aa45a673SLarry Finger 	BTC_ROLE_HS_MODE = 0x3,
181aa45a673SLarry Finger 	BTC_ROLE_MAX
182aa45a673SLarry Finger };
183aa45a673SLarry Finger 
18408431b62SPing-Ke Shih enum btc_wireless_freq {
18508431b62SPing-Ke Shih 	BTC_FREQ_2_4G = 0x0,
18608431b62SPing-Ke Shih 	BTC_FREQ_5G = 0x1,
18708431b62SPing-Ke Shih 	BTC_FREQ_MAX
18808431b62SPing-Ke Shih };
18908431b62SPing-Ke Shih 
190aa45a673SLarry Finger enum btc_wifi_bw_mode {
191aa45a673SLarry Finger 	BTC_WIFI_BW_LEGACY = 0x0,
192aa45a673SLarry Finger 	BTC_WIFI_BW_HT20 = 0x1,
193aa45a673SLarry Finger 	BTC_WIFI_BW_HT40 = 0x2,
19466d0f9deSPing-Ke Shih 	BTC_WIFI_BW_HT80 = 0x3,
195aa45a673SLarry Finger 	BTC_WIFI_BW_MAX
196aa45a673SLarry Finger };
197aa45a673SLarry Finger 
198aa45a673SLarry Finger enum btc_wifi_traffic_dir {
199aa45a673SLarry Finger 	BTC_WIFI_TRAFFIC_TX = 0x0,
200aa45a673SLarry Finger 	BTC_WIFI_TRAFFIC_RX = 0x1,
201aa45a673SLarry Finger 	BTC_WIFI_TRAFFIC_MAX
202aa45a673SLarry Finger };
203aa45a673SLarry Finger 
204aa45a673SLarry Finger enum btc_wifi_pnp {
205aa45a673SLarry Finger 	BTC_WIFI_PNP_WAKE_UP = 0x0,
206aa45a673SLarry Finger 	BTC_WIFI_PNP_SLEEP = 0x1,
207aa45a673SLarry Finger 	BTC_WIFI_PNP_MAX
208aa45a673SLarry Finger };
209aa45a673SLarry Finger 
21086aeb825SYan-Hsuan Chuang enum btc_iot_peer {
21186aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_UNKNOWN = 0,
21286aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_REALTEK = 1,
21386aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_REALTEK_92SE = 2,
21486aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_BROADCOM = 3,
21586aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_RALINK = 4,
21686aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_ATHEROS = 5,
21786aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_CISCO = 6,
21886aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_MERU = 7,
21986aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_MARVELL = 8,
22086aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_REALTEK_SOFTAP = 9,
22186aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_SELF_SOFTAP = 10, /* Self is SoftAP */
22286aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_AIRGO = 11,
22386aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_REALTEK_JAGUAR_BCUTAP = 12,
22486aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_REALTEK_JAGUAR_CCUTAP = 13,
22586aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_MAX,
22686aeb825SYan-Hsuan Chuang };
22786aeb825SYan-Hsuan Chuang 
228c42ea613SYan-Hsuan Chuang /* for 8723b-d cut large current issue */
229c42ea613SYan-Hsuan Chuang enum bt_wifi_coex_state {
230c42ea613SYan-Hsuan Chuang 	BTC_WIFI_STAT_INIT,
231c42ea613SYan-Hsuan Chuang 	BTC_WIFI_STAT_IQK,
232c42ea613SYan-Hsuan Chuang 	BTC_WIFI_STAT_NORMAL_OFF,
233c42ea613SYan-Hsuan Chuang 	BTC_WIFI_STAT_MP_OFF,
234c42ea613SYan-Hsuan Chuang 	BTC_WIFI_STAT_NORMAL,
235c42ea613SYan-Hsuan Chuang 	BTC_WIFI_STAT_ANT_DIV,
236c42ea613SYan-Hsuan Chuang 	BTC_WIFI_STAT_MAX
237c42ea613SYan-Hsuan Chuang };
238c42ea613SYan-Hsuan Chuang 
239c42ea613SYan-Hsuan Chuang enum bt_ant_type {
240c42ea613SYan-Hsuan Chuang 	BTC_ANT_TYPE_0,
241c42ea613SYan-Hsuan Chuang 	BTC_ANT_TYPE_1,
242c42ea613SYan-Hsuan Chuang 	BTC_ANT_TYPE_2,
243c42ea613SYan-Hsuan Chuang 	BTC_ANT_TYPE_3,
244c42ea613SYan-Hsuan Chuang 	BTC_ANT_TYPE_4,
245c42ea613SYan-Hsuan Chuang 	BTC_ANT_TYPE_MAX
246c42ea613SYan-Hsuan Chuang };
247c42ea613SYan-Hsuan Chuang 
248aa45a673SLarry Finger enum btc_get_type {
249aa45a673SLarry Finger 	/* type bool */
250aa45a673SLarry Finger 	BTC_GET_BL_HS_OPERATION,
251aa45a673SLarry Finger 	BTC_GET_BL_HS_CONNECTING,
252aa45a673SLarry Finger 	BTC_GET_BL_WIFI_CONNECTED,
253aa45a673SLarry Finger 	BTC_GET_BL_WIFI_BUSY,
254aa45a673SLarry Finger 	BTC_GET_BL_WIFI_SCAN,
255aa45a673SLarry Finger 	BTC_GET_BL_WIFI_LINK,
256aa45a673SLarry Finger 	BTC_GET_BL_WIFI_DHCP,
257aa45a673SLarry Finger 	BTC_GET_BL_WIFI_SOFTAP_IDLE,
258aa45a673SLarry Finger 	BTC_GET_BL_WIFI_SOFTAP_LINKING,
259aa45a673SLarry Finger 	BTC_GET_BL_WIFI_IN_EARLY_SUSPEND,
260aa45a673SLarry Finger 	BTC_GET_BL_WIFI_ROAM,
261aa45a673SLarry Finger 	BTC_GET_BL_WIFI_4_WAY_PROGRESS,
262aa45a673SLarry Finger 	BTC_GET_BL_WIFI_UNDER_5G,
263aa45a673SLarry Finger 	BTC_GET_BL_WIFI_AP_MODE_ENABLE,
264aa45a673SLarry Finger 	BTC_GET_BL_WIFI_ENABLE_ENCRYPTION,
265aa45a673SLarry Finger 	BTC_GET_BL_WIFI_UNDER_B_MODE,
266aa45a673SLarry Finger 	BTC_GET_BL_EXT_SWITCH,
2677558668dSYan-Hsuan Chuang 	BTC_GET_BL_WIFI_IS_IN_MP_MODE,
268c42ea613SYan-Hsuan Chuang 	BTC_GET_BL_IS_ASUS_8723B,
269c42ea613SYan-Hsuan Chuang 	BTC_GET_BL_FW_READY,
270c42ea613SYan-Hsuan Chuang 	BTC_GET_BL_RF4CE_CONNECTED,
271aa45a673SLarry Finger 
272aa45a673SLarry Finger 	/* type s4Byte */
273aa45a673SLarry Finger 	BTC_GET_S4_WIFI_RSSI,
274aa45a673SLarry Finger 	BTC_GET_S4_HS_RSSI,
275aa45a673SLarry Finger 
276aa45a673SLarry Finger 	/* type u32 */
277aa45a673SLarry Finger 	BTC_GET_U4_WIFI_BW,
278aa45a673SLarry Finger 	BTC_GET_U4_WIFI_TRAFFIC_DIRECTION,
279aa45a673SLarry Finger 	BTC_GET_U4_WIFI_FW_VER,
280ed364abfSLarry Finger 	BTC_GET_U4_WIFI_LINK_STATUS,
281aa45a673SLarry Finger 	BTC_GET_U4_BT_PATCH_VER,
2821a281473SPing-Ke Shih 	BTC_GET_U4_VENDOR,
283c42ea613SYan-Hsuan Chuang 	BTC_GET_U4_SUPPORTED_VERSION,
284c42ea613SYan-Hsuan Chuang 	BTC_GET_U4_SUPPORTED_FEATURE,
285b2283dadSPing-Ke Shih 	BTC_GET_U4_BT_DEVICE_INFO,
286b2283dadSPing-Ke Shih 	BTC_GET_U4_BT_FORBIDDEN_SLOT_VAL,
287c42ea613SYan-Hsuan Chuang 	BTC_GET_U4_WIFI_IQK_TOTAL,
288c42ea613SYan-Hsuan Chuang 	BTC_GET_U4_WIFI_IQK_OK,
289c42ea613SYan-Hsuan Chuang 	BTC_GET_U4_WIFI_IQK_FAIL,
290aa45a673SLarry Finger 
291aa45a673SLarry Finger 	/* type u1Byte */
292aa45a673SLarry Finger 	BTC_GET_U1_WIFI_DOT11_CHNL,
293aa45a673SLarry Finger 	BTC_GET_U1_WIFI_CENTRAL_CHNL,
294aa45a673SLarry Finger 	BTC_GET_U1_WIFI_HS_CHNL,
295aa45a673SLarry Finger 	BTC_GET_U1_MAC_PHY_MODE,
296e79fff28SLarry Finger 	BTC_GET_U1_AP_NUM,
297c42ea613SYan-Hsuan Chuang 	BTC_GET_U1_ANT_TYPE,
29886aeb825SYan-Hsuan Chuang 	BTC_GET_U1_IOT_PEER,
299aa45a673SLarry Finger 
300aa45a673SLarry Finger 	/* for 1Ant */
301aa45a673SLarry Finger 	BTC_GET_U1_LPS_MODE,
302aa45a673SLarry Finger 	BTC_GET_BL_BT_SCO_BUSY,
303aa45a673SLarry Finger 
304aa45a673SLarry Finger 	/* for test mode */
305aa45a673SLarry Finger 	BTC_GET_DRIVER_TEST_CFG,
306aa45a673SLarry Finger 	BTC_GET_MAX
307aa45a673SLarry Finger };
308aa45a673SLarry Finger 
3091a281473SPing-Ke Shih enum btc_vendor {
3101a281473SPing-Ke Shih 	BTC_VENDOR_LENOVO,
3111a281473SPing-Ke Shih 	BTC_VENDOR_ASUS,
3121a281473SPing-Ke Shih 	BTC_VENDOR_OTHER
3131a281473SPing-Ke Shih };
3141a281473SPing-Ke Shih 
315aa45a673SLarry Finger enum btc_set_type {
316aa45a673SLarry Finger 	/* type bool */
317aa45a673SLarry Finger 	BTC_SET_BL_BT_DISABLE,
318aa45a673SLarry Finger 	BTC_SET_BL_BT_TRAFFIC_BUSY,
319aa45a673SLarry Finger 	BTC_SET_BL_BT_LIMITED_DIG,
320aa45a673SLarry Finger 	BTC_SET_BL_FORCE_TO_ROAM,
321aa45a673SLarry Finger 	BTC_SET_BL_TO_REJ_AP_AGG_PKT,
322aa45a673SLarry Finger 	BTC_SET_BL_BT_CTRL_AGG_SIZE,
323aa45a673SLarry Finger 	BTC_SET_BL_INC_SCAN_DEV_NUM,
324588a290bSYan-Hsuan Chuang 	BTC_SET_BL_BT_TX_RX_MASK,
325a8570896SYan-Hsuan Chuang 	BTC_SET_BL_MIRACAST_PLUS_BT,
326aa45a673SLarry Finger 
327aa45a673SLarry Finger 	/* type u1Byte */
328aa45a673SLarry Finger 	BTC_SET_U1_RSSI_ADJ_VAL_FOR_AGC_TABLE_ON,
329aa45a673SLarry Finger 	BTC_SET_UI_SCAN_SIG_COMPENSATION,
330aa45a673SLarry Finger 	BTC_SET_U1_AGG_BUF_SIZE,
331aa45a673SLarry Finger 
332aa45a673SLarry Finger 	/* type trigger some action */
333aa45a673SLarry Finger 	BTC_SET_ACT_GET_BT_RSSI,
334aa45a673SLarry Finger 	BTC_SET_ACT_AGGREGATE_CTRL,
3356f85c03bSPing-Ke Shih 	BTC_SET_ACT_ANTPOSREGRISTRY_CTRL,
336aa45a673SLarry Finger 
337aa45a673SLarry Finger 	/********* for 1Ant **********/
338aa45a673SLarry Finger 	/* type bool */
339aa45a673SLarry Finger 	BTC_SET_BL_BT_SCO_BUSY,
340aa45a673SLarry Finger 	/* type u1Byte */
341ed364abfSLarry Finger 	BTC_SET_U1_RSSI_ADJ_VAL_FOR_1ANT_COEX_TYPE,
342ed364abfSLarry Finger 	BTC_SET_U1_LPS_VAL,
343ed364abfSLarry Finger 	BTC_SET_U1_RPWM_VAL,
344aa45a673SLarry Finger 	BTC_SET_U1_1ANT_LPS,
345aa45a673SLarry Finger 	BTC_SET_U1_1ANT_RPWM,
346aa45a673SLarry Finger 	/* type trigger some action */
347aa45a673SLarry Finger 	BTC_SET_ACT_LEAVE_LPS,
348aa45a673SLarry Finger 	BTC_SET_ACT_ENTER_LPS,
349aa45a673SLarry Finger 	BTC_SET_ACT_NORMAL_LPS,
350aa45a673SLarry Finger 	BTC_SET_ACT_INC_FORCE_EXEC_PWR_CMD_CNT,
351aa45a673SLarry Finger 	BTC_SET_ACT_DISABLE_LOW_POWER,
352c6821613SYan-Hsuan Chuang 	BTC_SET_ACT_UPDATE_RAMASK,
353aa45a673SLarry Finger 	BTC_SET_ACT_SEND_MIMO_PS,
354aa45a673SLarry Finger 	/* BT Coex related */
355aa45a673SLarry Finger 	BTC_SET_ACT_CTRL_BT_INFO,
356aa45a673SLarry Finger 	BTC_SET_ACT_CTRL_BT_COEX,
357c42ea613SYan-Hsuan Chuang 	BTC_SET_ACT_CTRL_8723B_ANT,
358aa45a673SLarry Finger 	/***************************/
359aa45a673SLarry Finger 	BTC_SET_MAX
360aa45a673SLarry Finger };
361aa45a673SLarry Finger 
362aa45a673SLarry Finger enum btc_dbg_disp_type {
363aa45a673SLarry Finger 	BTC_DBG_DISP_COEX_STATISTICS = 0x0,
364aa45a673SLarry Finger 	BTC_DBG_DISP_BT_LINK_INFO = 0x1,
365aa45a673SLarry Finger 	BTC_DBG_DISP_BT_FW_VER = 0x2,
366aa45a673SLarry Finger 	BTC_DBG_DISP_FW_PWR_MODE_CMD = 0x3,
36708431b62SPing-Ke Shih 	BTC_DBG_DISP_WIFI_STATUS = 0x04,
368aa45a673SLarry Finger 	BTC_DBG_DISP_MAX
369aa45a673SLarry Finger };
370aa45a673SLarry Finger 
371aa45a673SLarry Finger enum btc_notify_type_ips {
372aa45a673SLarry Finger 	BTC_IPS_LEAVE = 0x0,
373aa45a673SLarry Finger 	BTC_IPS_ENTER = 0x1,
374aa45a673SLarry Finger 	BTC_IPS_MAX
375aa45a673SLarry Finger };
376aa45a673SLarry Finger 
377aa45a673SLarry Finger enum btc_notify_type_lps {
378aa45a673SLarry Finger 	BTC_LPS_DISABLE = 0x0,
379aa45a673SLarry Finger 	BTC_LPS_ENABLE = 0x1,
380aa45a673SLarry Finger 	BTC_LPS_MAX
381aa45a673SLarry Finger };
382aa45a673SLarry Finger 
383aa45a673SLarry Finger enum btc_notify_type_scan {
384aa45a673SLarry Finger 	BTC_SCAN_FINISH = 0x0,
385aa45a673SLarry Finger 	BTC_SCAN_START = 0x1,
386aa45a673SLarry Finger 	BTC_SCAN_MAX
387aa45a673SLarry Finger };
388aa45a673SLarry Finger 
38917bf8510SPing-Ke Shih enum btc_notify_type_switchband {
39017bf8510SPing-Ke Shih 	BTC_NOT_SWITCH = 0x0,
39117bf8510SPing-Ke Shih 	BTC_SWITCH_TO_24G = 0x1,
39217bf8510SPing-Ke Shih 	BTC_SWITCH_TO_5G = 0x2,
39317bf8510SPing-Ke Shih 	BTC_SWITCH_TO_24G_NOFORSCAN = 0x3,
39417bf8510SPing-Ke Shih 	BTC_SWITCH_MAX
39517bf8510SPing-Ke Shih };
39617bf8510SPing-Ke Shih 
397aa45a673SLarry Finger enum btc_notify_type_associate {
398aa45a673SLarry Finger 	BTC_ASSOCIATE_FINISH = 0x0,
399aa45a673SLarry Finger 	BTC_ASSOCIATE_START = 0x1,
400aa45a673SLarry Finger 	BTC_ASSOCIATE_MAX
401aa45a673SLarry Finger };
402aa45a673SLarry Finger 
403aa45a673SLarry Finger enum btc_notify_type_media_status {
404aa45a673SLarry Finger 	BTC_MEDIA_DISCONNECT = 0x0,
405aa45a673SLarry Finger 	BTC_MEDIA_CONNECT = 0x1,
406aa45a673SLarry Finger 	BTC_MEDIA_MAX
407aa45a673SLarry Finger };
408aa45a673SLarry Finger 
409aa45a673SLarry Finger enum btc_notify_type_special_packet {
410aa45a673SLarry Finger 	BTC_PACKET_UNKNOWN = 0x0,
411aa45a673SLarry Finger 	BTC_PACKET_DHCP = 0x1,
412aa45a673SLarry Finger 	BTC_PACKET_ARP = 0x2,
413aa45a673SLarry Finger 	BTC_PACKET_EAPOL = 0x3,
414aa45a673SLarry Finger 	BTC_PACKET_MAX
415aa45a673SLarry Finger };
416aa45a673SLarry Finger 
417ed364abfSLarry Finger enum hci_ext_bt_operation {
418ed364abfSLarry Finger 	HCI_BT_OP_NONE = 0x0,
419ed364abfSLarry Finger 	HCI_BT_OP_INQUIRY_START = 0x1,
420ed364abfSLarry Finger 	HCI_BT_OP_INQUIRY_FINISH = 0x2,
421ed364abfSLarry Finger 	HCI_BT_OP_PAGING_START = 0x3,
422ed364abfSLarry Finger 	HCI_BT_OP_PAGING_SUCCESS = 0x4,
423ed364abfSLarry Finger 	HCI_BT_OP_PAGING_UNSUCCESS = 0x5,
424ed364abfSLarry Finger 	HCI_BT_OP_PAIRING_START = 0x6,
425ed364abfSLarry Finger 	HCI_BT_OP_PAIRING_FINISH = 0x7,
426ed364abfSLarry Finger 	HCI_BT_OP_BT_DEV_ENABLE = 0x8,
427ed364abfSLarry Finger 	HCI_BT_OP_BT_DEV_DISABLE = 0x9,
428ed364abfSLarry Finger 	HCI_BT_OP_MAX
429ed364abfSLarry Finger };
430ed364abfSLarry Finger 
431aa45a673SLarry Finger enum btc_notify_type_stack_operation {
432aa45a673SLarry Finger 	BTC_STACK_OP_NONE = 0x0,
433aa45a673SLarry Finger 	BTC_STACK_OP_INQ_PAGE_PAIR_START = 0x1,
434aa45a673SLarry Finger 	BTC_STACK_OP_INQ_PAGE_PAIR_FINISH = 0x2,
435aa45a673SLarry Finger 	BTC_STACK_OP_MAX
436aa45a673SLarry Finger };
437aa45a673SLarry Finger 
438aa45a673SLarry Finger struct btc_bt_info {
439aa45a673SLarry Finger 	bool bt_disabled;
440aa45a673SLarry Finger 	u8 rssi_adjust_for_agc_table_on;
441aa45a673SLarry Finger 	u8 rssi_adjust_for_1ant_coex_type;
4420199103eSYan-Hsuan Chuang 	bool pre_bt_ctrl_agg_buf_size;
443aa45a673SLarry Finger 	bool bt_busy;
4440199103eSYan-Hsuan Chuang 	u8 pre_agg_buf_size;
445aa45a673SLarry Finger 	u8 agg_buf_size;
446aa45a673SLarry Finger 	bool limited_dig;
4470199103eSYan-Hsuan Chuang 	bool pre_reject_agg_pkt;
448aa45a673SLarry Finger 	bool reject_agg_pkt;
449ed364abfSLarry Finger 	bool bt_ctrl_buf_size;
450aa45a673SLarry Finger 	bool increase_scan_dev_num;
4510199103eSYan-Hsuan Chuang 	bool miracast_plus_bt;
4520199103eSYan-Hsuan Chuang 	bool bt_ctrl_agg_buf_size;
4530199103eSYan-Hsuan Chuang 	bool bt_tx_rx_mask;
454aa45a673SLarry Finger 	u16 bt_hci_ver;
455aa45a673SLarry Finger 	u16 bt_real_fw_ver;
456aa45a673SLarry Finger 	u8 bt_fw_ver;
457aa45a673SLarry Finger 
458ed364abfSLarry Finger 	bool bt_disable_low_pwr;
459ed364abfSLarry Finger 
460aa45a673SLarry Finger 	/* the following is for 1Ant solution */
461aa45a673SLarry Finger 	bool bt_ctrl_lps;
462aa45a673SLarry Finger 	bool bt_pwr_save_mode;
463aa45a673SLarry Finger 	bool bt_lps_on;
464aa45a673SLarry Finger 	bool force_to_roam;
465aa45a673SLarry Finger 	u8 force_exec_pwr_cmd_cnt;
466ed364abfSLarry Finger 	u8 lps_val;
467ed364abfSLarry Finger 	u8 rpwm_val;
468aa45a673SLarry Finger 	u32 ra_mask;
469b2283dadSPing-Ke Shih 
470b2283dadSPing-Ke Shih 	u32 afh_map_l;
471b2283dadSPing-Ke Shih 	u32 afh_map_m;
472b2283dadSPing-Ke Shih 	u16 afh_map_h;
473b2283dadSPing-Ke Shih 	u32 bt_supported_feature;
474b2283dadSPing-Ke Shih 	u32 bt_supported_version;
475b2283dadSPing-Ke Shih 	u32 bt_device_info;
476b2283dadSPing-Ke Shih 	u32 bt_forb_slot_val;
477b2283dadSPing-Ke Shih 	u8 bt_ant_det_val;
478b2283dadSPing-Ke Shih 	u8 bt_ble_scan_type;
479b2283dadSPing-Ke Shih 	u32 bt_ble_scan_para;
480aa45a673SLarry Finger };
481aa45a673SLarry Finger 
482aa45a673SLarry Finger struct btc_stack_info {
483aa45a673SLarry Finger 	bool profile_notified;
484aa45a673SLarry Finger 	u16 hci_version;	/* stack hci version */
485aa45a673SLarry Finger 	u8 num_of_link;
486aa45a673SLarry Finger 	bool bt_link_exist;
487aa45a673SLarry Finger 	bool sco_exist;
488aa45a673SLarry Finger 	bool acl_exist;
489aa45a673SLarry Finger 	bool a2dp_exist;
490aa45a673SLarry Finger 	bool hid_exist;
491aa45a673SLarry Finger 	u8 num_of_hid;
492aa45a673SLarry Finger 	bool pan_exist;
493aa45a673SLarry Finger 	bool unknown_acl_exist;
49408aba42fSArnd Bergmann 	s8 min_bt_rssi;
495aa45a673SLarry Finger };
496aa45a673SLarry Finger 
497aa45a673SLarry Finger struct btc_statistics {
498aa45a673SLarry Finger 	u32 cnt_bind;
499aa45a673SLarry Finger 	u32 cnt_init_hw_config;
500aa45a673SLarry Finger 	u32 cnt_init_coex_dm;
501aa45a673SLarry Finger 	u32 cnt_ips_notify;
502aa45a673SLarry Finger 	u32 cnt_lps_notify;
503aa45a673SLarry Finger 	u32 cnt_scan_notify;
504aa45a673SLarry Finger 	u32 cnt_connect_notify;
505aa45a673SLarry Finger 	u32 cnt_media_status_notify;
506aa45a673SLarry Finger 	u32 cnt_special_packet_notify;
507aa45a673SLarry Finger 	u32 cnt_bt_info_notify;
508aa45a673SLarry Finger 	u32 cnt_periodical;
509ed364abfSLarry Finger 	u32 cnt_coex_dm_switch;
510aa45a673SLarry Finger 	u32 cnt_stack_operation_notify;
511aa45a673SLarry Finger 	u32 cnt_dbg_ctrl;
5126fbbc82aSYan-Hsuan Chuang 	u32 cnt_pre_load_firmware;
51360f44100SYan-Hsuan Chuang 	u32 cnt_power_on;
514aa45a673SLarry Finger };
515aa45a673SLarry Finger 
516aa45a673SLarry Finger struct btc_bt_link_info {
517aa45a673SLarry Finger 	bool bt_link_exist;
51875717802SPing-Ke Shih 	bool bt_hi_pri_link_exist;
519aa45a673SLarry Finger 	bool sco_exist;
520aa45a673SLarry Finger 	bool sco_only;
521aa45a673SLarry Finger 	bool a2dp_exist;
522aa45a673SLarry Finger 	bool a2dp_only;
523aa45a673SLarry Finger 	bool hid_exist;
524aa45a673SLarry Finger 	bool hid_only;
525aa45a673SLarry Finger 	bool pan_exist;
526aa45a673SLarry Finger 	bool pan_only;
52761d80261SYan-Hsuan Chuang 	bool slave_role;
528aa45a673SLarry Finger };
529aa45a673SLarry Finger 
530aa45a673SLarry Finger enum btc_antenna_pos {
531aa45a673SLarry Finger 	BTC_ANTENNA_AT_MAIN_PORT = 0x1,
532aa45a673SLarry Finger 	BTC_ANTENNA_AT_AUX_PORT = 0x2,
533aa45a673SLarry Finger };
534aa45a673SLarry Finger 
535b2283dadSPing-Ke Shih enum btc_mp_h2c_op_code {
536b2283dadSPing-Ke Shih 	BT_OP_GET_BT_VERSION			= 0,
537b2283dadSPing-Ke Shih 	BT_OP_WRITE_REG_ADDR			= 12,
538b2283dadSPing-Ke Shih 	BT_OP_WRITE_REG_VALUE			= 13,
539b2283dadSPing-Ke Shih 	BT_OP_READ_REG				= 17,
540b2283dadSPing-Ke Shih 	BT_OP_GET_AFH_MAP_L			= 30,
541b2283dadSPing-Ke Shih 	BT_OP_GET_AFH_MAP_M			= 31,
542b2283dadSPing-Ke Shih 	BT_OP_GET_AFH_MAP_H			= 32,
543b2283dadSPing-Ke Shih 	BT_OP_GET_BT_COEX_SUPPORTED_FEATURE	= 42,
544b2283dadSPing-Ke Shih 	BT_OP_GET_BT_COEX_SUPPORTED_VERSION	= 43,
545b2283dadSPing-Ke Shih 	BT_OP_GET_BT_ANT_DET_VAL		= 44,
546b2283dadSPing-Ke Shih 	BT_OP_GET_BT_BLE_SCAN_PARA		= 45,
547b2283dadSPing-Ke Shih 	BT_OP_GET_BT_BLE_SCAN_TYPE		= 46,
548b2283dadSPing-Ke Shih 	BT_OP_GET_BT_DEVICE_INFO		= 48,
549b2283dadSPing-Ke Shih 	BT_OP_GET_BT_FORBIDDEN_SLOT_VAL		= 49,
550b2283dadSPing-Ke Shih 	BT_OP_MAX
551b2283dadSPing-Ke Shih };
552b2283dadSPing-Ke Shih 
553b2283dadSPing-Ke Shih enum btc_mp_h2c_req_num {
554b2283dadSPing-Ke Shih 	/* 4 bits only */
555b2283dadSPing-Ke Shih 	BT_SEQ_DONT_CARE			= 0,
556b2283dadSPing-Ke Shih 	BT_SEQ_GET_BT_VERSION			= 0xE,
557b2283dadSPing-Ke Shih 	BT_SEQ_GET_AFH_MAP_L			= 0x5,
558b2283dadSPing-Ke Shih 	BT_SEQ_GET_AFH_MAP_M			= 0x6,
559b2283dadSPing-Ke Shih 	BT_SEQ_GET_AFH_MAP_H			= 0x9,
560b2283dadSPing-Ke Shih 	BT_SEQ_GET_BT_COEX_SUPPORTED_FEATURE	= 0x7,
561b2283dadSPing-Ke Shih 	BT_SEQ_GET_BT_COEX_SUPPORTED_VERSION	= 0x8,
562b2283dadSPing-Ke Shih 	BT_SEQ_GET_BT_ANT_DET_VAL		= 0x2,
563b2283dadSPing-Ke Shih 	BT_SEQ_GET_BT_BLE_SCAN_PARA		= 0x3,
564b2283dadSPing-Ke Shih 	BT_SEQ_GET_BT_BLE_SCAN_TYPE		= 0x4,
565b2283dadSPing-Ke Shih 	BT_SEQ_GET_BT_DEVICE_INFO		= 0xA,
566b2283dadSPing-Ke Shih 	BT_SEQ_GET_BT_FORB_SLOT_VAL		= 0xB,
567b2283dadSPing-Ke Shih };
568b2283dadSPing-Ke Shih 
569aa45a673SLarry Finger struct btc_coexist {
570aa45a673SLarry Finger 	/* make sure only one adapter can bind the data context  */
571aa45a673SLarry Finger 	bool binded;
572aa45a673SLarry Finger 	/* default adapter */
573aa45a673SLarry Finger 	void *adapter;
574aa45a673SLarry Finger 	struct btc_board_info board_info;
575aa45a673SLarry Finger 	/* some bt info referenced by non-bt module */
576aa45a673SLarry Finger 	struct btc_bt_info bt_info;
577aa45a673SLarry Finger 	struct btc_stack_info stack_info;
578aa45a673SLarry Finger 	enum btc_chip_interface	chip_interface;
579aa45a673SLarry Finger 	struct btc_bt_link_info bt_link_info;
580aa45a673SLarry Finger 
581aef9ae46SLarry Finger 	/* boolean variables to replace BT_AUTO_REPORT_ONLY_XXXXY_ZANT
582aef9ae46SLarry Finger 	 * configuration parameters
583aef9ae46SLarry Finger 	 */
584aef9ae46SLarry Finger 	bool auto_report_1ant;
585aef9ae46SLarry Finger 	bool auto_report_2ant;
586aa45a673SLarry Finger 	bool initilized;
587aa45a673SLarry Finger 	bool stop_coex_dm;
588aa45a673SLarry Finger 	bool manual_control;
589aa45a673SLarry Finger 	struct btc_statistics statistics;
590aa45a673SLarry Finger 	u8 pwr_mode_val[10];
591aa45a673SLarry Finger 
592b2283dadSPing-Ke Shih 	struct completion bt_mp_comp;
593b2283dadSPing-Ke Shih 
594aa45a673SLarry Finger 	/* function pointers - io related */
5953afb7da4SLarry Finger 	u8 (*btc_read_1byte)(void *btc_context, u32 reg_addr);
5963afb7da4SLarry Finger 	void (*btc_write_1byte)(void *btc_context, u32 reg_addr, u32 data);
5973afb7da4SLarry Finger 	void (*btc_write_1byte_bitmask)(void *btc_context, u32 reg_addr,
5983afb7da4SLarry Finger 					u32 bit_mask, u8 data1b);
5993afb7da4SLarry Finger 	u16 (*btc_read_2byte)(void *btc_context, u32 reg_addr);
6003afb7da4SLarry Finger 	void (*btc_write_2byte)(void *btc_context, u32 reg_addr, u16 data);
6013afb7da4SLarry Finger 	u32 (*btc_read_4byte)(void *btc_context, u32 reg_addr);
6023afb7da4SLarry Finger 	void (*btc_write_4byte)(void *btc_context, u32 reg_addr, u32 data);
603aa45a673SLarry Finger 
6043afb7da4SLarry Finger 	void (*btc_write_local_reg_1byte)(void *btc_context, u32 reg_addr,
6053afb7da4SLarry Finger 					  u8 data);
6063afb7da4SLarry Finger 	void (*btc_set_bb_reg)(void *btc_context, u32 reg_addr,
6073afb7da4SLarry Finger 			       u32 bit_mask, u32 data);
6083afb7da4SLarry Finger 	u32 (*btc_get_bb_reg)(void *btc_context, u32 reg_addr,
6093afb7da4SLarry Finger 			      u32 bit_mask);
6103afb7da4SLarry Finger 	void (*btc_set_rf_reg)(void *btc_context, u8 rf_path, u32 reg_addr,
6113afb7da4SLarry Finger 			       u32 bit_mask, u32 data);
6123afb7da4SLarry Finger 	u32 (*btc_get_rf_reg)(void *btc_context, u8 rf_path,
6133afb7da4SLarry Finger 			      u32 reg_addr, u32 bit_mask);
614aa45a673SLarry Finger 
6153afb7da4SLarry Finger 	void (*btc_fill_h2c)(void *btc_context, u8 element_id,
6163afb7da4SLarry Finger 			     u32 cmd_len, u8 *cmd_buffer);
617aa45a673SLarry Finger 
6183afb7da4SLarry Finger 	void (*btc_disp_dbg_msg)(void *btcoexist, u8 disp_type,
6193afb7da4SLarry Finger 				 struct seq_file *m);
620aa45a673SLarry Finger 
6213afb7da4SLarry Finger 	bool (*btc_get)(void *btcoexist, u8 get_type, void *out_buf);
6223afb7da4SLarry Finger 	bool (*btc_set)(void *btcoexist, u8 set_type, void *in_buf);
623aa45a673SLarry Finger 
6243afb7da4SLarry Finger 	void (*btc_set_bt_reg)(void *btc_context, u8 reg_type, u32 offset,
6253afb7da4SLarry Finger 			       u32 value);
626b2283dadSPing-Ke Shih 	u32 (*btc_get_bt_coex_supported_feature)(void *btcoexist);
627b2283dadSPing-Ke Shih 	u32 (*btc_get_bt_coex_supported_version)(void *btcoexist);
628b2283dadSPing-Ke Shih 	u8 (*btc_get_ant_det_val_from_bt)(void *btcoexist);
629b2283dadSPing-Ke Shih 	u8 (*btc_get_ble_scan_type_from_bt)(void *btcoexist);
630b2283dadSPing-Ke Shih 	u32 (*btc_get_ble_scan_para_from_bt)(void *btcoexist, u8 scan_type);
631b2283dadSPing-Ke Shih 	bool (*btc_get_bt_afh_map_from_bt)(void *btcoexist, u8 map_type,
632b2283dadSPing-Ke Shih 					   u8 *afh_map);
633aa45a673SLarry Finger };
634aa45a673SLarry Finger 
635aa45a673SLarry Finger bool halbtc_is_wifi_uplink(struct rtl_priv *adapter);
636aa45a673SLarry Finger 
63740d9dd4fSPing-Ke Shih #define rtl_btc_coexist(rtlpriv)				\
63840d9dd4fSPing-Ke Shih 	((struct btc_coexist *)((rtlpriv)->btcoexist.btc_context))
639aa45a673SLarry Finger 
64040d9dd4fSPing-Ke Shih bool exhalbtc_initlize_variables(struct rtl_priv *rtlpriv);
64187d8a9f3SPing-Ke Shih bool exhalbtc_bind_bt_coex_withadapter(void *adapter);
642a44709bbSPing-Ke Shih void exhalbtc_power_on_setting(struct btc_coexist *btcoexist);
64343f5644aSPing-Ke Shih void exhalbtc_init_hw_config(struct btc_coexist *btcoexist, bool wifi_only);
644aa45a673SLarry Finger void exhalbtc_init_coex_dm(struct btc_coexist *btcoexist);
645aa45a673SLarry Finger void exhalbtc_ips_notify(struct btc_coexist *btcoexist, u8 type);
646aa45a673SLarry Finger void exhalbtc_lps_notify(struct btc_coexist *btcoexist, u8 type);
647aa45a673SLarry Finger void exhalbtc_scan_notify(struct btc_coexist *btcoexist, u8 type);
648aa45a673SLarry Finger void exhalbtc_connect_notify(struct btc_coexist *btcoexist, u8 action);
649aa45a673SLarry Finger void exhalbtc_mediastatus_notify(struct btc_coexist *btcoexist,
650ed364abfSLarry Finger 				 enum rt_media_status media_status);
651aa45a673SLarry Finger void exhalbtc_special_packet_notify(struct btc_coexist *btcoexist, u8 pkt_type);
652aa45a673SLarry Finger void exhalbtc_bt_info_notify(struct btc_coexist *btcoexist, u8 *tmp_buf,
653aa45a673SLarry Finger 			     u8 length);
654aa45a673SLarry Finger void exhalbtc_stack_operation_notify(struct btc_coexist *btcoexist, u8 type);
655aa45a673SLarry Finger void exhalbtc_halt_notify(struct btc_coexist *btcoexist);
656aa45a673SLarry Finger void exhalbtc_pnp_notify(struct btc_coexist *btcoexist, u8 pnp_state);
657ed364abfSLarry Finger void exhalbtc_coex_dm_switch(struct btc_coexist *btcoexist);
658aa45a673SLarry Finger void exhalbtc_periodical(struct btc_coexist *btcoexist);
659aa45a673SLarry Finger void exhalbtc_dbg_control(struct btc_coexist *btcoexist, u8 code, u8 len,
660aa45a673SLarry Finger 			  u8 *data);
661aa45a673SLarry Finger void exhalbtc_stack_update_profile_info(void);
66240d9dd4fSPing-Ke Shih void exhalbtc_set_hci_version(struct btc_coexist *btcoexist, u16 hci_version);
66340d9dd4fSPing-Ke Shih void exhalbtc_set_bt_patch_version(struct btc_coexist *btcoexist,
66440d9dd4fSPing-Ke Shih 				   u16 bt_hci_version, u16 bt_patch_version);
66540d9dd4fSPing-Ke Shih void exhalbtc_update_min_bt_rssi(struct btc_coexist *btcoexist, s8 bt_rssi);
66640d9dd4fSPing-Ke Shih void exhalbtc_set_bt_exist(struct btc_coexist *btcoexist, bool bt_exist);
66740d9dd4fSPing-Ke Shih void exhalbtc_set_chip_type(struct btc_coexist *btcoexist, u8 chip_type);
668baa17022SLarry Finger void exhalbtc_set_ant_num(struct rtl_priv *rtlpriv, u8 type, u8 ant_num);
669610247f4SPing-Ke Shih void exhalbtc_display_bt_coex_info(struct btc_coexist *btcoexist,
670610247f4SPing-Ke Shih 				   struct seq_file *m);
67117bf8510SPing-Ke Shih void exhalbtc_switch_band_notify(struct btc_coexist *btcoexist, u8 type);
672aa45a673SLarry Finger void exhalbtc_signal_compensation(struct btc_coexist *btcoexist,
673aa45a673SLarry Finger 				  u8 *rssi_wifi, u8 *rssi_bt);
674aa45a673SLarry Finger void exhalbtc_lps_leave(struct btc_coexist *btcoexist);
675aa45a673SLarry Finger void exhalbtc_low_wifi_traffic_notify(struct btc_coexist *btcoexist);
67640d9dd4fSPing-Ke Shih void exhalbtc_set_single_ant_path(struct btc_coexist *btcoexist,
67740d9dd4fSPing-Ke Shih 				  u8 single_ant_path);
678aa45a673SLarry Finger 
679aa45a673SLarry Finger #endif
680