rtlwifi: btcoex: Remove 23b 1ant configuration parameter

In file halbtc8723b1ant.c, there are directives that depend on an
undocumented configuration parameter BT_AUTO_REPORT_ONLY_8723B_1ANT
that cannot be set from Kconfig. This parameter is replaced by a
boolean in the main structure used by all routines. It still cannot
be changed dynamically, but it is easier to document.

The following routines are restored:
halbtc8723b1ant_bt_auto_report()
halbtc8723b1ant_set_bt_auto_report()
halbtc8723b1ant_action_wifi_only()
halbtc8723b1ant_monitor_bt_enable_disable()

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Yan-Hsuan Chuang <yhchuang@realtek.com>
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: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
Larry Finger 2017-05-04 13:46:59 -05:00 committed by Kalle Valo
parent aef9ae4607
commit f66509e3d7
2 changed files with 102 additions and 23 deletions

View file

@ -333,6 +333,35 @@ static void halbtc8723b1ant_update_bt_link_info(struct btc_coexist *btcoexist)
bt_link_info->hid_only = false;
}
static void halbtc8723b1ant_set_bt_auto_report(struct btc_coexist *btcoexist,
bool enable_auto_report)
{
u8 h2c_parameter[1] = {0};
h2c_parameter[0] = 0;
if (enable_auto_report)
h2c_parameter[0] |= BIT(0);
btcoexist->btc_fill_h2c(btcoexist, 0x68, 1, h2c_parameter);
}
static void halbtc8723b1ant_bt_auto_report(struct btc_coexist *btcoexist,
bool force_exec,
bool enable_auto_report)
{
coex_dm->cur_bt_auto_report = enable_auto_report;
if (!force_exec) {
if (coex_dm->pre_bt_auto_report == coex_dm->cur_bt_auto_report)
return;
}
halbtc8723b1ant_set_bt_auto_report(btcoexist,
coex_dm->cur_bt_auto_report);
coex_dm->pre_bt_auto_report = coex_dm->cur_bt_auto_report;
}
static void btc8723b1ant_set_sw_pen_tx_rate_adapt(struct btc_coexist *btcoexist,
bool low_penalty_ra)
{
@ -1099,6 +1128,57 @@ static void halbtc8723b1ant_power_save_state(struct btc_coexist *btcoexist,
}
}
static void halbtc8723b1ant_action_wifi_only(struct btc_coexist *btcoexist)
{
halbtc8723b1ant_coex_table_with_type(btcoexist, FORCE_EXEC, 0);
halbtc8723b1ant_ps_tdma(btcoexist, FORCE_EXEC, false, 8);
halbtc8723b1ant_set_ant_path(btcoexist, false, false, BTC_ANT_PATH_PTA);
}
/* check if BT is disabled */
static void halbtc8723b1ant_monitor_bt_enable_disable(struct btc_coexist
*btcoexist)
{
struct rtl_priv *rtlpriv = btcoexist->adapter;
static u32 bt_disable_cnt;
bool bt_active = true, bt_disabled;
if (coex_sta->high_priority_tx == 0 &&
coex_sta->high_priority_rx == 0 && coex_sta->low_priority_tx == 0 &&
coex_sta->low_priority_rx == 0)
bt_active = false;
if (coex_sta->high_priority_tx == 0xffff &&
coex_sta->high_priority_rx == 0xffff &&
coex_sta->low_priority_tx == 0xffff &&
coex_sta->low_priority_rx == 0xffff)
bt_active = false;
if (bt_active) {
bt_disable_cnt = 0;
bt_disabled = false;
} else {
bt_disable_cnt++;
if (bt_disable_cnt >= 2)
bt_disabled = true;
}
if (coex_sta->bt_disabled != bt_disabled) {
RT_TRACE(rtlpriv, COMP_BT_COEXIST, DBG_LOUD,
"[BTCoex], BT is from %s to %s!!\n",
(coex_sta->bt_disabled ? "disabled" : "enabled"),
(bt_disabled ? "disabled" : "enabled"));
coex_sta->bt_disabled = bt_disabled;
btcoexist->btc_set(btcoexist, BTC_SET_BL_BT_DISABLE,
&bt_disabled);
if (bt_disabled) {
halbtc8723b1ant_action_wifi_only(btcoexist);
btcoexist->btc_set(btcoexist, BTC_SET_ACT_LEAVE_LPS,
NULL);
btcoexist->btc_set(btcoexist, BTC_SET_ACT_NORMAL_LPS,
NULL);
}
}
}
/*****************************************************
*
* Non-Software Coex Mechanism start
@ -1638,6 +1718,7 @@ static void halbtc8723b1ant_init_hw_config(struct btc_coexist *btcoexist,
void ex_halbtc8723b1ant_init_hwconfig(struct btc_coexist *btcoexist)
{
halbtc8723b1ant_init_hw_config(btcoexist, true);
btcoexist->auto_report_1ant = true;
}
void ex_halbtc8723b1ant_init_coex_dm(struct btc_coexist *btcoexist)
@ -1926,9 +2007,8 @@ void ex_halbtc8723b1ant_display_coex_info(struct btc_coexist *btcoexist)
RT_TRACE(rtlpriv, COMP_INIT, DBG_DMESG, "\r\n %-35s = %d/ %d",
"0x774(low-pri rx/tx)", coex_sta->low_priority_rx,
coex_sta->low_priority_tx);
#if (BT_AUTO_REPORT_ONLY_8723B_1ANT == 1)
halbtc8723b1ant_monitor_bt_ctr(btcoexist);
#endif
if (btcoexist->auto_report_1ant)
halbtc8723b1ant_monitor_bt_ctr(btcoexist);
btcoexist->btc_disp_dbg_msg(btcoexist, BTC_DBG_DISP_COEX_STATISTICS);
}
@ -2247,14 +2327,15 @@ void ex_halbtc8723b1ant_bt_info_notify(struct btc_coexist *btcoexist,
} else {
/* BT already NOT ignore Wlan active, do nothing here.*/
}
#if (BT_AUTO_REPORT_ONLY_8723B_1ANT == 0)
if (coex_sta->bt_info_ext & BIT4) {
/* BT auto report already enabled, do nothing */
} else {
halbtc8723b1ant_bt_auto_report(btcoexist, FORCE_EXEC,
true);
if (!btcoexist->auto_report_1ant) {
if (coex_sta->bt_info_ext & BIT4) {
/* BT auto report already enabled, do nothing */
} else {
halbtc8723b1ant_bt_auto_report(btcoexist,
FORCE_EXEC,
true);
}
}
#endif
}
/* check BIT2 first ==> check if bt is under inquiry or page scan */
@ -2425,16 +2506,15 @@ void ex_halbtc8723b1ant_periodical(struct btc_coexist *btcoexist)
"[BTCoex], ****************************************************************\n");
}
#if (BT_AUTO_REPORT_ONLY_8723B_1ANT == 0)
halbtc8723b1ant_query_bt_info(btcoexist);
halbtc8723b1ant_monitor_bt_ctr(btcoexist);
halbtc8723b1ant_monitor_bt_enable_disable(btcoexist);
#else
if (btc8723b1ant_is_wifi_status_changed(btcoexist) ||
coex_dm->auto_tdma_adjust) {
halbtc8723b1ant_run_coexist_mechanism(btcoexist);
if (!btcoexist->auto_report_1ant) {
halbtc8723b1ant_query_bt_info(btcoexist);
halbtc8723b1ant_monitor_bt_ctr(btcoexist);
halbtc8723b1ant_monitor_bt_enable_disable(btcoexist);
} else {
if (btc8723b1ant_is_wifi_status_changed(btcoexist) ||
coex_dm->auto_tdma_adjust) {
halbtc8723b1ant_run_coexist_mechanism(btcoexist);
}
coex_sta->special_pkt_period_cnt++;
}
coex_sta->special_pkt_period_cnt++;
#endif
}

View file

@ -25,8 +25,6 @@
/**********************************************************************
* The following is for 8723B 1ANT BT Co-exist definition
**********************************************************************/
#define BT_AUTO_REPORT_ONLY_8723B_1ANT 1
#define BT_INFO_8723B_1ANT_B_FTP BIT7
#define BT_INFO_8723B_1ANT_B_A2DP BIT6
#define BT_INFO_8723B_1ANT_B_HID BIT5
@ -138,6 +136,7 @@ struct coex_dm_8723b_1ant {
};
struct coex_sta_8723b_1ant {
bool bt_disabled;
bool bt_link_exist;
bool sco_exist;
bool a2dp_exist;