xref: /linux/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h (revision 17bf851011819c84c670d80058213a375f64ee2e)
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;
156aa45a673SLarry Finger };
157aa45a673SLarry Finger 
158aa45a673SLarry Finger enum btc_dbg_opcode {
159aa45a673SLarry Finger 	BTC_DBG_SET_COEX_NORMAL = 0x0,
160aa45a673SLarry Finger 	BTC_DBG_SET_COEX_WIFI_ONLY = 0x1,
161aa45a673SLarry Finger 	BTC_DBG_SET_COEX_BT_ONLY = 0x2,
162aa45a673SLarry Finger 	BTC_DBG_MAX
163aa45a673SLarry Finger };
164aa45a673SLarry Finger 
165aa45a673SLarry Finger enum btc_rssi_state {
166aa45a673SLarry Finger 	BTC_RSSI_STATE_HIGH = 0x0,
167aa45a673SLarry Finger 	BTC_RSSI_STATE_MEDIUM = 0x1,
168aa45a673SLarry Finger 	BTC_RSSI_STATE_LOW = 0x2,
169aa45a673SLarry Finger 	BTC_RSSI_STATE_STAY_HIGH = 0x3,
170aa45a673SLarry Finger 	BTC_RSSI_STATE_STAY_MEDIUM = 0x4,
171aa45a673SLarry Finger 	BTC_RSSI_STATE_STAY_LOW = 0x5,
172aa45a673SLarry Finger 	BTC_RSSI_MAX
173aa45a673SLarry Finger };
174aa45a673SLarry Finger 
175aa45a673SLarry Finger enum btc_wifi_role {
176aa45a673SLarry Finger 	BTC_ROLE_STATION = 0x0,
177aa45a673SLarry Finger 	BTC_ROLE_AP = 0x1,
178aa45a673SLarry Finger 	BTC_ROLE_IBSS = 0x2,
179aa45a673SLarry Finger 	BTC_ROLE_HS_MODE = 0x3,
180aa45a673SLarry Finger 	BTC_ROLE_MAX
181aa45a673SLarry Finger };
182aa45a673SLarry Finger 
18308431b62SPing-Ke Shih enum btc_wireless_freq {
18408431b62SPing-Ke Shih 	BTC_FREQ_2_4G = 0x0,
18508431b62SPing-Ke Shih 	BTC_FREQ_5G = 0x1,
18608431b62SPing-Ke Shih 	BTC_FREQ_MAX
18708431b62SPing-Ke Shih };
18808431b62SPing-Ke Shih 
189aa45a673SLarry Finger enum btc_wifi_bw_mode {
190aa45a673SLarry Finger 	BTC_WIFI_BW_LEGACY = 0x0,
191aa45a673SLarry Finger 	BTC_WIFI_BW_HT20 = 0x1,
192aa45a673SLarry Finger 	BTC_WIFI_BW_HT40 = 0x2,
19366d0f9deSPing-Ke Shih 	BTC_WIFI_BW_HT80 = 0x3,
194aa45a673SLarry Finger 	BTC_WIFI_BW_MAX
195aa45a673SLarry Finger };
196aa45a673SLarry Finger 
197aa45a673SLarry Finger enum btc_wifi_traffic_dir {
198aa45a673SLarry Finger 	BTC_WIFI_TRAFFIC_TX = 0x0,
199aa45a673SLarry Finger 	BTC_WIFI_TRAFFIC_RX = 0x1,
200aa45a673SLarry Finger 	BTC_WIFI_TRAFFIC_MAX
201aa45a673SLarry Finger };
202aa45a673SLarry Finger 
203aa45a673SLarry Finger enum btc_wifi_pnp {
204aa45a673SLarry Finger 	BTC_WIFI_PNP_WAKE_UP = 0x0,
205aa45a673SLarry Finger 	BTC_WIFI_PNP_SLEEP = 0x1,
206aa45a673SLarry Finger 	BTC_WIFI_PNP_MAX
207aa45a673SLarry Finger };
208aa45a673SLarry Finger 
20986aeb825SYan-Hsuan Chuang enum btc_iot_peer {
21086aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_UNKNOWN = 0,
21186aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_REALTEK = 1,
21286aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_REALTEK_92SE = 2,
21386aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_BROADCOM = 3,
21486aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_RALINK = 4,
21586aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_ATHEROS = 5,
21686aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_CISCO = 6,
21786aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_MERU = 7,
21886aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_MARVELL = 8,
21986aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_REALTEK_SOFTAP = 9,
22086aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_SELF_SOFTAP = 10, /* Self is SoftAP */
22186aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_AIRGO = 11,
22286aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_REALTEK_JAGUAR_BCUTAP = 12,
22386aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_REALTEK_JAGUAR_CCUTAP = 13,
22486aeb825SYan-Hsuan Chuang 	BTC_IOT_PEER_MAX,
22586aeb825SYan-Hsuan Chuang };
22686aeb825SYan-Hsuan Chuang 
227c42ea613SYan-Hsuan Chuang /* for 8723b-d cut large current issue */
228c42ea613SYan-Hsuan Chuang enum bt_wifi_coex_state {
229c42ea613SYan-Hsuan Chuang 	BTC_WIFI_STAT_INIT,
230c42ea613SYan-Hsuan Chuang 	BTC_WIFI_STAT_IQK,
231c42ea613SYan-Hsuan Chuang 	BTC_WIFI_STAT_NORMAL_OFF,
232c42ea613SYan-Hsuan Chuang 	BTC_WIFI_STAT_MP_OFF,
233c42ea613SYan-Hsuan Chuang 	BTC_WIFI_STAT_NORMAL,
234c42ea613SYan-Hsuan Chuang 	BTC_WIFI_STAT_ANT_DIV,
235c42ea613SYan-Hsuan Chuang 	BTC_WIFI_STAT_MAX
236c42ea613SYan-Hsuan Chuang };
237c42ea613SYan-Hsuan Chuang 
238c42ea613SYan-Hsuan Chuang enum bt_ant_type {
239c42ea613SYan-Hsuan Chuang 	BTC_ANT_TYPE_0,
240c42ea613SYan-Hsuan Chuang 	BTC_ANT_TYPE_1,
241c42ea613SYan-Hsuan Chuang 	BTC_ANT_TYPE_2,
242c42ea613SYan-Hsuan Chuang 	BTC_ANT_TYPE_3,
243c42ea613SYan-Hsuan Chuang 	BTC_ANT_TYPE_4,
244c42ea613SYan-Hsuan Chuang 	BTC_ANT_TYPE_MAX
245c42ea613SYan-Hsuan Chuang };
246c42ea613SYan-Hsuan Chuang 
247aa45a673SLarry Finger enum btc_get_type {
248aa45a673SLarry Finger 	/* type bool */
249aa45a673SLarry Finger 	BTC_GET_BL_HS_OPERATION,
250aa45a673SLarry Finger 	BTC_GET_BL_HS_CONNECTING,
251aa45a673SLarry Finger 	BTC_GET_BL_WIFI_CONNECTED,
252aa45a673SLarry Finger 	BTC_GET_BL_WIFI_BUSY,
253aa45a673SLarry Finger 	BTC_GET_BL_WIFI_SCAN,
254aa45a673SLarry Finger 	BTC_GET_BL_WIFI_LINK,
255aa45a673SLarry Finger 	BTC_GET_BL_WIFI_DHCP,
256aa45a673SLarry Finger 	BTC_GET_BL_WIFI_SOFTAP_IDLE,
257aa45a673SLarry Finger 	BTC_GET_BL_WIFI_SOFTAP_LINKING,
258aa45a673SLarry Finger 	BTC_GET_BL_WIFI_IN_EARLY_SUSPEND,
259aa45a673SLarry Finger 	BTC_GET_BL_WIFI_ROAM,
260aa45a673SLarry Finger 	BTC_GET_BL_WIFI_4_WAY_PROGRESS,
261aa45a673SLarry Finger 	BTC_GET_BL_WIFI_UNDER_5G,
262aa45a673SLarry Finger 	BTC_GET_BL_WIFI_AP_MODE_ENABLE,
263aa45a673SLarry Finger 	BTC_GET_BL_WIFI_ENABLE_ENCRYPTION,
264aa45a673SLarry Finger 	BTC_GET_BL_WIFI_UNDER_B_MODE,
265aa45a673SLarry Finger 	BTC_GET_BL_EXT_SWITCH,
2667558668dSYan-Hsuan Chuang 	BTC_GET_BL_WIFI_IS_IN_MP_MODE,
267c42ea613SYan-Hsuan Chuang 	BTC_GET_BL_IS_ASUS_8723B,
268c42ea613SYan-Hsuan Chuang 	BTC_GET_BL_FW_READY,
269c42ea613SYan-Hsuan Chuang 	BTC_GET_BL_RF4CE_CONNECTED,
270aa45a673SLarry Finger 
271aa45a673SLarry Finger 	/* type s4Byte */
272aa45a673SLarry Finger 	BTC_GET_S4_WIFI_RSSI,
273aa45a673SLarry Finger 	BTC_GET_S4_HS_RSSI,
274aa45a673SLarry Finger 
275aa45a673SLarry Finger 	/* type u32 */
276aa45a673SLarry Finger 	BTC_GET_U4_WIFI_BW,
277aa45a673SLarry Finger 	BTC_GET_U4_WIFI_TRAFFIC_DIRECTION,
278aa45a673SLarry Finger 	BTC_GET_U4_WIFI_FW_VER,
279ed364abfSLarry Finger 	BTC_GET_U4_WIFI_LINK_STATUS,
280aa45a673SLarry Finger 	BTC_GET_U4_BT_PATCH_VER,
2811a281473SPing-Ke Shih 	BTC_GET_U4_VENDOR,
282c42ea613SYan-Hsuan Chuang 	BTC_GET_U4_SUPPORTED_VERSION,
283c42ea613SYan-Hsuan Chuang 	BTC_GET_U4_SUPPORTED_FEATURE,
284b2283dadSPing-Ke Shih 	BTC_GET_U4_BT_DEVICE_INFO,
285b2283dadSPing-Ke Shih 	BTC_GET_U4_BT_FORBIDDEN_SLOT_VAL,
286c42ea613SYan-Hsuan Chuang 	BTC_GET_U4_WIFI_IQK_TOTAL,
287c42ea613SYan-Hsuan Chuang 	BTC_GET_U4_WIFI_IQK_OK,
288c42ea613SYan-Hsuan Chuang 	BTC_GET_U4_WIFI_IQK_FAIL,
289aa45a673SLarry Finger 
290aa45a673SLarry Finger 	/* type u1Byte */
291aa45a673SLarry Finger 	BTC_GET_U1_WIFI_DOT11_CHNL,
292aa45a673SLarry Finger 	BTC_GET_U1_WIFI_CENTRAL_CHNL,
293aa45a673SLarry Finger 	BTC_GET_U1_WIFI_HS_CHNL,
294aa45a673SLarry Finger 	BTC_GET_U1_MAC_PHY_MODE,
295e79fff28SLarry Finger 	BTC_GET_U1_AP_NUM,
296c42ea613SYan-Hsuan Chuang 	BTC_GET_U1_ANT_TYPE,
29786aeb825SYan-Hsuan Chuang 	BTC_GET_U1_IOT_PEER,
298aa45a673SLarry Finger 
299aa45a673SLarry Finger 	/* for 1Ant */
300aa45a673SLarry Finger 	BTC_GET_U1_LPS_MODE,
301aa45a673SLarry Finger 	BTC_GET_BL_BT_SCO_BUSY,
302aa45a673SLarry Finger 
303aa45a673SLarry Finger 	/* for test mode */
304aa45a673SLarry Finger 	BTC_GET_DRIVER_TEST_CFG,
305aa45a673SLarry Finger 	BTC_GET_MAX
306aa45a673SLarry Finger };
307aa45a673SLarry Finger 
3081a281473SPing-Ke Shih enum btc_vendor {
3091a281473SPing-Ke Shih 	BTC_VENDOR_LENOVO,
3101a281473SPing-Ke Shih 	BTC_VENDOR_ASUS,
3111a281473SPing-Ke Shih 	BTC_VENDOR_OTHER
3121a281473SPing-Ke Shih };
3131a281473SPing-Ke Shih 
314aa45a673SLarry Finger enum btc_set_type {
315aa45a673SLarry Finger 	/* type bool */
316aa45a673SLarry Finger 	BTC_SET_BL_BT_DISABLE,
317aa45a673SLarry Finger 	BTC_SET_BL_BT_TRAFFIC_BUSY,
318aa45a673SLarry Finger 	BTC_SET_BL_BT_LIMITED_DIG,
319aa45a673SLarry Finger 	BTC_SET_BL_FORCE_TO_ROAM,
320aa45a673SLarry Finger 	BTC_SET_BL_TO_REJ_AP_AGG_PKT,
321aa45a673SLarry Finger 	BTC_SET_BL_BT_CTRL_AGG_SIZE,
322aa45a673SLarry Finger 	BTC_SET_BL_INC_SCAN_DEV_NUM,
323588a290bSYan-Hsuan Chuang 	BTC_SET_BL_BT_TX_RX_MASK,
324a8570896SYan-Hsuan Chuang 	BTC_SET_BL_MIRACAST_PLUS_BT,
325aa45a673SLarry Finger 
326aa45a673SLarry Finger 	/* type u1Byte */
327aa45a673SLarry Finger 	BTC_SET_U1_RSSI_ADJ_VAL_FOR_AGC_TABLE_ON,
328aa45a673SLarry Finger 	BTC_SET_UI_SCAN_SIG_COMPENSATION,
329aa45a673SLarry Finger 	BTC_SET_U1_AGG_BUF_SIZE,
330aa45a673SLarry Finger 
331aa45a673SLarry Finger 	/* type trigger some action */
332aa45a673SLarry Finger 	BTC_SET_ACT_GET_BT_RSSI,
333aa45a673SLarry Finger 	BTC_SET_ACT_AGGREGATE_CTRL,
3346f85c03bSPing-Ke Shih 	BTC_SET_ACT_ANTPOSREGRISTRY_CTRL,
335aa45a673SLarry Finger 
336aa45a673SLarry Finger 	/********* for 1Ant **********/
337aa45a673SLarry Finger 	/* type bool */
338aa45a673SLarry Finger 	BTC_SET_BL_BT_SCO_BUSY,
339aa45a673SLarry Finger 	/* type u1Byte */
340ed364abfSLarry Finger 	BTC_SET_U1_RSSI_ADJ_VAL_FOR_1ANT_COEX_TYPE,
341ed364abfSLarry Finger 	BTC_SET_U1_LPS_VAL,
342ed364abfSLarry Finger 	BTC_SET_U1_RPWM_VAL,
343aa45a673SLarry Finger 	BTC_SET_U1_1ANT_LPS,
344aa45a673SLarry Finger 	BTC_SET_U1_1ANT_RPWM,
345aa45a673SLarry Finger 	/* type trigger some action */
346aa45a673SLarry Finger 	BTC_SET_ACT_LEAVE_LPS,
347aa45a673SLarry Finger 	BTC_SET_ACT_ENTER_LPS,
348aa45a673SLarry Finger 	BTC_SET_ACT_NORMAL_LPS,
349aa45a673SLarry Finger 	BTC_SET_ACT_INC_FORCE_EXEC_PWR_CMD_CNT,
350aa45a673SLarry Finger 	BTC_SET_ACT_DISABLE_LOW_POWER,
351c6821613SYan-Hsuan Chuang 	BTC_SET_ACT_UPDATE_RAMASK,
352aa45a673SLarry Finger 	BTC_SET_ACT_SEND_MIMO_PS,
353aa45a673SLarry Finger 	/* BT Coex related */
354aa45a673SLarry Finger 	BTC_SET_ACT_CTRL_BT_INFO,
355aa45a673SLarry Finger 	BTC_SET_ACT_CTRL_BT_COEX,
356c42ea613SYan-Hsuan Chuang 	BTC_SET_ACT_CTRL_8723B_ANT,
357aa45a673SLarry Finger 	/***************************/
358aa45a673SLarry Finger 	BTC_SET_MAX
359aa45a673SLarry Finger };
360aa45a673SLarry Finger 
361aa45a673SLarry Finger enum btc_dbg_disp_type {
362aa45a673SLarry Finger 	BTC_DBG_DISP_COEX_STATISTICS = 0x0,
363aa45a673SLarry Finger 	BTC_DBG_DISP_BT_LINK_INFO = 0x1,
364aa45a673SLarry Finger 	BTC_DBG_DISP_BT_FW_VER = 0x2,
365aa45a673SLarry Finger 	BTC_DBG_DISP_FW_PWR_MODE_CMD = 0x3,
36608431b62SPing-Ke Shih 	BTC_DBG_DISP_WIFI_STATUS = 0x04,
367aa45a673SLarry Finger 	BTC_DBG_DISP_MAX
368aa45a673SLarry Finger };
369aa45a673SLarry Finger 
370aa45a673SLarry Finger enum btc_notify_type_ips {
371aa45a673SLarry Finger 	BTC_IPS_LEAVE = 0x0,
372aa45a673SLarry Finger 	BTC_IPS_ENTER = 0x1,
373aa45a673SLarry Finger 	BTC_IPS_MAX
374aa45a673SLarry Finger };
375aa45a673SLarry Finger 
376aa45a673SLarry Finger enum btc_notify_type_lps {
377aa45a673SLarry Finger 	BTC_LPS_DISABLE = 0x0,
378aa45a673SLarry Finger 	BTC_LPS_ENABLE = 0x1,
379aa45a673SLarry Finger 	BTC_LPS_MAX
380aa45a673SLarry Finger };
381aa45a673SLarry Finger 
382aa45a673SLarry Finger enum btc_notify_type_scan {
383aa45a673SLarry Finger 	BTC_SCAN_FINISH = 0x0,
384aa45a673SLarry Finger 	BTC_SCAN_START = 0x1,
385aa45a673SLarry Finger 	BTC_SCAN_MAX
386aa45a673SLarry Finger };
387aa45a673SLarry Finger 
388*17bf8510SPing-Ke Shih enum btc_notify_type_switchband {
389*17bf8510SPing-Ke Shih 	BTC_NOT_SWITCH = 0x0,
390*17bf8510SPing-Ke Shih 	BTC_SWITCH_TO_24G = 0x1,
391*17bf8510SPing-Ke Shih 	BTC_SWITCH_TO_5G = 0x2,
392*17bf8510SPing-Ke Shih 	BTC_SWITCH_TO_24G_NOFORSCAN = 0x3,
393*17bf8510SPing-Ke Shih 	BTC_SWITCH_MAX
394*17bf8510SPing-Ke Shih };
395*17bf8510SPing-Ke Shih 
396aa45a673SLarry Finger enum btc_notify_type_associate {
397aa45a673SLarry Finger 	BTC_ASSOCIATE_FINISH = 0x0,
398aa45a673SLarry Finger 	BTC_ASSOCIATE_START = 0x1,
399aa45a673SLarry Finger 	BTC_ASSOCIATE_MAX
400aa45a673SLarry Finger };
401aa45a673SLarry Finger 
402aa45a673SLarry Finger enum btc_notify_type_media_status {
403aa45a673SLarry Finger 	BTC_MEDIA_DISCONNECT = 0x0,
404aa45a673SLarry Finger 	BTC_MEDIA_CONNECT = 0x1,
405aa45a673SLarry Finger 	BTC_MEDIA_MAX
406aa45a673SLarry Finger };
407aa45a673SLarry Finger 
408aa45a673SLarry Finger enum btc_notify_type_special_packet {
409aa45a673SLarry Finger 	BTC_PACKET_UNKNOWN = 0x0,
410aa45a673SLarry Finger 	BTC_PACKET_DHCP = 0x1,
411aa45a673SLarry Finger 	BTC_PACKET_ARP = 0x2,
412aa45a673SLarry Finger 	BTC_PACKET_EAPOL = 0x3,
413aa45a673SLarry Finger 	BTC_PACKET_MAX
414aa45a673SLarry Finger };
415aa45a673SLarry Finger 
416ed364abfSLarry Finger enum hci_ext_bt_operation {
417ed364abfSLarry Finger 	HCI_BT_OP_NONE = 0x0,
418ed364abfSLarry Finger 	HCI_BT_OP_INQUIRY_START = 0x1,
419ed364abfSLarry Finger 	HCI_BT_OP_INQUIRY_FINISH = 0x2,
420ed364abfSLarry Finger 	HCI_BT_OP_PAGING_START = 0x3,
421ed364abfSLarry Finger 	HCI_BT_OP_PAGING_SUCCESS = 0x4,
422ed364abfSLarry Finger 	HCI_BT_OP_PAGING_UNSUCCESS = 0x5,
423ed364abfSLarry Finger 	HCI_BT_OP_PAIRING_START = 0x6,
424ed364abfSLarry Finger 	HCI_BT_OP_PAIRING_FINISH = 0x7,
425ed364abfSLarry Finger 	HCI_BT_OP_BT_DEV_ENABLE = 0x8,
426ed364abfSLarry Finger 	HCI_BT_OP_BT_DEV_DISABLE = 0x9,
427ed364abfSLarry Finger 	HCI_BT_OP_MAX
428ed364abfSLarry Finger };
429ed364abfSLarry Finger 
430aa45a673SLarry Finger enum btc_notify_type_stack_operation {
431aa45a673SLarry Finger 	BTC_STACK_OP_NONE = 0x0,
432aa45a673SLarry Finger 	BTC_STACK_OP_INQ_PAGE_PAIR_START = 0x1,
433aa45a673SLarry Finger 	BTC_STACK_OP_INQ_PAGE_PAIR_FINISH = 0x2,
434aa45a673SLarry Finger 	BTC_STACK_OP_MAX
435aa45a673SLarry Finger };
436aa45a673SLarry Finger 
437aa45a673SLarry Finger struct btc_bt_info {
438aa45a673SLarry Finger 	bool bt_disabled;
439aa45a673SLarry Finger 	u8 rssi_adjust_for_agc_table_on;
440aa45a673SLarry Finger 	u8 rssi_adjust_for_1ant_coex_type;
4410199103eSYan-Hsuan Chuang 	bool pre_bt_ctrl_agg_buf_size;
442aa45a673SLarry Finger 	bool bt_busy;
4430199103eSYan-Hsuan Chuang 	u8 pre_agg_buf_size;
444aa45a673SLarry Finger 	u8 agg_buf_size;
445aa45a673SLarry Finger 	bool limited_dig;
4460199103eSYan-Hsuan Chuang 	bool pre_reject_agg_pkt;
447aa45a673SLarry Finger 	bool reject_agg_pkt;
448ed364abfSLarry Finger 	bool bt_ctrl_buf_size;
449aa45a673SLarry Finger 	bool increase_scan_dev_num;
4500199103eSYan-Hsuan Chuang 	bool miracast_plus_bt;
4510199103eSYan-Hsuan Chuang 	bool bt_ctrl_agg_buf_size;
4520199103eSYan-Hsuan Chuang 	bool bt_tx_rx_mask;
453aa45a673SLarry Finger 	u16 bt_hci_ver;
454aa45a673SLarry Finger 	u16 bt_real_fw_ver;
455aa45a673SLarry Finger 	u8 bt_fw_ver;
456aa45a673SLarry Finger 
457ed364abfSLarry Finger 	bool bt_disable_low_pwr;
458ed364abfSLarry Finger 
459aa45a673SLarry Finger 	/* the following is for 1Ant solution */
460aa45a673SLarry Finger 	bool bt_ctrl_lps;
461aa45a673SLarry Finger 	bool bt_pwr_save_mode;
462aa45a673SLarry Finger 	bool bt_lps_on;
463aa45a673SLarry Finger 	bool force_to_roam;
464aa45a673SLarry Finger 	u8 force_exec_pwr_cmd_cnt;
465ed364abfSLarry Finger 	u8 lps_val;
466ed364abfSLarry Finger 	u8 rpwm_val;
467aa45a673SLarry Finger 	u32 ra_mask;
468b2283dadSPing-Ke Shih 
469b2283dadSPing-Ke Shih 	u32 afh_map_l;
470b2283dadSPing-Ke Shih 	u32 afh_map_m;
471b2283dadSPing-Ke Shih 	u16 afh_map_h;
472b2283dadSPing-Ke Shih 	u32 bt_supported_feature;
473b2283dadSPing-Ke Shih 	u32 bt_supported_version;
474b2283dadSPing-Ke Shih 	u32 bt_device_info;
475b2283dadSPing-Ke Shih 	u32 bt_forb_slot_val;
476b2283dadSPing-Ke Shih 	u8 bt_ant_det_val;
477b2283dadSPing-Ke Shih 	u8 bt_ble_scan_type;
478b2283dadSPing-Ke Shih 	u32 bt_ble_scan_para;
479aa45a673SLarry Finger };
480aa45a673SLarry Finger 
481aa45a673SLarry Finger struct btc_stack_info {
482aa45a673SLarry Finger 	bool profile_notified;
483aa45a673SLarry Finger 	u16 hci_version;	/* stack hci version */
484aa45a673SLarry Finger 	u8 num_of_link;
485aa45a673SLarry Finger 	bool bt_link_exist;
486aa45a673SLarry Finger 	bool sco_exist;
487aa45a673SLarry Finger 	bool acl_exist;
488aa45a673SLarry Finger 	bool a2dp_exist;
489aa45a673SLarry Finger 	bool hid_exist;
490aa45a673SLarry Finger 	u8 num_of_hid;
491aa45a673SLarry Finger 	bool pan_exist;
492aa45a673SLarry Finger 	bool unknown_acl_exist;
49308aba42fSArnd Bergmann 	s8 min_bt_rssi;
494aa45a673SLarry Finger };
495aa45a673SLarry Finger 
496aa45a673SLarry Finger struct btc_statistics {
497aa45a673SLarry Finger 	u32 cnt_bind;
498aa45a673SLarry Finger 	u32 cnt_init_hw_config;
499aa45a673SLarry Finger 	u32 cnt_init_coex_dm;
500aa45a673SLarry Finger 	u32 cnt_ips_notify;
501aa45a673SLarry Finger 	u32 cnt_lps_notify;
502aa45a673SLarry Finger 	u32 cnt_scan_notify;
503aa45a673SLarry Finger 	u32 cnt_connect_notify;
504aa45a673SLarry Finger 	u32 cnt_media_status_notify;
505aa45a673SLarry Finger 	u32 cnt_special_packet_notify;
506aa45a673SLarry Finger 	u32 cnt_bt_info_notify;
507aa45a673SLarry Finger 	u32 cnt_periodical;
508ed364abfSLarry Finger 	u32 cnt_coex_dm_switch;
509aa45a673SLarry Finger 	u32 cnt_stack_operation_notify;
510aa45a673SLarry Finger 	u32 cnt_dbg_ctrl;
5116fbbc82aSYan-Hsuan Chuang 	u32 cnt_pre_load_firmware;
51260f44100SYan-Hsuan Chuang 	u32 cnt_power_on;
513aa45a673SLarry Finger };
514aa45a673SLarry Finger 
515aa45a673SLarry Finger struct btc_bt_link_info {
516aa45a673SLarry Finger 	bool bt_link_exist;
51775717802SPing-Ke Shih 	bool bt_hi_pri_link_exist;
518aa45a673SLarry Finger 	bool sco_exist;
519aa45a673SLarry Finger 	bool sco_only;
520aa45a673SLarry Finger 	bool a2dp_exist;
521aa45a673SLarry Finger 	bool a2dp_only;
522aa45a673SLarry Finger 	bool hid_exist;
523aa45a673SLarry Finger 	bool hid_only;
524aa45a673SLarry Finger 	bool pan_exist;
525aa45a673SLarry Finger 	bool pan_only;
52661d80261SYan-Hsuan Chuang 	bool slave_role;
527aa45a673SLarry Finger };
528aa45a673SLarry Finger 
529aa45a673SLarry Finger enum btc_antenna_pos {
530aa45a673SLarry Finger 	BTC_ANTENNA_AT_MAIN_PORT = 0x1,
531aa45a673SLarry Finger 	BTC_ANTENNA_AT_AUX_PORT = 0x2,
532aa45a673SLarry Finger };
533aa45a673SLarry Finger 
534b2283dadSPing-Ke Shih enum btc_mp_h2c_op_code {
535b2283dadSPing-Ke Shih 	BT_OP_GET_BT_VERSION			= 0,
536b2283dadSPing-Ke Shih 	BT_OP_WRITE_REG_ADDR			= 12,
537b2283dadSPing-Ke Shih 	BT_OP_WRITE_REG_VALUE			= 13,
538b2283dadSPing-Ke Shih 	BT_OP_READ_REG				= 17,
539b2283dadSPing-Ke Shih 	BT_OP_GET_AFH_MAP_L			= 30,
540b2283dadSPing-Ke Shih 	BT_OP_GET_AFH_MAP_M			= 31,
541b2283dadSPing-Ke Shih 	BT_OP_GET_AFH_MAP_H			= 32,
542b2283dadSPing-Ke Shih 	BT_OP_GET_BT_COEX_SUPPORTED_FEATURE	= 42,
543b2283dadSPing-Ke Shih 	BT_OP_GET_BT_COEX_SUPPORTED_VERSION	= 43,
544b2283dadSPing-Ke Shih 	BT_OP_GET_BT_ANT_DET_VAL		= 44,
545b2283dadSPing-Ke Shih 	BT_OP_GET_BT_BLE_SCAN_PARA		= 45,
546b2283dadSPing-Ke Shih 	BT_OP_GET_BT_BLE_SCAN_TYPE		= 46,
547b2283dadSPing-Ke Shih 	BT_OP_GET_BT_DEVICE_INFO		= 48,
548b2283dadSPing-Ke Shih 	BT_OP_GET_BT_FORBIDDEN_SLOT_VAL		= 49,
549b2283dadSPing-Ke Shih 	BT_OP_MAX
550b2283dadSPing-Ke Shih };
551b2283dadSPing-Ke Shih 
552b2283dadSPing-Ke Shih enum btc_mp_h2c_req_num {
553b2283dadSPing-Ke Shih 	/* 4 bits only */
554b2283dadSPing-Ke Shih 	BT_SEQ_DONT_CARE			= 0,
555b2283dadSPing-Ke Shih 	BT_SEQ_GET_BT_VERSION			= 0xE,
556b2283dadSPing-Ke Shih 	BT_SEQ_GET_AFH_MAP_L			= 0x5,
557b2283dadSPing-Ke Shih 	BT_SEQ_GET_AFH_MAP_M			= 0x6,
558b2283dadSPing-Ke Shih 	BT_SEQ_GET_AFH_MAP_H			= 0x9,
559b2283dadSPing-Ke Shih 	BT_SEQ_GET_BT_COEX_SUPPORTED_FEATURE	= 0x7,
560b2283dadSPing-Ke Shih 	BT_SEQ_GET_BT_COEX_SUPPORTED_VERSION	= 0x8,
561b2283dadSPing-Ke Shih 	BT_SEQ_GET_BT_ANT_DET_VAL		= 0x2,
562b2283dadSPing-Ke Shih 	BT_SEQ_GET_BT_BLE_SCAN_PARA		= 0x3,
563b2283dadSPing-Ke Shih 	BT_SEQ_GET_BT_BLE_SCAN_TYPE		= 0x4,
564b2283dadSPing-Ke Shih 	BT_SEQ_GET_BT_DEVICE_INFO		= 0xA,
565b2283dadSPing-Ke Shih 	BT_SEQ_GET_BT_FORB_SLOT_VAL		= 0xB,
566b2283dadSPing-Ke Shih };
567b2283dadSPing-Ke Shih 
568aa45a673SLarry Finger struct btc_coexist {
569aa45a673SLarry Finger 	/* make sure only one adapter can bind the data context  */
570aa45a673SLarry Finger 	bool binded;
571aa45a673SLarry Finger 	/* default adapter */
572aa45a673SLarry Finger 	void *adapter;
573aa45a673SLarry Finger 	struct btc_board_info board_info;
574aa45a673SLarry Finger 	/* some bt info referenced by non-bt module */
575aa45a673SLarry Finger 	struct btc_bt_info bt_info;
576aa45a673SLarry Finger 	struct btc_stack_info stack_info;
577aa45a673SLarry Finger 	enum btc_chip_interface	chip_interface;
578aa45a673SLarry Finger 	struct btc_bt_link_info bt_link_info;
579aa45a673SLarry Finger 
580aef9ae46SLarry Finger 	/* boolean variables to replace BT_AUTO_REPORT_ONLY_XXXXY_ZANT
581aef9ae46SLarry Finger 	 * configuration parameters
582aef9ae46SLarry Finger 	 */
583aef9ae46SLarry Finger 	bool auto_report_1ant;
584aef9ae46SLarry Finger 	bool auto_report_2ant;
585aa45a673SLarry Finger 	bool initilized;
586aa45a673SLarry Finger 	bool stop_coex_dm;
587aa45a673SLarry Finger 	bool manual_control;
588aa45a673SLarry Finger 	struct btc_statistics statistics;
589aa45a673SLarry Finger 	u8 pwr_mode_val[10];
590aa45a673SLarry Finger 
591b2283dadSPing-Ke Shih 	struct completion bt_mp_comp;
592b2283dadSPing-Ke Shih 
593aa45a673SLarry Finger 	/* function pointers - io related */
5943afb7da4SLarry Finger 	u8 (*btc_read_1byte)(void *btc_context, u32 reg_addr);
5953afb7da4SLarry Finger 	void (*btc_write_1byte)(void *btc_context, u32 reg_addr, u32 data);
5963afb7da4SLarry Finger 	void (*btc_write_1byte_bitmask)(void *btc_context, u32 reg_addr,
5973afb7da4SLarry Finger 					u32 bit_mask, u8 data1b);
5983afb7da4SLarry Finger 	u16 (*btc_read_2byte)(void *btc_context, u32 reg_addr);
5993afb7da4SLarry Finger 	void (*btc_write_2byte)(void *btc_context, u32 reg_addr, u16 data);
6003afb7da4SLarry Finger 	u32 (*btc_read_4byte)(void *btc_context, u32 reg_addr);
6013afb7da4SLarry Finger 	void (*btc_write_4byte)(void *btc_context, u32 reg_addr, u32 data);
602aa45a673SLarry Finger 
6033afb7da4SLarry Finger 	void (*btc_write_local_reg_1byte)(void *btc_context, u32 reg_addr,
6043afb7da4SLarry Finger 					  u8 data);
6053afb7da4SLarry Finger 	void (*btc_set_bb_reg)(void *btc_context, u32 reg_addr,
6063afb7da4SLarry Finger 			       u32 bit_mask, u32 data);
6073afb7da4SLarry Finger 	u32 (*btc_get_bb_reg)(void *btc_context, u32 reg_addr,
6083afb7da4SLarry Finger 			      u32 bit_mask);
6093afb7da4SLarry Finger 	void (*btc_set_rf_reg)(void *btc_context, u8 rf_path, u32 reg_addr,
6103afb7da4SLarry Finger 			       u32 bit_mask, u32 data);
6113afb7da4SLarry Finger 	u32 (*btc_get_rf_reg)(void *btc_context, u8 rf_path,
6123afb7da4SLarry Finger 			      u32 reg_addr, u32 bit_mask);
613aa45a673SLarry Finger 
6143afb7da4SLarry Finger 	void (*btc_fill_h2c)(void *btc_context, u8 element_id,
6153afb7da4SLarry Finger 			     u32 cmd_len, u8 *cmd_buffer);
616aa45a673SLarry Finger 
6173afb7da4SLarry Finger 	void (*btc_disp_dbg_msg)(void *btcoexist, u8 disp_type,
6183afb7da4SLarry Finger 				 struct seq_file *m);
619aa45a673SLarry Finger 
6203afb7da4SLarry Finger 	bool (*btc_get)(void *btcoexist, u8 get_type, void *out_buf);
6213afb7da4SLarry Finger 	bool (*btc_set)(void *btcoexist, u8 set_type, void *in_buf);
622aa45a673SLarry Finger 
6233afb7da4SLarry Finger 	void (*btc_set_bt_reg)(void *btc_context, u8 reg_type, u32 offset,
6243afb7da4SLarry Finger 			       u32 value);
625b2283dadSPing-Ke Shih 	u32 (*btc_get_bt_coex_supported_feature)(void *btcoexist);
626b2283dadSPing-Ke Shih 	u32 (*btc_get_bt_coex_supported_version)(void *btcoexist);
627b2283dadSPing-Ke Shih 	u8 (*btc_get_ant_det_val_from_bt)(void *btcoexist);
628b2283dadSPing-Ke Shih 	u8 (*btc_get_ble_scan_type_from_bt)(void *btcoexist);
629b2283dadSPing-Ke Shih 	u32 (*btc_get_ble_scan_para_from_bt)(void *btcoexist, u8 scan_type);
630b2283dadSPing-Ke Shih 	bool (*btc_get_bt_afh_map_from_bt)(void *btcoexist, u8 map_type,
631b2283dadSPing-Ke Shih 					   u8 *afh_map);
632aa45a673SLarry Finger };
633aa45a673SLarry Finger 
634aa45a673SLarry Finger bool halbtc_is_wifi_uplink(struct rtl_priv *adapter);
635aa45a673SLarry Finger 
63640d9dd4fSPing-Ke Shih #define rtl_btc_coexist(rtlpriv)				\
63740d9dd4fSPing-Ke Shih 	((struct btc_coexist *)((rtlpriv)->btcoexist.btc_context))
638aa45a673SLarry Finger 
63940d9dd4fSPing-Ke Shih bool exhalbtc_initlize_variables(struct rtl_priv *rtlpriv);
64087d8a9f3SPing-Ke Shih bool exhalbtc_bind_bt_coex_withadapter(void *adapter);
641a44709bbSPing-Ke Shih void exhalbtc_power_on_setting(struct btc_coexist *btcoexist);
64243f5644aSPing-Ke Shih void exhalbtc_init_hw_config(struct btc_coexist *btcoexist, bool wifi_only);
643aa45a673SLarry Finger void exhalbtc_init_coex_dm(struct btc_coexist *btcoexist);
644aa45a673SLarry Finger void exhalbtc_ips_notify(struct btc_coexist *btcoexist, u8 type);
645aa45a673SLarry Finger void exhalbtc_lps_notify(struct btc_coexist *btcoexist, u8 type);
646aa45a673SLarry Finger void exhalbtc_scan_notify(struct btc_coexist *btcoexist, u8 type);
647aa45a673SLarry Finger void exhalbtc_connect_notify(struct btc_coexist *btcoexist, u8 action);
648aa45a673SLarry Finger void exhalbtc_mediastatus_notify(struct btc_coexist *btcoexist,
649ed364abfSLarry Finger 				 enum rt_media_status media_status);
650aa45a673SLarry Finger void exhalbtc_special_packet_notify(struct btc_coexist *btcoexist, u8 pkt_type);
651aa45a673SLarry Finger void exhalbtc_bt_info_notify(struct btc_coexist *btcoexist, u8 *tmp_buf,
652aa45a673SLarry Finger 			     u8 length);
653aa45a673SLarry Finger void exhalbtc_stack_operation_notify(struct btc_coexist *btcoexist, u8 type);
654aa45a673SLarry Finger void exhalbtc_halt_notify(struct btc_coexist *btcoexist);
655aa45a673SLarry Finger void exhalbtc_pnp_notify(struct btc_coexist *btcoexist, u8 pnp_state);
656ed364abfSLarry Finger void exhalbtc_coex_dm_switch(struct btc_coexist *btcoexist);
657aa45a673SLarry Finger void exhalbtc_periodical(struct btc_coexist *btcoexist);
658aa45a673SLarry Finger void exhalbtc_dbg_control(struct btc_coexist *btcoexist, u8 code, u8 len,
659aa45a673SLarry Finger 			  u8 *data);
660aa45a673SLarry Finger void exhalbtc_stack_update_profile_info(void);
66140d9dd4fSPing-Ke Shih void exhalbtc_set_hci_version(struct btc_coexist *btcoexist, u16 hci_version);
66240d9dd4fSPing-Ke Shih void exhalbtc_set_bt_patch_version(struct btc_coexist *btcoexist,
66340d9dd4fSPing-Ke Shih 				   u16 bt_hci_version, u16 bt_patch_version);
66440d9dd4fSPing-Ke Shih void exhalbtc_update_min_bt_rssi(struct btc_coexist *btcoexist, s8 bt_rssi);
66540d9dd4fSPing-Ke Shih void exhalbtc_set_bt_exist(struct btc_coexist *btcoexist, bool bt_exist);
66640d9dd4fSPing-Ke Shih void exhalbtc_set_chip_type(struct btc_coexist *btcoexist, u8 chip_type);
667baa17022SLarry Finger void exhalbtc_set_ant_num(struct rtl_priv *rtlpriv, u8 type, u8 ant_num);
668610247f4SPing-Ke Shih void exhalbtc_display_bt_coex_info(struct btc_coexist *btcoexist,
669610247f4SPing-Ke Shih 				   struct seq_file *m);
670*17bf8510SPing-Ke Shih void exhalbtc_switch_band_notify(struct btc_coexist *btcoexist, u8 type);
671aa45a673SLarry Finger void exhalbtc_signal_compensation(struct btc_coexist *btcoexist,
672aa45a673SLarry Finger 				  u8 *rssi_wifi, u8 *rssi_bt);
673aa45a673SLarry Finger void exhalbtc_lps_leave(struct btc_coexist *btcoexist);
674aa45a673SLarry Finger void exhalbtc_low_wifi_traffic_notify(struct btc_coexist *btcoexist);
67540d9dd4fSPing-Ke Shih void exhalbtc_set_single_ant_path(struct btc_coexist *btcoexist,
67640d9dd4fSPing-Ke Shih 				  u8 single_ant_path);
677aa45a673SLarry Finger 
678aa45a673SLarry Finger #endif
679