Lines Matching defs:btcoexist

41 static u8 btc8821a2ant_bt_rssi_state(struct btc_coexist *btcoexist,
45 struct rtl_priv *rtlpriv = btcoexist->adapter;
132 static u8 btc8821a2ant_wifi_rssi_state(struct btc_coexist *btcoexist,
136 struct rtl_priv *rtlpriv = btcoexist->adapter;
140 btcoexist->btc_get(btcoexist, BTC_GET_S4_WIFI_RSSI, &wifi_rssi);
226 void btc8821a2ant_limited_rx(struct btc_coexist *btcoexist, bool force_exec,
235 btcoexist->btc_set(btcoexist, BTC_SET_BL_TO_REJ_AP_AGG_PKT,
238 btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_CTRL_AGG_SIZE,
241 btcoexist->btc_set(btcoexist, BTC_SET_U1_AGG_BUF_SIZE, &rx_agg_size);
243 btcoexist->btc_set(btcoexist, BTC_SET_ACT_AGGREGATE_CTRL, NULL);
246 static void btc8821a2ant_monitor_bt_ctr(struct btc_coexist *btcoexist)
248 struct rtl_priv *rtlpriv = btcoexist->adapter;
249 struct btc_bt_link_info *bt_link_info = &btcoexist->bt_link_info;
256 u4tmp = btcoexist->btc_read_4byte(btcoexist, reg_hp_txrx);
260 u4tmp = btcoexist->btc_read_4byte(btcoexist, reg_lp_txrx);
284 btcoexist->btc_write_1byte(btcoexist, 0x76e, 0xc);
287 static void btc8821a2ant_monitor_wifi_ctr(struct btc_coexist *btcoexist)
301 btcoexist->btc_read_4byte(btcoexist, 0xf88);
303 btcoexist->btc_read_2byte(btcoexist, 0xf94);
305 btcoexist->btc_read_2byte(btcoexist, 0xf90);
307 btcoexist->btc_read_2byte(btcoexist, 0xfb8);
310 btcoexist->btc_read_4byte(btcoexist, 0xf84);
312 btcoexist->btc_read_2byte(btcoexist, 0xf96);
314 btcoexist->btc_read_2byte(btcoexist, 0xf92);
316 btcoexist->btc_read_2byte(btcoexist, 0xfba);
320 btcoexist->btc_write_1byte_bitmask(btcoexist, 0xf16, 0x1, 0x1);
321 btcoexist->btc_write_1byte_bitmask(btcoexist, 0xf16, 0x1, 0x0);
324 static void btc8821a2ant_query_bt_info(struct btc_coexist *btcoexist)
326 struct rtl_priv *rtlpriv = btcoexist->adapter;
337 btcoexist->btc_fill_h2c(btcoexist, 0x61, 1, h2c_parameter);
340 static bool btc8821a2ant_is_wifi_status_changed(struct btc_coexist *btcoexist)
349 btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED,
351 btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_BUSY, &wifi_busy);
352 btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on);
353 btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_4_WAY_PROGRESS,
370 wifi_rssi_state = btc8821a2ant_wifi_rssi_state(btcoexist, 3, 2,
381 static void btc8821a2ant_update_bt_link_info(struct btc_coexist *btcoexist)
383 struct btc_bt_link_info *bt_link_info = &btcoexist->bt_link_info;
386 btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on);
429 static u8 btc8821a2ant_action_algorithm(struct btc_coexist *btcoexist)
431 struct rtl_priv *rtlpriv = btcoexist->adapter;
432 struct btc_bt_link_info *bt_link_info = &btcoexist->bt_link_info;
437 btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on);
617 static void btc8821a2ant_set_fw_dac_swing_lvl(struct btc_coexist *btcoexist,
620 struct rtl_priv *rtlpriv = btcoexist->adapter;
633 btcoexist->btc_fill_h2c(btcoexist, 0x64, 1, h2c_parameter);
636 static void btc8821a2ant_set_fw_dec_bt_pwr(struct btc_coexist *btcoexist,
639 struct rtl_priv *rtlpriv = btcoexist->adapter;
648 btcoexist->btc_fill_h2c(btcoexist, 0x62, 1, h2c_parameter);
651 static void btc8821a2ant_dec_bt_pwr(struct btc_coexist *btcoexist,
654 struct rtl_priv *rtlpriv = btcoexist->adapter;
670 btc8821a2ant_set_fw_dec_bt_pwr(btcoexist, coex_dm->cur_dec_bt_pwr_lvl);
675 static void btc8821a2ant_fw_dac_swing_lvl(struct btc_coexist *btcoexist,
678 struct rtl_priv *rtlpriv = btcoexist->adapter;
696 btc8821a2ant_set_fw_dac_swing_lvl(btcoexist,
703 struct btc_coexist *btcoexist, bool low_penalty_ra)
705 struct rtl_priv *rtlpriv = btcoexist->adapter;
726 btcoexist->btc_fill_h2c(btcoexist, 0x69, 6, h2c_parameter);
729 static void btc8821a2ant_low_penalty_ra(struct btc_coexist *btcoexist,
732 struct rtl_priv *rtlpriv = btcoexist->adapter;
749 btc8821a2ant_set_sw_penalty_tx_rate_adaptive(btcoexist,
755 static void btc8821a2ant_set_dac_swing_reg(struct btc_coexist *btcoexist,
758 struct rtl_priv *rtlpriv = btcoexist->adapter;
763 btcoexist->btc_write_1byte_bitmask(btcoexist, 0xc5b, 0x3e, val);
766 static void btc8821a2ant_set_sw_full_dac_swing(struct btc_coexist *btcoexist,
771 btc8821a2ant_set_dac_swing_reg(btcoexist, sw_dac_swing_lvl);
773 btc8821a2ant_set_dac_swing_reg(btcoexist, 0x18);
776 static void btc8821a2ant_dac_swing(struct btc_coexist *btcoexist,
780 struct rtl_priv *rtlpriv = btcoexist->adapter;
804 btc8821a2ant_set_sw_full_dac_swing(btcoexist, dac_swing_on,
811 static void btc8821a2ant_set_coex_table(struct btc_coexist *btcoexist,
815 struct rtl_priv *rtlpriv = btcoexist->adapter;
819 btcoexist->btc_write_4byte(btcoexist, 0x6c0, val0x6c0);
823 btcoexist->btc_write_4byte(btcoexist, 0x6c4, val0x6c4);
827 btcoexist->btc_write_4byte(btcoexist, 0x6c8, val0x6c8);
831 btcoexist->btc_write_1byte(btcoexist, 0x6cc, val0x6cc);
834 static void btc8821a2ant_coex_table(struct btc_coexist *btcoexist,
838 struct rtl_priv *rtlpriv = btcoexist->adapter;
869 btc8821a2ant_set_coex_table(btcoexist, val0x6c0, val0x6c4, val0x6c8,
878 static void btc8821a2ant_coex_table_with_type(struct btc_coexist *btcoexist,
885 btc8821a2ant_coex_table(btcoexist, force_exec, 0x55555555,
889 btc8821a2ant_coex_table(btcoexist, force_exec, 0x55555555,
893 btc8821a2ant_coex_table(btcoexist, force_exec, 0x5ada5ada,
897 btc8821a2ant_coex_table(btcoexist, force_exec, 0xaaaaaaaa,
901 btc8821a2ant_coex_table(btcoexist, force_exec, 0xffffffff,
905 btc8821a2ant_coex_table(btcoexist, force_exec, 0x5fff5fff,
909 btc8821a2ant_coex_table(btcoexist, force_exec, 0x55ff55ff,
913 btc8821a2ant_coex_table(btcoexist, force_exec, 0x55dd55dd,
917 btc8821a2ant_coex_table(btcoexist, force_exec, 0x55dd55dd,
921 btc8821a2ant_coex_table(btcoexist, force_exec, 0x55dd55dd,
925 btc8821a2ant_coex_table(btcoexist, force_exec, 0x55dd55dd,
929 btc8821a2ant_coex_table(btcoexist, force_exec, 0x55dd55dd,
933 btc8821a2ant_coex_table(btcoexist, force_exec, 0x55dd55dd,
937 btc8821a2ant_coex_table(btcoexist, force_exec, 0x5fff5fff,
941 btc8821a2ant_coex_table(btcoexist, force_exec, 0x5fff5fff,
945 btc8821a2ant_coex_table(btcoexist, force_exec, 0x55dd55dd,
949 btc8821a2ant_coex_table(btcoexist, force_exec, 0x5fdf5fdf,
953 btc8821a2ant_coex_table(btcoexist, force_exec, 0xfafafafa,
977 static void btc8821a2ant_set_lps_rpwm(struct btc_coexist *btcoexist, u8 lps_val,
983 btcoexist->btc_set(btcoexist, BTC_SET_U1_LPS_VAL, &lps);
984 btcoexist->btc_set(btcoexist, BTC_SET_U1_RPWM_VAL, &rpwm);
987 static void btc8821a2ant_lps_rpwm(struct btc_coexist *btcoexist,
998 btc8821a2ant_set_lps_rpwm(btcoexist, lps_val, rpwm_val);
1004 static void btc8821a2ant_ignore_wlan_act(struct btc_coexist *btcoexist,
1007 struct rtl_priv *rtlpriv = btcoexist->adapter;
1024 btc8821a2ant_set_fw_ignore_wlan_act(btcoexist, enable);
1029 static void btc8821a2ant_set_fw_ps_tdma(struct btc_coexist *btcoexist,
1033 struct rtl_priv *rtlpriv = btcoexist->adapter;
1056 btcoexist->btc_fill_h2c(btcoexist, 0x60, 5, h2c_parameter);
1059 static void btc8821a2ant_sw_mechanism1(struct btc_coexist *btcoexist,
1063 btc8821a2ant_low_penalty_ra(btcoexist, NORMAL_EXEC, low_penalty_ra);
1066 static void btc8821a2ant_sw_mechanism2(struct btc_coexist *btcoexist,
1070 btc8821a2ant_dac_swing(btcoexist, NORMAL_EXEC, sw_dac_swing,
1074 static void btc8821a2ant_set_ant_path(struct btc_coexist *btcoexist,
1078 struct btc_board_info *board_info = &btcoexist->board_info;
1084 u4tmp = btcoexist->btc_read_4byte(btcoexist, 0x4c);
1087 btcoexist->btc_write_4byte(btcoexist, 0x4c, u4tmp);
1089 btcoexist->btc_write_4byte(btcoexist, 0x974, 0x3ff);
1097 btcoexist->btc_fill_h2c(btcoexist, 0x65, 2,
1105 btcoexist->btc_fill_h2c(btcoexist, 0x65, 2,
1113 btcoexist->btc_write_1byte_bitmask(btcoexist, 0xcb7, 0x30, 0x1);
1116 btcoexist->btc_write_1byte_bitmask(btcoexist, 0xcb7, 0x30, 0x2);
1121 static void btc8821a2ant_ps_tdma(struct btc_coexist *btcoexist,
1124 struct rtl_priv *rtlpriv = btcoexist->adapter;
1128 wifi_rssi_state = btc8821a2ant_wifi_rssi_state(btcoexist, 1, 2,
1130 bt_rssi_state = btc8821a2ant_bt_rssi_state(btcoexist, 2,
1163 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x3c,
1167 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x2d,
1171 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x1c,
1175 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x10,
1179 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x3c,
1183 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x2d,
1187 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x1c,
1191 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xa3, 0x10,
1195 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x3c,
1199 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x2d,
1203 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x1c,
1207 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x10,
1211 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x3c,
1215 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x2d,
1219 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x1c,
1223 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x10,
1227 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xa3, 0x2f,
1231 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x5, 0x5,
1235 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x25,
1239 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x25,
1243 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x15,
1247 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x1e,
1252 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xd3, 0x3c,
1256 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x14,
1260 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x30,
1264 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x3c,
1270 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xd3, 0x3a,
1277 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xd3, 0x2d,
1284 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xd3, 0x1c,
1291 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xd3, 0x10,
1295 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x3c,
1299 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x3c,
1303 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x15,
1308 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xe3, 0x35,
1312 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xd3, 0x1c,
1316 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xd3, 0x14,
1320 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0xd3, 0x30,
1328 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0x0, 0x0, 0x0,
1332 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0x0, 0x0, 0x0,
1336 btc8821a2ant_set_fw_ps_tdma(btcoexist, 0x0, 0x0, 0x0,
1348 btc8821a2ant_ps_tdma_check_for_power_save_state(struct btc_coexist *btcoexist,
1353 btcoexist->btc_get(btcoexist, BTC_GET_U1_LPS_MODE, &lps_mode);
1361 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 1);
1367 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 1);
1374 static void btc8821a2ant_power_save_state(struct btc_coexist *btcoexist,
1383 btcoexist->btc_set(btcoexist, BTC_SET_ACT_DISABLE_LOW_POWER,
1385 btcoexist->btc_set(btcoexist, BTC_SET_ACT_NORMAL_LPS, NULL);
1389 btc8821a2ant_ps_tdma_check_for_power_save_state(btcoexist,
1391 btc8821a2ant_lps_rpwm(btcoexist, NORMAL_EXEC, lps_val,
1395 btcoexist->btc_set(btcoexist, BTC_SET_ACT_DISABLE_LOW_POWER,
1398 btcoexist->btc_set(btcoexist, BTC_SET_ACT_ENTER_LPS, NULL);
1402 btc8821a2ant_ps_tdma_check_for_power_save_state(btcoexist,
1404 btcoexist->btc_set(btcoexist, BTC_SET_ACT_LEAVE_LPS, NULL);
1412 static void btc8821a2ant_coex_all_off(struct btc_coexist *btcoexist)
1415 btc8821a2ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0);
1416 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 1);
1417 btc8821a2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6);
1418 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, 0);
1421 btc8821a2ant_sw_mechanism1(btcoexist, false, false, false, false);
1422 btc8821a2ant_sw_mechanism2(btcoexist, false, false, false, 0x18);
1425 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 0);
1428 static void btc8821a2ant_coex_under_5g(struct btc_coexist *btcoexist)
1430 btc8821a2ant_coex_all_off(btcoexist);
1431 btc8821a2ant_ignore_wlan_act(btcoexist, NORMAL_EXEC, true);
1434 static void btc8821a2ant_init_coex_dm(struct btc_coexist *btcoexist)
1437 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 0);
1439 btc8821a2ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0);
1440 btc8821a2ant_ps_tdma(btcoexist, FORCE_EXEC, false, 1);
1441 btc8821a2ant_fw_dac_swing_lvl(btcoexist, FORCE_EXEC, 6);
1442 btc8821a2ant_dec_bt_pwr(btcoexist, FORCE_EXEC, 0);
1444 btc8821a2ant_sw_mechanism1(btcoexist, false, false, false, false);
1445 btc8821a2ant_sw_mechanism2(btcoexist, false, false, false, 0x18);
1448 static void btc8821a2ant_action_bt_inquiry(struct btc_coexist *btcoexist)
1450 struct rtl_priv *rtlpriv = btcoexist->adapter;
1455 btc8821a2ant_wifi_rssi_state(btcoexist, 0, 2, 15, 0);
1456 btc8821a2ant_wifi_rssi_state(btcoexist, 1, 2,
1458 btc8821a2ant_bt_rssi_state(btcoexist,
1461 btcoexist->btc_set(btcoexist, BTC_SET_ACT_DISABLE_LOW_POWER,
1463 btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED,
1466 btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_SCAN, &scan);
1467 btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_LINK, &link);
1468 btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_ROAM, &roam);
1470 btc8821a2ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0);
1475 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 15);
1476 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 22);
1480 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 15);
1481 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 22);
1485 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 0);
1486 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 1);
1489 btc8821a2ant_fw_dac_swing_lvl(btcoexist, FORCE_EXEC, 6);
1490 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, 0);
1492 btc8821a2ant_sw_mechanism1(btcoexist, false, false, false, false);
1493 btc8821a2ant_sw_mechanism2(btcoexist, false, false, false, 0x18);
1496 static void btc8821a2ant_action_wifi_link_process(struct btc_coexist *btcoexist)
1498 struct rtl_priv *rtlpriv = btcoexist->adapter;
1501 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 15);
1502 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 22);
1504 btc8821a2ant_sw_mechanism1(btcoexist, false, false, false, false);
1505 btc8821a2ant_sw_mechanism2(btcoexist, false, false, false, 0x18);
1507 u8tmpa = btcoexist->btc_read_1byte(btcoexist, 0x765);
1508 u8tmpb = btcoexist->btc_read_1byte(btcoexist, 0x76e);
1514 static bool btc8821a2ant_action_wifi_idle_process(struct btc_coexist *btcoexist)
1516 struct rtl_priv *rtlpriv = btcoexist->adapter;
1520 btc8821a2ant_wifi_rssi_state(btcoexist, 0, 2, 15, 0);
1521 wifi_rssi_state1 = btc8821a2ant_wifi_rssi_state(btcoexist, 1, 2,
1523 btc8821a2ant_bt_rssi_state(btcoexist,
1526 btcoexist->btc_get(btcoexist, BTC_GET_U1_AP_NUM, &ap_num);
1534 btc8821a2ant_dac_swing(btcoexist, NORMAL_EXEC, true, 0x6);
1535 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, 0);
1538 btc8821a2ant_sw_mechanism1(btcoexist, false, false, false,
1540 btc8821a2ant_sw_mechanism2(btcoexist, false, false, false,
1543 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 0);
1544 btc8821a2ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE,
1546 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 1);
1553 btc8821a2ant_dac_swing(btcoexist, NORMAL_EXEC, true, 0x6);
1554 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, 0);
1557 btc8821a2ant_sw_mechanism1(btcoexist, false, false, false,
1559 btc8821a2ant_sw_mechanism2(btcoexist, false, false, false,
1562 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 0);
1563 btc8821a2ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE,
1565 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 1);
1569 btc8821a2ant_dac_swing(btcoexist, NORMAL_EXEC, true, 0x18);
1573 static bool btc8821a2ant_is_common_action(struct btc_coexist *btcoexist)
1575 struct rtl_priv *rtlpriv = btcoexist->adapter;
1580 btcoexist->btc_get(btcoexist, BTC_GET_BL_HS_OPERATION, &bt_hs_on);
1581 btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED,
1583 btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_BUSY, &wifi_busy);
1587 btcoexist->btc_set(btcoexist, BTC_SET_ACT_DISABLE_LOW_POWER,
1589 btc8821a2ant_limited_rx(btcoexist, NORMAL_EXEC, false, false,
1595 btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff,
1597 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 0);
1598 btc8821a2ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE,
1600 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 1);
1601 btc8821a2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6);
1602 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, 0);
1604 btc8821a2ant_sw_mechanism1(btcoexist, false, false, false,
1606 btc8821a2ant_sw_mechanism2(btcoexist, false, false, false,
1614 btcoexist->btc_set(btcoexist,
1617 btc8821a2ant_limited_rx(btcoexist, NORMAL_EXEC,
1623 btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1,
1625 btc8821a2ant_coex_table_with_type(btcoexist,
1629 btcoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0);
1630 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 1);
1631 btc8821a2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC,
1633 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, 0);
1635 btc8821a2ant_sw_mechanism1(btcoexist, false, false,
1637 btc8821a2ant_sw_mechanism2(btcoexist, false, false,
1644 btcoexist->btc_set(btcoexist,
1652 btc8821a2ant_limited_rx(btcoexist, NORMAL_EXEC,
1655 btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1,
1657 btc8821a2ant_coex_table_with_type(btcoexist,
1661 btcoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0);
1662 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 1);
1663 btc8821a2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC,
1665 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, 0);
1667 btc8821a2ant_sw_mechanism1(btcoexist, true, false,
1669 btc8821a2ant_sw_mechanism2(btcoexist, false, false,
1674 btcoexist->btc_set(btcoexist,
1687 btcoexist);
1694 static void btc8821a2ant_tdma_duration_adjust(struct btc_coexist *btcoexist,
1698 struct rtl_priv *rtlpriv = btcoexist->adapter;
1717 btc8821a2ant_ps_tdma(btcoexist,
1721 btc8821a2ant_ps_tdma(btcoexist,
1725 btc8821a2ant_ps_tdma(btcoexist,
1731 btc8821a2ant_ps_tdma(btcoexist,
1735 btc8821a2ant_ps_tdma(btcoexist,
1739 btc8821a2ant_ps_tdma(btcoexist,
1747 btc8821a2ant_ps_tdma(btcoexist,
1751 btc8821a2ant_ps_tdma(btcoexist,
1755 btc8821a2ant_ps_tdma(btcoexist,
1761 btc8821a2ant_ps_tdma(btcoexist,
1765 btc8821a2ant_ps_tdma(btcoexist,
1769 btc8821a2ant_ps_tdma(btcoexist,
1872 btc8821a2ant_ps_tdma(btcoexist,
1876 btc8821a2ant_ps_tdma(btcoexist,
1880 btc8821a2ant_ps_tdma(btcoexist,
1884 btc8821a2ant_ps_tdma(btcoexist,
1888 btc8821a2ant_ps_tdma(btcoexist,
1893 btc8821a2ant_ps_tdma(btcoexist,
1897 btc8821a2ant_ps_tdma(btcoexist,
1901 btc8821a2ant_ps_tdma(btcoexist,
1905 btc8821a2ant_ps_tdma(btcoexist,
1913 btcoexist, NORMAL_EXEC,
1919 btcoexist, NORMAL_EXEC,
1925 btcoexist, NORMAL_EXEC,
1931 btcoexist, NORMAL_EXEC,
1937 btcoexist, NORMAL_EXEC,
1943 btcoexist, NORMAL_EXEC,
1951 btcoexist, NORMAL_EXEC,
1957 btcoexist, NORMAL_EXEC,
1963 btcoexist, NORMAL_EXEC,
1969 btcoexist, NORMAL_EXEC,
1975 btcoexist, NORMAL_EXEC,
1981 btcoexist, NORMAL_EXEC,
1989 btc8821a2ant_ps_tdma(btcoexist,
1993 btc8821a2ant_ps_tdma(btcoexist,
1997 btc8821a2ant_ps_tdma(btcoexist,
2001 btc8821a2ant_ps_tdma(btcoexist,
2006 btc8821a2ant_ps_tdma(btcoexist,
2010 btc8821a2ant_ps_tdma(btcoexist,
2014 btc8821a2ant_ps_tdma(btcoexist,
2018 btc8821a2ant_ps_tdma(btcoexist,
2026 btcoexist, NORMAL_EXEC,
2032 btcoexist, NORMAL_EXEC,
2038 btcoexist, NORMAL_EXEC,
2044 btcoexist, NORMAL_EXEC,
2050 btcoexist, NORMAL_EXEC,
2056 btcoexist, NORMAL_EXEC,
2062 btcoexist, NORMAL_EXEC,
2070 btcoexist, NORMAL_EXEC,
2076 btcoexist, NORMAL_EXEC,
2082 btcoexist, NORMAL_EXEC,
2088 btcoexist, NORMAL_EXEC,
2094 btcoexist, NORMAL_EXEC,
2100 btcoexist, NORMAL_EXEC,
2106 btcoexist, NORMAL_EXEC,
2116 btc8821a2ant_ps_tdma(btcoexist,
2120 btc8821a2ant_ps_tdma(btcoexist,
2124 btc8821a2ant_ps_tdma(btcoexist,
2128 btc8821a2ant_ps_tdma(btcoexist,
2133 btc8821a2ant_ps_tdma(btcoexist,
2137 btc8821a2ant_ps_tdma(btcoexist,
2141 btc8821a2ant_ps_tdma(btcoexist,
2145 btc8821a2ant_ps_tdma(btcoexist,
2152 btcoexist, NORMAL_EXEC,
2158 btcoexist, NORMAL_EXEC,
2164 btcoexist, NORMAL_EXEC,
2170 btcoexist, NORMAL_EXEC,
2176 btcoexist, NORMAL_EXEC,
2182 btcoexist, NORMAL_EXEC,
2190 btcoexist, NORMAL_EXEC,
2196 btcoexist, NORMAL_EXEC,
2202 btcoexist, NORMAL_EXEC,
2208 btcoexist, NORMAL_EXEC,
2214 btcoexist, NORMAL_EXEC,
2220 btcoexist, NORMAL_EXEC,
2228 btc8821a2ant_ps_tdma(btcoexist,
2232 btc8821a2ant_ps_tdma(btcoexist,
2236 btc8821a2ant_ps_tdma(btcoexist,
2240 btc8821a2ant_ps_tdma(btcoexist,
2245 btc8821a2ant_ps_tdma(btcoexist,
2249 btc8821a2ant_ps_tdma(btcoexist,
2253 btc8821a2ant_ps_tdma(btcoexist,
2257 btc8821a2ant_ps_tdma(btcoexist,
2264 btcoexist, NORMAL_EXEC,
2270 btcoexist, NORMAL_EXEC,
2276 btcoexist, NORMAL_EXEC,
2282 btcoexist, NORMAL_EXEC,
2288 btcoexist, NORMAL_EXEC,
2294 btcoexist, NORMAL_EXEC,
2302 btcoexist, NORMAL_EXEC,
2308 btcoexist, NORMAL_EXEC,
2314 btcoexist, NORMAL_EXEC,
2320 btcoexist, NORMAL_EXEC,
2326 btcoexist, NORMAL_EXEC,
2332 btcoexist, NORMAL_EXEC,
2342 btc8821a2ant_ps_tdma(btcoexist,
2346 btc8821a2ant_ps_tdma(btcoexist,
2350 btc8821a2ant_ps_tdma(btcoexist,
2354 btc8821a2ant_ps_tdma(btcoexist,
2359 btc8821a2ant_ps_tdma(btcoexist,
2363 btc8821a2ant_ps_tdma(btcoexist,
2367 btc8821a2ant_ps_tdma(btcoexist,
2371 btc8821a2ant_ps_tdma(btcoexist,
2378 btcoexist, NORMAL_EXEC,
2384 btcoexist, NORMAL_EXEC,
2390 btcoexist, NORMAL_EXEC,
2396 btcoexist, NORMAL_EXEC,
2402 btcoexist, NORMAL_EXEC,
2408 btcoexist, NORMAL_EXEC,
2416 btcoexist, NORMAL_EXEC,
2422 btcoexist, NORMAL_EXEC,
2428 btcoexist, NORMAL_EXEC,
2434 btcoexist, NORMAL_EXEC,
2440 btcoexist, NORMAL_EXEC,
2446 btcoexist, NORMAL_EXEC,
2454 btc8821a2ant_ps_tdma(btcoexist,
2458 btc8821a2ant_ps_tdma(btcoexist,
2462 btc8821a2ant_ps_tdma(btcoexist,
2466 btc8821a2ant_ps_tdma(btcoexist,
2471 btc8821a2ant_ps_tdma(btcoexist,
2475 btc8821a2ant_ps_tdma(btcoexist,
2479 btc8821a2ant_ps_tdma(btcoexist,
2483 btc8821a2ant_ps_tdma(btcoexist,
2490 btcoexist, NORMAL_EXEC,
2496 btcoexist, NORMAL_EXEC,
2502 btcoexist, NORMAL_EXEC,
2508 btcoexist, NORMAL_EXEC,
2514 btcoexist, NORMAL_EXEC,
2520 btcoexist, NORMAL_EXEC,
2528 btcoexist, NORMAL_EXEC,
2534 btcoexist, NORMAL_EXEC,
2540 btcoexist, NORMAL_EXEC,
2546 btcoexist, NORMAL_EXEC,
2552 btcoexist, NORMAL_EXEC,
2558 btcoexist, NORMAL_EXEC,
2579 btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_SCAN, &scan);
2580 btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_LINK, &link);
2581 btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_ROAM, &roam);
2584 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, true,
2594 static void btc8821a2ant_action_sco(struct btc_coexist *btcoexist)
2596 struct btc_bt_link_info *bt_link_info = &btcoexist->bt_link_info;
2600 wifi_rssi_state = btc8821a2ant_wifi_rssi_state(btcoexist, 0, 2, 15, 0);
2601 bt_rssi_state = btc8821a2ant_bt_rssi_state(btcoexist, 2, 35, 0);
2603 btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
2605 btc8821a2ant_limited_rx(btcoexist, NORMAL_EXEC, false, false, 0x8);
2606 btc8821a2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 4);
2609 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, true);
2611 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false);
2613 btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw);
2617 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 2);
2621 btc8821a2ant_coex_table_with_type(btcoexist,
2626 btcoexist, NORMAL_EXEC, 17);
2629 btcoexist, NORMAL_EXEC, 12);
2633 btc8821a2ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0);
2635 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 0);
2641 btc8821a2ant_sw_mechanism1(btcoexist, true, true,
2643 btc8821a2ant_sw_mechanism2(btcoexist, true, false,
2646 btc8821a2ant_sw_mechanism1(btcoexist, true, true,
2648 btc8821a2ant_sw_mechanism2(btcoexist, false, false,
2654 btc8821a2ant_sw_mechanism1(btcoexist, false, true,
2656 btc8821a2ant_sw_mechanism2(btcoexist, true, false,
2659 btc8821a2ant_sw_mechanism1(btcoexist, false, true,
2661 btc8821a2ant_sw_mechanism2(btcoexist, false, false,
2667 static void btc8821a2ant_action_hid(struct btc_coexist *btcoexist)
2672 wifi_rssi_state = btc8821a2ant_wifi_rssi_state(btcoexist, 0, 2, 15, 0);
2673 bt_rssi_state = btc8821a2ant_bt_rssi_state(btcoexist,
2676 btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
2678 btc8821a2ant_limited_rx(btcoexist, NORMAL_EXEC, false, false, 0x8);
2679 btc8821a2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6);
2682 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, true);
2684 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false);
2686 btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw);
2690 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 7);
2693 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 2);
2696 btc8821a2ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0);
2697 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 24);
2703 btc8821a2ant_sw_mechanism1(btcoexist, true, true,
2705 btc8821a2ant_sw_mechanism2(btcoexist, true, false,
2708 btc8821a2ant_sw_mechanism1(btcoexist, true, true,
2710 btc8821a2ant_sw_mechanism2(btcoexist, false, false,
2717 btc8821a2ant_sw_mechanism1(btcoexist, false, true,
2719 btc8821a2ant_sw_mechanism2(btcoexist, true, false,
2722 btc8821a2ant_sw_mechanism1(btcoexist, false, true,
2724 btc8821a2ant_sw_mechanism2(btcoexist, false, false,
2731 static void btc8821a2ant_action_a2dp(struct btc_coexist *btcoexist)
2737 wifi_rssi_state = btc8821a2ant_wifi_rssi_state(btcoexist, 0, 2, 15, 0);
2738 wifi_rssi_state1 = btc8821a2ant_wifi_rssi_state(btcoexist, 1, 2,
2740 bt_rssi_state = btc8821a2ant_bt_rssi_state(btcoexist,
2745 btc8821a2ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE,
2748 btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff,
2750 btc8821a2ant_limited_rx(btcoexist, NORMAL_EXEC, false, false,
2752 btc8821a2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6);
2753 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, 2);
2755 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 0);
2757 btc8821a2ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE,
2759 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 23);
2762 btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw);
2764 btc8821a2ant_sw_mechanism1(btcoexist, true, false,
2766 btc8821a2ant_sw_mechanism2(btcoexist, true, false,
2769 btc8821a2ant_sw_mechanism1(btcoexist, false, false,
2771 btc8821a2ant_sw_mechanism2(btcoexist, true, false,
2777 btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
2778 btc8821a2ant_limited_rx(btcoexist, NORMAL_EXEC, false, false, 0x8);
2780 btc8821a2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6);
2783 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, 2);
2785 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, 0);
2788 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 7);
2789 btc8821a2ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE,
2792 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 13);
2793 btc8821a2ant_power_save_state(btcoexist, BTC_PS_LPS_ON, 0x50,
2800 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 23);
2802 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 23);
2806 btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw);
2810 btc8821a2ant_sw_mechanism1(btcoexist, true, false,
2812 btc8821a2ant_sw_mechanism2(btcoexist, true, false,
2815 btc8821a2ant_sw_mechanism1(btcoexist, true, false,
2817 btc8821a2ant_sw_mechanism2(btcoexist, false, false,
2823 btc8821a2ant_sw_mechanism1(btcoexist, false, false,
2825 btc8821a2ant_sw_mechanism2(btcoexist, true, false,
2828 btc8821a2ant_sw_mechanism1(btcoexist, false, false,
2830 btc8821a2ant_sw_mechanism2(btcoexist, false, false,
2836 static void btc8821a2ant_action_a2dp_pan_hs(struct btc_coexist *btcoexist)
2841 wifi_rssi_state = btc8821a2ant_wifi_rssi_state(btcoexist, 0, 2, 15, 0);
2842 wifi_rssi_state1 = btc8821a2ant_wifi_rssi_state(btcoexist, 1, 2,
2844 bt_rssi_state = btc8821a2ant_bt_rssi_state(btcoexist,
2847 btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
2849 btc8821a2ant_limited_rx(btcoexist, NORMAL_EXEC, false, false, 0x8);
2850 btc8821a2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6);
2853 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, 2);
2855 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, 0);
2858 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 7);
2859 btc8821a2ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE,
2862 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 13);
2863 btc8821a2ant_power_save_state(btcoexist, BTC_PS_LPS_ON, 0x50,
2867 btc8821a2ant_tdma_duration_adjust(btcoexist, false, true, 2);
2870 btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw);
2874 btc8821a2ant_sw_mechanism1(btcoexist, true, false,
2876 btc8821a2ant_sw_mechanism2(btcoexist, true, false,
2879 btc8821a2ant_sw_mechanism1(btcoexist, true, false,
2881 btc8821a2ant_sw_mechanism2(btcoexist, false, false,
2887 btc8821a2ant_sw_mechanism1(btcoexist, false, false,
2889 btc8821a2ant_sw_mechanism2(btcoexist, true, false,
2892 btc8821a2ant_sw_mechanism1(btcoexist, false, false,
2894 btc8821a2ant_sw_mechanism2(btcoexist, false, false,
2900 static void btc8821a2ant_action_pan_edr(struct btc_coexist *btcoexist)
2905 wifi_rssi_state = btc8821a2ant_wifi_rssi_state(btcoexist, 0, 2, 15, 0);
2906 wifi_rssi_state1 = btc8821a2ant_wifi_rssi_state(btcoexist, 1, 2,
2908 bt_rssi_state = btc8821a2ant_bt_rssi_state(btcoexist,
2911 btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
2913 btc8821a2ant_limited_rx(btcoexist, NORMAL_EXEC, false, false, 0x8);
2915 btc8821a2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6);
2918 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, true);
2920 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false);
2923 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 10);
2924 btc8821a2ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE,
2927 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 13);
2928 btc8821a2ant_power_save_state(btcoexist, BTC_PS_LPS_ON, 0x50,
2935 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 26);
2937 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 26);
2940 btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw);
2944 btc8821a2ant_sw_mechanism1(btcoexist, true, false,
2946 btc8821a2ant_sw_mechanism2(btcoexist, true, false,
2949 btc8821a2ant_sw_mechanism1(btcoexist, true, false,
2951 btc8821a2ant_sw_mechanism2(btcoexist, false, false,
2957 btc8821a2ant_sw_mechanism1(btcoexist, false, false,
2959 btc8821a2ant_sw_mechanism2(btcoexist, true, false,
2962 btc8821a2ant_sw_mechanism1(btcoexist, false, false,
2964 btc8821a2ant_sw_mechanism2(btcoexist, false, false,
2971 static void btc8821a2ant_action_pan_hs(struct btc_coexist *btcoexist)
2976 wifi_rssi_state = btc8821a2ant_wifi_rssi_state(btcoexist, 0, 2, 15, 0);
2977 btc8821a2ant_wifi_rssi_state(btcoexist, 1, 2,
2979 bt_rssi_state = btc8821a2ant_bt_rssi_state(btcoexist,
2982 btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
2984 btc8821a2ant_limited_rx(btcoexist, NORMAL_EXEC, false, false, 0x8);
2985 btc8821a2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6);
2988 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, 2);
2990 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, 0);
2992 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 7);
2993 btc8821a2ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0);
2994 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 1);
2996 btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw);
3000 btc8821a2ant_sw_mechanism1(btcoexist, true, false,
3002 btc8821a2ant_sw_mechanism2(btcoexist, true, false,
3005 btc8821a2ant_sw_mechanism1(btcoexist, true, false,
3007 btc8821a2ant_sw_mechanism2(btcoexist, false, false,
3013 btc8821a2ant_sw_mechanism1(btcoexist, false, false,
3015 btc8821a2ant_sw_mechanism2(btcoexist, true, false,
3018 btc8821a2ant_sw_mechanism1(btcoexist, false, false,
3020 btc8821a2ant_sw_mechanism2(btcoexist, false, false,
3027 static void btc8821a2ant_action_pan_edr_a2dp(struct btc_coexist *btcoexist)
3032 wifi_rssi_state = btc8821a2ant_wifi_rssi_state(btcoexist, 0, 2, 15, 0);
3033 wifi_rssi_state1 = btc8821a2ant_wifi_rssi_state(btcoexist, 1, 2,
3035 bt_rssi_state = btc8821a2ant_bt_rssi_state(btcoexist,
3038 btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
3040 btc8821a2ant_limited_rx(btcoexist, NORMAL_EXEC, false, false, 0x8);
3042 btc8821a2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6);
3045 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, 2);
3047 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, 0);
3050 btc8821a2ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE,
3053 btc8821a2ant_power_save_state(btcoexist, BTC_PS_LPS_ON, 0x50,
3056 btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw);
3060 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 12);
3063 btc8821a2ant_tdma_duration_adjust(btcoexist, false,
3066 btc8821a2ant_tdma_duration_adjust(btcoexist, false,
3069 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 13);
3070 btc8821a2ant_tdma_duration_adjust(btcoexist, false, true, 3);
3077 btc8821a2ant_sw_mechanism1(btcoexist, true, false,
3079 btc8821a2ant_sw_mechanism2(btcoexist, true, false,
3082 btc8821a2ant_sw_mechanism1(btcoexist, true, false,
3084 btc8821a2ant_sw_mechanism2(btcoexist, false, false,
3090 btc8821a2ant_sw_mechanism1(btcoexist, false, false,
3092 btc8821a2ant_sw_mechanism2(btcoexist, true, false,
3095 btc8821a2ant_sw_mechanism1(btcoexist, false, false,
3097 btc8821a2ant_sw_mechanism2(btcoexist, false, false,
3103 static void btc8821a2ant_action_pan_edr_hid(struct btc_coexist *btcoexist)
3108 wifi_rssi_state = btc8821a2ant_wifi_rssi_state(btcoexist, 0, 2, 15, 0);
3109 bt_rssi_state = btc8821a2ant_bt_rssi_state(btcoexist,
3112 btc8821a2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6);
3115 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, true);
3117 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false);
3119 btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw);
3124 btc8821a2ant_coex_table(btcoexist, NORMAL_EXEC, 0x55ff55ff,
3128 btc8821a2ant_coex_table(btcoexist, NORMAL_EXEC, 0x55ff55ff,
3133 btc8821a2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 3);
3137 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC,
3140 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 14);
3146 btc8821a2ant_sw_mechanism1(btcoexist, true, true,
3148 btc8821a2ant_sw_mechanism2(btcoexist, true, false,
3151 btc8821a2ant_sw_mechanism1(btcoexist, true, true,
3153 btc8821a2ant_sw_mechanism2(btcoexist, false, false,
3157 btc8821a2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6);
3161 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 10);
3163 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 14);
3169 btc8821a2ant_sw_mechanism1(btcoexist, false, true,
3171 btc8821a2ant_sw_mechanism2(btcoexist, true, false,
3174 btc8821a2ant_sw_mechanism1(btcoexist, false, true,
3176 btc8821a2ant_sw_mechanism2(btcoexist, false, false,
3183 static void btc8821a2ant_act_hid_a2dp_pan_edr(struct btc_coexist *btcoexist)
3188 wifi_rssi_state = btc8821a2ant_wifi_rssi_state(btcoexist, 0, 2, 15, 0);
3189 wifi_rssi_state1 = btc8821a2ant_wifi_rssi_state(btcoexist, 1, 2,
3191 bt_rssi_state = btc8821a2ant_bt_rssi_state(btcoexist,
3194 btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
3196 btc8821a2ant_limited_rx(btcoexist, NORMAL_EXEC, false, false, 0x8);
3197 btc8821a2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6);
3200 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, 2);
3202 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, 0);
3205 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 7);
3206 btc8821a2ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE,
3209 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 14);
3210 btc8821a2ant_power_save_state(btcoexist, BTC_PS_LPS_ON, 0x50,
3214 btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw);
3219 btc8821a2ant_tdma_duration_adjust(btcoexist, true,
3222 btc8821a2ant_tdma_duration_adjust(btcoexist, true,
3225 btc8821a2ant_tdma_duration_adjust(btcoexist, true, true, 3);
3232 btc8821a2ant_sw_mechanism1(btcoexist, true, true,
3234 btc8821a2ant_sw_mechanism2(btcoexist, true, false,
3237 btc8821a2ant_sw_mechanism1(btcoexist, true, true,
3239 btc8821a2ant_sw_mechanism2(btcoexist, false, false,
3245 btc8821a2ant_sw_mechanism1(btcoexist, false, true,
3247 btc8821a2ant_sw_mechanism2(btcoexist, true, false,
3250 btc8821a2ant_sw_mechanism1(btcoexist, false, true,
3252 btc8821a2ant_sw_mechanism2(btcoexist, false, false,
3258 static void btc8821a2ant_action_hid_a2dp(struct btc_coexist *btcoexist)
3264 wifi_rssi_state = btc8821a2ant_wifi_rssi_state(btcoexist, 0, 2, 15, 0);
3265 btc8821a2ant_wifi_rssi_state(btcoexist, 1, 2,
3267 bt_rssi_state = btc8821a2ant_bt_rssi_state(btcoexist,
3270 btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
3272 btc8821a2ant_limited_rx(btcoexist, NORMAL_EXEC, false, true, 0x5);
3273 btc8821a2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6);
3275 btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw);
3278 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, 2);
3280 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, 2);
3282 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, 0);
3286 btcoexist->btc_get(btcoexist, BTC_GET_U1_AP_NUM,
3289 btc8821a2ant_dec_bt_pwr(btcoexist,
3292 btc8821a2ant_dec_bt_pwr(btcoexist,
3295 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, 2);
3297 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, 0);
3302 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 7);
3303 btc8821a2ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE,
3306 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 14);
3307 btc8821a2ant_power_save_state(btcoexist, BTC_PS_LPS_ON, 0x50,
3314 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 23);
3316 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 23);
3323 btc8821a2ant_sw_mechanism1(btcoexist, true, true,
3325 btc8821a2ant_sw_mechanism2(btcoexist, true, false,
3328 btc8821a2ant_sw_mechanism1(btcoexist, true, true,
3330 btc8821a2ant_sw_mechanism2(btcoexist, false, false,
3336 btc8821a2ant_sw_mechanism1(btcoexist, false, true,
3338 btc8821a2ant_sw_mechanism2(btcoexist, true, false,
3341 btc8821a2ant_sw_mechanism1(btcoexist, false, true,
3343 btc8821a2ant_sw_mechanism2(btcoexist, false, false,
3349 static void btc8821a2ant_action_wifi_multi_port(struct btc_coexist *btcoexist)
3351 btc8821a2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6);
3352 btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, 0);
3355 btc8821a2ant_sw_mechanism1(btcoexist, false, false, false, false);
3356 btc8821a2ant_sw_mechanism2(btcoexist, false, false, false, 0x18);
3359 btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 0);
3361 btc8821a2ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0);
3362 btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 1);
3365 static void btc8821a2ant_run_coexist_mechanism(struct btc_coexist *btcoexist)
3367 struct rtl_priv *rtlpriv = btcoexist->adapter;
3368 struct btc_bt_link_info *bt_link_info = &btcoexist->bt_link_info;
3376 if (btcoexist->manual_control) {
3382 btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_UNDER_5G, &wifi_under_5g);
3387 btc8821a2ant_coex_under_5g(btcoexist);
3397 algorithm = btc8821a2ant_action_algorithm(btcoexist);
3402 btc8821a2ant_action_bt_inquiry(btcoexist);
3406 btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_SCAN, &scan);
3407 btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_LINK, &link);
3408 btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_ROAM, &roam);
3413 btc8821a2ant_action_wifi_link_process(btcoexist);
3418 btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_LINK_STATUS,
3433 btcoexist->btc_set(btcoexist, BTC_SET_BL_MIRACAST_PLUS_BT,
3435 btc8821a2ant_action_wifi_multi_port(btcoexist);
3441 btcoexist->btc_set(btcoexist, BTC_SET_BL_MIRACAST_PLUS_BT,
3448 if (btc8821a2ant_is_common_action(btcoexist)) {
3464 btc8821a2ant_action_sco(btcoexist);
3469 btc8821a2ant_action_hid(btcoexist);
3474 btc8821a2ant_action_a2dp(btcoexist);
3479 btc8821a2ant_action_a2dp_pan_hs(btcoexist);
3484 btc8821a2ant_action_pan_edr(btcoexist);
3489 btc8821a2ant_action_pan_hs(btcoexist);
3494 btc8821a2ant_action_pan_edr_a2dp(btcoexist);
3499 btc8821a2ant_action_pan_edr_hid(btcoexist);
3504 btc8821a2ant_act_hid_a2dp_pan_edr(btcoexist);
3509 btc8821a2ant_action_hid_a2dp(btcoexist);
3514 btc8821a2ant_coex_all_off(btcoexist);
3521 static void btc8821a2ant_wifi_off_hw_cfg(struct btc_coexist *btcoexist)
3527 btcoexist->btc_write_1byte(btcoexist, 0x76e, 0x4);
3530 btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x780);
3531 btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_FW_VER, &fw_ver);
3535 btcoexist->btc_fill_h2c(btcoexist, 0x6E, 1, h2c_parameter);
3537 btcoexist->btc_write_1byte(btcoexist, 0x765, 0x18);
3544 void ex_btc8821a2ant_init_hwconfig(struct btc_coexist *btcoexist)
3546 struct rtl_priv *rtlpriv = btcoexist->adapter;
3554 btcoexist->btc_get_rf_reg(btcoexist, BTC_RF_A, 0x1e, 0xfffff);
3557 u1tmp = btcoexist->btc_read_1byte(btcoexist, 0x790);
3560 btcoexist->btc_write_1byte(btcoexist, 0x790, u1tmp);
3563 btc8821a2ant_set_ant_path(btcoexist, BTC_ANT_WIFI_AT_MAIN, true, false);
3567 btc8821a2ant_coex_table_with_type(btcoexist, FORCE_EXEC, 0);
3571 btcoexist->btc_write_1byte(btcoexist, 0x76e, 0x4);
3572 btcoexist->btc_write_1byte(btcoexist, 0x778, 0x3);
3573 btcoexist->btc_write_1byte_bitmask(btcoexist, 0x40, 0x20, 0x1);
3576 void ex_btc8821a2ant_pre_load_firmware(struct btc_coexist *btcoexist)
3578 struct btc_board_info *board_info = &btcoexist->board_info;
3592 if (btcoexist->chip_interface == BTC_INTF_USB) {
3595 btcoexist->btc_write_local_reg_1byte(btcoexist, 0xfe08, u8tmp);
3604 if (btcoexist->chip_interface == BTC_INTF_PCI)
3605 btcoexist->btc_write_local_reg_1byte(btcoexist, 0x384,
3607 else if (btcoexist->chip_interface == BTC_INTF_SDIO)
3608 btcoexist->btc_write_local_reg_1byte(btcoexist, 0x60,
3613 void ex_btc8821a2ant_init_coex_dm(struct btc_coexist *btcoexist)
3615 struct rtl_priv *rtlpriv = btcoexist->adapter;
3620 btc8821a2ant_init_coex_dm(btcoexist);
3623 void ex_btc8821a2ant_display_coex_info(struct btc_coexist *btcoexist,
3626 struct btc_board_info *board_info = &btcoexist->board_info;
3627 struct btc_stack_info *stack_info = &btcoexist->stack_info;
3642 if (btcoexist->manual_control) {
3650 btcoexist->btc_get(btcoexist, BTC_GET_U4_BT_PATCH_VER, &bt_patch_ver);
3651 btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_FW_VER, &fw_ver);
3657 btcoexist->btc_get(btcoexist,
3659 btcoexist->btc_get(btcoexist,
3661 btcoexist->btc_get(btcoexist,
3671 btcoexist->btc_get(btcoexist, BTC_GET_S4_WIFI_RSSI, &wifi_rssi);
3672 btcoexist->btc_get(btcoexist, BTC_GET_S4_HS_RSSI, &bt_hs_rssi);
3676 btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_SCAN, &scan);
3677 btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_LINK, &link);
3678 btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_ROAM, &roam);
3682 btcoexist->btc_get(btcoexist,
3684 btcoexist->btc_get(btcoexist,
3686 btcoexist->btc_get(btcoexist,
3688 btcoexist->btc_get(btcoexist,
3704 btcoexist->btc_disp_dbg_msg(btcoexist,
3726 btcoexist->btc_disp_dbg_msg(btcoexist, BTC_DBG_DISP_FW_PWR_MODE_CMD, m);
3740 if (!btcoexist->manual_control) {
3757 u1tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x778);
3758 u1tmp[1] = btcoexist->btc_read_1byte(btcoexist, 0x6cc);
3763 u1tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x8db);
3764 u1tmp[1] = btcoexist->btc_read_1byte(btcoexist, 0xc5b);
3769 u4tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0xcb4);
3774 u1tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x40);
3775 u4tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x4c);
3776 u4tmp[1] = btcoexist->btc_read_4byte(btcoexist, 0x974);
3781 u4tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x550);
3782 u1tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x522);
3787 u4tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0xc50);
3788 u1tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0xa0a);
3793 u4tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0xf48);
3794 u1tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0xa5b);
3795 u1tmp[1] = btcoexist->btc_read_1byte(btcoexist, 0xa5c);
3800 u4tmp[0] = btcoexist->btc_read_4byte(btcoexist, 0x6c0);
3801 u4tmp[1] = btcoexist->btc_read_4byte(btcoexist, 0x6c4);
3802 u4tmp[2] = btcoexist->btc_read_4byte(btcoexist, 0x6c8);
3815 u1tmp[0] = btcoexist->btc_read_1byte(btcoexist, 0x41b);
3820 btcoexist->btc_disp_dbg_msg(btcoexist, BTC_DBG_DISP_COEX_STATISTICS, m);
3823 void ex_btc8821a2ant_ips_notify(struct btc_coexist *btcoexist, u8 type)
3825 struct rtl_priv *rtlpriv = btcoexist->adapter;
3831 btc8821a2ant_wifi_off_hw_cfg(btcoexist);
3832 btc8821a2ant_ignore_wlan_act(btcoexist, FORCE_EXEC, true);
3833 btc8821a2ant_coex_all_off(btcoexist);
3838 ex_btc8821a2ant_init_hwconfig(btcoexist);
3839 btc8821a2ant_init_coex_dm(btcoexist);
3840 btc8821a2ant_query_bt_info(btcoexist);
3844 void ex_btc8821a2ant_lps_notify(struct btc_coexist *btcoexist, u8 type)
3846 struct rtl_priv *rtlpriv = btcoexist->adapter;
3859 void ex_btc8821a2ant_scan_notify(struct btc_coexist *btcoexist, u8 type)
3861 struct rtl_priv *rtlpriv = btcoexist->adapter;
3872 void ex_btc8821a2ant_connect_notify(struct btc_coexist *btcoexist, u8 type)
3874 struct rtl_priv *rtlpriv = btcoexist->adapter;
3885 void ex_btc8821a2ant_media_status_notify(struct btc_coexist *btcoexist,
3888 struct rtl_priv *rtlpriv = btcoexist->adapter;
3903 btcoexist->btc_get(btcoexist, BTC_GET_U1_WIFI_CENTRAL_CHNL,
3909 btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw);
3931 btcoexist->btc_fill_h2c(btcoexist, 0x66, 3, h2c_parameter);
3934 void ex_btc8821a2ant_special_packet_notify(struct btc_coexist *btcoexist,
3937 struct rtl_priv *rtlpriv = btcoexist->adapter;
3945 void ex_btc8821a2ant_bt_info_notify(struct btc_coexist *btcoexist,
3948 struct rtl_priv *rtlpriv = btcoexist->adapter;
3955 btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_UNDER_5G, &wifi_under_5g);
3956 btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_CONNECTED,
3980 if (btcoexist->manual_control) {
3998 btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_TX_RX_MASK,
4006 btcoexist->btc_set_bt_reg(btcoexist, BTC_BT_REG_RF,
4014 btcoexist->btc_get(btcoexist,
4017 ex_btc8821a2ant_media_status_notify(btcoexist,
4020 ex_btc8821a2ant_media_status_notify(btcoexist,
4026 if (!btcoexist->manual_control && !wifi_under_5g) {
4038 btc8821a2ant_ignore_wlan_act(btcoexist,
4054 btcoexist, FORCE_EXEC, true);
4101 btc8821a2ant_update_bt_link_info(btcoexist);
4137 btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_TRAFFIC_BUSY, &bt_busy);
4140 btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_LIMITED_DIG, &limited_dig);
4142 btc8821a2ant_run_coexist_mechanism(btcoexist);
4145 void ex_btc8821a2ant_halt_notify(struct btc_coexist *btcoexist)
4147 struct rtl_priv *rtlpriv = btcoexist->adapter;
4152 btc8821a2ant_wifi_off_hw_cfg(btcoexist);
4153 btc8821a2ant_ignore_wlan_act(btcoexist, FORCE_EXEC, true);
4154 ex_btc8821a2ant_media_status_notify(btcoexist, BTC_MEDIA_DISCONNECT);
4157 void ex_btc8821a2ant_pnp_notify(struct btc_coexist *btcoexist, u8 pnp_state)
4159 struct rtl_priv *rtlpriv = btcoexist->adapter;
4169 ex_btc8821a2ant_init_hwconfig(btcoexist);
4170 btc8821a2ant_init_coex_dm(btcoexist);
4171 btc8821a2ant_query_bt_info(btcoexist);
4175 void ex_btc8821a2ant_periodical(struct btc_coexist *btcoexist)
4177 struct rtl_priv *rtlpriv = btcoexist->adapter;
4190 btc8821a2ant_set_ant_path(btcoexist,
4195 if (btcoexist->auto_report_2ant) {
4196 btc8821a2ant_query_bt_info(btcoexist);
4198 btc8821a2ant_monitor_bt_ctr(btcoexist);
4199 btc8821a2ant_monitor_wifi_ctr(btcoexist);
4201 if (btc8821a2ant_is_wifi_status_changed(btcoexist) ||
4203 btc8821a2ant_run_coexist_mechanism(btcoexist);