diff options
author | Sujith Manoharan <c_manoha@qca.qualcomm.com> | 2015-02-05 10:22:43 +0530 |
---|---|---|
committer | Kalle Valo <kvalo@codeaurora.org> | 2015-02-26 14:58:43 +0200 |
commit | 3277b20270ee1130a22ced81e7efb0820a160193 (patch) | |
tree | a49197d0a58a3bfc88cbbaa9dd3230e17d99fce1 /drivers/net | |
parent | 6aaefab6cfe879246f209e39ca993deec493fa96 (diff) | |
download | linux-stable-3277b20270ee1130a22ced81e7efb0820a160193.tar.gz linux-stable-3277b20270ee1130a22ced81e7efb0820a160193.tar.bz2 linux-stable-3277b20270ee1130a22ced81e7efb0820a160193.zip |
ath9k: Clear additional WoW events
The events for patterns 8..15 need to be
cleared on wakeup.
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_wow.c | 5 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/reg_wow.h | 2 |
2 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_wow.c b/drivers/net/wireless/ath/ath9k/ar9003_wow.c index 34763c4b871b..efeb9d770899 100644 --- a/drivers/net/wireless/ath/ath9k/ar9003_wow.c +++ b/drivers/net/wireless/ath/ath9k/ar9003_wow.c @@ -230,10 +230,12 @@ u32 ath9k_hw_wow_wakeup(struct ath_hw *ah) AR_PMCTRL_PWR_STATE_D1D3); /* - * clear all events + * Clear all events. */ REG_WRITE(ah, AR_WOW_PATTERN, AR_WOW_CLEAR_EVENTS(REG_READ(ah, AR_WOW_PATTERN))); + REG_WRITE(ah, AR_MAC_PCU_WOW4, + AR_WOW_CLEAR_EVENTS2(REG_READ(ah, AR_MAC_PCU_WOW4))); /* * restore the beacon threshold to init value @@ -251,6 +253,7 @@ u32 ath9k_hw_wow_wakeup(struct ath_hw *ah) ath9k_hw_configpcipowersave(ah, false); ah->wow.wow_event_mask = 0; + ah->wow.wow_event_mask2 = 0; return wow_status; } diff --git a/drivers/net/wireless/ath/ath9k/reg_wow.h b/drivers/net/wireless/ath/ath9k/reg_wow.h index 42ed4eea9e0a..453054078cc4 100644 --- a/drivers/net/wireless/ath/ath9k/reg_wow.h +++ b/drivers/net/wireless/ath/ath9k/reg_wow.h @@ -90,11 +90,13 @@ AR_WOW_BEACON_FAIL | \ AR_WOW_KEEP_ALIVE_FAIL)) +#define AR_WOW2_PATTERN_EN(x) ((x & 0xff) << 0) #define AR_WOW2_PATTERN_FOUND_SHIFT 8 #define AR_WOW2_PATTERN_FOUND(x) (x & (0xff << AR_WOW2_PATTERN_FOUND_SHIFT)) #define AR_WOW2_PATTERN_FOUND_MASK ((0xff) << AR_WOW2_PATTERN_FOUND_SHIFT) #define AR_WOW_STATUS2(x) (x & AR_WOW2_PATTERN_FOUND_MASK) +#define AR_WOW_CLEAR_EVENTS2(x) (x & ~(AR_WOW2_PATTERN_EN(0xff))) #define AR_WOW_AIFS_CNT(x) (x & 0xff) #define AR_WOW_SLOT_CNT(x) ((x & 0xff) << 8) |