Commit 6aaefab6 authored by Sujith Manoharan's avatar Sujith Manoharan Committed by Kalle Valo
Browse files

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: default avatarSujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent b39adc63
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -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.
+7 −1
Original line number Diff line number Diff line
@@ -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)