aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPing-Ke Shih <pkshih@realtek.com>2018-03-05 20:25:47 -0500
committerKalle Valo <kvalo@codeaurora.org>2018-03-27 04:54:50 -0400
commitc3468950ef802c659c0ac215e757163833bc563f (patch)
treeed951f2fde6d58b4af7df26b79872143c724fb3e
parent7fd34dc4d827d3ba87e650cbb36aa0cbeca50d79 (diff)
rtlwifi: btcoex: Add pre- and post- normal LPS function
Normal LPS is decomposed into pre- and post- parts, so we can issue H2C with TDMA parameters in the "critical section" that dirver can't change LPS state at the moment. Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> Acked-by: Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
-rw-r--r--drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c22
-rw-r--r--drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h2
2 files changed, 24 insertions, 0 deletions
diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
index bfb32d476a70..0f664a0490a7 100644
--- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
+++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
@@ -363,6 +363,22 @@ static void halbtc_normal_lps(struct btc_coexist *btcoexist)
363 } 363 }
364} 364}
365 365
366static void halbtc_pre_normal_lps(struct btc_coexist *btcoexist)
367{
368 struct rtl_priv *rtlpriv = btcoexist->adapter;
369
370 if (btcoexist->bt_info.bt_ctrl_lps) {
371 btcoexist->bt_info.bt_lps_on = false;
372 rtl_lps_leave(rtlpriv->mac80211.hw);
373 }
374}
375
376static void halbtc_post_normal_lps(struct btc_coexist *btcoexist)
377{
378 if (btcoexist->bt_info.bt_ctrl_lps)
379 btcoexist->bt_info.bt_ctrl_lps = false;
380}
381
366static void halbtc_leave_low_power(struct btc_coexist *btcoexist) 382static void halbtc_leave_low_power(struct btc_coexist *btcoexist)
367{ 383{
368} 384}
@@ -806,6 +822,12 @@ static bool halbtc_set(void *void_btcoexist, u8 set_type, void *in_buf)
806 case BTC_SET_ACT_NORMAL_LPS: 822 case BTC_SET_ACT_NORMAL_LPS:
807 halbtc_normal_lps(btcoexist); 823 halbtc_normal_lps(btcoexist);
808 break; 824 break;
825 case BTC_SET_ACT_PRE_NORMAL_LPS:
826 halbtc_pre_normal_lps(btcoexist);
827 break;
828 case BTC_SET_ACT_POST_NORMAL_LPS:
829 halbtc_post_normal_lps(btcoexist);
830 break;
809 case BTC_SET_ACT_DISABLE_LOW_POWER: 831 case BTC_SET_ACT_DISABLE_LOW_POWER:
810 halbtc_disable_low_power(btcoexist, *bool_tmp); 832 halbtc_disable_low_power(btcoexist, *bool_tmp);
811 break; 833 break;
diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
index 1f12449363c2..ad80ec05975e 100644
--- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
+++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
@@ -349,6 +349,8 @@ enum btc_set_type {
349 BTC_SET_ACT_LEAVE_LPS, 349 BTC_SET_ACT_LEAVE_LPS,
350 BTC_SET_ACT_ENTER_LPS, 350 BTC_SET_ACT_ENTER_LPS,
351 BTC_SET_ACT_NORMAL_LPS, 351 BTC_SET_ACT_NORMAL_LPS,
352 BTC_SET_ACT_PRE_NORMAL_LPS,
353 BTC_SET_ACT_POST_NORMAL_LPS,
352 BTC_SET_ACT_INC_FORCE_EXEC_PWR_CMD_CNT, 354 BTC_SET_ACT_INC_FORCE_EXEC_PWR_CMD_CNT,
353 BTC_SET_ACT_DISABLE_LOW_POWER, 355 BTC_SET_ACT_DISABLE_LOW_POWER,
354 BTC_SET_ACT_UPDATE_RAMASK, 356 BTC_SET_ACT_UPDATE_RAMASK,