ath9k: Check MCI PowerSave state
The power save state of MCI has to be disabled when enabling WoW sleep, check this properly. ar9003_mci_state() doesn't handle MCI_STATE_GET_WLAN_PS_STATE right now, but this will be done later when proper support for MCI/PS is added. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
parent
ff6f0c036b
commit
b39adc63bf
@ -188,6 +188,13 @@ enum mci_bt_state {
|
||||
MCI_BT_CAL
|
||||
};
|
||||
|
||||
enum mci_ps_state {
|
||||
MCI_PS_DISABLE,
|
||||
MCI_PS_ENABLE,
|
||||
MCI_PS_ENABLE_OFF,
|
||||
MCI_PS_ENABLE_ON
|
||||
};
|
||||
|
||||
/* Type of state query */
|
||||
enum mci_state_type {
|
||||
MCI_STATE_ENABLE,
|
||||
|
@ -20,11 +20,25 @@
|
||||
#include "reg_wow.h"
|
||||
#include "hw-ops.h"
|
||||
|
||||
static void ath9k_hw_set_sta_powersave(struct ath_hw *ah)
|
||||
{
|
||||
if (!ath9k_hw_mci_is_enabled(ah))
|
||||
goto set;
|
||||
/*
|
||||
* If MCI is being used, set PWR_SAV only when MCI's
|
||||
* PS state is disabled.
|
||||
*/
|
||||
if (ar9003_mci_state(ah, MCI_STATE_GET_WLAN_PS_STATE) != MCI_PS_DISABLE)
|
||||
return;
|
||||
set:
|
||||
REG_SET_BIT(ah, AR_STA_ID1, AR_STA_ID1_PWR_SAV);
|
||||
}
|
||||
|
||||
static void ath9k_hw_set_powermode_wow_sleep(struct ath_hw *ah)
|
||||
{
|
||||
struct ath_common *common = ath9k_hw_common(ah);
|
||||
|
||||
REG_SET_BIT(ah, AR_STA_ID1, AR_STA_ID1_PWR_SAV);
|
||||
ath9k_hw_set_sta_powersave(ah);
|
||||
|
||||
/* set rx disable bit */
|
||||
REG_WRITE(ah, AR_CR, AR_CR_RXD);
|
||||
|
Loading…
Reference in New Issue
Block a user