提交 a4162ea7 编写于 作者: Y Yan-Hsuan Chuang 提交者: Kalle Valo

rtlwifi: btcoex: 21a 2ant: monitor extra wifi rssi to examine network status

Here we monitor one more wifi rssi to check the status of the network
and set the coex table instead of the legacy way.
Signed-off-by: NYan-Hsuan Chuang <yhchuang@realtek.com>
Signed-off-by: NLarry Finger <Larry.Finger@lwfinger.net>
Cc: Pkshih <pkshih@realtek.com>
Cc: Birming Chiu <birming@realtek.com>
Cc: Shaofu <shaofu@realtek.com>
Cc: Steven Ting <steventing@realtek.com>
Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
上级 0fcad45b
...@@ -2939,11 +2939,18 @@ static void btc8821a2ant_action_a2dp_pan_hs(struct btc_coexist *btcoexist) ...@@ -2939,11 +2939,18 @@ static void btc8821a2ant_action_a2dp_pan_hs(struct btc_coexist *btcoexist)
static void btc8821a2ant_action_pan_edr(struct btc_coexist *btcoexist) static void btc8821a2ant_action_pan_edr(struct btc_coexist *btcoexist)
{ {
u8 wifi_rssi_state, bt_rssi_state; u8 wifi_rssi_state, wifi_rssi_state1, bt_rssi_state;
u32 wifi_bw; u32 wifi_bw;
wifi_rssi_state = btc8821a2ant_wifi_rssi_state(btcoexist, 0, 2, 15, 0); wifi_rssi_state = btc8821a2ant_wifi_rssi_state(btcoexist, 0, 2, 15, 0);
bt_rssi_state = btc8821a2ant_bt_rssi_state(btcoexist, 2, 35, 0); wifi_rssi_state1 = btc8821a2ant_wifi_rssi_state(btcoexist, 1, 2,
BT_8821A_2ANT_WIFI_RSSI_COEXSWITCH_THRES, 0);
bt_rssi_state = btc8821a2ant_bt_rssi_state(btcoexist,
2, BT_8821A_2ANT_BT_RSSI_COEXSWITCH_THRES, 0);
btcoexist->btc_set_rf_reg(btcoexist, BTC_RF_A, 0x1, 0xfffff, 0x0);
btc8821a2ant_limited_rx(btcoexist, NORMAL_EXEC, false, false, 0x8);
btc8821a2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6); btc8821a2ant_fw_dac_swing_lvl(btcoexist, NORMAL_EXEC, 6);
...@@ -2952,30 +2959,25 @@ static void btc8821a2ant_action_pan_edr(struct btc_coexist *btcoexist) ...@@ -2952,30 +2959,25 @@ static void btc8821a2ant_action_pan_edr(struct btc_coexist *btcoexist)
else else
btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false); btc8821a2ant_dec_bt_pwr(btcoexist, NORMAL_EXEC, false);
btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw); if (BTC_RSSI_HIGH(wifi_rssi_state1) && BTC_RSSI_HIGH(bt_rssi_state)) {
btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 10);
if (BTC_WIFI_BW_LEGACY == wifi_bw) { btc8821a2ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE,
/* for HID at 11b/g mode */ 0x0, 0x0);
btc8821a2ant_coex_table(btcoexist, NORMAL_EXEC, 0x55ff55ff,
0x5aff5aff, 0xffff, 0x3);
} else { } else {
btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 13); btc8821a2ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 13);
btc8821a2ant_power_save_state(btcoexist, BTC_PS_LPS_ON, 0x50, btc8821a2ant_power_save_state(btcoexist, BTC_PS_LPS_ON, 0x50,
0x4); 0x4);
} }
if (BTC_WIFI_BW_HT40 == wifi_bw) { if ((bt_rssi_state == BTC_RSSI_STATE_HIGH) ||
/* fw mechanism */ (bt_rssi_state == BTC_RSSI_STATE_STAY_HIGH))
if ((bt_rssi_state == BTC_RSSI_STATE_HIGH) || btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 26);
(bt_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { else
btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 26);
true, 1);
} else {
btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC,
true, 5);
}
/* sw mechanism */ /* sw mechanism */
btcoexist->btc_get(btcoexist, BTC_GET_U4_WIFI_BW, &wifi_bw);
if (wifi_bw == BTC_WIFI_BW_HT40) {
if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) ||
(wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) {
btc8821a2ant_sw_mechanism1(btcoexist, true, false, btc8821a2ant_sw_mechanism1(btcoexist, true, false,
...@@ -2989,17 +2991,6 @@ static void btc8821a2ant_action_pan_edr(struct btc_coexist *btcoexist) ...@@ -2989,17 +2991,6 @@ static void btc8821a2ant_action_pan_edr(struct btc_coexist *btcoexist)
false, 0x18); false, 0x18);
} }
} else { } else {
/* fw mechanism */
if ((bt_rssi_state == BTC_RSSI_STATE_HIGH) ||
(bt_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) {
btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC,
true, 1);
} else {
btc8821a2ant_ps_tdma(btcoexist, NORMAL_EXEC,
true, 5);
}
/* sw mechanism */
if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) || if ((wifi_rssi_state == BTC_RSSI_STATE_HIGH) ||
(wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) { (wifi_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) {
btc8821a2ant_sw_mechanism1(btcoexist, false, false, btc8821a2ant_sw_mechanism1(btcoexist, false, false,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册