1 /****************************************************************************** 2 * 3 * Copyright(c) 2016 - 2017 Realtek Corporation. 4 * 5 * This program is free software; you can redistribute it and/or modify it 6 * under the terms of version 2 of the GNU General Public License as 7 * published by the Free Software Foundation. 8 * 9 * This program is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12 * more details. 13 * 14 *****************************************************************************/ 15 16 #if (BT_SUPPORT == 1 && COEX_SUPPORT == 1) 17 18 #if (RTL8822B_SUPPORT == 1) 19 20 /* ******************************************* 21 * The following is for 8822B 2Ant BT Co-exist definition 22 * ********************************************/ 23 #define BT_INFO_8822B_2ANT_B_FTP BIT(7) 24 #define BT_INFO_8822B_2ANT_B_A2DP BIT(6) 25 #define BT_INFO_8822B_2ANT_B_HID BIT(5) 26 #define BT_INFO_8822B_2ANT_B_SCO_BUSY BIT(4) 27 #define BT_INFO_8822B_2ANT_B_ACL_BUSY BIT(3) 28 #define BT_INFO_8822B_2ANT_B_INQ_PAGE BIT(2) 29 #define BT_INFO_8822B_2ANT_B_SCO_ESCO BIT(1) 30 #define BT_INFO_8822B_2ANT_B_CONNECTION BIT(0) 31 32 #define BTC_RSSI_COEX_THRESH_TOL_8822B_2ANT 2 33 34 /* unit: % WiFi RSSI Threshold for 2-Ant free-run/2-Ant TDMA translation. 35 * (default = 42) 36 */ 37 #define BT_8822B_2ANT_WIFI_RSSI_COEXSWITCH_THRES1 25 38 /* unit: % BT RSSI Threshold for 2-Ant free-run/2-Ant TDMA translation. 39 * (default = 46) 40 */ 41 #define BT_8822B_2ANT_BT_RSSI_COEXSWITCH_THRES1 22 42 /* unit: % WiFi RSSI Threshold for 1-Ant TDMA/1-Ant PS-TDMA translation. 43 * (default = 42) 44 */ 45 #define BT_8822B_2ANT_WIFI_RSSI_COEXSWITCH_THRES2 25 46 /* unit: % BT RSSI Threshold for 1-Ant TDMA/1-Ant PS-TDMA translation. 47 * (default = 46) 48 */ 49 #define BT_8822B_2ANT_BT_RSSI_COEXSWITCH_THRES2 22 50 51 #define BT_8822B_2ANT_DEFAULT_ISOLATION 25 /* unit: dB */ 52 #define BT_8822B_2ANT_WIFI_MAX_TX_POWER 15 /* unit: dBm */ 53 #define BT_8822B_2ANT_BT_MAX_TX_POWER 3 /* unit: dBm */ 54 #define BT_8822B_2ANT_WIFI_SIR_THRES1 -15 /* unit: dB */ 55 #define BT_8822B_2ANT_WIFI_SIR_THRES2 -30 /* unit: dB */ 56 #define BT_8822B_2ANT_BT_SIR_THRES1 -15 /* unit: dB */ 57 #define BT_8822B_2ANT_BT_SIR_THRES2 -30 /* unit: dB */ 58 59 enum bt_8822b_2ant_signal_state { 60 BT_8822B_2ANT_GNT_SET_TO_LOW = 0x0, 61 BT_8822B_2ANT_GNT_SET_TO_HIGH = 0x1, 62 BT_8822B_2ANT_GNT_SET_BY_HW = 0x2, 63 BT_8822B_2ANT_GNT_SET_MAX 64 }; 65 66 enum bt_8822b_2ant_path_ctrl_owner { 67 BT_8822B_2ANT_PCO_BTSIDE = 0x0, 68 BT_8822B_2ANT_PCO_WLSIDE = 0x1, 69 BT_8822B_2ANT_PCO_MAX 70 }; 71 72 enum bt_8822b_2ant_gnt_ctrl_type { 73 BT_8822B_2ANT_GNT_CTRL_BY_PTA = 0x0, 74 BT_8822B_2ANT_GNT_CTRL_BY_SW = 0x1, 75 BT_8822B_2ANT_GNT_CTRL_MAX 76 }; 77 78 enum bt_8822b_2ant_gnt_ctrl_block { 79 BT_8822B_2ANT_GNT_BLOCK_RFC_BB = 0x0, 80 BT_8822B_2ANT_GNT_BLOCK_RFC = 0x1, 81 BT_8822B_2ANT_GNT_BLOCK_BB = 0x2, 82 BT_8822B_2ANT_GNT_BLOCK_MAX 83 }; 84 85 enum bt_8822b_2ant_lte_coex_table_type { 86 BT_8822B_2ANT_CTT_WL_VS_LTE = 0x0, 87 BT_8822B_2ANT_CTT_BT_VS_LTE = 0x1, 88 BT_8822B_2ANT_CTT_MAX 89 }; 90 91 enum bt_8822b_2ant_lte_break_table_type { 92 BT_8822B_2ANT_LBTT_WL_BREAK_LTE = 0x0, 93 BT_8822B_2ANT_LBTT_BT_BREAK_LTE = 0x1, 94 BT_8822B_2ANT_LBTT_LTE_BREAK_WL = 0x2, 95 BT_8822B_2ANT_LBTT_LTE_BREAK_BT = 0x3, 96 BT_8822B_2ANT_LBTT_MAX 97 }; 98 99 enum bt_info_src_8822b_2ant { 100 BT_8822B_2ANT_INFO_SRC_WIFI_FW = 0x0, 101 BT_8822B_2ANT_INFO_SRC_BT_RSP = 0x1, 102 BT_8822B_2ANT_INFO_SRC_BT_ACT = 0x2, 103 BT_8822B_2ANT_INFO_SRC_BT_IQK = 0x3, 104 BT_8822B_2ANT_INFO_SRC_BT_SCBD = 0x4, 105 BT_8822B_2ANT_INFO_SRC_MAX 106 }; 107 108 enum bt_8822b_2ant_bt_status { 109 BT_8822B_2ANT_BSTATUS_NCON_IDLE = 0x0, 110 BT_8822B_2ANT_BSTATUS_CON_IDLE = 0x1, 111 BT_8822B_2ANT_BSTATUS_INQ_PAGE = 0x2, 112 BT_8822B_2ANT_BSTATUS_ACL_BUSY = 0x3, 113 BT_8822B_2ANT_BSTATUS_SCO_BUSY = 0x4, 114 BT_8822B_2ANT_BSTATUS_ACL_SCO_BUSY = 0x5, 115 BT_8822B_2ANT_BSTATUS_MAX 116 }; 117 118 enum bt_8822b_2ant_coex_algo { 119 BT_8822B_2ANT_COEX_UNDEFINED = 0x0, 120 BT_8822B_2ANT_COEX_SCO = 0x1, 121 BT_8822B_2ANT_COEX_HID = 0x2, 122 BT_8822B_2ANT_COEX_A2DP = 0x3, 123 BT_8822B_2ANT_COEX_A2DP_PANHS = 0x4, 124 BT_8822B_2ANT_COEX_PAN = 0x5, 125 BT_8822B_2ANT_COEX_PANHS = 0x6, 126 BT_8822B_2ANT_COEX_PAN_A2DP = 0x7, 127 BT_8822B_2ANT_COEX_PAN_HID = 0x8, 128 BT_8822B_2ANT_COEX_HID_A2DP_PAN = 0x9, 129 BT_8822B_2ANT_COEX_HID_A2DP = 0xa, 130 BT_8822B_2ANT_COEX_NOPROFILEBUSY = 0xb, 131 BT_8822B_2ANT_COEX_A2DPSINK = 0xc, 132 BT_8822B_2ANT_COEX_MAX 133 }; 134 135 enum bt_8822b_2ant_ext_ant_switch_type { 136 BT_8822B_2ANT_SWITCH_USE_DPDT = 0x0, 137 BT_8822B_2ANT_SWITCH_USE_SPDT = 0x1, 138 BT_8822B_2ANT_SWITCH_NONE = 0x2, 139 BT_8822B_2ANT_SWITCH_MAX 140 }; 141 142 enum bt_8822b_2ant_ext_ant_switch_ctrl_type { 143 BT_8822B_2ANT_CTRL_BY_BBSW = 0x0, 144 BT_8822B_2ANT_CTRL_BY_PTA = 0x1, 145 BT_8822B_2ANT_CTRL_BY_ANTDIV = 0x2, 146 BT_8822B_2ANT_CTRL_BY_MAC = 0x3, 147 BT_8822B_2ANT_CTRL_BY_BT = 0x4, 148 BT_8822B_2ANT_CTRL_BY_FW = 0x5, 149 BT_8822B_2ANT_CTRL_MAX 150 }; 151 152 enum bt_8822b_2ant_ext_ant_switch_pos_type { 153 BT_8822B_2ANT_SWITCH_MAIN_TO_BT = 0x0, 154 BT_8822B_2ANT_SWITCH_MAIN_TO_WLG = 0x1, 155 BT_8822B_2ANT_SWITCH_MAIN_TO_WLA = 0x2, 156 BT_8822B_2ANT_SWITCH_MAIN_TO_NOCARE = 0x3, 157 BT_8822B_2ANT_SWITCH_MAIN_TO_MAX 158 }; 159 160 enum bt_8822b_2ant_phase { 161 BT_8822B_2ANT_PHASE_INIT = 0x0, 162 BT_8822B_2ANT_PHASE_WONLY = 0x1, 163 BT_8822B_2ANT_PHASE_WOFF = 0x2, 164 BT_8822B_2ANT_PHASE_2G = 0x3, 165 BT_8822B_2ANT_PHASE_5G = 0x4, 166 BT_8822B_2ANT_PHASE_BTMP = 0x5, 167 BT_8822B_2ANT_PHASE_ANTDET = 0x6, 168 BT_8822B_2ANT_PHASE_POWERON = 0x7, 169 BT_8822B_2ANT_PHASE_2G_CON = 0x8, 170 BT_8822B_2ANT_PHASE_2G_FREERUN = 0x9, 171 BT_8822B_2ANT_PHASE_MAX 172 }; 173 174 /*ADD SCOREBOARD TO FIX BT LPS 32K ISSUE WHILE WL BUSY*/ 175 176 enum bt_8822b_2ant_scoreboard { 177 BT_8822B_2ANT_SCBD_ACTIVE = BIT(0), 178 BT_8822B_2ANT_SCBD_ONOFF = BIT(1), 179 BT_8822B_2ANT_SCBD_SCAN = BIT(2), 180 BT_8822B_2ANT_SCBD_UNDERTEST = BIT(3), 181 BT_8822B_2ANT_SCBD_RXGAIN = BIT(4), 182 BT_8822B_2ANT_SCBD_WLBUSY = BIT(6), 183 BT_8822B_2ANT_SCBD_EXTFEM = BIT(8), 184 BT_8822B_2ANT_SCBD_TDMA = BIT(9), 185 BT_8822B_2ANT_SCBD_CQDDR = BIT(10), 186 BT_8822B_2ANT_SCBD_ALL = 0xffff 187 }; 188 189 enum bt_8822b_2ant_RUNREASON { 190 BT_8822B_2ANT_RSN_2GSCANSTART = 0x0, 191 BT_8822B_2ANT_RSN_5GSCANSTART = 0x1, 192 BT_8822B_2ANT_RSN_SCANFINISH = 0x2, 193 BT_8822B_2ANT_RSN_2GSWITCHBAND = 0x3, 194 BT_8822B_2ANT_RSN_5GSWITCHBAND = 0x4, 195 BT_8822B_2ANT_RSN_2GCONSTART = 0x5, 196 BT_8822B_2ANT_RSN_5GCONSTART = 0x6, 197 BT_8822B_2ANT_RSN_2GCONFINISH = 0x7, 198 BT_8822B_2ANT_RSN_5GCONFINISH = 0x8, 199 BT_8822B_2ANT_RSN_2GMEDIA = 0x9, 200 BT_8822B_2ANT_RSN_5GMEDIA = 0xa, 201 BT_8822B_2ANT_RSN_MEDIADISCON = 0xb, 202 BT_8822B_2ANT_RSN_2GSPECIALPKT = 0xc, 203 BT_8822B_2ANT_RSN_5GSPECIALPKT = 0xd, 204 BT_8822B_2ANT_RSN_BTINFO = 0xe, 205 BT_8822B_2ANT_RSN_PERIODICAL = 0xf, 206 BT_8822B_2ANT_RSN_PNP = 0x10, 207 BT_8822B_2ANT_RSN_LPS = 0x11, 208 BT_8822B_2ANT_RSN_MAX 209 }; 210 211 enum bt_8822b_2ant_WL_LINK_MODE { 212 BT_8822B_2ANT_WLINK_2G1PORT = 0x0, 213 BT_8822B_2ANT_WLINK_2GMPORT = 0x1, 214 BT_8822B_2ANT_WLINK_25GMPORT = 0x2, 215 BT_8822B_2ANT_WLINK_5G = 0x3, 216 BT_8822B_2ANT_WLINK_2GGO = 0x4, 217 BT_8822B_2ANT_WLINK_2GGC = 0x5, 218 BT_8822B_2ANT_WLINK_BTMR = 0x6, 219 BT_8822B_2ANT_WLINK_MAX 220 }; 221 222 struct coex_dm_8822b_2ant { 223 /* hw setting */ 224 u32 cur_ant_pos_type; 225 /* fw mechanism */ 226 227 u8 cur_bt_pwr_lvl; 228 u8 cur_wl_pwr_lvl; 229 230 boolean cur_ignore_wlan_act; 231 232 u8 cur_ps_tdma; 233 u8 ps_tdma_para[5]; 234 boolean cur_ps_tdma_on; 235 236 boolean cur_bt_auto_report; 237 238 /* sw mechanism */ 239 boolean cur_low_penalty_ra; 240 boolean cur_agc_table_en; 241 242 u32 cur_val0x6c0; 243 u32 cur_val0x6c4; 244 u32 cur_val0x6c8; 245 u8 cur_val0x6cc; 246 247 /* algorithm related */ 248 u8 cur_algorithm; 249 u8 bt_status; 250 u8 wifi_chnl_info[3]; 251 252 u8 cur_lps; 253 u8 cur_rpwm; 254 u32 arp_cnt; 255 256 u32 cur_switch_status; 257 u32 setting_tdma; 258 }; 259 260 struct coex_sta_8822b_2ant { 261 boolean bt_disabled; 262 boolean bt_link_exist; 263 boolean sco_exist; 264 boolean a2dp_exist; 265 boolean hid_exist; 266 boolean pan_exist; 267 boolean msft_mr_exist; 268 boolean bt_a2dp_active; 269 270 boolean under_lps; 271 boolean under_ips; 272 u32 high_priority_tx; 273 u32 high_priority_rx; 274 u32 low_priority_tx; 275 u32 low_priority_rx; 276 boolean is_hi_pri_rx_overhead; 277 u8 bt_rssi; 278 u8 pre_bt_rssi_state; 279 u8 pre_wifi_rssi_state[4]; 280 u8 bt_info_c2h[BT_8822B_2ANT_INFO_SRC_MAX][BTC_BTINFO_LENGTH_MAX]; 281 u32 bt_info_c2h_cnt[BT_8822B_2ANT_INFO_SRC_MAX]; 282 boolean bt_whck_test; 283 boolean c2h_bt_inquiry_page; 284 boolean c2h_bt_remote_name_req; 285 286 u8 bt_info_lb2; 287 u8 bt_info_lb3; 288 u8 bt_info_hb0; 289 u8 bt_info_hb1; 290 u8 bt_info_hb2; 291 u8 bt_info_hb3; 292 293 u32 pop_event_cnt; 294 u8 scan_ap_num; 295 u8 bt_retry_cnt; 296 297 u32 crc_ok_cck; 298 u32 crc_ok_11g; 299 u32 crc_ok_11n; 300 u32 crc_ok_11n_vht; 301 302 u32 crc_err_cck; 303 u32 crc_err_11g; 304 u32 crc_err_11n; 305 u32 crc_err_11n_vht; 306 boolean cck_lock; 307 boolean cck_lock_ever; 308 boolean cck_lock_warn; 309 310 u8 coex_table_type; 311 boolean force_lps_ctrl; 312 313 u8 dis_ver_info_cnt; 314 315 u8 a2dp_bit_pool; 316 u8 kt_ver; 317 318 boolean concurrent_rx_mode_on; 319 320 u16 score_board; 321 u8 isolation_btween_wb; /* 0~ 50 */ 322 u8 wifi_coex_thres; 323 u8 bt_coex_thres; 324 u8 wifi_coex_thres2; 325 u8 bt_coex_thres2; 326 327 u8 num_of_profile; 328 boolean acl_busy; 329 boolean bt_create_connection; 330 boolean wifi_high_pri_task1; 331 boolean wifi_high_pri_task2; 332 u32 specific_pkt_period_cnt; 333 u32 bt_coex_supported_feature; 334 u32 bt_coex_supported_version; 335 336 u8 bt_ble_scan_type; 337 u32 bt_ble_scan_para[3]; 338 339 boolean run_time_state; 340 boolean freeze_coexrun_by_btinfo; 341 342 boolean is_A2DP_3M; 343 boolean voice_over_HOGP; 344 boolean bt_418_hid_exist; 345 boolean is_autoslot; 346 u8 forbidden_slot; 347 u8 hid_busy_num; 348 u8 hid_pair_cnt; 349 350 u32 cnt_remote_name_req; 351 u32 cnt_setup_link; 352 u32 cnt_reinit; 353 u32 cnt_ign_wlan_act; 354 u32 cnt_page; 355 u32 cnt_role_switch; 356 u32 cnt_wl_fw_notify; 357 358 u16 bt_reg_vendor_ac; 359 u16 bt_reg_vendor_ae; 360 361 boolean is_setup_link; 362 u8 wl_noisy_level; 363 u32 gnt_error_cnt; 364 365 u8 bt_afh_map[10]; 366 u8 bt_relink_downcount; 367 boolean is_tdma_btautoslot; 368 369 boolean is_esco_mode; 370 u8 switch_band_notify_to; 371 372 boolean is_bt_multi_link; 373 boolean is_bt_a2dp_sink; 374 375 boolean is_set_ps_state_fail; 376 u8 cnt_set_ps_state_fail; 377 378 u8 wl_fw_dbg_info[10]; 379 u8 wl_rx_rate; 380 u8 wl_tx_rate; 381 u8 wl_rts_rx_rate; 382 u8 wl_center_channel; 383 u8 wl_tx_macid; 384 u8 wl_tx_retry_ratio; 385 386 boolean is_2g_freerun; 387 388 u16 score_board_WB; 389 boolean is_hid_rcu; 390 u8 bt_a2dp_vendor_id; 391 u32 bt_a2dp_device_name; 392 u32 bt_a2dp_flush_time; 393 boolean is_ble_scan_en; 394 395 boolean is_bt_opp_exist; 396 boolean gl_wifi_busy; 397 398 boolean is_mimo_ps; 399 u8 connect_ap_period_cnt; 400 boolean is_bt_reenable; 401 u8 cnt_bt_reenable; 402 boolean is_wifi_linkscan_process; 403 u8 wl_coex_mode; 404 405 u8 wl_pnp_wakeup_downcnt; 406 u32 coex_run_cnt; 407 boolean is_no_wl_5ms_extend; 408 409 u16 wl_0x42a_backup; 410 u32 wl_0x430_backup; 411 u32 wl_0x434_backup; 412 u8 wl_0x455_backup; 413 414 boolean wl_tx_limit_en; 415 boolean wl_ampdu_limit_en; 416 boolean wl_rxagg_limit_en; 417 u8 wl_rxagg_size; 418 u8 coex_run_reason; 419 420 u8 tdma_timer_base; 421 boolean wl_slot_toggle; 422 boolean wl_slot_toggle_change; /* if toggle to no-toggle */ 423 }; 424 425 #define BT_8822B_2ANT_EXT_BAND_SWITCH_USE_DPDT 0 426 #define BT_8822B_2ANT_EXT_BAND_SWITCH_USE_SPDT 1 427 428 struct rfe_type_8822b_2ant { 429 u8 rfe_module_type; 430 boolean ext_switch_exist; 431 u8 ext_switch_type; /* 0:DPDT, 1:SPDT */ 432 /* iF 0: DPDT_P=0, DPDT_N=1 => BTG to Main, WL_A+G to Aux */ 433 u8 ext_switch_polarity; 434 435 boolean ext_band_switch_exist; 436 u8 ext_band_switch_type; /* 0:DPDT, 1:SPDT */ 437 u8 ext_band_switch_ctrl_polarity; 438 439 /* If TRUE: WLG at BTG, If FALSE: WLG at WLAG */ 440 boolean wlg_locate_at_btg; 441 442 boolean ext_ant_switch_diversity; /* If diversity on */ 443 }; 444 445 struct wifi_link_info_8822b_2ant { 446 u8 num_of_active_port; 447 u32 port_connect_status; 448 boolean is_all_under_5g; 449 boolean is_mcc_25g; 450 boolean is_p2p_connected; 451 boolean is_connected; 452 }; 453 454 /* ******************************************* 455 * The following is interface which will notify coex module. 456 * ********************************************/ 457 void ex_halbtc8822b2ant_power_on_setting(struct btc_coexist *btc); 458 void ex_halbtc8822b2ant_pre_load_firmware(struct btc_coexist *btc); 459 void ex_halbtc8822b2ant_init_hw_config(struct btc_coexist *btc, 460 boolean wifi_only); 461 void ex_halbtc8822b2ant_init_coex_dm(struct btc_coexist *btc); 462 void ex_halbtc8822b2ant_ips_notify(struct btc_coexist *btc, u8 type); 463 void ex_halbtc8822b2ant_lps_notify(struct btc_coexist *btc, u8 type); 464 void ex_halbtc8822b2ant_scan_notify(struct btc_coexist *btc, u8 type); 465 void ex_halbtc8822b2ant_switchband_notify(struct btc_coexist *btc, 466 u8 type); 467 void ex_halbtc8822b2ant_connect_notify(struct btc_coexist *btc, u8 type); 468 void ex_halbtc8822b2ant_media_status_notify(struct btc_coexist *btc, 469 u8 type); 470 void ex_halbtc8822b2ant_specific_packet_notify(struct btc_coexist *btc, 471 u8 type); 472 void ex_halbtc8822b2ant_bt_info_notify(struct btc_coexist *btc, 473 u8 *tmp_buf, u8 length); 474 void ex_halbtc8822b2ant_wl_fwdbginfo_notify(struct btc_coexist *btc, 475 u8 *tmp_buf, u8 length); 476 void ex_halbtc8822b2ant_rx_rate_change_notify(struct btc_coexist *btc, 477 BOOLEAN is_data_frame, 478 u8 btc_rate_id); 479 void ex_halbtc8822b2ant_tx_rate_change_notify(struct btc_coexist *btc, 480 u8 tx_rate, 481 u8 tx_retry_ratio, u8 macid); 482 void ex_halbtc8822b2ant_rf_status_notify(struct btc_coexist *btc, 483 u8 type); 484 void ex_halbtc8822b2ant_halt_notify(struct btc_coexist *btc); 485 void ex_halbtc8822b2ant_pnp_notify(struct btc_coexist *btc, u8 pnp_state); 486 void ex_halbtc8822b2ant_periodical(struct btc_coexist *btc); 487 void ex_halbtc8822b2ant_display_simple_coex_info(struct btc_coexist *btc); 488 void ex_halbtc8822b2ant_display_coex_info(struct btc_coexist *btc); 489 #else 490 #define ex_halbtc8822b2ant_power_on_setting(btc) 491 #define ex_halbtc8822b2ant_pre_load_firmware(btc) 492 #define ex_halbtc8822b2ant_init_hw_config(btc, wifi_only) 493 #define ex_halbtc8822b2ant_init_coex_dm(btc) 494 #define ex_halbtc8822b2ant_ips_notify(btc, type) 495 #define ex_halbtc8822b2ant_lps_notify(btc, type) 496 #define ex_halbtc8822b2ant_scan_notify(btc, type) 497 #define ex_halbtc8822b2ant_switchband_notify(btc, type) 498 #define ex_halbtc8822b2ant_connect_notify(btc, type) 499 #define ex_halbtc8822b2ant_media_status_notify(btc, type) 500 #define ex_halbtc8822b2ant_specific_packet_notify(btc, type) 501 #define ex_halbtc8822b2ant_bt_info_notify(btc, tmp_buf, length) 502 #define ex_halbtc8822b2ant_wl_fwdbginfo_notify(btc, tmp_buf, length) 503 #define ex_halbtc8822b2ant_rx_rate_change_notify(btc, is_data_frame, \ 504 btc_rate_id) 505 #define ex_halbtc8822b2ant_tx_rate_change_notify(btcoexist, tx_rate, \ 506 tx_retry_ratio, macid) 507 #define ex_halbtc8822b2ant_rf_status_notify(btc, type) 508 #define ex_halbtc8822b2ant_halt_notify(btc) 509 #define ex_halbtc8822b2ant_pnp_notify(btc, pnp_state) 510 #define ex_halbtc8822b2ant_periodical(btc) 511 #define ex_halbtc8822b2ant_display_coex_info(btc) 512 #define ex_halbtc8822b2ant_display_simple_coex_info(btc) 513 #endif 514 515 #endif 516