Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f66509e3 authored by Larry Finger's avatar Larry Finger Committed by Kalle Valo
Browse files

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: default avatarLarry 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: default avatarKalle Valo <kvalo@codeaurora.org>
parent aef9ae46
Loading
Loading
Loading
Loading
+101 −21
Original line number Diff line number Diff line
@@ -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)
	if (btcoexist->auto_report_1ant)
		halbtc8723b1ant_monitor_bt_ctr(btcoexist);
#endif
	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 (!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,
				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)
	if (!btcoexist->auto_report_1ant) {
		halbtc8723b1ant_query_bt_info(btcoexist);
		halbtc8723b1ant_monitor_bt_ctr(btcoexist);
		halbtc8723b1ant_monitor_bt_enable_disable(btcoexist);
#else
	} else {
		if (btc8723b1ant_is_wifi_status_changed(btcoexist) ||
		    coex_dm->auto_tdma_adjust) {
			halbtc8723b1ant_run_coexist_mechanism(btcoexist);
		}

		coex_sta->special_pkt_period_cnt++;
#endif
	}
}
+1 −2
Original line number Diff line number Diff line
@@ -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;