halbtc8821c1ant.h 16.7 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/* SPDX-License-Identifier: GPL-2.0 */
/******************************************************************************
 *
 * Copyright(c) 2016 - 2017 Realtek Corporation.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of version 2 of the GNU General Public License as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
 * more details.
 *
 *****************************************************************************/

Tony Feng committed
17 18 19 20 21 22 23 24

#if (BT_SUPPORT == 1 && COEX_SUPPORT == 1)

#if (RTL8821C_SUPPORT == 1)

/* *******************************************
 * The following is for 8821C 1ANT BT Co-exist definition
 * ******************************************* */
25
#define	BT_8821C_1ANT_COEX_DBG					0
Tony Feng committed
26 27 28 29 30 31 32 33 34 35 36 37
#define	BT_AUTO_REPORT_ONLY_8821C_1ANT				1

#define	BT_INFO_8821C_1ANT_B_FTP						BIT(7)
#define	BT_INFO_8821C_1ANT_B_A2DP					BIT(6)
#define	BT_INFO_8821C_1ANT_B_HID						BIT(5)
#define	BT_INFO_8821C_1ANT_B_SCO_BUSY				BIT(4)
#define	BT_INFO_8821C_1ANT_B_ACL_BUSY				BIT(3)
#define	BT_INFO_8821C_1ANT_B_INQ_PAGE				BIT(2)
#define	BT_INFO_8821C_1ANT_B_SCO_ESCO				BIT(1)
#define	BT_INFO_8821C_1ANT_B_CONNECTION				BIT(0)

#define	BT_INFO_8821C_1ANT_A2DP_BASIC_RATE(_BT_INFO_EXT_)	\
38
	(((_BT_INFO_EXT_&BIT(0))) ? TRUE : FALSE)
Tony Feng committed
39 40 41 42

#define	BTC_RSSI_COEX_THRESH_TOL_8821C_1ANT		2

#define  BT_8821C_1ANT_WIFI_NOISY_THRESH							30   /* max: 255 */
43 44
#define  BT_8821C_1ANT_DEFAULT_ISOLATION						15	 /*  unit: dB */

Tony Feng committed
45 46 47 48 49 50 51

/* for Antenna detection */
#define	BT_8821C_1ANT_ANTDET_PSDTHRES_BACKGROUND					50
#define	BT_8821C_1ANT_ANTDET_PSDTHRES_2ANT_BADISOLATION				70
#define	BT_8821C_1ANT_ANTDET_PSDTHRES_2ANT_GOODISOLATION			55
#define	BT_8821C_1ANT_ANTDET_PSDTHRES_1ANT							35
#define	BT_8821C_1ANT_ANTDET_RETRY_INTERVAL							10	/* retry timer if ant det is fail, unit: second */
52
#define	BT_8821C_1ANT_ANTDET_SWEEPPOINT_DELAY							60000
Tony Feng committed
53 54 55
#define	BT_8821C_1ANT_ANTDET_ENABLE									0
#define	BT_8821C_1ANT_ANTDET_BTTXTIME									100
#define	BT_8821C_1ANT_ANTDET_BTTXCHANNEL								39
56
#define	BT_8821C_1ANT_ANTDET_PSD_SWWEEPCOUNT						50
Tony Feng committed
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144

#define	BT_8821C_1ANT_LTECOEX_INDIRECTREG_ACCESS_TIMEOUT		30000

enum bt_8821c_1ant_signal_state {
	BT_8821C_1ANT_SIG_STA_SET_TO_LOW		= 0x0,
	BT_8821C_1ANT_SIG_STA_SET_BY_HW		= 0x0,
	BT_8821C_1ANT_SIG_STA_SET_TO_HIGH		= 0x1,
	BT_8821C_1ANT_SIG_STA_MAX
};

enum bt_8821c_1ant_path_ctrl_owner {
	BT_8821C_1ANT_PCO_BTSIDE		= 0x0,
	BT_8821C_1ANT_PCO_WLSIDE	= 0x1,
	BT_8821C_1ANT_PCO_MAX
};

enum bt_8821c_1ant_gnt_ctrl_type {
	BT_8821C_1ANT_GNT_TYPE_CTRL_BY_PTA		= 0x0,
	BT_8821C_1ANT_GNT_TYPE_CTRL_BY_SW		= 0x1,
	BT_8821C_1ANT_GNT_TYPE_MAX
};

enum bt_8821c_1ant_gnt_ctrl_block {
	BT_8821C_1ANT_GNT_BLOCK_RFC_BB		= 0x0,
	BT_8821C_1ANT_GNT_BLOCK_RFC			= 0x1,
	BT_8821C_1ANT_GNT_BLOCK_BB			= 0x2,
	BT_8821C_1ANT_GNT_BLOCK_MAX
};

enum bt_8821c_1ant_lte_coex_table_type {
	BT_8821C_1ANT_CTT_WL_VS_LTE			= 0x0,
	BT_8821C_1ANT_CTT_BT_VS_LTE			= 0x1,
	BT_8821C_1ANT_CTT_MAX
};

enum bt_8821c_1ant_lte_break_table_type {
	BT_8821C_1ANT_LBTT_WL_BREAK_LTE			= 0x0,
	BT_8821C_1ANT_LBTT_BT_BREAK_LTE				= 0x1,
	BT_8821C_1ANT_LBTT_LTE_BREAK_WL			= 0x2,
	BT_8821C_1ANT_LBTT_LTE_BREAK_BT				= 0x3,
	BT_8821C_1ANT_LBTT_MAX
};

enum bt_info_src_8821c_1ant {
	BT_INFO_SRC_8821C_1ANT_WIFI_FW			= 0x0,
	BT_INFO_SRC_8821C_1ANT_BT_RSP				= 0x1,
	BT_INFO_SRC_8821C_1ANT_BT_ACTIVE_SEND		= 0x2,
	BT_INFO_SRC_8821C_1ANT_MAX
};

enum bt_8821c_1ant_bt_status {
	BT_8821C_1ANT_BT_STATUS_NON_CONNECTED_IDLE	= 0x0,
	BT_8821C_1ANT_BT_STATUS_CONNECTED_IDLE		= 0x1,
	BT_8821C_1ANT_BT_STATUS_INQ_PAGE				= 0x2,
	BT_8821C_1ANT_BT_STATUS_ACL_BUSY				= 0x3,
	BT_8821C_1ANT_BT_STATUS_SCO_BUSY				= 0x4,
	BT_8821C_1ANT_BT_STATUS_ACL_SCO_BUSY			= 0x5,
	BT_8821C_1ANT_BT_STATUS_MAX
};

enum bt_8821c_1ant_wifi_status {
	BT_8821C_1ANT_WIFI_STATUS_NON_CONNECTED_IDLE				= 0x0,
	BT_8821C_1ANT_WIFI_STATUS_NON_CONNECTED_ASSO_AUTH_SCAN		= 0x1,
	BT_8821C_1ANT_WIFI_STATUS_CONNECTED_SCAN					= 0x2,
	BT_8821C_1ANT_WIFI_STATUS_CONNECTED_SPECIFIC_PKT				= 0x3,
	BT_8821C_1ANT_WIFI_STATUS_CONNECTED_IDLE					= 0x4,
	BT_8821C_1ANT_WIFI_STATUS_CONNECTED_BUSY					= 0x5,
	BT_8821C_1ANT_WIFI_STATUS_MAX
};

enum bt_8821c_1ant_coex_algo {
	BT_8821C_1ANT_COEX_ALGO_UNDEFINED			= 0x0,
	BT_8821C_1ANT_COEX_ALGO_SCO				= 0x1,
	BT_8821C_1ANT_COEX_ALGO_HID				= 0x2,
	BT_8821C_1ANT_COEX_ALGO_A2DP				= 0x3,
	BT_8821C_1ANT_COEX_ALGO_A2DP_PANHS		= 0x4,
	BT_8821C_1ANT_COEX_ALGO_PANEDR			= 0x5,
	BT_8821C_1ANT_COEX_ALGO_PANHS			= 0x6,
	BT_8821C_1ANT_COEX_ALGO_PANEDR_A2DP		= 0x7,
	BT_8821C_1ANT_COEX_ALGO_PANEDR_HID		= 0x8,
	BT_8821C_1ANT_COEX_ALGO_HID_A2DP_PANEDR	= 0x9,
	BT_8821C_1ANT_COEX_ALGO_HID_A2DP			= 0xa,
	BT_8821C_1ANT_COEX_ALGO_MAX				= 0xb,
};

enum bt_8821c_1ant_ext_ant_switch_type {
	BT_8821C_1ANT_EXT_ANT_SWITCH_USE_DPDT		= 0x0,
	BT_8821C_1ANT_EXT_ANT_SWITCH_USE_SPDT		= 0x1,
145
	BT_8821C_1ANT_EXT_ANT_SWITCH_NONE			= 0x2,
Tony Feng committed
146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172
	BT_8821C_1ANT_EXT_ANT_SWITCH_MAX
};


enum bt_8821c_1ant_ext_ant_switch_ctrl_type {
	BT_8821C_1ANT_EXT_ANT_SWITCH_CTRL_BY_BBSW	= 0x0,
	BT_8821C_1ANT_EXT_ANT_SWITCH_CTRL_BY_PTA		= 0x1,
	BT_8821C_1ANT_EXT_ANT_SWITCH_CTRL_BY_ANTDIV	= 0x2,
	BT_8821C_1ANT_EXT_ANT_SWITCH_CTRL_BY_MAC		= 0x3,
	BT_8821C_1ANT_EXT_ANT_SWITCH_CTRL_BY_BT		= 0x4,
	BT_8821C_1ANT_EXT_ANT_SWITCH_CTRL_MAX
};

enum bt_8821c_1ant_ext_ant_switch_pos_type {
	BT_8821C_1ANT_EXT_ANT_SWITCH_TO_BT			= 0x0,
	BT_8821C_1ANT_EXT_ANT_SWITCH_TO_WLG			= 0x1,
	BT_8821C_1ANT_EXT_ANT_SWITCH_TO_WLA			= 0x2,
	BT_8821C_1ANT_EXT_ANT_SWITCH_TO_NOCARE		= 0x3,
	BT_8821C_1ANT_EXT_ANT_SWITCH_TO_MAX
};

enum bt_8821c_1ant_ext_band_switch_pos_type {
	BT_8821C_1ANT_EXT_BAND_SWITCH_TO_WLG			= 0x0,
	BT_8821C_1ANT_EXT_BAND_SWITCH_TO_WLA			= 0x1,
	BT_8821C_1ANT_EXT_BAND_SWITCH_TO_MAX
};

173
enum bt_8821c_1ant_int_block {
Tony Feng committed
174 175 176 177 178 179
	BT_8821C_1ANT_INT_BLOCK_SWITCH_TO_WLG_OF_BTG			= 0x0,
	BT_8821C_1ANT_INT_BLOCK_SWITCH_TO_WLG_OF_WLAG		= 0x1,
	BT_8821C_1ANT_INT_BLOCK_SWITCH_TO_WLA_OF_WLAG		= 0x2,
	BT_8821C_1ANT_INT_BLOCK_SWITCH_TO_MAX
};

180
enum bt_8821c_1ant_phase {
Tony Feng committed
181
	BT_8821C_1ANT_PHASE_COEX_INIT								= 0x0,
182
	BT_8821C_1ANT_PHASE_WLANONLY_INIT							= 0x1,
Tony Feng committed
183 184 185 186
	BT_8821C_1ANT_PHASE_WLAN_OFF								= 0x2,
	BT_8821C_1ANT_PHASE_2G_RUNTIME								= 0x3,
	BT_8821C_1ANT_PHASE_5G_RUNTIME								= 0x4,
	BT_8821C_1ANT_PHASE_BTMPMODE									= 0x5,
187 188
	BT_8821C_1ANT_PHASE_ANTENNA_DET								= 0x6,
	BT_8821C_1ANT_PHASE_COEX_POWERON							= 0x7,
Tony Feng committed
189 190 191
	BT_8821C_1ANT_PHASE_MAX
};

192 193 194 195 196 197 198
enum bt_8821c_1ant_Scoreboard {
	BT_8821C_1ANT_SCOREBOARD_ACTIVE								= BIT(0),
	BT_8821C_1ANT_SCOREBOARD_ONOFF								= BIT(1),
	BT_8821C_1ANT_SCOREBOARD_SCAN								= BIT(2),
	BT_8821C_1ANT_SCOREBOARD_UNDERTEST							= BIT(3),
	BT_8821C_1ANT_SCOREBOARD_WLBUSY								= BIT(6)
};
Tony Feng committed
199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255

struct coex_dm_8821c_1ant {
	/* hw setting */
	u32		pre_ant_pos_type;
	u32		cur_ant_pos_type;
	/* fw mechanism */
	boolean		cur_ignore_wlan_act;
	boolean		pre_ignore_wlan_act;
	u8		pre_ps_tdma;
	u8		cur_ps_tdma;
	u8		ps_tdma_para[5];
	u8		ps_tdma_du_adj_type;
	boolean		pre_ps_tdma_on;
	boolean		cur_ps_tdma_on;
	boolean		pre_bt_auto_report;
	boolean		cur_bt_auto_report;
	u8		pre_lps;
	u8		cur_lps;
	u8		pre_rpwm;
	u8		cur_rpwm;

	/* sw mechanism */
	boolean	pre_low_penalty_ra;
	boolean		cur_low_penalty_ra;
	u32		pre_val0x6c0;
	u32		cur_val0x6c0;
	u32		pre_val0x6c4;
	u32		cur_val0x6c4;
	u32		pre_val0x6c8;
	u32		cur_val0x6c8;
	u8		pre_val0x6cc;
	u8		cur_val0x6cc;
	boolean		limited_dig;

	u32		backup_arfr_cnt1;	/* Auto Rate Fallback Retry cnt */
	u32		backup_arfr_cnt2;	/* Auto Rate Fallback Retry cnt */
	u16		backup_retry_limit;
	u8		backup_ampdu_max_time;

	/* algorithm related */
	u8		pre_algorithm;
	u8		cur_algorithm;
	u8		bt_status;
	u8		wifi_chnl_info[3];

	u32		pre_ra_mask;
	u32		cur_ra_mask;
	u8		pre_arfr_type;
	u8		cur_arfr_type;
	u8		pre_retry_limit_type;
	u8		cur_retry_limit_type;
	u8		pre_ampdu_time_type;
	u8		cur_ampdu_time_type;
	u32		arp_cnt;

	u32		pre_ext_ant_switch_status;
	u32		cur_ext_ant_switch_status;
256

Tony Feng committed
257 258 259 260 261 262 263 264 265 266
	u8		pre_ext_band_switch_status;
	u8		cur_ext_band_switch_status;

	u8		pre_int_block_status;
	u8		cur_int_block_status;

	u8		error_condition;
};

struct coex_sta_8821c_1ant {
267 268 269 270 271 272
	boolean				bt_disabled;
	boolean				bt_link_exist;
	boolean				sco_exist;
	boolean				a2dp_exist;
	boolean				hid_exist;
	boolean				pan_exist;
Tony Feng committed
273 274
	u8					num_of_profile;

275 276
	boolean				under_lps;
	boolean				under_ips;
Tony Feng committed
277 278 279 280 281
	u32					specific_pkt_period_cnt;
	u32					high_priority_tx;
	u32					high_priority_rx;
	u32					low_priority_tx;
	u32					low_priority_rx;
282
	boolean             is_hiPri_rx_overhead;
Tony Feng committed
283 284 285 286 287
	s8					bt_rssi;
	u8					pre_bt_rssi_state;
	u8					pre_wifi_rssi_state[4];
	u8					bt_info_c2h[BT_INFO_SRC_8821C_1ANT_MAX][10];
	u32					bt_info_c2h_cnt[BT_INFO_SRC_8821C_1ANT_MAX];
288 289 290 291 292 293
	boolean				bt_whck_test;
	boolean				c2h_bt_inquiry_page;
	boolean				c2h_bt_remote_name_req;
	boolean				c2h_bt_page;				/* Add for win8.1 page out issue */
	boolean				wifi_is_high_pri_task;		/* Add for win8.1 page out issue */

Tony Feng committed
294
	u8					bt_info_ext;
295
	u8					bt_info_ext2;
Tony Feng committed
296 297
	u32					pop_event_cnt;
	u8					scan_ap_num;
298
	u8					bt_retry_cnt;
Tony Feng committed
299 300 301 302

	u32					crc_ok_cck;
	u32					crc_ok_11g;
	u32					crc_ok_11n;
303
	u32					crc_ok_11n_vht;
Tony Feng committed
304 305 306 307

	u32					crc_err_cck;
	u32					crc_err_11g;
	u32					crc_err_11n;
308
	u32					crc_err_11n_vht;
Tony Feng committed
309

310 311 312
	boolean				cck_lock;
	boolean				cck_lock_ever;
	boolean				cck_lock_warn;
Tony Feng committed
313

314 315 316
	u8					coex_table_type;
	boolean				force_lps_ctrl;
	boolean				concurrent_rx_mode_on;
Tony Feng committed
317
	u16					score_board;
318
	u8					isolation_btween_wb;   /* 0~ 50 */
Tony Feng committed
319 320 321 322 323 324 325 326

	u8					a2dp_bit_pool;
	u8					cut_version;
	boolean				acl_busy;
	boolean				bt_create_connection;

	u32					bt_coex_supported_feature;
	u32					bt_coex_supported_version;
327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375

	u8					bt_ble_scan_type;
	u32					bt_ble_scan_para[3];

	boolean				run_time_state;
	boolean				freeze_coexrun_by_btinfo;

	boolean				is_A2DP_3M;
	boolean				voice_over_HOGP;
	u8                  bt_info;
	boolean				is_autoslot;
	u8					forbidden_slot;
	u8					hid_busy_num;
	u8					hid_pair_cnt;

	u32					cnt_RemoteNameReq;
	u32					cnt_setupLink;
	u32					cnt_ReInit;
	u32					cnt_IgnWlanAct;
	u32					cnt_Page;
	u32					cnt_RoleSwitch;

	u16					bt_reg_vendor_ac;
	u16					bt_reg_vendor_ae;

	boolean				is_setupLink;
	u8					wl_noisy_level;
	u32                 gnt_error_cnt;

	u8					bt_afh_map[10];
	u8					bt_relink_downcount;
	boolean				is_tdma_btautoslot;
	boolean				is_tdma_btautoslot_hang;

	u8					switch_band_notify_to;
	boolean				is_rf_state_off;

	boolean				is_hid_low_pri_tx_overhead;
	boolean				is_bt_multi_link;
	boolean				is_bt_a2dp_sink;
	boolean				is_set_ps_state_fail;
	u8					cnt_set_ps_state_fail;

	u8					wl_fw_dbg_info[10];
	u8					wl_rx_rate;
	u8					wl_rts_rx_rate;
	u8					wl_center_channel;

	u16					score_board_WB;
Tony Feng committed
376 377 378
};


379 380
#define  BT_8821C_1ANT_EXT_BAND_SWITCH_USE_DPDT	0
#define  BT_8821C_1ANT_EXT_BAND_SWITCH_USE_SPDT	1
Tony Feng committed
381 382


383
struct rfe_type_8821c_1ant {
Tony Feng committed
384

385
	u8			rfe_module_type;
Tony Feng committed
386 387 388
	boolean		ext_ant_switch_exist;
	u8			ext_ant_switch_type;			/* 0:DPDT, 1:SPDT */
	u8			ext_ant_switch_ctrl_polarity;		/*  iF 0: DPDT_P=0, DPDT_N=1 => BTG to Main, WL_A+G to Aux */
389

Tony Feng committed
390 391 392 393
	boolean		ext_band_switch_exist;
	u8			ext_band_switch_type;			/* 0:DPDT, 1:SPDT */
	u8			ext_band_switch_ctrl_polarity;

394 395 396
	boolean		ant_at_main_port;

	boolean		wlg_Locate_at_btg;				/*  If TRUE:  WLG at BTG, If FALSE: WLG at WLAG */
Tony Feng committed
397

398
	boolean		ext_ant_switch_diversity;		/* If diversity on */
Tony Feng committed
399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434
};

#define  BT_8821C_1ANT_ANTDET_PSD_POINTS			256	/* MAX:1024 */
#define  BT_8821C_1ANT_ANTDET_PSD_AVGNUM			1	/* MAX:3 */
#define	BT_8821C_1ANT_ANTDET_BUF_LEN				16

struct psdscan_sta_8821c_1ant {

	u32			ant_det_bt_le_channel;  /* BT LE Channel ex:2412 */
	u32			ant_det_bt_tx_time;
	u32			ant_det_pre_psdscan_peak_val;
	boolean			ant_det_is_ant_det_available;
	u32			ant_det_psd_scan_peak_val;
	boolean			ant_det_is_btreply_available;
	u32			ant_det_psd_scan_peak_freq;

	u8			ant_det_result;
	u8			ant_det_peak_val[BT_8821C_1ANT_ANTDET_BUF_LEN];
	u8			ant_det_peak_freq[BT_8821C_1ANT_ANTDET_BUF_LEN];
	u32			ant_det_try_count;
	u32			ant_det_fail_count;
	u32			ant_det_inteval_count;
	u32			ant_det_thres_offset;

	u32			real_cent_freq;
	s32			real_offset;
	u32			real_span;

	u32			psd_band_width;  /* unit: Hz */
	u32			psd_point;		/* 128/256/512/1024 */
	u32			psd_report[1024];  /* unit:dB (20logx), 0~255 */
	u32			psd_report_max_hold[1024];  /* unit:dB (20logx), 0~255 */
	u32			psd_start_point;
	u32			psd_stop_point;
	u32			psd_max_value_point;
	u32			psd_max_value;
435 436 437
	u32			psd_max_value2;
	u32			psd_avg_value;   /* filter loop_max_value that below BT_8821C_1ANT_ANTDET_PSDTHRES_1ANT, and average the rest*/
	u32			psd_loop_max_value[BT_8821C_1ANT_ANTDET_PSD_SWWEEPCOUNT];  /*max value in each loop */
Tony Feng committed
438 439 440
	u32			psd_start_base;
	u32			psd_avg_num;	/* 1/8/16/32 */
	u32			psd_gen_count;
441
	boolean			is_AntDet_running;
Tony Feng committed
442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459
	boolean			is_psd_show_max_only;
};

/* *******************************************
 * The following is interface which will notify coex module.
 * ******************************************* */
void ex_halbtc8821c1ant_power_on_setting(IN struct btc_coexist *btcoexist);
void ex_halbtc8821c1ant_pre_load_firmware(IN struct btc_coexist *btcoexist);
void ex_halbtc8821c1ant_init_hw_config(IN struct btc_coexist *btcoexist,
				       IN boolean wifi_only);
void ex_halbtc8821c1ant_init_coex_dm(IN struct btc_coexist *btcoexist);
void ex_halbtc8821c1ant_ips_notify(IN struct btc_coexist *btcoexist,
				   IN u8 type);
void ex_halbtc8821c1ant_lps_notify(IN struct btc_coexist *btcoexist,
				   IN u8 type);
void ex_halbtc8821c1ant_scan_notify(IN struct btc_coexist *btcoexist,
				    IN u8 type);
void ex_halbtc8821c1ant_switchband_notify(IN struct btc_coexist *btcoexist,
460
		IN u8 type);
Tony Feng committed
461 462 463 464 465 466 467 468
void ex_halbtc8821c1ant_connect_notify(IN struct btc_coexist *btcoexist,
				       IN u8 type);
void ex_halbtc8821c1ant_media_status_notify(IN struct btc_coexist *btcoexist,
		IN u8 type);
void ex_halbtc8821c1ant_specific_packet_notify(IN struct btc_coexist *btcoexist,
		IN u8 type);
void ex_halbtc8821c1ant_bt_info_notify(IN struct btc_coexist *btcoexist,
				       IN u8 *tmp_buf, IN u8 length);
469 470 471 472
void ex_halbtc8821c1ant_wl_fwdbginfo_notify(IN struct btc_coexist *btcoexist,
				       IN u8 *tmp_buf, IN u8 length);
void ex_halbtc8821c1ant_rx_rate_change_notify(IN struct btc_coexist *btcoexist,
		IN BOOLEAN is_data_frame, IN u8 btc_rate_id);
Tony Feng committed
473 474 475 476 477 478 479
void ex_halbtc8821c1ant_rf_status_notify(IN struct btc_coexist *btcoexist,
		IN u8 type);
void ex_halbtc8821c1ant_halt_notify(IN struct btc_coexist *btcoexist);
void ex_halbtc8821c1ant_pnp_notify(IN struct btc_coexist *btcoexist,
				   IN u8 pnp_state);
void ex_halbtc8821c1ant_coex_dm_reset(IN struct btc_coexist *btcoexist);
void ex_halbtc8821c1ant_periodical(IN struct btc_coexist *btcoexist);
480
void ex_halbtc8821c1ant_display_simple_coex_info(IN struct btc_coexist *btcoexist);
Tony Feng committed
481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498
void ex_halbtc8821c1ant_display_coex_info(IN struct btc_coexist *btcoexist);
void ex_halbtc8821c1ant_antenna_detection(IN struct btc_coexist *btcoexist,
		IN u32 cent_freq, IN u32 offset, IN u32 span, IN u32 seconds);
void ex_halbtc8821c1ant_antenna_isolation(IN struct btc_coexist *btcoexist,
		IN u32 cent_freq, IN u32 offset, IN u32 span, IN u32 seconds);

void ex_halbtc8821c1ant_psd_scan(IN struct btc_coexist *btcoexist,
		 IN u32 cent_freq, IN u32 offset, IN u32 span, IN u32 seconds);
void ex_halbtc8821c1ant_display_ant_detection(IN struct btc_coexist *btcoexist);

#else
#define	ex_halbtc8821c1ant_power_on_setting(btcoexist)
#define	ex_halbtc8821c1ant_pre_load_firmware(btcoexist)
#define	ex_halbtc8821c1ant_init_hw_config(btcoexist, wifi_only)
#define	ex_halbtc8821c1ant_init_coex_dm(btcoexist)
#define	ex_halbtc8821c1ant_ips_notify(btcoexist, type)
#define	ex_halbtc8821c1ant_lps_notify(btcoexist, type)
#define	ex_halbtc8821c1ant_scan_notify(btcoexist, type)
499
#define	ex_halbtc8821c1ant_switchband_notify(btcoexist, type)
Tony Feng committed
500 501 502 503
#define	ex_halbtc8821c1ant_connect_notify(btcoexist, type)
#define	ex_halbtc8821c1ant_media_status_notify(btcoexist, type)
#define	ex_halbtc8821c1ant_specific_packet_notify(btcoexist, type)
#define	ex_halbtc8821c1ant_bt_info_notify(btcoexist, tmp_buf, length)
504 505
#define	ex_halbtc8821c1ant_wl_fwdbginfo_notify(btcoexist, tmp_buf, length)
#define	ex_halbtc8821c1ant_rx_rate_change_notify(btcoexist, is_data_frame, btc_rate_id)
Tony Feng committed
506 507 508 509 510
#define	ex_halbtc8821c1ant_rf_status_notify(btcoexist, type)
#define	ex_halbtc8821c1ant_halt_notify(btcoexist)
#define	ex_halbtc8821c1ant_pnp_notify(btcoexist, pnp_state)
#define	ex_halbtc8821c1ant_coex_dm_reset(btcoexist)
#define	ex_halbtc8821c1ant_periodical(btcoexist)
511
#define	ex_halbtc8821c1ant_display_simple_coex_info(btcoexist)
Tony Feng committed
512 513 514 515 516 517 518 519
#define	ex_halbtc8821c1ant_display_coex_info(btcoexist)
#define	ex_halbtc8821c1ant_antenna_detection(btcoexist, cent_freq, offset, span, seconds)
#define	ex_halbtc8821c1ant_antenna_isolation(btcoexist, cent_freq, offset, span, seconds)
#define	ex_halbtc8821c1ant_psd_scan(btcoexist, cent_freq, offset, span, seconds)
#define	ex_halbtc8821c1ant_display_ant_detection(btcoexist)
#endif

#endif
520 521