Lines Matching refs:btc
25 rtw_btc_rssi_state(struct btc_coexist *btc, u8 pre_state, in rtw_btc_rssi_state() argument
28 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_rssi_state()
48 rtw_btc_limited_tx(struct btc_coexist *btc, boolean force_exec, in rtw_btc_limited_tx() argument
51 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_limited_tx()
52 struct btc_wifi_link_info_ext *link_info_ext = &btc->wifi_link_info_ext; in rtw_btc_limited_tx()
53 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_limited_tx()
66 coex_sta->wl_arfb1 = btc->btc_read_4byte(btc, REG_DARFRC); in rtw_btc_limited_tx()
67 coex_sta->wl_arfb2 = btc->btc_read_4byte(btc, REG_DARFRCH); in rtw_btc_limited_tx()
69 coex_sta->wl_txlimit = btc->btc_read_2byte(btc, in rtw_btc_limited_tx()
75 btc->btc_read_1byte(btc, REG_AMPDU_MAX_TIME_V1); in rtw_btc_limited_tx()
85 btc->btc_write_1byte_bitmask(btc, REG_TX_HANG_CTRL, in rtw_btc_limited_tx()
90 btc->btc_write_1byte_bitmask(btc, REG_LIFETIME_EN, 0xf, in rtw_btc_limited_tx()
93 btc->btc_write_1byte_bitmask(btc, REG_LIFETIME_EN, 0xf, in rtw_btc_limited_tx()
97 btc->btc_write_2byte(btc, REG_RETRY_LIMIT, 0x0808); in rtw_btc_limited_tx()
99 btc->btc_get(btc, BTC_GET_BL_WIFI_UNDER_B_MODE, &wl_b_mode); in rtw_btc_limited_tx()
103 btc->btc_write_4byte(btc, REG_DARFRC, 0x1000000); in rtw_btc_limited_tx()
104 btc->btc_write_4byte(btc, REG_DARFRCH, 0x1010101); in rtw_btc_limited_tx()
106 btc->btc_write_4byte(btc, REG_DARFRC, 0x1000000); in rtw_btc_limited_tx()
107 btc->btc_write_4byte(btc, REG_DARFRCH, 0x4030201); in rtw_btc_limited_tx()
113 btc->btc_write_1byte_bitmask(btc, REG_TX_HANG_CTRL, in rtw_btc_limited_tx()
119 btc->btc_write_1byte_bitmask(btc, REG_LIFETIME_EN, 0xf, 0x0); in rtw_btc_limited_tx()
122 btc->btc_write_2byte(btc, REG_RETRY_LIMIT, in rtw_btc_limited_tx()
124 btc->btc_write_4byte(btc, REG_DARFRC, coex_sta->wl_arfb1); in rtw_btc_limited_tx()
125 btc->btc_write_4byte(btc, REG_DARFRCH, coex_sta->wl_arfb2); in rtw_btc_limited_tx()
129 btc->btc_write_1byte(btc, REG_AMPDU_MAX_TIME_V1, 0x20); in rtw_btc_limited_tx()
131 btc->btc_write_1byte(btc, REG_AMPDU_MAX_TIME_V1, in rtw_btc_limited_tx()
136 rtw_btc_limited_rx(struct btc_coexist *btc, boolean force_exec, in rtw_btc_limited_rx() argument
140 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_limited_rx()
155 btc->btc_set(btc, BTC_SET_BL_BT_CTRL_AGG_SIZE, &bt_ctrl_rx_agg_size); in rtw_btc_limited_rx()
159 btc->btc_set(btc, BTC_SET_U1_AGG_BUF_SIZE, &rx_agg_size); in rtw_btc_limited_rx()
161 btc->btc_set(btc, BTC_SET_ACT_AGGREGATE_CTRL, NULL); in rtw_btc_limited_rx()
169 rtw_btc_low_penalty_ra(struct btc_coexist *btc, boolean force_exec, in rtw_btc_low_penalty_ra() argument
172 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_low_penalty_ra()
173 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_low_penalty_ra()
182 btc->btc_phydm_modify_RA_PCR_threshold(btc, 0, thres); in rtw_btc_low_penalty_ra()
184 btc->btc_phydm_modify_RA_PCR_threshold(btc, 0, 0); in rtw_btc_low_penalty_ra()
191 rtw_btc_limited_wl(struct btc_coexist *btc) in rtw_btc_limited_wl() argument
193 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_limited_wl()
194 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_limited_wl()
195 struct btc_wifi_link_info_ext *link_info_ext = &btc->wifi_link_info_ext; in rtw_btc_limited_wl()
200 rtw_btc_low_penalty_ra(btc, NM_EXCU, FALSE, 0); in rtw_btc_limited_wl()
201 rtw_btc_limited_tx(btc, NM_EXCU, FALSE, FALSE); in rtw_btc_limited_wl()
202 rtw_btc_limited_rx(btc, NM_EXCU, FALSE, TRUE, 64); in rtw_btc_limited_wl()
204 rtw_btc_low_penalty_ra(btc, NM_EXCU, TRUE, 30); in rtw_btc_limited_wl()
205 rtw_btc_limited_tx(btc, NM_EXCU, TRUE, TRUE); in rtw_btc_limited_wl()
206 rtw_btc_limited_rx(btc, NM_EXCU, FALSE, TRUE, 16); in rtw_btc_limited_wl()
209 rtw_btc_low_penalty_ra(btc, NM_EXCU, TRUE, 30); in rtw_btc_limited_wl()
211 rtw_btc_low_penalty_ra(btc, NM_EXCU, TRUE, 15); in rtw_btc_limited_wl()
215 rtw_btc_limited_tx(btc, NM_EXCU, TRUE, TRUE); in rtw_btc_limited_wl()
217 rtw_btc_limited_tx(btc, NM_EXCU, TRUE, FALSE); in rtw_btc_limited_wl()
222 btc->board_info.btdm_ant_num == 1) in rtw_btc_limited_wl()
223 rtw_btc_limited_rx(btc, NM_EXCU, FALSE, TRUE, 4); in rtw_btc_limited_wl()
225 rtw_btc_limited_rx(btc, NM_EXCU, FALSE, TRUE, 64); in rtw_btc_limited_wl()
232 rtw_btc_mailbox_operation(struct btc_coexist *btc, u8 h2c_id, u8 h2c_len, in rtw_btc_mailbox_operation() argument
235 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_mailbox_operation()
239 btc->btc_fill_h2c(btc, h2c_id, h2c_len, h2c_para); in rtw_btc_mailbox_operation()
250 btc->btc_set(btc, BTC_SET_ACT_CTRL_BT_INFO, (void *)&buf[0]); in rtw_btc_mailbox_operation()
259 btc->btc_set(btc, BTC_SET_ACT_CTRL_BT_COEX, (void *)&buf[0]); in rtw_btc_mailbox_operation()
267 btc->btc_set(btc, BTC_SET_ACT_CTRL_BT_COEX, (void *)&buf[0]); in rtw_btc_mailbox_operation()
277 btc->btc_set(btc, BTC_SET_ACT_CTRL_BT_COEX, (void *)&buf[0]); in rtw_btc_mailbox_operation()
283 rtw_btc_freerun_check(struct btc_coexist *btc) in rtw_btc_freerun_check() argument
285 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_freerun_check()
286 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_freerun_check()
287 struct btc_wifi_link_info_ext *link_info_ext = &btc->wifi_link_info_ext; in rtw_btc_freerun_check()
299 if (btc->board_info.btdm_ant_num == 1 || in rtw_btc_freerun_check()
300 btc->board_info.ant_distance <= 5 || !coex_sta->wl_gl_busy) in rtw_btc_freerun_check()
303 if (btc->board_info.ant_distance >= 40 || in rtw_btc_freerun_check()
326 rtw_btc_wl_leakap(struct btc_coexist *btc, boolean enable) in rtw_btc_wl_leakap() argument
328 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_wl_leakap()
347 btc->btc_fill_h2c(btc, 0x69, 2, h2c_para); in rtw_btc_wl_leakap()
353 rtw_btc_wl_ccklock_action(struct btc_coexist *btc) in rtw_btc_wl_ccklock_action() argument
355 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_wl_ccklock_action()
359 if (btc->manual_control || btc->stop_coex_dm) in rtw_btc_wl_ccklock_action()
370 btc->btc_get(btc, BTC_GET_BL_WIFI_BUSY, &wifi_busy); in rtw_btc_wl_ccklock_action()
386 rtw_btc_wl_leakap(btc, FALSE); in rtw_btc_wl_ccklock_action()
388 rtw_btc_wl_leakap(btc, TRUE); in rtw_btc_wl_ccklock_action()
393 rtw_btc_wl_ccklock_detect(struct btc_coexist *btc) in rtw_btc_wl_ccklock_detect() argument
395 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_wl_ccklock_detect()
396 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_wl_ccklock_detect()
397 struct btc_wifi_link_info_ext *link_info_ext = &btc->wifi_link_info_ext; in rtw_btc_wl_ccklock_detect()
432 btc->btc_set_timer(btc, BTC_TIMER_WL_CCKLOCK, 6); in rtw_btc_wl_ccklock_detect()
438 rtw_btc_set_extend_btautoslot(struct btc_coexist *btc, u8 thres) in rtw_btc_set_extend_btautoslot() argument
440 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_set_extend_btautoslot()
450 btc->btc_fill_h2c(btc, 0x69, 2, h2c_para); in rtw_btc_set_extend_btautoslot()
454 rtw_btc_set_tdma_timer_base(struct btc_coexist *btc, u8 type) in rtw_btc_set_tdma_timer_base() argument
456 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_set_tdma_timer_base()
460 btc->btc_get(btc, BTC_GET_U2_BEACON_PERIOD, &tbtt_interval); in rtw_btc_set_tdma_timer_base()
502 btc->btc_fill_h2c(btc, 0x69, 2, h2c_para); in rtw_btc_set_tdma_timer_base()
510 rtw_btc_set_wl_pri_mask(struct btc_coexist *btc, u8 bitmap, u8 data) in rtw_btc_set_wl_pri_mask() argument
517 btc->btc_write_1byte_bitmask(btc, addr, BIT(bitmap), data); in rtw_btc_set_wl_pri_mask()
521 rtw_btc_set_bt_golden_rx_range(struct btc_coexist *btc, boolean force_exec, in rtw_btc_set_bt_golden_rx_range() argument
524 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_set_bt_golden_rx_range()
538 btc->btc_set(btc, BTC_SET_BL_BT_GOLDEN_RX_RANGE, ¶); in rtw_btc_set_bt_golden_rx_range()
546 rtw_btc_query_bt_info(struct btc_coexist *btc) in rtw_btc_query_bt_info() argument
548 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_query_bt_info()
557 rtw_btc_mailbox_operation(btc, 0x61, 1, h2c_parameter); in rtw_btc_query_bt_info()
561 rtw_btc_gnt_debug(struct btc_coexist *btc, boolean isenable) in rtw_btc_gnt_debug() argument
564 btc->btc_write_1byte_bitmask(btc, 0x73, 0x8, 0x0); in rtw_btc_gnt_debug()
566 btc->chip_para->chip_setup(btc, BTC_CSETUP_GNT_DEBUG); in rtw_btc_gnt_debug()
570 rtw_btc_gnt_workaround(struct btc_coexist *btc, boolean force_exec, u8 mode) in rtw_btc_gnt_workaround() argument
572 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_gnt_workaround()
581 btc->chip_para->chip_setup(btc, BTC_CSETUP_GNT_FIX); in rtw_btc_gnt_workaround()
585 rtw_btc_monitor_bt_enable(struct btc_coexist *btc) in rtw_btc_monitor_bt_enable() argument
587 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_monitor_bt_enable()
588 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_monitor_bt_enable()
589 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_monitor_bt_enable()
596 btc->btc_read_scbd(btc, &scbd); in rtw_btc_monitor_bt_enable()
599 btc->btc_read_scbd_32bit(btc, &scbd_32); in rtw_btc_monitor_bt_enable()
608 btc->btc_set(btc, BTC_SET_BL_BT_DISABLE, &bt_disabled); in rtw_btc_monitor_bt_enable()
630 btc->bt_info.bt_get_fw_ver = 0; in rtw_btc_monitor_bt_enable()
635 btc->btc_set_timer(btc, BTC_TIMER_BT_REENABLE, 15); in rtw_btc_monitor_bt_enable()
643 rtw_btc_update_bt_sut_info(struct btc_coexist *btc) in rtw_btc_update_bt_sut_info() argument
645 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_update_bt_sut_info()
651 rtw_btc_set_bt_golden_rx_range(btc, FC_EXCU, 3, 0); in rtw_btc_update_bt_sut_info()
656 rtw_btc_set_bt_golden_rx_range(btc, FC_EXCU, 2, 0); in rtw_btc_update_bt_sut_info()
661 rtw_btc_set_bt_golden_rx_range(btc, FC_EXCU, 0, 0); in rtw_btc_update_bt_sut_info()
666 rtw_btc_set_bt_golden_rx_range(btc, FC_EXCU, 1, 0); in rtw_btc_update_bt_sut_info()
671 rtw_btc_set_bt_golden_rx_range(btc, FC_EXCU, 3, in rtw_btc_update_bt_sut_info()
680 rtw_btc_update_wl_link_info(struct btc_coexist *btc, u8 reason) in rtw_btc_update_wl_link_info() argument
682 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_update_wl_link_info()
683 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_update_wl_link_info()
684 struct btc_wifi_link_info_ext *linfo_ext = &btc->wifi_link_info_ext; in rtw_btc_update_wl_link_info()
686 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_update_wl_link_info()
693 btc->btc_get(btc, BTC_GET_BL_WIFI_SCAN, &linfo_ext->is_scan); in rtw_btc_update_wl_link_info()
694 btc->btc_get(btc, BTC_GET_BL_WIFI_LINK, &linfo_ext->is_link); in rtw_btc_update_wl_link_info()
695 btc->btc_get(btc, BTC_GET_BL_WIFI_ROAM, &linfo_ext->is_roam); in rtw_btc_update_wl_link_info()
696 btc->btc_get(btc, BTC_GET_BL_WIFI_LW_PWR_STATE, &linfo_ext->is_32k); in rtw_btc_update_wl_link_info()
697 btc->btc_get(btc, BTC_GET_BL_WIFI_4_WAY_PROGRESS, &linfo_ext->is_4way); in rtw_btc_update_wl_link_info()
698 btc->btc_get(btc, BTC_GET_BL_WIFI_CONNECTED, &linfo_ext->is_connected); in rtw_btc_update_wl_link_info()
699 btc->btc_get(btc, BTC_GET_U4_WIFI_TRAFFIC_DIR, &linfo_ext->traffic_dir); in rtw_btc_update_wl_link_info()
700 btc->btc_get(btc, BTC_GET_U4_WIFI_BW, &linfo_ext->wifi_bw); in rtw_btc_update_wl_link_info()
701 btc->btc_get(btc, BTC_GET_U4_WIFI_LINK_STATUS, &wifi_link_status); in rtw_btc_update_wl_link_info()
704 btc->btc_get(btc, BTC_GET_BL_WIFI_LINK_INFO, &linfo); in rtw_btc_update_wl_link_info()
705 btc->wifi_link_info = linfo; in rtw_btc_update_wl_link_info()
707 btc->btc_get(btc, BTC_GET_U1_WIFI_CENTRAL_CHNL, &wifi_central_chnl); in rtw_btc_update_wl_link_info()
710 btc->btc_get(btc, BTC_GET_S4_WIFI_RSSI, &wl_rssi); in rtw_btc_update_wl_link_info()
713 rssi_state = rtw_btc_rssi_state(btc, rssi_state, in rtw_btc_update_wl_link_info()
722 btc->btc_write_scbd(btc, BTC_SCBD_SCAN, TRUE); in rtw_btc_update_wl_link_info()
724 btc->btc_write_scbd_32bit(btc, BTC_SCBD_SCAN, TRUE); in rtw_btc_update_wl_link_info()
727 btc->btc_write_scbd(btc, BTC_SCBD_SCAN, FALSE); in rtw_btc_update_wl_link_info()
729 btc->btc_write_scbd_32bit(btc, BTC_SCBD_SCAN, FALSE); in rtw_btc_update_wl_link_info()
828 btc->btc_set(btc, BTC_SET_BL_MIRACAST_PLUS_BT, &plus_bt); in rtw_btc_update_wl_link_info()
874 if (btc->manual_control || btc->stop_coex_dm) in rtw_btc_update_wl_link_info()
882 if (btc->chip_interface != BTC_INTF_SDIO) in rtw_btc_update_wl_link_info()
883 btc->btc_write_1byte_bitmask(btc, REG_CCK_CHECK, in rtw_btc_update_wl_link_info()
886 btc->btc_write_1byte_bitmask(btc, REG_CCK_CHECK, in rtw_btc_update_wl_link_info()
892 rtw_btc_update_bt_link_info(struct btc_coexist *btc) in rtw_btc_update_bt_link_info() argument
894 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_update_bt_link_info()
895 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_update_bt_link_info()
896 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_update_bt_link_info()
904 rssi_state = rtw_btc_rssi_state(btc, rssi_state, in rtw_btc_update_bt_link_info()
911 scan_type = btc->btc_get_ble_scan_type_from_bt(btc); in rtw_btc_update_bt_link_info()
929 *p = btc->btc_get_ble_scan_para_from_bt(btc, 0x1); in rtw_btc_update_bt_link_info()
936 *p = btc->btc_get_ble_scan_para_from_bt(btc, 0x2); in rtw_btc_update_bt_link_info()
941 *p = btc->btc_get_ble_scan_para_from_bt(btc, 0x4); in rtw_btc_update_bt_link_info()
1022 btc->btc_set(btc, BTC_SET_BL_BT_TRAFFIC_BUSY, &bt_busy); in rtw_btc_update_bt_link_info()
1023 btc->btc_set(btc, BTC_SET_BL_INC_SCAN_DEV_NUM, &increase_scan_dev_num); in rtw_btc_update_bt_link_info()
1026 rtw_btc_update_bt_sut_info(btc); in rtw_btc_update_bt_link_info()
1040 rtw_btc_update_wl_ch_info(struct btc_coexist *btc, u8 type) in rtw_btc_update_wl_ch_info() argument
1042 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_update_wl_ch_info()
1043 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_update_wl_ch_info()
1044 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_update_wl_ch_info()
1045 struct btc_wifi_link_info_ext *link_info_ext = &btc->wifi_link_info_ext; in rtw_btc_update_wl_ch_info()
1046 struct btc_wifi_link_info *link_info = &btc->wifi_link_info; in rtw_btc_update_wl_ch_info()
1049 if (btc->manual_control) in rtw_btc_update_wl_ch_info()
1052 if (btc->stop_coex_dm || btc->wl_rf_state_off) { in rtw_btc_update_wl_ch_info()
1077 } else if(btc->board_info.btdm_ant_num == 1 && wl_center_ch <= 14) { in rtw_btc_update_wl_ch_info()
1112 rtw_btc_mailbox_operation(btc, 0x66, 3, h2c_para); in rtw_btc_update_wl_ch_info()
1122 rtw_btc_set_wl_tx_power(struct btc_coexist *btc, in rtw_btc_set_wl_tx_power() argument
1125 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_set_wl_tx_power()
1126 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_set_wl_tx_power()
1133 chip_para->chip_setup(btc, BTC_CSETUP_WL_TX_POWER); in rtw_btc_set_wl_tx_power()
1141 rtw_btc_set_bt_tx_power(struct btc_coexist *btc, in rtw_btc_set_bt_tx_power() argument
1144 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_set_bt_tx_power()
1152 rtw_btc_mailbox_operation(btc, 0x62, 1, h2c_para); in rtw_btc_set_bt_tx_power()
1163 rtw_btc_set_wl_rx_gain(struct btc_coexist *btc, boolean force_exec, in rtw_btc_set_wl_rx_gain() argument
1166 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_set_wl_rx_gain()
1167 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_set_wl_rx_gain()
1181 chip_para->chip_setup(btc, BTC_CSETUP_WL_RX_GAIN); in rtw_btc_set_wl_rx_gain()
1185 rtw_btc_set_bt_rx_gain(struct btc_coexist *btc, boolean force_exec, u8 lna_lvl) in rtw_btc_set_bt_rx_gain() argument
1187 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_set_bt_rx_gain()
1188 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_set_bt_rx_gain()
1194 btc->btc_set(btc, BTC_SET_BL_BT_LNA_CONSTRAIN_LEVEL, &lna_lvl); in rtw_btc_set_bt_rx_gain()
1197 btc->btc_write_scbd(btc, BTC_SCBD_RXGAIN, TRUE); in rtw_btc_set_bt_rx_gain()
1199 btc->btc_write_scbd_32bit(btc, BTC_SCBD_RXGAIN, TRUE); in rtw_btc_set_bt_rx_gain()
1202 btc->btc_write_scbd(btc, BTC_SCBD_RXGAIN, FALSE); in rtw_btc_set_bt_rx_gain()
1204 btc->btc_write_scbd_32bit(btc, BTC_SCBD_RXGAIN, FALSE); in rtw_btc_set_bt_rx_gain()
1216 rtw_btc_set_rf_para(struct btc_coexist *btc, boolean force_exec, in rtw_btc_set_rf_para() argument
1219 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_set_rf_para()
1227 rtw_btc_set_wl_tx_power(btc, force_exec, para.wl_pwr_dec_lvl); in rtw_btc_set_rf_para()
1228 rtw_btc_set_bt_tx_power(btc, force_exec, para.bt_pwr_dec_lvl + tmp); in rtw_btc_set_rf_para()
1229 rtw_btc_set_wl_rx_gain(btc, force_exec, para.wl_low_gain_en); in rtw_btc_set_rf_para()
1230 rtw_btc_set_bt_rx_gain(btc, force_exec, para.bt_lna_lvl); in rtw_btc_set_rf_para()
1234 rtw_btc_coex_ctrl_owner(struct btc_coexist *btc, boolean wifi_control) in rtw_btc_coex_ctrl_owner() argument
1239 btc->btc_write_1byte_bitmask(btc, REG_SYS_SDIO_CTRL3, BIT(2), val); in rtw_btc_coex_ctrl_owner()
1242 btc->chip_para->chip_setup(btc, BTC_CSETUP_BT_CTRL_ACT); in rtw_btc_coex_ctrl_owner()
1246 rtw_btc_set_gnt_bt(struct btc_coexist *btc, u8 state) in rtw_btc_set_gnt_bt() argument
1248 if (btc->chip_para->lte_indirect_access) { in rtw_btc_set_gnt_bt()
1249 btc->btc_write_linderct(btc, REG_LTE_IDR_COEX_CTRL, 0xc000, state); in rtw_btc_set_gnt_bt()
1250 btc->btc_write_linderct(btc, REG_LTE_IDR_COEX_CTRL, 0x0c00, state); in rtw_btc_set_gnt_bt()
1254 btc->btc_write_1byte_bitmask(btc, 0x765, 0x1e, 0x0); in rtw_btc_set_gnt_bt()
1255 btc->btc_write_1byte_bitmask(btc, REG_SYS_SDIO_CTRL3, in rtw_btc_set_gnt_bt()
1259 btc->btc_write_1byte_bitmask(btc, 0x765, 0x1e, 0xf); in rtw_btc_set_gnt_bt()
1260 btc->btc_write_1byte_bitmask(btc, REG_SYS_SDIO_CTRL3, in rtw_btc_set_gnt_bt()
1264 btc->btc_write_1byte_bitmask(btc, 0x765, 0x1e, 0xf); in rtw_btc_set_gnt_bt()
1265 btc->btc_write_1byte_bitmask(btc, REG_SYS_SDIO_CTRL3, in rtw_btc_set_gnt_bt()
1275 rtw_btc_set_gnt_wl(struct btc_coexist *btc, u8 state) in rtw_btc_set_gnt_wl() argument
1277 if (btc->chip_para->lte_indirect_access) { in rtw_btc_set_gnt_wl()
1278 btc->btc_write_linderct(btc, REG_LTE_IDR_COEX_CTRL, 0x3000, state); in rtw_btc_set_gnt_wl()
1279 btc->btc_write_linderct(btc, REG_LTE_IDR_COEX_CTRL, 0x0300, state); in rtw_btc_set_gnt_wl()
1283 btc->btc_write_1byte_bitmask(btc, REG_SYS_SDIO_CTRL3, in rtw_btc_set_gnt_wl()
1285 btc->btc_write_1byte_bitmask(btc, REG_SYS_SDIO_CTRL3, in rtw_btc_set_gnt_wl()
1289 btc->btc_write_1byte_bitmask(btc, REG_SYS_SDIO_CTRL3, in rtw_btc_set_gnt_wl()
1291 btc->btc_write_1byte_bitmask(btc, REG_SYS_SDIO_CTRL3, in rtw_btc_set_gnt_wl()
1295 btc->btc_write_1byte_bitmask(btc, REG_SYS_SDIO_CTRL3, in rtw_btc_set_gnt_wl()
1297 btc->btc_write_1byte_bitmask(btc, REG_SYS_SDIO_CTRL3, in rtw_btc_set_gnt_wl()
1308 rtw_btc_mimo_ps(struct btc_coexist *btc, boolean force_exec, in rtw_btc_mimo_ps() argument
1311 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_mimo_ps()
1322 btc->btc_set(btc, BTC_SET_MIMO_PS_MODE, &state); in rtw_btc_mimo_ps()
1327 rtw_btc_wltoggle_tableA(IN struct btc_coexist *btc, in rtw_btc_wltoggle_tableA() argument
1330 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_wltoggle_tableA()
1337 if (btc->board_info.btdm_ant_num == 1) { in rtw_btc_wltoggle_tableA()
1351 btc->btc_fill_h2c(btc, 0x69, 6, h2c_para); in rtw_btc_wltoggle_tableA()
1361 rtw_btc_wltoggle_tableB(IN struct btc_coexist *btc, IN boolean force_exec, in rtw_btc_wltoggle_tableB() argument
1364 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_wltoggle_tableB()
1383 btc->btc_fill_h2c(btc, 0x69, 6, cur_h2c_para); in rtw_btc_wltoggle_tableB()
1393 rtw_btc_set_table(struct btc_coexist *btc, boolean force_exec, u32 val0x6c0, in rtw_btc_set_table() argument
1396 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_set_table()
1397 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_set_table()
1401 if (val0x6c0 == btc->btc_read_4byte(btc, REG_BT_COEX_TABLE0) && in rtw_btc_set_table()
1402 val0x6c4 == btc->btc_read_4byte(btc, REG_BT_COEX_TABLE1)) in rtw_btc_set_table()
1406 btc->btc_write_4byte(btc, REG_BT_COEX_TABLE0, val0x6c0); in rtw_btc_set_table()
1407 btc->btc_write_4byte(btc, REG_BT_COEX_TABLE1, val0x6c4); in rtw_btc_set_table()
1408 btc->btc_write_4byte(btc, REG_BT_COEX_BRK_TABLE, 0xf0ffffff); in rtw_btc_set_table()
1417 rtw_btc_table(struct btc_coexist *btc, boolean force_exec, u8 type) in rtw_btc_table() argument
1419 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_table()
1420 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_table()
1429 if (btc->board_info.btdm_ant_num == 1) { in rtw_btc_table()
1431 rtw_btc_set_table(btc, force_exec, in rtw_btc_table()
1437 rtw_btc_set_table(btc, force_exec, in rtw_btc_table()
1443 rtw_btc_wltoggle_tableA(btc, FC_EXCU, type); in rtw_btc_table()
1447 rtw_btc_ignore_wlan_act(struct btc_coexist *btc, boolean force_exec, in rtw_btc_ignore_wlan_act() argument
1450 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_ignore_wlan_act()
1453 if (btc->manual_control || btc->stop_coex_dm) in rtw_btc_ignore_wlan_act()
1462 rtw_btc_mailbox_operation(btc, 0x63, 1, h2c_para); in rtw_btc_ignore_wlan_act()
1468 rtw_btc_lps_rpwm(struct btc_coexist *btc, boolean force_exec, u8 lps_val, in rtw_btc_lps_rpwm() argument
1471 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_lps_rpwm()
1479 btc->btc_set(btc, BTC_SET_U1_LPS_VAL, &lps_val); in rtw_btc_lps_rpwm()
1480 btc->btc_set(btc, BTC_SET_U1_RPWM_VAL, &rpwm_val); in rtw_btc_lps_rpwm()
1487 rtw_btc_power_save_state(struct btc_coexist *btc, u8 ps_type, u8 lps_val, in rtw_btc_power_save_state() argument
1490 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_power_save_state()
1495 btc->btc_get(btc, BTC_GET_U1_LPS_MODE, &lps_mode); in rtw_btc_power_save_state()
1501 btc->btc_set(btc, BTC_SET_ACT_PRE_NORMAL_LPS, NULL); in rtw_btc_power_save_state()
1514 btc->btc_fill_h2c(btc, 0x60, 5, h2c_para); in rtw_btc_power_save_state()
1515 rtw_btc_lps_rpwm(btc, NM_EXCU, lps_val, rpwm_val); in rtw_btc_power_save_state()
1518 btc->btc_set(btc, BTC_SET_ACT_DISABLE_LOW_POWER, &low_pwr_dis); in rtw_btc_power_save_state()
1520 btc->btc_set(btc, BTC_SET_ACT_ENTER_LPS, NULL); in rtw_btc_power_save_state()
1529 btc->btc_fill_h2c(btc, 0x60, 5, h2c_para); in rtw_btc_power_save_state()
1530 if (btc->btc_set(btc, BTC_SET_ACT_LEAVE_LPS, NULL)) in rtw_btc_power_save_state()
1547 rtw_btc_set_tdma(struct btc_coexist *btc, u8 byte1, u8 byte2, u8 byte3, in rtw_btc_set_tdma() argument
1550 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_set_tdma()
1551 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_set_tdma()
1552 struct btc_wifi_link_info_ext *linfo_ext = &btc->wifi_link_info_ext; in rtw_btc_set_tdma()
1568 rtw_btc_power_save_state(btc, ps_type, 0x0, 0x0); in rtw_btc_set_tdma()
1575 if (btc->chip_para->pstdma_type == BTC_PSTDMA_FORCE_LPSOFF) in rtw_btc_set_tdma()
1579 rtw_btc_power_save_state(btc, ps_type, 0x50, 0x4); in rtw_btc_set_tdma()
1587 rtw_btc_power_save_state(btc, ps_type, 0x0, 0x0); in rtw_btc_set_tdma()
1596 btc->btc_fill_h2c(btc, 0x60, 5, coex_dm->ps_tdma_para); in rtw_btc_set_tdma()
1612 btc->btc_set(btc, BTC_SET_ACT_POST_NORMAL_LPS, NULL); in rtw_btc_set_tdma()
1616 void rtw_btc_tdma(struct btc_coexist *btc, boolean force_exec, u32 tcase) in rtw_btc_tdma() argument
1618 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_tdma()
1619 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_tdma()
1620 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_tdma()
1624 btc->btc_get(btc, BTC_GET_BL_WIFI_BUSY, &wifi_busy); in rtw_btc_tdma()
1626 btc->btc_set_atomic(btc, &coex_dm->setting_tdma, TRUE); in rtw_btc_tdma()
1632 rtw_btc_set_tdma_timer_base(btc, 3); in rtw_btc_tdma()
1634 rtw_btc_set_tdma_timer_base(btc, 0); in rtw_btc_tdma()
1649 btc->btc_set_atomic(btc, &coex_dm->setting_tdma, FALSE); in rtw_btc_tdma()
1662 btc->btc_write_scbd(btc, BTC_SCBD_TDMA, FALSE); in rtw_btc_tdma()
1664 btc->btc_write_scbd_32bit(btc, BTC_SCBD_TDMA, FALSE); in rtw_btc_tdma()
1667 btc->btc_write_scbd(btc, BTC_SCBD_TDMA, TRUE); in rtw_btc_tdma()
1669 btc->btc_write_scbd_32bit(btc, BTC_SCBD_TDMA, TRUE); in rtw_btc_tdma()
1672 if (btc->board_info.btdm_ant_num == 1) { in rtw_btc_tdma()
1674 rtw_btc_set_tdma(btc, in rtw_btc_tdma()
1683 rtw_btc_set_tdma(btc, in rtw_btc_tdma()
1699 btc->btc_set_atomic(btc, &coex_dm->setting_tdma, FALSE); in rtw_btc_tdma()
1703 void rtw_btc_set_ant_switch(struct btc_coexist *btc, boolean force_exec, in rtw_btc_set_ant_switch() argument
1706 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_set_ant_switch()
1715 btc->chip_para->chip_setup(btc, BTC_CSETUP_ANT_SWITCH); in rtw_btc_set_ant_switch()
1719 void rtw_btc_set_ant_path(struct btc_coexist *btc, boolean force_exec, in rtw_btc_set_ant_path() argument
1722 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_set_ant_path()
1723 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_set_ant_path()
1724 struct btc_rfe_type *rfe_type = &btc->rfe_type; in rtw_btc_set_ant_path()
1725 struct btc_wifi_link_info_ext *linfo_ext = &btc->wifi_link_info_ext; in rtw_btc_set_ant_path()
1726 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_set_ant_path()
1739 if (btc->chip_para->scbd_support && coex_sta->bt_iqk_state != 0xff) { in rtw_btc_set_ant_path()
1744 if (btc->btc_read_scbd(btc, &scbd) & BIT(5)) in rtw_btc_set_ant_path()
1749 if (btc->btc_read_scbd_32bit(btc, &scbd_32) & BIT(5)) in rtw_btc_set_ant_path()
1756 ((btc->btc_read_1byte(btc, 0x49c) & BIT(0)) || in rtw_btc_set_ant_path()
1789 rtw_btc_coex_ctrl_owner(btc, BTC_OWNER_WL); in rtw_btc_set_ant_path()
1791 rtw_btc_coex_ctrl_owner(btc, BTC_OWNER_BT); in rtw_btc_set_ant_path()
1805 rtw_btc_set_gnt_bt(btc, BTC_GNT_SW_LOW); in rtw_btc_set_ant_path()
1807 rtw_btc_set_gnt_wl(btc, BTC_GNT_SW_HIGH); in rtw_btc_set_ant_path()
1810 rtw_btc_set_gnt_bt(btc, BTC_GNT_SW_HIGH); in rtw_btc_set_ant_path()
1812 rtw_btc_set_gnt_wl(btc, BTC_GNT_SW_LOW); in rtw_btc_set_ant_path()
1816 rtw_btc_coex_ctrl_owner(btc, BTC_OWNER_WL); in rtw_btc_set_ant_path()
1827 rtw_btc_set_gnt_bt(btc, BTC_GNT_SW_LOW); in rtw_btc_set_ant_path()
1829 rtw_btc_set_gnt_wl(btc, BTC_GNT_SW_HIGH); in rtw_btc_set_ant_path()
1831 rtw_btc_coex_ctrl_owner(btc, BTC_OWNER_WL); in rtw_btc_set_ant_path()
1842 rtw_btc_coex_ctrl_owner(btc, BTC_OWNER_BT); in rtw_btc_set_ant_path()
1853 rtw_btc_set_gnt_bt(btc, BTC_GNT_HW_PTA); in rtw_btc_set_ant_path()
1855 rtw_btc_set_gnt_wl(btc, BTC_GNT_HW_PTA); in rtw_btc_set_ant_path()
1858 rtw_btc_coex_ctrl_owner(btc, BTC_OWNER_WL); in rtw_btc_set_ant_path()
1869 strcmp(btc->chip_para->chip_name, "8723f") != 0) { in rtw_btc_set_ant_path()
1872 rtw_btc_set_gnt_bt(btc, BTC_GNT_HW_PTA); in rtw_btc_set_ant_path()
1875 rtw_btc_set_gnt_bt(btc, BTC_GNT_SW_HIGH); in rtw_btc_set_ant_path()
1879 rtw_btc_set_gnt_wl(btc, BTC_GNT_SW_HIGH); in rtw_btc_set_ant_path()
1882 rtw_btc_coex_ctrl_owner(btc, BTC_OWNER_WL); in rtw_btc_set_ant_path()
1893 if (strcmp(btc->chip_para->chip_name, "8723f") == 0) { in rtw_btc_set_ant_path()
1895 rtw_btc_set_gnt_bt(btc, BTC_GNT_SW_HIGH); in rtw_btc_set_ant_path()
1898 rtw_btc_set_gnt_bt(btc, BTC_GNT_HW_PTA); in rtw_btc_set_ant_path()
1902 rtw_btc_set_gnt_wl(btc, BTC_GNT_SW_HIGH); in rtw_btc_set_ant_path()
1905 rtw_btc_coex_ctrl_owner(btc, BTC_OWNER_WL); in rtw_btc_set_ant_path()
1916 rtw_btc_set_gnt_bt(btc, BTC_GNT_HW_PTA); in rtw_btc_set_ant_path()
1918 rtw_btc_set_gnt_wl(btc, BTC_GNT_HW_PTA); in rtw_btc_set_ant_path()
1920 rtw_btc_coex_ctrl_owner(btc, BTC_OWNER_WL); in rtw_btc_set_ant_path()
1931 rtw_btc_set_gnt_bt(btc, BTC_GNT_HW_PTA); in rtw_btc_set_ant_path()
1933 rtw_btc_set_gnt_wl(btc, BTC_GNT_HW_PTA); in rtw_btc_set_ant_path()
1935 rtw_btc_coex_ctrl_owner(btc, BTC_OWNER_WL); in rtw_btc_set_ant_path()
1946 rtw_btc_set_gnt_bt(btc, BTC_GNT_HW_PTA); in rtw_btc_set_ant_path()
1948 rtw_btc_set_gnt_wl(btc, BTC_GNT_HW_PTA); in rtw_btc_set_ant_path()
1950 rtw_btc_coex_ctrl_owner(btc, BTC_OWNER_WL); in rtw_btc_set_ant_path()
1961 rtw_btc_set_gnt_bt(btc, BTC_GNT_SW_HIGH); in rtw_btc_set_ant_path()
1963 rtw_btc_set_gnt_wl(btc, BTC_GNT_SW_LOW); in rtw_btc_set_ant_path()
1965 rtw_btc_coex_ctrl_owner(btc, BTC_OWNER_WL); in rtw_btc_set_ant_path()
1967 btc->stop_coex_dm = TRUE; in rtw_btc_set_ant_path()
1978 rtw_btc_set_gnt_bt(btc, BTC_GNT_HW_PTA); in rtw_btc_set_ant_path()
1980 rtw_btc_set_gnt_wl(btc, BTC_GNT_HW_PTA); in rtw_btc_set_ant_path()
1982 rtw_btc_coex_ctrl_owner(btc, BTC_OWNER_WL); in rtw_btc_set_ant_path()
1991 rtw_btc_set_ant_switch(btc, force_exec, ctrl_type, pos_type); in rtw_btc_set_ant_path()
1994 static u8 rtw_btc_algorithm(struct btc_coexist *btc) in rtw_btc_algorithm() argument
1996 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_algorithm()
2078 static void rtw_btc_action_coex_all_off(struct btc_coexist *btc) in rtw_btc_action_coex_all_off() argument
2085 rtw_btc_set_rf_para(btc, NM_EXCU, btc->chip_para->wl_rf_para_rx[0]); in rtw_btc_action_coex_all_off()
2088 if (btc->board_info.btdm_ant_num == 1) { /* Shared-Ant */ in rtw_btc_action_coex_all_off()
2096 rtw_btc_table(btc, NM_EXCU, table_case); in rtw_btc_action_coex_all_off()
2097 rtw_btc_tdma(btc, NM_EXCU, tdma_case); in rtw_btc_action_coex_all_off()
2100 static void rtw_btc_action_freerun(struct btc_coexist *btc) in rtw_btc_action_freerun() argument
2102 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_action_freerun()
2103 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_action_freerun()
2104 const struct btc_chip_para *cpara = btc->chip_para; in rtw_btc_action_freerun()
2105 struct btc_wifi_link_info_ext *link_info_ext = &btc->wifi_link_info_ext; in rtw_btc_action_freerun()
2110 if (btc->board_info.btdm_ant_num != 2) in rtw_btc_action_freerun()
2128 rtw_btc_update_wl_ch_info(btc, BTC_MEDIA_CONNECT); in rtw_btc_action_freerun()
2130 rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_2G_FREERUN); in rtw_btc_action_freerun()
2133 btc->btc_write_scbd(btc, BTC_SCBD_FIX2M, FALSE); in rtw_btc_action_freerun()
2135 btc->btc_write_scbd_32bit(btc, BTC_SCBD_FIX2M, FALSE); in rtw_btc_action_freerun()
2170 rtw_btc_set_rf_para(btc, NM_EXCU, cpara->wl_rf_para_rx[0]); in rtw_btc_action_freerun()
2172 rtw_btc_set_rf_para(btc, NM_EXCU, cpara->wl_rf_para_tx[level]); in rtw_btc_action_freerun()
2174 rtw_btc_set_rf_para(btc, NM_EXCU, cpara->wl_rf_para_rx[level]); in rtw_btc_action_freerun()
2176 rtw_btc_table(btc, NM_EXCU, 100); in rtw_btc_action_freerun()
2177 rtw_btc_tdma(btc, NM_EXCU, 100); in rtw_btc_action_freerun()
2180 static void rtw_btc_action_rf4ce(struct btc_coexist *btc) in rtw_btc_action_rf4ce() argument
2182 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_action_rf4ce()
2183 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_action_rf4ce()
2189 rtw_btc_set_rf_para(btc, NM_EXCU, chip_para->wl_rf_para_rx[0]); in rtw_btc_action_rf4ce()
2190 rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_2G); in rtw_btc_action_rf4ce()
2198 rtw_btc_set_extend_btautoslot(btc, 0x3c); in rtw_btc_action_rf4ce()
2200 rtw_btc_set_extend_btautoslot(btc, 0x32); in rtw_btc_action_rf4ce()
2202 rtw_btc_table(btc, NM_EXCU, table_case); in rtw_btc_action_rf4ce()
2203 rtw_btc_tdma(btc, NM_EXCU, tdma_case); in rtw_btc_action_rf4ce()
2209 rtw_btc_table(btc, NM_EXCU, table_case); in rtw_btc_action_rf4ce()
2210 rtw_btc_tdma(btc, NM_EXCU, tdma_case); in rtw_btc_action_rf4ce()
2215 static void rtw_btc_action_ext_chip(struct btc_coexist *btc) in rtw_btc_action_ext_chip() argument
2217 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_action_ext_chip()
2219 if (btc->board_info.ext_chip_id == BTC_EXT_CHIP_RF4CE) in rtw_btc_action_ext_chip()
2220 rtw_btc_action_rf4ce(btc); in rtw_btc_action_ext_chip()
2223 u8 rtw_btc_action_rf4ce_new_tdma(struct btc_coexist *btc, u8 type) in rtw_btc_action_rf4ce_new_tdma() argument
2225 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_action_rf4ce_new_tdma()
2226 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_action_rf4ce_new_tdma()
2250 rtw_btc_set_extend_btautoslot(btc, 0x3c); in rtw_btc_action_rf4ce_new_tdma()
2252 rtw_btc_set_extend_btautoslot(btc, 0x32); in rtw_btc_action_rf4ce_new_tdma()
2262 rtw_btc_set_extend_btautoslot(btc, 0x3c); in rtw_btc_action_rf4ce_new_tdma()
2264 rtw_btc_set_extend_btautoslot(btc, 0x32); in rtw_btc_action_rf4ce_new_tdma()
2276 u8 rtw_btc_ext_chip_new_tdma(struct btc_coexist *btc, u8 type) in rtw_btc_ext_chip_new_tdma() argument
2278 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_ext_chip_new_tdma()
2281 if (btc->board_info.ext_chip_id == BTC_EXT_CHIP_RF4CE) in rtw_btc_ext_chip_new_tdma()
2282 tdma_case = rtw_btc_action_rf4ce_new_tdma(btc, type); in rtw_btc_ext_chip_new_tdma()
2287 static void rtw_btc_action_bt_whql_test(struct btc_coexist *btc) in rtw_btc_action_bt_whql_test() argument
2294 rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_2G); in rtw_btc_action_bt_whql_test()
2295 rtw_btc_set_rf_para(btc, NM_EXCU, btc->chip_para->wl_rf_para_rx[0]); in rtw_btc_action_bt_whql_test()
2297 if (btc->board_info.btdm_ant_num == 1) { /* Shared-Ant */ in rtw_btc_action_bt_whql_test()
2305 rtw_btc_table(btc, NM_EXCU, table_case); in rtw_btc_action_bt_whql_test()
2306 rtw_btc_tdma(btc, NM_EXCU, tdma_case); in rtw_btc_action_bt_whql_test()
2309 static void rtw_btc_action_bt_relink(struct btc_coexist *btc) in rtw_btc_action_bt_relink() argument
2311 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_action_bt_relink()
2318 rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_2G); in rtw_btc_action_bt_relink()
2319 rtw_btc_set_rf_para(btc, NM_EXCU, btc->chip_para->wl_rf_para_rx[0]); in rtw_btc_action_bt_relink()
2321 if (btc->board_info.btdm_ant_num == 1) { /* Shared-Ant */ in rtw_btc_action_bt_relink()
2344 btc->board_info.ext_chip_id != BTC_EXT_CHIP_NONE) in rtw_btc_action_bt_relink()
2345 tdma_case = rtw_btc_ext_chip_new_tdma(btc, 1); in rtw_btc_action_bt_relink()
2348 rtw_btc_table(btc, NM_EXCU, table_case); in rtw_btc_action_bt_relink()
2349 rtw_btc_tdma(btc, NM_EXCU, tdma_case | slot_type); in rtw_btc_action_bt_relink()
2352 static void rtw_btc_action_bt_idle(struct btc_coexist *btc) in rtw_btc_action_bt_idle() argument
2354 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_action_bt_idle()
2355 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_action_bt_idle()
2356 struct btc_rfe_type *rfe_type = &btc->rfe_type; in rtw_btc_action_bt_idle()
2357 struct btc_wifi_link_info *link_info = &btc->wifi_link_info; in rtw_btc_action_bt_idle()
2363 rtw_btc_set_rf_para(btc, NM_EXCU, btc->chip_para->wl_rf_para_rx[0]); in rtw_btc_action_bt_idle()
2367 if (btc->board_info.btdm_ant_num == 1 && in rtw_btc_action_bt_idle()
2372 } else if (btc->board_info.btdm_ant_num == 2) { in rtw_btc_action_bt_idle()
2378 rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_2G_FREERUN); in rtw_btc_action_bt_idle()
2383 rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_2G); in rtw_btc_action_bt_idle()
2387 if (btc->board_info.btdm_ant_num == 1) { /* Shared-Ant */ in rtw_btc_action_bt_idle()
2398 if (btc->board_info.btdm_ant_num == 1) { /* Shared-Ant */ in rtw_btc_action_bt_idle()
2430 btc->board_info.ext_chip_id != BTC_EXT_CHIP_NONE) in rtw_btc_action_bt_idle()
2431 tdma_case = rtw_btc_ext_chip_new_tdma(btc, 0); in rtw_btc_action_bt_idle()
2435 rtw_btc_table(btc, NM_EXCU, table_case); in rtw_btc_action_bt_idle()
2436 rtw_btc_tdma(btc, NM_EXCU, tdma_case); in rtw_btc_action_bt_idle()
2439 static void rtw_btc_action_bt_inquiry(struct btc_coexist *btc) in rtw_btc_action_bt_inquiry() argument
2441 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_action_bt_inquiry()
2442 struct btc_wifi_link_info_ext *link_info_ext = &btc->wifi_link_info_ext; in rtw_btc_action_bt_inquiry()
2450 rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_2G); in rtw_btc_action_bt_inquiry()
2451 rtw_btc_set_rf_para(btc, NM_EXCU, btc->chip_para->wl_rf_para_rx[0]); in rtw_btc_action_bt_inquiry()
2457 if (btc->board_info.btdm_ant_num == 1) { /* Shared-Ant */ in rtw_btc_action_bt_inquiry()
2536 rtw_btc_table(btc, NM_EXCU, table_case); in rtw_btc_action_bt_inquiry()
2537 rtw_btc_tdma(btc, NM_EXCU, tdma_case | slot_type); in rtw_btc_action_bt_inquiry()
2540 static void rtw_btc_action_bt_hfp(struct btc_coexist *btc) in rtw_btc_action_bt_hfp() argument
2542 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_action_bt_hfp()
2548 rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_2G); in rtw_btc_action_bt_hfp()
2549 rtw_btc_set_rf_para(btc, NM_EXCU, btc->chip_para->wl_rf_para_rx[0]); in rtw_btc_action_bt_hfp()
2551 if (btc->board_info.btdm_ant_num == 1) { /* Shared-Ant */ in rtw_btc_action_bt_hfp()
2570 rtw_btc_table(btc, NM_EXCU, table_case); in rtw_btc_action_bt_hfp()
2571 rtw_btc_tdma(btc, NM_EXCU, tdma_case); in rtw_btc_action_bt_hfp()
2574 static void rtw_btc_action_bt_hid(struct btc_coexist *btc) in rtw_btc_action_bt_hid() argument
2576 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_action_bt_hid()
2584 rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_2G); in rtw_btc_action_bt_hid()
2585 rtw_btc_set_rf_para(btc, NM_EXCU, btc->chip_para->wl_rf_para_rx[0]); in rtw_btc_action_bt_hid()
2591 if (btc->board_info.btdm_ant_num == 1) { /* Shared-Ant */ in rtw_btc_action_bt_hid()
2646 rtw_btc_table(btc, NM_EXCU, table_case); in rtw_btc_action_bt_hid()
2648 rtw_btc_wltoggle_tableA(btc, FC_EXCU, table_case); in rtw_btc_action_bt_hid()
2649 rtw_btc_wltoggle_tableB(btc, NM_EXCU, 1, 0x5a5a5aaa); in rtw_btc_action_bt_hid()
2652 rtw_btc_tdma(btc, NM_EXCU, tdma_case | slot_type); in rtw_btc_action_bt_hid()
2655 static void rtw_btc_action_bt_a2dp(struct btc_coexist *btc) in rtw_btc_action_bt_a2dp() argument
2657 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_action_bt_a2dp()
2658 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_action_bt_a2dp()
2665 rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_2G); in rtw_btc_action_bt_a2dp()
2666 rtw_btc_set_rf_para(btc, NM_EXCU, btc->chip_para->wl_rf_para_rx[0]); in rtw_btc_action_bt_a2dp()
2670 if (btc->board_info.btdm_ant_num == 1) { /* Shared-Ant */ in rtw_btc_action_bt_a2dp()
2685 rtw_btc_table(btc, NM_EXCU, table_case); in rtw_btc_action_bt_a2dp()
2686 rtw_btc_tdma(btc, NM_EXCU, tdma_case | slot_type); in rtw_btc_action_bt_a2dp()
2689 static void rtw_btc_action_bt_a2dpsink(struct btc_coexist *btc) in rtw_btc_action_bt_a2dpsink() argument
2691 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_action_bt_a2dpsink()
2692 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_action_bt_a2dpsink()
2693 struct btc_wifi_link_info_ext *linfo_ext = &btc->wifi_link_info_ext; in rtw_btc_action_bt_a2dpsink()
2699 rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_2G); in rtw_btc_action_bt_a2dpsink()
2700 rtw_btc_set_rf_para(btc, NM_EXCU, btc->chip_para->wl_rf_para_rx[0]); in rtw_btc_action_bt_a2dpsink()
2702 if (btc->board_info.btdm_ant_num == 1) { /* Shared-Ant */ in rtw_btc_action_bt_a2dpsink()
2723 rtw_btc_table(btc, NM_EXCU, table_case); in rtw_btc_action_bt_a2dpsink()
2724 rtw_btc_tdma(btc, NM_EXCU, tdma_case); in rtw_btc_action_bt_a2dpsink()
2727 static void rtw_btc_action_bt_pan(struct btc_coexist *btc) in rtw_btc_action_bt_pan() argument
2729 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_action_bt_pan()
2735 rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_2G); in rtw_btc_action_bt_pan()
2736 rtw_btc_set_rf_para(btc, NM_EXCU, btc->chip_para->wl_rf_para_rx[0]); in rtw_btc_action_bt_pan()
2738 if (btc->board_info.btdm_ant_num == 1) { /* Shared-Ant */ in rtw_btc_action_bt_pan()
2758 rtw_btc_set_bt_golden_rx_range(btc, NM_EXCU, 3, 20); in rtw_btc_action_bt_pan()
2760 rtw_btc_set_bt_golden_rx_range(btc, NM_EXCU, 3, 0); in rtw_btc_action_bt_pan()
2762 rtw_btc_table(btc, NM_EXCU, table_case); in rtw_btc_action_bt_pan()
2763 rtw_btc_tdma(btc, NM_EXCU, tdma_case); in rtw_btc_action_bt_pan()
2766 static void rtw_btc_action_bt_a2dp_hid(struct btc_coexist *btc) in rtw_btc_action_bt_a2dp_hid() argument
2768 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_action_bt_a2dp_hid()
2769 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_action_bt_a2dp_hid()
2777 rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_2G); in rtw_btc_action_bt_a2dp_hid()
2778 rtw_btc_set_rf_para(btc, NM_EXCU, btc->chip_para->wl_rf_para_rx[0]); in rtw_btc_action_bt_a2dp_hid()
2783 if (btc->board_info.btdm_ant_num == 1) { /* Shared-Ant */ in rtw_btc_action_bt_a2dp_hid()
2811 rtw_btc_table(btc, NM_EXCU, table_case); in rtw_btc_action_bt_a2dp_hid()
2813 rtw_btc_wltoggle_tableA(btc, FC_EXCU, table_case); in rtw_btc_action_bt_a2dp_hid()
2814 rtw_btc_wltoggle_tableB(btc, NM_EXCU, interval, tableB); in rtw_btc_action_bt_a2dp_hid()
2817 rtw_btc_tdma(btc, NM_EXCU, tdma_case | slot_type); in rtw_btc_action_bt_a2dp_hid()
2820 static void rtw_btc_action_bt_a2dp_pan(struct btc_coexist *btc) in rtw_btc_action_bt_a2dp_pan() argument
2822 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_action_bt_a2dp_pan()
2823 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_action_bt_a2dp_pan()
2824 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_action_bt_a2dp_pan()
2831 if (btc->board_info.customer_id == RT_CID_LENOVO_CHINA && in rtw_btc_action_bt_a2dp_pan()
2841 rtw_btc_set_rf_para(btc, NM_EXCU, chip_para->wl_rf_para_rx[1]); in rtw_btc_action_bt_a2dp_pan()
2843 rtw_btc_set_rf_para(btc, NM_EXCU, chip_para->wl_rf_para_rx[0]); in rtw_btc_action_bt_a2dp_pan()
2845 rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_2G); in rtw_btc_action_bt_a2dp_pan()
2846 if (btc->board_info.btdm_ant_num == 1) { /* Shared-Ant */ in rtw_btc_action_bt_a2dp_pan()
2880 rtw_btc_set_extend_btautoslot(btc, 0x3c); in rtw_btc_action_bt_a2dp_pan()
2882 rtw_btc_set_extend_btautoslot(btc, 0x32); in rtw_btc_action_bt_a2dp_pan()
2884 rtw_btc_table(btc, NM_EXCU, table_case); in rtw_btc_action_bt_a2dp_pan()
2885 rtw_btc_tdma(btc, NM_EXCU, tdma_case); in rtw_btc_action_bt_a2dp_pan()
2888 static void rtw_btc_action_bt_pan_hid(struct btc_coexist *btc) in rtw_btc_action_bt_pan_hid() argument
2890 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_action_bt_pan_hid()
2896 rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_2G); in rtw_btc_action_bt_pan_hid()
2897 rtw_btc_set_rf_para(btc, NM_EXCU, btc->chip_para->wl_rf_para_rx[0]); in rtw_btc_action_bt_pan_hid()
2899 if (btc->board_info.btdm_ant_num == 1) { /* Shared-Ant */ in rtw_btc_action_bt_pan_hid()
2915 rtw_btc_table(btc, NM_EXCU, table_case); in rtw_btc_action_bt_pan_hid()
2916 rtw_btc_tdma(btc, NM_EXCU, tdma_case); in rtw_btc_action_bt_pan_hid()
2919 static void rtw_btc_action_bt_a2dp_pan_hid(struct btc_coexist *btc) in rtw_btc_action_bt_a2dp_pan_hid() argument
2921 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_action_bt_a2dp_pan_hid()
2927 rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_2G); in rtw_btc_action_bt_a2dp_pan_hid()
2928 rtw_btc_set_rf_para(btc, NM_EXCU, btc->chip_para->wl_rf_para_rx[0]); in rtw_btc_action_bt_a2dp_pan_hid()
2930 if (btc->board_info.btdm_ant_num == 1) { /* Shared-Ant */ in rtw_btc_action_bt_a2dp_pan_hid()
2947 rtw_btc_set_extend_btautoslot(btc, 0x3c); in rtw_btc_action_bt_a2dp_pan_hid()
2949 rtw_btc_set_extend_btautoslot(btc, 0x32); in rtw_btc_action_bt_a2dp_pan_hid()
2951 rtw_btc_table(btc, NM_EXCU, table_case); in rtw_btc_action_bt_a2dp_pan_hid()
2952 rtw_btc_tdma(btc, NM_EXCU, tdma_case); in rtw_btc_action_bt_a2dp_pan_hid()
2955 static void rtw_btc_action_wl_off(struct btc_coexist *btc) in rtw_btc_action_wl_off() argument
2957 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_action_wl_off()
2959 rtw_btc_tdma(btc, FC_EXCU, 0); in rtw_btc_action_wl_off()
2960 rtw_btc_ignore_wlan_act(btc, FC_EXCU, TRUE); in rtw_btc_action_wl_off()
2961 rtw_btc_set_ant_path(btc, FC_EXCU, BTC_ANT_WOFF); in rtw_btc_action_wl_off()
2962 rtw_btc_set_rf_para(btc, NM_EXCU, btc->chip_para->wl_rf_para_rx[0]); in rtw_btc_action_wl_off()
2964 btc->stop_coex_dm = TRUE; in rtw_btc_action_wl_off()
2965 btc->wl_rf_state_off = TRUE; in rtw_btc_action_wl_off()
2968 rtw_btc_update_wl_ch_info(btc, BTC_MEDIA_DISCONNECT); in rtw_btc_action_wl_off()
2970 btc->btc_write_scbd(btc, BTC_SCBD_ALL, FALSE); in rtw_btc_action_wl_off()
2972 btc->btc_write_scbd_32bit(btc, BTC_SCBD_ALL_32BIT, FALSE); in rtw_btc_action_wl_off()
2975 static void rtw_btc_action_wl_under5g(struct btc_coexist *btc) in rtw_btc_action_wl_under5g() argument
2978 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_action_wl_under5g()
2983 rtw_btc_set_ant_path(btc, FC_EXCU, BTC_ANT_5G); in rtw_btc_action_wl_under5g()
2984 rtw_btc_set_rf_para(btc, NM_EXCU, btc->chip_para->wl_rf_para_rx[0]); in rtw_btc_action_wl_under5g()
2987 btc->btc_write_scbd(btc, BTC_SCBD_FIX2M, FALSE); in rtw_btc_action_wl_under5g()
2989 btc->btc_write_scbd_32bit(btc, BTC_SCBD_FIX2M, FALSE); in rtw_btc_action_wl_under5g()
2991 if (btc->board_info.btdm_ant_num == 1) { /* Shared-Ant */ in rtw_btc_action_wl_under5g()
2999 rtw_btc_table(btc, NM_EXCU, table_case); in rtw_btc_action_wl_under5g()
3000 rtw_btc_tdma(btc, NM_EXCU, tdma_case); in rtw_btc_action_wl_under5g()
3003 static void rtw_btc_action_wl_only(struct btc_coexist *btc) in rtw_btc_action_wl_only() argument
3005 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_action_wl_only()
3008 rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_2G); in rtw_btc_action_wl_only()
3009 rtw_btc_set_rf_para(btc, NM_EXCU, btc->chip_para->wl_rf_para_rx[0]); in rtw_btc_action_wl_only()
3014 if (btc->board_info.btdm_ant_num == 1) { /* Shared-Ant */ in rtw_btc_action_wl_only()
3021 btc->board_info.ext_chip_id != BTC_EXT_CHIP_NONE) in rtw_btc_action_wl_only()
3022 tdma_case = rtw_btc_ext_chip_new_tdma(btc, 3); in rtw_btc_action_wl_only()
3025 rtw_btc_table(btc, NM_EXCU, table_case); in rtw_btc_action_wl_only()
3026 rtw_btc_tdma(btc, NM_EXCU, tdma_case); in rtw_btc_action_wl_only()
3029 static void rtw_btc_action_wl_native_lps(struct btc_coexist *btc) in rtw_btc_action_wl_native_lps() argument
3031 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_action_wl_native_lps()
3032 struct btc_wifi_link_info_ext *link_info_ext = &btc->wifi_link_info_ext; in rtw_btc_action_wl_native_lps()
3041 rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_2G); in rtw_btc_action_wl_native_lps()
3042 rtw_btc_set_rf_para(btc, NM_EXCU, btc->chip_para->wl_rf_para_rx[0]); in rtw_btc_action_wl_native_lps()
3044 if (btc->board_info.btdm_ant_num == 1) { /* Shared-Ant */ in rtw_btc_action_wl_native_lps()
3052 rtw_btc_table(btc, NM_EXCU, table_case); in rtw_btc_action_wl_native_lps()
3053 rtw_btc_tdma(btc, NM_EXCU, tdma_case); in rtw_btc_action_wl_native_lps()
3056 static void rtw_btc_action_wl_linkscan(struct btc_coexist *btc) in rtw_btc_action_wl_linkscan() argument
3058 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_action_wl_linkscan()
3059 struct btc_wifi_link_info_ext *link_info_ext = &btc->wifi_link_info_ext; in rtw_btc_action_wl_linkscan()
3066 rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_2G); in rtw_btc_action_wl_linkscan()
3067 rtw_btc_set_rf_para(btc, NM_EXCU, btc->chip_para->wl_rf_para_rx[0]); in rtw_btc_action_wl_linkscan()
3069 if (btc->board_info.btdm_ant_num == 1) { /* Shared-Ant */ in rtw_btc_action_wl_linkscan()
3101 btc->board_info.ext_chip_id != BTC_EXT_CHIP_NONE) in rtw_btc_action_wl_linkscan()
3102 tdma_case = rtw_btc_ext_chip_new_tdma(btc, 2); in rtw_btc_action_wl_linkscan()
3105 rtw_btc_table(btc, NM_EXCU, table_case); in rtw_btc_action_wl_linkscan()
3106 rtw_btc_tdma(btc, NM_EXCU, tdma_case | slot_type); in rtw_btc_action_wl_linkscan()
3109 static void rtw_btc_action_wl_not_connected(struct btc_coexist *btc) in rtw_btc_action_wl_not_connected() argument
3111 struct btc_wifi_link_info_ext *link_info_ext = &btc->wifi_link_info_ext; in rtw_btc_action_wl_not_connected()
3112 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_action_wl_not_connected()
3120 rtw_btc_set_wl_pri_mask(btc, BTC_WLPRI_RX_CCK, 0); in rtw_btc_action_wl_not_connected()
3127 rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_2G); in rtw_btc_action_wl_not_connected()
3128 rtw_btc_set_rf_para(btc, NM_EXCU, btc->chip_para->wl_rf_para_rx[0]); in rtw_btc_action_wl_not_connected()
3130 if (btc->board_info.btdm_ant_num == 1) { /* Shared-Ant */ in rtw_btc_action_wl_not_connected()
3138 rtw_btc_table(btc, NM_EXCU, table_case); in rtw_btc_action_wl_not_connected()
3139 rtw_btc_tdma(btc, NM_EXCU, tdma_case); in rtw_btc_action_wl_not_connected()
3142 static void rtw_btc_action_wl_connected(struct btc_coexist *btc) in rtw_btc_action_wl_connected() argument
3144 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_action_wl_connected()
3151 rtw_btc_wl_leakap(btc, TRUE); in rtw_btc_action_wl_connected()
3153 if ((btc->board_info.btdm_ant_num == 2) && in rtw_btc_action_wl_connected()
3154 (btc->board_info.ext_chip_id != BTC_EXT_CHIP_NONE)) { in rtw_btc_action_wl_connected()
3155 rtw_btc_action_ext_chip(btc); in rtw_btc_action_wl_connected()
3159 algorithm = rtw_btc_algorithm(btc); in rtw_btc_action_wl_connected()
3163 if (rtw_btc_freerun_check(btc)) in rtw_btc_action_wl_connected()
3164 rtw_btc_action_freerun(btc); in rtw_btc_action_wl_connected()
3166 rtw_btc_action_bt_hfp(btc); in rtw_btc_action_wl_connected()
3169 if (rtw_btc_freerun_check(btc)) in rtw_btc_action_wl_connected()
3170 rtw_btc_action_freerun(btc); in rtw_btc_action_wl_connected()
3172 rtw_btc_action_bt_hid(btc); in rtw_btc_action_wl_connected()
3175 if (rtw_btc_freerun_check(btc)) in rtw_btc_action_wl_connected()
3176 rtw_btc_action_freerun(btc); in rtw_btc_action_wl_connected()
3178 rtw_btc_action_bt_a2dpsink(btc); in rtw_btc_action_wl_connected()
3180 rtw_btc_action_bt_a2dp(btc); in rtw_btc_action_wl_connected()
3183 rtw_btc_action_bt_pan(btc); in rtw_btc_action_wl_connected()
3186 if (rtw_btc_freerun_check(btc)) in rtw_btc_action_wl_connected()
3187 rtw_btc_action_freerun(btc); in rtw_btc_action_wl_connected()
3189 rtw_btc_action_bt_a2dp_hid(btc); in rtw_btc_action_wl_connected()
3192 rtw_btc_action_bt_a2dp_pan(btc); in rtw_btc_action_wl_connected()
3195 rtw_btc_action_bt_pan_hid(btc); in rtw_btc_action_wl_connected()
3198 rtw_btc_action_bt_a2dp_pan_hid(btc); in rtw_btc_action_wl_connected()
3202 rtw_btc_action_bt_idle(btc); in rtw_btc_action_wl_connected()
3207 static void rtw_btc_action_wl_mcc25g(struct btc_coexist *btc) in rtw_btc_action_wl_mcc25g() argument
3209 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_action_wl_mcc25g()
3210 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_action_wl_mcc25g()
3213 rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_MCC); in rtw_btc_action_wl_mcc25g()
3214 rtw_btc_set_rf_para(btc, NM_EXCU, btc->chip_para->wl_rf_para_rx[0]); in rtw_btc_action_wl_mcc25g()
3217 btc->btc_write_scbd(btc, BTC_SCBD_FIX2M, FALSE); in rtw_btc_action_wl_mcc25g()
3219 btc->btc_write_scbd_32bit(btc, BTC_SCBD_FIX2M, FALSE); in rtw_btc_action_wl_mcc25g()
3221 if (btc->board_info.btdm_ant_num == 1) { /* Shared-Ant */ in rtw_btc_action_wl_mcc25g()
3277 rtw_btc_table(btc, NM_EXCU, table_case); in rtw_btc_action_wl_mcc25g()
3278 rtw_btc_tdma(btc, NM_EXCU, tdma_case); in rtw_btc_action_wl_mcc25g()
3281 static void rtw_btc_action_wl_scc2g(struct btc_coexist *btc) in rtw_btc_action_wl_scc2g() argument
3283 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_action_wl_scc2g()
3332 rtw_btc_table(btc, NM_EXCU, table_case); in rtw_btc_action_wl_scc2g()
3334 rtw_btc_wltoggle_tableA(btc, FC_EXCU, table_case); in rtw_btc_action_wl_scc2g()
3335 rtw_btc_wltoggle_tableB(btc, NM_EXCU, 1, 0x5a5a5aaa); in rtw_btc_action_wl_scc2g()
3338 rtw_btc_tdma(btc, NM_EXCU, tdma_case | slot_type); in rtw_btc_action_wl_scc2g()
3341 static void rtw_btc_action_wl_p2p2g(struct btc_coexist *btc) in rtw_btc_action_wl_p2p2g() argument
3343 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_action_wl_p2p2g()
3344 struct btc_rfe_type *rfe_type = &btc->rfe_type; in rtw_btc_action_wl_p2p2g()
3345 struct btc_wifi_link_info *link_info = &btc->wifi_link_info; in rtw_btc_action_wl_p2p2g()
3346 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_action_wl_p2p2g()
3354 rtw_btc_set_rf_para(btc, NM_EXCU, btc->chip_para->wl_rf_para_rx[0]); in rtw_btc_action_wl_p2p2g()
3357 btc->btc_write_scbd(btc, BTC_SCBD_FIX2M, FALSE); in rtw_btc_action_wl_p2p2g()
3359 btc->btc_write_scbd_32bit(btc, BTC_SCBD_FIX2M, FALSE); in rtw_btc_action_wl_p2p2g()
3365 rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_2G); in rtw_btc_action_wl_p2p2g()
3369 } else if (btc->board_info.btdm_ant_num == 2) { /* Non-Shared-Ant */ in rtw_btc_action_wl_p2p2g()
3374 rtw_btc_action_freerun(btc); in rtw_btc_action_wl_p2p2g()
3380 rtw_btc_set_ant_path(btc, NM_EXCU, ant_phase); in rtw_btc_action_wl_p2p2g()
3389 rtw_btc_set_ant_path(btc, NM_EXCU, ant_phase); in rtw_btc_action_wl_p2p2g()
3398 rtw_btc_set_ant_path(btc, NM_EXCU, ant_phase); in rtw_btc_action_wl_p2p2g()
3400 if (btc->chip_interface == BTC_INTF_PCI && in rtw_btc_action_wl_p2p2g()
3414 rtw_btc_action_wl_linkscan(btc); in rtw_btc_action_wl_p2p2g()
3423 rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_2G); in rtw_btc_action_wl_p2p2g()
3424 rtw_btc_action_wl_scc2g(btc); in rtw_btc_action_wl_p2p2g()
3428 rtw_btc_set_ant_path(btc, NM_EXCU, BTC_ANT_2G); in rtw_btc_action_wl_p2p2g()
3430 if (btc->chip_interface == BTC_INTF_PCI && in rtw_btc_action_wl_p2p2g()
3440 rtw_btc_set_ant_path(btc, NM_EXCU, ant_phase); in rtw_btc_action_wl_p2p2g()
3448 rtw_btc_table(btc, NM_EXCU, table_case); in rtw_btc_action_wl_p2p2g()
3449 rtw_btc_tdma(btc, NM_EXCU, tdma_case); in rtw_btc_action_wl_p2p2g()
3453 static void rtw_btc_run_coex(struct btc_coexist *btc, u8 reason) in rtw_btc_run_coex() argument
3455 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_run_coex()
3456 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_run_coex()
3457 struct btc_wifi_link_info_ext *link_info_ext = &btc->wifi_link_info_ext; in rtw_btc_run_coex()
3458 struct btc_wifi_link_info *link_info = &btc->wifi_link_info; in rtw_btc_run_coex()
3459 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_run_coex()
3468 rtw_btc_update_wl_link_info(btc, reason); in rtw_btc_run_coex()
3470 rtw_btc_monitor_bt_enable(btc); in rtw_btc_run_coex()
3472 if (btc->manual_control) { in rtw_btc_run_coex()
3479 if (btc->stop_coex_dm) { in rtw_btc_run_coex()
3514 rtw_btc_action_wl_under5g(btc); in rtw_btc_run_coex()
3520 rtw_btc_action_wl_mcc25g(btc); in rtw_btc_run_coex()
3535 rtw_btc_action_wl_p2p2g(btc); in rtw_btc_run_coex()
3547 rtw_btc_action_wl_not_connected(btc); in rtw_btc_run_coex()
3549 rtw_btc_action_wl_only(btc); in rtw_btc_run_coex()
3554 rtw_btc_action_wl_native_lps(btc); in rtw_btc_run_coex()
3559 rtw_btc_action_bt_whql_test(btc); in rtw_btc_run_coex()
3564 rtw_btc_action_bt_relink(btc); in rtw_btc_run_coex()
3569 rtw_btc_action_bt_inquiry(btc); in rtw_btc_run_coex()
3576 rtw_btc_action_bt_idle(btc); in rtw_btc_run_coex()
3581 rtw_btc_action_wl_linkscan(btc); in rtw_btc_run_coex()
3586 rtw_btc_action_wl_connected(btc); in rtw_btc_run_coex()
3589 rtw_btc_action_wl_not_connected(btc); in rtw_btc_run_coex()
3598 rtw_btc_mimo_ps(btc, FC_EXCU, 1); in rtw_btc_run_coex()
3600 rtw_btc_mimo_ps(btc, FC_EXCU, 0); in rtw_btc_run_coex()
3603 rtw_btc_gnt_workaround(btc, NM_EXCU, coex_sta->wl_coex_mode); in rtw_btc_run_coex()
3604 rtw_btc_limited_wl(btc); in rtw_btc_run_coex()
3607 static void rtw_btc_init_coex_var(struct btc_coexist *btc) in rtw_btc_init_coex_var() argument
3609 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_init_coex_var()
3610 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_init_coex_var()
3611 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_init_coex_var()
3615 btc->btc_set(btc, BTC_SET_RESET_COEX_VAR, NULL); in rtw_btc_init_coex_var()
3631 btc->bt_info.bt_get_fw_ver = 0; in rtw_btc_init_coex_var()
3635 rtw_btc_init_hw_config(struct btc_coexist *btc, boolean wifi_only) in rtw_btc_init_hw_config() argument
3637 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_init_hw_config()
3638 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_init_hw_config()
3645 rtw_btc_init_coex_var(btc); in rtw_btc_init_hw_config()
3648 coex_sta->kt_ver = (btc->btc_read_1byte(btc, 0xf1) & 0xf0) >> 4; in rtw_btc_init_hw_config()
3650 rtw_btc_monitor_bt_enable(btc); in rtw_btc_init_hw_config()
3653 btc->btc_write_1byte_bitmask(btc, REG_BCN_CTRL, BIT_EN_BCN_FUNCTION, in rtw_btc_init_hw_config()
3657 btc->chip_para->chip_setup(btc, BTC_CSETUP_RFE_TYPE); in rtw_btc_init_hw_config()
3660 btc->chip_para->chip_setup(btc, BTC_CSETUP_INIT_HW); in rtw_btc_init_hw_config()
3663 rtw_btc_set_wl_pri_mask(btc, BTC_WLPRI_TX_RSP, 1); in rtw_btc_init_hw_config()
3666 rtw_btc_set_wl_pri_mask(btc, BTC_WLPRI_TX_BEACON, 1); in rtw_btc_init_hw_config()
3669 rtw_btc_set_wl_pri_mask(btc, BTC_WLPRI_TX_BEACONQ, 1); in rtw_btc_init_hw_config()
3672 if (btc->wl_rf_state_off) { in rtw_btc_init_hw_config()
3673 rtw_btc_set_ant_path(btc, FC_EXCU, BTC_ANT_WOFF); in rtw_btc_init_hw_config()
3675 btc->btc_write_scbd(btc, BTC_SCBD_ALL, FALSE); in rtw_btc_init_hw_config()
3677 btc->btc_write_scbd_32bit(btc, BTC_SCBD_ALL_32BIT, FALSE); in rtw_btc_init_hw_config()
3678 btc->stop_coex_dm = TRUE; in rtw_btc_init_hw_config()
3684 rtw_btc_set_ant_path(btc, FC_EXCU, BTC_ANT_WONLY); in rtw_btc_init_hw_config()
3686 btc->btc_write_scbd(btc, BTC_SCBD_ACTIVE | BTC_SCBD_ON, TRUE); in rtw_btc_init_hw_config()
3688 btc->btc_write_scbd_32bit(btc, BTC_SCBD_ACTIVE | BTC_SCBD_ON, TRUE); in rtw_btc_init_hw_config()
3689 btc->stop_coex_dm = TRUE; in rtw_btc_init_hw_config()
3691 rtw_btc_set_ant_path(btc, FC_EXCU, BTC_ANT_INIT); in rtw_btc_init_hw_config()
3693 btc->btc_write_scbd(btc, BTC_SCBD_ACTIVE | BTC_SCBD_ON, TRUE); in rtw_btc_init_hw_config()
3695 btc->btc_write_scbd_32bit(btc, BTC_SCBD_ACTIVE | BTC_SCBD_ON, TRUE); in rtw_btc_init_hw_config()
3696 btc->stop_coex_dm = FALSE; in rtw_btc_init_hw_config()
3701 rtw_btc_table(btc, FC_EXCU, table_case); in rtw_btc_init_hw_config()
3702 rtw_btc_tdma(btc, FC_EXCU, tdma_case); in rtw_btc_init_hw_config()
3704 rtw_btc_query_bt_info(btc); in rtw_btc_init_hw_config()
3707 void rtw_btc_ex_power_on_setting(struct btc_coexist *btc) in rtw_btc_ex_power_on_setting() argument
3709 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_ex_power_on_setting()
3710 struct btc_board_info *board_info = &btc->board_info; in rtw_btc_ex_power_on_setting()
3716 btc->stop_coex_dm = TRUE; in rtw_btc_ex_power_on_setting()
3717 btc->wl_rf_state_off = FALSE; in rtw_btc_ex_power_on_setting()
3720 btc->btc_write_1byte_bitmask(btc, REG_SYS_FUNC_EN, in rtw_btc_ex_power_on_setting()
3723 rtw_btc_monitor_bt_enable(btc); in rtw_btc_ex_power_on_setting()
3726 btc->chip_para->chip_setup(btc, BTC_CSETUP_RFE_TYPE); in rtw_btc_ex_power_on_setting()
3729 rtw_btc_set_ant_path(btc, FC_EXCU, BTC_ANT_POWERON); in rtw_btc_ex_power_on_setting()
3731 rtw_btc_table(btc, FC_EXCU, table_case); in rtw_btc_ex_power_on_setting()
3734 btc->btc_write_1byte(btc, 0xff1a, 0x0); in rtw_btc_ex_power_on_setting()
3736 rtw_btc_gnt_debug(btc, TRUE); in rtw_btc_ex_power_on_setting()
3741 void rtw_btc_ex_pre_load_firmware(struct btc_coexist *btc) {} in rtw_btc_ex_pre_load_firmware() argument
3743 void rtw_btc_ex_init_hw_config(struct btc_coexist *btc, boolean wifi_only) in rtw_btc_ex_init_hw_config() argument
3745 rtw_btc_init_hw_config(btc, wifi_only); in rtw_btc_ex_init_hw_config()
3748 void rtw_btc_ex_init_coex_dm(struct btc_coexist *btc) in rtw_btc_ex_init_coex_dm() argument
3752 void rtw_btc_ex_display_simple_coex_info(struct btc_coexist *btc) in rtw_btc_ex_display_simple_coex_info() argument
3754 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_ex_display_simple_coex_info()
3755 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_ex_display_simple_coex_info()
3756 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_ex_display_simple_coex_info()
3757 struct btc_rfe_type *rfe_type = &btc->rfe_type; in rtw_btc_ex_display_simple_coex_info()
3758 struct btc_board_info *board_info = &btc->board_info; in rtw_btc_ex_display_simple_coex_info()
3760 u8 *cli_buf = btc->cli_buf; in rtw_btc_ex_display_simple_coex_info()
3769 if (btc->manual_control) { in rtw_btc_ex_display_simple_coex_info()
3778 if (btc->stop_coex_dm) { in rtw_btc_ex_display_simple_coex_info()
3791 btc->btc_get(btc, BTC_GET_U4_SUPPORTED_FEATURE, in rtw_btc_ex_display_simple_coex_info()
3794 btc->btc_get(btc, BTC_GET_U4_SUPPORTED_VERSION, in rtw_btc_ex_display_simple_coex_info()
3797 val = btc->btc_get_bt_reg(btc, 3, 0xac); in rtw_btc_ex_display_simple_coex_info()
3800 val = btc->btc_get_bt_reg(btc, 3, 0xae); in rtw_btc_ex_display_simple_coex_info()
3803 btc->btc_get(btc, BTC_GET_U4_BT_PATCH_VER, &bt_patch_ver); in rtw_btc_ex_display_simple_coex_info()
3804 btc->bt_info.bt_get_fw_ver = bt_patch_ver; in rtw_btc_ex_display_simple_coex_info()
3855 void rtw_btc_ex_display_coex_info(struct btc_coexist *btc) in rtw_btc_ex_display_coex_info() argument
3857 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_ex_display_coex_info()
3858 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_ex_display_coex_info()
3859 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_ex_display_coex_info()
3860 struct btc_rfe_type *rfe_type = &btc->rfe_type; in rtw_btc_ex_display_coex_info()
3861 struct btc_board_info *board_info = &btc->board_info; in rtw_btc_ex_display_coex_info()
3863 u8 *cli_buf = btc->cli_buf, i, ps_tdma_case = 0; in rtw_btc_ex_display_coex_info()
3882 if (btc->manual_control) { in rtw_btc_ex_display_coex_info()
3889 } else if (btc->stop_coex_dm) { in rtw_btc_ex_display_coex_info()
3909 btc->btc_get(btc, BTC_GET_U4_SUPPORTED_VERSION, in rtw_btc_ex_display_coex_info()
3920 btc->btc_get_bt_afh_map_from_bt(btc, 0, p); in rtw_btc_ex_display_coex_info()
3921 val = btc->btc_get_bt_reg(btc, 1, 0xa); in rtw_btc_ex_display_coex_info()
3923 val = btc->btc_get_bt_reg(btc, 0, 0x2); in rtw_btc_ex_display_coex_info()
3930 btc->btc_get(btc, BTC_GET_U4_SUPPORTED_FEATURE, in rtw_btc_ex_display_coex_info()
3939 if (strcmp(btc->chip_para->chip_name, "8723f") == 0) { in rtw_btc_ex_display_coex_info()
3943 val = btc->btc_get_bt_reg(btc, 3, 0xdac); in rtw_btc_ex_display_coex_info()
3948 val = btc->btc_get_bt_reg(btc, 3, 0xac); in rtw_btc_ex_display_coex_info()
3953 val = btc->btc_get_bt_reg(btc, 3, 0xae); in rtw_btc_ex_display_coex_info()
3958 val = btc->btc_get_bt_reg(btc, 4, 0x200); in rtw_btc_ex_display_coex_info()
3961 if (btc->bt_info.bt_get_fw_ver == 0) in rtw_btc_ex_display_coex_info()
3962 btc->btc_get(btc, BTC_GET_U4_BT_PATCH_VER, in rtw_btc_ex_display_coex_info()
3963 &btc->bt_info.bt_get_fw_ver); in rtw_btc_ex_display_coex_info()
3968 btc->btc_get(btc, BTC_GET_U4_BT_DEVICE_INFO, &val); in rtw_btc_ex_display_coex_info()
3975 btc->btc_get(btc, BTC_GET_U4_BT_A2DP_FLUSH_VAL, &val); in rtw_btc_ex_display_coex_info()
3988 btc->btc_get(btc, BTC_GET_U4_WIFI_FW_VER, &fw_ver); in rtw_btc_ex_display_coex_info()
3989 btc->btc_get(btc, BTC_GET_U4_WIFI_PHY_VER, &phy_ver); in rtw_btc_ex_display_coex_info()
4007 btc->bt_info.bt_get_fw_ver, phy_ver, coex_sta->kt_ver + 65); in rtw_btc_ex_display_coex_info()
4014 btc->btc_disp_dbg_msg(btc, BTC_DBG_DISP_WIFI_STATUS); in rtw_btc_ex_display_coex_info()
4017 if (btc->board_info.ext_chip_id != BTC_EXT_CHIP_NONE) { in rtw_btc_ex_display_coex_info()
4023 ((btc->board_info.ext_chip_id == in rtw_btc_ex_display_coex_info()
4150 btc->btc_read_scbd(btc, &scbd) : in rtw_btc_ex_display_coex_info()
4151 btc->btc_read_scbd_32bit(btc, &scbd_32)), in rtw_btc_ex_display_coex_info()
4166 btc->btc_read_scbd(btc, &scbd) : in rtw_btc_ex_display_coex_info()
4167 btc->btc_read_scbd_32bit(btc, &scbd_32))); in rtw_btc_ex_display_coex_info()
4212 if (btc->manual_control) { in rtw_btc_ex_display_coex_info()
4253 btc->btc_read_4byte(btc, REG_BT_COEX_TABLE0), in rtw_btc_ex_display_coex_info()
4254 btc->btc_read_4byte(btc, REG_BT_COEX_TABLE1), in rtw_btc_ex_display_coex_info()
4255 btc->btc_read_4byte(btc, REG_BT_COEX_BRK_TABLE)); in rtw_btc_ex_display_coex_info()
4261 btc->btc_read_1byte(btc, REG_BT_STAT_CTRL), in rtw_btc_ex_display_coex_info()
4262 btc->btc_read_4byte(btc, REG_BT_COEX_TABLE_H), in rtw_btc_ex_display_coex_info()
4363 btc->chip_para->chip_setup(btc, BTC_CSETUP_COEXINFO_HW); in rtw_btc_ex_display_coex_info()
4365 fa_ofdm = btc->btc_phydm_query_PHY_counter(btc, PHYDM_INFO_FA_OFDM); in rtw_btc_ex_display_coex_info()
4366 fa_cck = btc->btc_phydm_query_PHY_counter(btc, PHYDM_INFO_FA_CCK); in rtw_btc_ex_display_coex_info()
4367 cca_ofdm = btc->btc_phydm_query_PHY_counter(btc, PHYDM_INFO_CCA_OFDM); in rtw_btc_ex_display_coex_info()
4368 cca_cck = btc->btc_phydm_query_PHY_counter(btc, PHYDM_INFO_CCA_CCK); in rtw_btc_ex_display_coex_info()
4377 btc->btc_phydm_query_PHY_counter(btc, PHYDM_INFO_CRC32_OK_CCK); in rtw_btc_ex_display_coex_info()
4379 btc->btc_phydm_query_PHY_counter(btc, PHYDM_INFO_CRC32_OK_LEGACY); in rtw_btc_ex_display_coex_info()
4381 btc->btc_phydm_query_PHY_counter(btc, PHYDM_INFO_CRC32_OK_HT); in rtw_btc_ex_display_coex_info()
4383 btc->btc_phydm_query_PHY_counter(btc, PHYDM_INFO_CRC32_OK_VHT); in rtw_btc_ex_display_coex_info()
4390 btc->btc_phydm_query_PHY_counter(btc, PHYDM_INFO_CRC32_ERROR_CCK); in rtw_btc_ex_display_coex_info()
4392 btc->btc_phydm_query_PHY_counter(btc, PHYDM_INFO_CRC32_ERROR_LEGACY); in rtw_btc_ex_display_coex_info()
4394 btc->btc_phydm_query_PHY_counter(btc, PHYDM_INFO_CRC32_ERROR_HT); in rtw_btc_ex_display_coex_info()
4396 btc->btc_phydm_query_PHY_counter(btc, PHYDM_INFO_CRC32_ERROR_VHT); in rtw_btc_ex_display_coex_info()
4432 btc->btc_disp_dbg_msg(btc, BTC_DBG_DISP_COEX_STATISTICS); in rtw_btc_ex_display_coex_info()
4440 void rtw_btc_ex_ips_notify(struct btc_coexist *btc, u8 type) in rtw_btc_ex_ips_notify() argument
4442 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_ex_ips_notify()
4443 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_ex_ips_notify()
4445 if (btc->manual_control || btc->stop_coex_dm) in rtw_btc_ex_ips_notify()
4456 btc->btc_write_scbd(btc, BTC_SCBD_ALL, FALSE); in rtw_btc_ex_ips_notify()
4458 btc->btc_write_scbd_32bit(btc, BTC_SCBD_ALL_32BIT, FALSE); in rtw_btc_ex_ips_notify()
4459 btc->chip_para->chip_setup(btc, BTC_CSETUP_WLAN_ACT_IPS); in rtw_btc_ex_ips_notify()
4460 rtw_btc_set_ant_path(btc, FC_EXCU, BTC_ANT_WOFF); in rtw_btc_ex_ips_notify()
4461 rtw_btc_action_coex_all_off(btc); in rtw_btc_ex_ips_notify()
4467 btc->btc_write_scbd(btc, BTC_SCBD_ACTIVE | BTC_SCBD_ON, TRUE); in rtw_btc_ex_ips_notify()
4469 btc->btc_write_scbd_32bit(btc, BTC_SCBD_ACTIVE | BTC_SCBD_ON, TRUE); in rtw_btc_ex_ips_notify()
4471 rtw_btc_init_hw_config(btc, FALSE); in rtw_btc_ex_ips_notify()
4477 void rtw_btc_ex_lps_notify(struct btc_coexist *btc, u8 type) in rtw_btc_ex_lps_notify() argument
4479 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_ex_lps_notify()
4480 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_ex_lps_notify()
4482 if (btc->manual_control || btc->stop_coex_dm) in rtw_btc_ex_lps_notify()
4494 btc->btc_write_scbd(btc, BTC_SCBD_ACTIVE, TRUE); in rtw_btc_ex_lps_notify()
4496 btc->btc_write_scbd_32bit(btc, BTC_SCBD_ACTIVE, TRUE); in rtw_btc_ex_lps_notify()
4500 btc->btc_write_scbd(btc, BTC_SCBD_ACTIVE, FALSE); in rtw_btc_ex_lps_notify()
4501 btc->btc_write_scbd(btc, BTC_SCBD_WLBUSY, FALSE); in rtw_btc_ex_lps_notify()
4503 btc->btc_write_scbd_32bit(btc, BTC_SCBD_ACTIVE, FALSE); in rtw_btc_ex_lps_notify()
4504 btc->btc_write_scbd_32bit(btc, BTC_SCBD_WLBUSY, FALSE); in rtw_btc_ex_lps_notify()
4507 rtw_btc_run_coex(btc, BTC_RSN_LPS); in rtw_btc_ex_lps_notify()
4517 btc->btc_write_scbd(btc, BTC_SCBD_ACTIVE, TRUE); in rtw_btc_ex_lps_notify()
4519 btc->btc_write_scbd_32bit(btc, BTC_SCBD_ACTIVE, TRUE); in rtw_btc_ex_lps_notify()
4522 rtw_btc_query_bt_info(btc); in rtw_btc_ex_lps_notify()
4524 rtw_btc_run_coex(btc, BTC_RSN_LPS); in rtw_btc_ex_lps_notify()
4538 rtw_btc_run_coex(btc, BTC_RSN_LPS); in rtw_btc_ex_lps_notify()
4546 void rtw_btc_ex_scan_notify(struct btc_coexist *btc, u8 type) in rtw_btc_ex_scan_notify() argument
4548 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_ex_scan_notify()
4549 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_ex_scan_notify()
4551 if (btc->manual_control || btc->stop_coex_dm) in rtw_btc_ex_scan_notify()
4557 btc->btc_write_scbd(btc, BTC_SCBD_ACTIVE | BTC_SCBD_ON, TRUE); in rtw_btc_ex_scan_notify()
4559 btc->btc_write_scbd_32bit(btc, BTC_SCBD_ACTIVE | BTC_SCBD_ON, TRUE); in rtw_btc_ex_scan_notify()
4566 rtw_btc_set_ant_path(btc, FC_EXCU, BTC_ANT_5G); in rtw_btc_ex_scan_notify()
4567 rtw_btc_run_coex(btc, BTC_RSN_5GSCANSTART); in rtw_btc_ex_scan_notify()
4576 rtw_btc_set_ant_path(btc, FC_EXCU, BTC_ANT_2G); in rtw_btc_ex_scan_notify()
4577 rtw_btc_run_coex(btc, BTC_RSN_2GSCANSTART); in rtw_btc_ex_scan_notify()
4579 btc->btc_get(btc, BTC_GET_U1_AP_NUM, in rtw_btc_ex_scan_notify()
4589 rtw_btc_run_coex(btc, BTC_RSN_SCANFINISH); in rtw_btc_ex_scan_notify()
4593 void rtw_btc_ex_scan_notify_without_bt(struct btc_coexist *btc, u8 type) in rtw_btc_ex_scan_notify_without_bt() argument
4595 struct btc_wifi_link_info_ext *link_info_ext = &btc->wifi_link_info_ext; in rtw_btc_ex_scan_notify_without_bt()
4596 struct btc_rfe_type *rfe_type = &btc->rfe_type; in rtw_btc_ex_scan_notify_without_bt()
4605 rtw_btc_set_ant_switch(btc, FC_EXCU, ctrl_type, pos_type); in rtw_btc_ex_scan_notify_without_bt()
4608 void rtw_btc_ex_switchband_notify(struct btc_coexist *btc, u8 type) in rtw_btc_ex_switchband_notify() argument
4610 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_ex_switchband_notify()
4612 if (btc->manual_control || btc->stop_coex_dm) in rtw_btc_ex_switchband_notify()
4620 rtw_btc_run_coex(btc, BTC_RSN_5GSWITCHBAND); in rtw_btc_ex_switchband_notify()
4626 rtw_btc_run_coex(btc, BTC_RSN_2GSWITCHBAND); in rtw_btc_ex_switchband_notify()
4632 rtw_btc_ex_scan_notify(btc, BTC_SCAN_START_2G); in rtw_btc_ex_switchband_notify()
4636 void rtw_btc_ex_switchband_notify_without_bt(struct btc_coexist *btc, u8 type) in rtw_btc_ex_switchband_notify_without_bt() argument
4638 struct btc_rfe_type *rfe_type = &btc->rfe_type; in rtw_btc_ex_switchband_notify_without_bt()
4649 rtw_btc_ex_scan_notify_without_bt(btc, BTC_SCAN_START_2G); in rtw_btc_ex_switchband_notify_without_bt()
4653 rtw_btc_set_ant_switch(btc, FC_EXCU, ctrl_type, pos_type); in rtw_btc_ex_switchband_notify_without_bt()
4656 void rtw_btc_ex_connect_notify(struct btc_coexist *btc, u8 type) in rtw_btc_ex_connect_notify() argument
4658 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_ex_connect_notify()
4659 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_ex_connect_notify()
4661 if (btc->manual_control || btc->stop_coex_dm) in rtw_btc_ex_connect_notify()
4665 btc->btc_write_scbd(btc, BTC_SCBD_ACTIVE | BTC_SCBD_ON, TRUE); in rtw_btc_ex_connect_notify()
4667 btc->btc_write_scbd_32bit(btc, BTC_SCBD_ACTIVE | BTC_SCBD_ON, TRUE); in rtw_btc_ex_connect_notify()
4674 rtw_btc_set_ant_path(btc, FC_EXCU, BTC_ANT_5G); in rtw_btc_ex_connect_notify()
4676 rtw_btc_run_coex(btc, BTC_RSN_5GCONSTART); in rtw_btc_ex_connect_notify()
4682 rtw_btc_set_ant_path(btc, FC_EXCU, BTC_ANT_5G); in rtw_btc_ex_connect_notify()
4684 rtw_btc_run_coex(btc, BTC_RSN_5GCONFINISH); in rtw_btc_ex_connect_notify()
4689 btc->btc_set_timer(btc, BTC_TIMER_WL_CONNPKT, 2); in rtw_btc_ex_connect_notify()
4696 rtw_btc_set_ant_path(btc, FC_EXCU, BTC_ANT_2G); in rtw_btc_ex_connect_notify()
4698 rtw_btc_run_coex(btc, BTC_RSN_2GCONSTART); in rtw_btc_ex_connect_notify()
4704 btc->btc_set_timer(btc, BTC_TIMER_WL_COEXFREEZE, 5); in rtw_btc_ex_connect_notify()
4713 rtw_btc_run_coex(btc, BTC_RSN_2GCONFINISH); in rtw_btc_ex_connect_notify()
4717 void rtw_btc_ex_media_status_notify(struct btc_coexist *btc, u8 type) in rtw_btc_ex_media_status_notify() argument
4719 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_ex_media_status_notify()
4720 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_ex_media_status_notify()
4724 if (btc->manual_control || btc->stop_coex_dm) in rtw_btc_ex_media_status_notify()
4729 btc->btc_get(btc, BTC_GET_BL_WIFI_BSSID, btc->wifi_bssid); in rtw_btc_ex_media_status_notify()
4733 __func__, btc->wifi_bssid[0], in rtw_btc_ex_media_status_notify()
4734 btc->wifi_bssid[1], btc->wifi_bssid[2], in rtw_btc_ex_media_status_notify()
4735 btc->wifi_bssid[3], btc->wifi_bssid[4], in rtw_btc_ex_media_status_notify()
4736 btc->wifi_bssid[5]); in rtw_btc_ex_media_status_notify()
4741 if (btc->wifi_bssid[i] != btc->wifi_black_bssid[i]) in rtw_btc_ex_media_status_notify()
4756 btc->btc_write_scbd(btc, BTC_SCBD_ACTIVE, TRUE); in rtw_btc_ex_media_status_notify()
4758 btc->btc_write_scbd_32bit(btc, BTC_SCBD_ACTIVE, TRUE); in rtw_btc_ex_media_status_notify()
4759 rtw_btc_set_ant_path(btc, FC_EXCU, BTC_ANT_5G); in rtw_btc_ex_media_status_notify()
4761 rtw_btc_run_coex(btc, BTC_RSN_5GMEDIA); in rtw_btc_ex_media_status_notify()
4768 btc->btc_write_scbd(btc, BTC_SCBD_ACTIVE, TRUE); in rtw_btc_ex_media_status_notify()
4770 btc->btc_write_scbd_32bit(btc, BTC_SCBD_ACTIVE, TRUE); in rtw_btc_ex_media_status_notify()
4773 rtw_btc_set_ant_path(btc, FC_EXCU, BTC_ANT_2G); in rtw_btc_ex_media_status_notify()
4775 btc->btc_get(btc, BTC_GET_BL_WIFI_UNDER_B_MODE, &wl_b_mode); in rtw_btc_ex_media_status_notify()
4779 rtw_btc_set_wl_pri_mask(btc, BTC_WLPRI_RX_CCK, 0); in rtw_btc_ex_media_status_notify()
4781 rtw_btc_set_wl_pri_mask(btc, BTC_WLPRI_RX_CCK, 1); in rtw_btc_ex_media_status_notify()
4783 rtw_btc_run_coex(btc, BTC_RSN_2GMEDIA); in rtw_btc_ex_media_status_notify()
4790 rtw_btc_run_coex(btc, BTC_RSN_MEDIADISCON); in rtw_btc_ex_media_status_notify()
4793 btc->btc_get(btc, BTC_GET_U1_IOT_PEER, &coex_sta->wl_iot_peer); in rtw_btc_ex_media_status_notify()
4794 rtw_btc_update_wl_ch_info(btc, type); in rtw_btc_ex_media_status_notify()
4797 void rtw_btc_ex_specific_packet_notify(struct btc_coexist *btc, u8 type) in rtw_btc_ex_specific_packet_notify() argument
4799 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_ex_specific_packet_notify()
4802 if (btc->manual_control || btc->stop_coex_dm) in rtw_btc_ex_specific_packet_notify()
4810 rtw_btc_run_coex(btc, BTC_RSN_5GSPECIALPKT); in rtw_btc_ex_specific_packet_notify()
4814 btc->btc_get(btc, BTC_GET_BL_WIFI_4_WAY_PROGRESS, &under_4way); in rtw_btc_ex_specific_packet_notify()
4822 btc->btc_set_timer(btc, BTC_TIMER_WL_SPECPKT, 2); in rtw_btc_ex_specific_packet_notify()
4839 btc->btc_set_timer(btc, BTC_TIMER_WL_SPECPKT, 2); in rtw_btc_ex_specific_packet_notify()
4843 rtw_btc_run_coex(btc, BTC_RSN_2GSPECIALPKT); in rtw_btc_ex_specific_packet_notify()
4846 void rtw_btc_ex_bt_info_notify(struct btc_coexist *btc, u8 *tmp_buf, u8 length) in rtw_btc_ex_bt_info_notify() argument
4848 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_ex_bt_info_notify()
4849 struct btc_coex_dm *coex_dm = &btc->coex_dm; in rtw_btc_ex_bt_info_notify()
4850 struct btc_wifi_link_info_ext *link_info_ext = &btc->wifi_link_info_ext; in rtw_btc_ex_bt_info_notify()
4887 rtw_btc_monitor_bt_enable(btc); in rtw_btc_ex_bt_info_notify()
4891 rtw_btc_run_coex(btc, BTC_RSN_BTINFO); in rtw_btc_ex_bt_info_notify()
4912 rtw_btc_update_bt_link_info(btc); in rtw_btc_ex_bt_info_notify()
4922 btc->btc_set_timer(btc, BTC_TIMER_BT_REENABLE, 15); in rtw_btc_ex_bt_info_notify()
5002 btc->btc_set_timer(btc, BTC_TIMER_BT_INQPAGE, 2); in rtw_btc_ex_bt_info_notify()
5042 if (btc->chip_para->bt_rssi_type == BTC_BTRSSI_RATIO) { in rtw_btc_ex_bt_info_notify()
5063 btc->btc_set_timer(btc, BTC_TIMER_BT_RELINK, 6); in rtw_btc_ex_bt_info_notify()
5065 btc->btc_set_timer(btc, BTC_TIMER_BT_RELINK, 1); in rtw_btc_ex_bt_info_notify()
5087 btc->btc_set_timer(btc, BTC_TIMER_BT_MULTILINK, 3); in rtw_btc_ex_bt_info_notify()
5103 rtw_btc_update_wl_ch_info(btc, type); in rtw_btc_ex_bt_info_notify()
5112 rtw_btc_ignore_wlan_act(btc, FC_EXCU, FALSE); in rtw_btc_ex_bt_info_notify()
5127 btc->btc_set_timer(btc, BTC_TIMER_BT_A2DP_ACT, 5); in rtw_btc_ex_bt_info_notify()
5151 rtw_btc_update_bt_link_info(btc); in rtw_btc_ex_bt_info_notify()
5154 rtw_btc_run_coex(btc, BTC_RSN_BTINFO); in rtw_btc_ex_bt_info_notify()
5157 void rtw_btc_ex_wl_fwdbginfo_notify(struct btc_coexist *btc, u8 *tmp_buf, in rtw_btc_ex_wl_fwdbginfo_notify() argument
5160 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_ex_wl_fwdbginfo_notify()
5187 rtw_btc_wl_ccklock_action(btc); in rtw_btc_ex_wl_fwdbginfo_notify()
5190 void rtw_btc_ex_rx_rate_change_notify(struct btc_coexist *btc, in rtw_btc_ex_rx_rate_change_notify() argument
5193 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_ex_rx_rate_change_notify()
5206 rtw_btc_wl_ccklock_detect(btc); in rtw_btc_ex_rx_rate_change_notify()
5209 void rtw_btc_ex_tx_rate_change_notify(struct btc_coexist *btc, u8 tx_rate, in rtw_btc_ex_tx_rate_change_notify() argument
5212 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_ex_tx_rate_change_notify()
5224 void rtw_btc_ex_rf_status_notify(struct btc_coexist *btc, u8 type) in rtw_btc_ex_rf_status_notify() argument
5226 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_ex_rf_status_notify()
5232 btc->stop_coex_dm = FALSE; in rtw_btc_ex_rf_status_notify()
5233 btc->wl_rf_state_off = FALSE; in rtw_btc_ex_rf_status_notify()
5240 rtw_btc_action_wl_off(btc); in rtw_btc_ex_rf_status_notify()
5244 void rtw_btc_ex_halt_notify(struct btc_coexist *btc) in rtw_btc_ex_halt_notify() argument
5249 rtw_btc_action_wl_off(btc); in rtw_btc_ex_halt_notify()
5252 void rtw_btc_ex_pnp_notify(struct btc_coexist *btc, u8 pnp_state) in rtw_btc_ex_pnp_notify() argument
5254 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_ex_pnp_notify()
5255 struct btc_wifi_link_info_ext *link_info_ext = &btc->wifi_link_info_ext; in rtw_btc_ex_pnp_notify()
5256 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_ex_pnp_notify()
5266 btc->btc_write_scbd(btc, BTC_SCBD_ALL, FALSE); in rtw_btc_ex_pnp_notify()
5268 btc->btc_write_scbd_32bit(btc, BTC_SCBD_ALL_32BIT, FALSE); in rtw_btc_ex_pnp_notify()
5278 rtw_btc_set_ant_path(btc, FC_EXCU, phase); in rtw_btc_ex_pnp_notify()
5280 btc->stop_coex_dm = TRUE; in rtw_btc_ex_pnp_notify()
5286 btc->btc_set_timer(btc, BTC_TIMER_WL_PNPWAKEUP, 3); in rtw_btc_ex_pnp_notify()
5291 btc->stop_coex_dm = FALSE; in rtw_btc_ex_pnp_notify()
5292 rtw_btc_run_coex(btc, BTC_RSN_PNP); in rtw_btc_ex_pnp_notify()
5299 void rtw_btc_ex_coex_dm_reset(struct btc_coexist *btc) in rtw_btc_ex_coex_dm_reset() argument
5304 rtw_btc_init_hw_config(btc, FALSE); in rtw_btc_ex_coex_dm_reset()
5307 void rtw_btc_ex_periodical(struct btc_coexist *btc) in rtw_btc_ex_periodical() argument
5314 void rtw_btc_ex_timerup_notify(struct btc_coexist *btc, u32 type) in rtw_btc_ex_timerup_notify() argument
5316 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_ex_timerup_notify()
5317 const struct btc_chip_para *chip_para = btc->chip_para; in rtw_btc_ex_timerup_notify()
5332 rtw_btc_update_wl_ch_info(btc, BTC_MEDIA_DISCONNECT); in rtw_btc_ex_timerup_notify()
5334 btc->btc_write_scbd(btc, BTC_SCBD_WLBUSY, FALSE); in rtw_btc_ex_timerup_notify()
5336 btc->btc_write_scbd_32bit(btc, BTC_SCBD_WLBUSY, FALSE); in rtw_btc_ex_timerup_notify()
5434 rtw_btc_run_coex(btc, BTC_RSN_TIMERUP); in rtw_btc_ex_timerup_notify()
5437 void rtw_btc_ex_wl_status_change_notify(struct btc_coexist *btc, u32 type) in rtw_btc_ex_wl_status_change_notify() argument
5439 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_ex_wl_status_change_notify()
5444 btc->btc_set_timer(btc, BTC_TIMER_WL_STAYBUSY, 6); in rtw_btc_ex_wl_status_change_notify()
5454 rtw_btc_update_wl_ch_info(btc, BTC_MEDIA_CONNECT); in rtw_btc_ex_wl_status_change_notify()
5456 btc->btc_write_scbd(btc, BTC_SCBD_WLBUSY, TRUE); in rtw_btc_ex_wl_status_change_notify()
5508 rtw_btc_run_coex(btc, BTC_RSN_WLSTATUS); in rtw_btc_ex_wl_status_change_notify()
5511 void rtw_btc_ex_wl_rfk_notify(struct btc_coexist *btc, u8 path, u8 type, u8 state) in rtw_btc_ex_wl_rfk_notify() argument
5513 struct btc_coex_sta *coex_sta = &btc->coex_sta; in rtw_btc_ex_wl_rfk_notify()
5526 rtw_btc_run_coex(btc, BTC_RSN_RFK); in rtw_btc_ex_wl_rfk_notify()