|
@@ -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;
|