ath9k: Handle additional patterns on wakeup
Handle the user-configured patterns in the range 8..15 when waking up and update wow_status correctly. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
parent
b39adc63bf
commit
6aaefab6cf
|
@ -186,18 +186,17 @@ u32 ath9k_hw_wow_wakeup(struct ath_hw *ah)
|
|||
u32 val = 0, rval;
|
||||
|
||||
/*
|
||||
* read the WoW status register to know
|
||||
* the wakeup reason
|
||||
* Read the WoW status register to know
|
||||
* the wakeup reason.
|
||||
*/
|
||||
rval = REG_READ(ah, AR_WOW_PATTERN);
|
||||
val = AR_WOW_STATUS(rval);
|
||||
|
||||
/*
|
||||
* mask only the WoW events that we have enabled. Sometimes
|
||||
* Mask only the WoW events that we have enabled. Sometimes
|
||||
* we have spurious WoW events from the AR_WOW_PATTERN
|
||||
* register. This mask will clean it up.
|
||||
*/
|
||||
|
||||
val &= ah->wow.wow_event_mask;
|
||||
|
||||
if (val) {
|
||||
|
@ -211,6 +210,15 @@ u32 ath9k_hw_wow_wakeup(struct ath_hw *ah)
|
|||
wow_status |= AH_WOW_BEACON_MISS;
|
||||
}
|
||||
|
||||
rval = REG_READ(ah, AR_MAC_PCU_WOW4);
|
||||
val = AR_WOW_STATUS2(rval);
|
||||
val &= ah->wow.wow_event_mask2;
|
||||
|
||||
if (val) {
|
||||
if (AR_WOW2_PATTERN_FOUND(val))
|
||||
wow_status |= AH_WOW_USER_PATTERN_EN;
|
||||
}
|
||||
|
||||
/*
|
||||
* set and clear WOW_PME_CLEAR registers for the chip to
|
||||
* generate next wow signal.
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
#define AR_WOW_MAC_INTR_EN 0x00040000
|
||||
#define AR_WOW_MAGIC_EN 0x00010000
|
||||
#define AR_WOW_PATTERN_EN(x) (x & 0xff)
|
||||
#define AR_WOW_PAT_FOUND_SHIFT 8
|
||||
#define AR_WOW_PAT_FOUND_SHIFT 8
|
||||
#define AR_WOW_PATTERN_FOUND(x) (x & (0xff << AR_WOW_PAT_FOUND_SHIFT))
|
||||
#define AR_WOW_PATTERN_FOUND_MASK ((0xff) << AR_WOW_PAT_FOUND_SHIFT)
|
||||
#define AR_WOW_MAGIC_PAT_FOUND 0x00020000
|
||||
|
@ -90,6 +90,12 @@
|
|||
AR_WOW_BEACON_FAIL | \
|
||||
AR_WOW_KEEP_ALIVE_FAIL))
|
||||
|
||||
#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_AIFS_CNT(x) (x & 0xff)
|
||||
#define AR_WOW_SLOT_CNT(x) ((x & 0xff) << 8)
|
||||
#define AR_WOW_KEEP_ALIVE_CNT(x) ((x & 0xff) << 16)
|
||||
|
|
Loading…
Reference in New Issue