rtlwifi: btcoex: 23b 2ant: add pnp notidy to avoid LPS/IPS mismatch
When driver is going to sleep, it does not leave LPS/IPS, thus the BTCoex may have mismatch when driver wakes up. To avoid that, BTCoex needs to clear the IPS/LPS state when it receives a pnp notify, then it can properly set up the hw when driver wakes up. Signed-off-by: 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:
parent
b59f02fb7f
commit
609d59acb6
|
@ -3826,6 +3826,33 @@ void ex_btc8723b2ant_halt_notify(struct btc_coexist *btcoexist)
|
|||
ex_btc8723b2ant_media_status_notify(btcoexist, BTC_MEDIA_DISCONNECT);
|
||||
}
|
||||
|
||||
void ex_btc8723b2ant_pnp_notify(struct btc_coexist *btcoexist, u8 pnp_state)
|
||||
{
|
||||
struct rtl_priv *rtlpriv = btcoexist->adapter;
|
||||
|
||||
RT_TRACE(rtlpriv, COMP_BT_COEXIST, DBG_LOUD, "[BTCoex], Pnp notify\n");
|
||||
|
||||
if (pnp_state == BTC_WIFI_PNP_SLEEP) {
|
||||
RT_TRACE(rtlpriv, COMP_BT_COEXIST, DBG_LOUD,
|
||||
"[BTCoex], Pnp notify to SLEEP\n");
|
||||
|
||||
/* Driver do not leave IPS/LPS when driver is going to sleep, so
|
||||
* BTCoexistence think wifi is still under IPS/LPS
|
||||
*
|
||||
* BT should clear UnderIPS/UnderLPS state to avoid mismatch
|
||||
* state after wakeup.
|
||||
*/
|
||||
coex_sta->under_ips = false;
|
||||
coex_sta->under_lps = false;
|
||||
} else if (pnp_state == BTC_WIFI_PNP_WAKE_UP) {
|
||||
RT_TRACE(rtlpriv, COMP_BT_COEXIST, DBG_LOUD,
|
||||
"[BTCoex], Pnp notify to WAKE UP\n");
|
||||
ex_btc8723b2ant_init_hwconfig(btcoexist);
|
||||
btc8723b2ant_init_coex_dm(btcoexist);
|
||||
btc8723b2ant_query_bt_info(btcoexist);
|
||||
}
|
||||
}
|
||||
|
||||
void ex_btc8723b2ant_periodical(struct btc_coexist *btcoexist)
|
||||
{
|
||||
struct rtl_priv *rtlpriv = btcoexist->adapter;
|
||||
|
|
Loading…
Reference in New Issue