Commit 8113b9c4 authored by Yan-Hsuan Chuang's avatar Yan-Hsuan Chuang Committed by Kalle Valo

rtlwifi: btcoex: 21a 1ant: set tdma and coex table when wifi is idle

When wifi is idle, bt could have more resources to transmit, so set the
tdma and coex table to achieve this.
Signed-off-by: default avatarYan-Hsuan Chuang <yhchuang@realtek.com>
Signed-off-by: default avatarLarry 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: default avatarKalle Valo <kvalo@codeaurora.org>
parent 3acd1685
...@@ -1212,8 +1212,8 @@ static void btc8821a1ant_ps_tdma(struct btc_coexist *btcoexist, ...@@ -1212,8 +1212,8 @@ static void btc8821a1ant_ps_tdma(struct btc_coexist *btcoexist,
0x1a, 0, 0x58); 0x1a, 0, 0x58);
break; break;
case 32: case 32:
btc8821a1ant_set_fw_ps_tdma(btcoexist, 0x61, 0xa, btc8821a1ant_set_fw_ps_tdma(btcoexist, 0x61, 0x35,
0x3, 0x10, 0x0); 0x3, 0x11, 0x11);
break; break;
case 33: case 33:
btc8821a1ant_set_fw_ps_tdma(btcoexist, 0xa3, 0x25, btc8821a1ant_set_fw_ps_tdma(btcoexist, 0xa3, 0x25,
...@@ -1231,6 +1231,10 @@ static void btc8821a1ant_ps_tdma(struct btc_coexist *btcoexist, ...@@ -1231,6 +1231,10 @@ static void btc8821a1ant_ps_tdma(struct btc_coexist *btcoexist,
btc8821a1ant_set_fw_ps_tdma(btcoexist, 0xd3, 0x12, btc8821a1ant_set_fw_ps_tdma(btcoexist, 0xd3, 0x12,
0x3, 0x14, 0x50); 0x3, 0x14, 0x50);
break; break;
case 43:
btc8821a1ant_set_fw_ps_tdma(btcoexist, 0x51, 0x30,
0x3, 0x10, 0x11);
break;
} }
} else { } else {
/* disable PS tdma */ /* disable PS tdma */
...@@ -1619,15 +1623,23 @@ static void btc8821a1ant_act_wifi_con_bt_acl_busy(struct btc_coexist *btcoexist, ...@@ -1619,15 +1623,23 @@ static void btc8821a1ant_act_wifi_con_bt_acl_busy(struct btc_coexist *btcoexist,
return; return;
} else if (bt_link_info->a2dp_only) { } else if (bt_link_info->a2dp_only) {
/* A2DP */ /* A2DP */
if ((bt_rssi_state != BTC_RSSI_STATE_HIGH) && if (wifi_status == BT_8821A_1ANT_WIFI_STATUS_CONNECTED_IDLE) {
(bt_rssi_state != BTC_RSSI_STATE_STAY_HIGH)) { btc8821a1ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 32);
btc8821a1ant_coex_table_with_type(btcoexist,
NORMAL_EXEC, 1);
coex_dm->auto_tdma_adjust = false;
} else if ((bt_rssi_state != BTC_RSSI_STATE_HIGH) &&
(bt_rssi_state == BTC_RSSI_STATE_STAY_HIGH)) {
btc8821a1ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 14);
btc8821a1ant_coex_table_with_type(btcoexist,
NORMAL_EXEC, 1);
} else {
/* for low BT RSSI */ /* for low BT RSSI */
btc8821a1ant_ps_tdma(btcoexist, NORMAL_EXEC, btc8821a1ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 14);
true, 11); btc8821a1ant_coex_table_with_type(btcoexist,
NORMAL_EXEC, 1);
coex_dm->auto_tdma_adjust = false; coex_dm->auto_tdma_adjust = false;
} }
btc8821a1ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 1);
} else if (bt_link_info->hid_exist && bt_link_info->a2dp_exist) { } else if (bt_link_info->hid_exist && bt_link_info->a2dp_exist) {
/* HID+A2DP */ /* HID+A2DP */
if ((bt_rssi_state == BTC_RSSI_STATE_HIGH) || if ((bt_rssi_state == BTC_RSSI_STATE_HIGH) ||
...@@ -1638,7 +1650,7 @@ static void btc8821a1ant_act_wifi_con_bt_acl_busy(struct btc_coexist *btcoexist, ...@@ -1638,7 +1650,7 @@ static void btc8821a1ant_act_wifi_con_bt_acl_busy(struct btc_coexist *btcoexist,
} else { } else {
/*for low BT RSSI*/ /*for low BT RSSI*/
btc8821a1ant_ps_tdma(btcoexist, NORMAL_EXEC, btc8821a1ant_ps_tdma(btcoexist, NORMAL_EXEC,
true, 11); true, 14);
coex_dm->auto_tdma_adjust = false; coex_dm->auto_tdma_adjust = false;
} }
...@@ -1647,13 +1659,13 @@ static void btc8821a1ant_act_wifi_con_bt_acl_busy(struct btc_coexist *btcoexist, ...@@ -1647,13 +1659,13 @@ static void btc8821a1ant_act_wifi_con_bt_acl_busy(struct btc_coexist *btcoexist,
(bt_link_info->hid_exist && bt_link_info->pan_exist)) { (bt_link_info->hid_exist && bt_link_info->pan_exist)) {
/* PAN(OPP, FTP), HID+PAN(OPP, FTP) */ /* PAN(OPP, FTP), HID+PAN(OPP, FTP) */
btc8821a1ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 3); btc8821a1ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 3);
btc8821a1ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 1); btc8821a1ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 6);
coex_dm->auto_tdma_adjust = false; coex_dm->auto_tdma_adjust = false;
} else if (((bt_link_info->a2dp_exist) && (bt_link_info->pan_exist)) || } else if (((bt_link_info->a2dp_exist) && (bt_link_info->pan_exist)) ||
(bt_link_info->hid_exist && bt_link_info->a2dp_exist && (bt_link_info->hid_exist && bt_link_info->a2dp_exist &&
bt_link_info->pan_exist)) { bt_link_info->pan_exist)) {
/* A2DP+PAN(OPP, FTP), HID+A2DP+PAN(OPP, FTP) */ /* A2DP+PAN(OPP, FTP), HID+A2DP+PAN(OPP, FTP) */
btc8821a1ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 13); btc8821a1ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 43);
btc8821a1ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 1); btc8821a1ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 1);
coex_dm->auto_tdma_adjust = false; coex_dm->auto_tdma_adjust = false;
} else { } else {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment