summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSujith Manoharan <c_manoha@qualcomm.com>2012-09-11 10:46:24 +0530
committerJohn W. Linville <linville@tuxdriver.com>2012-09-11 15:31:59 -0400
commitb7f597668657c9c9579dbdff9692aea3e8e9bf5a (patch)
tree90890d35424851250b99b5b8a34544062ed9ef34
parent4ac8764ab2290fd83c21b4183ca6a0f279dab277 (diff)
downloadlinux-stable-b7f597668657c9c9579dbdff9692aea3e8e9bf5a.tar.gz
linux-stable-b7f597668657c9c9579dbdff9692aea3e8e9bf5a.tar.bz2
linux-stable-b7f597668657c9c9579dbdff9692aea3e8e9bf5a.zip
ath9k_hw: Handle gentimer termination properly
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/ath/ath9k/hw.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
index 47de1a92bfe4..99cab44d2312 100644
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -3084,6 +3084,16 @@ void ath9k_hw_gen_timer_stop(struct ath_hw *ah, struct ath_gen_timer *timer)
REG_CLR_BIT(ah, gen_tmr_configuration[timer->index].mode_addr,
gen_tmr_configuration[timer->index].mode_mask);
+ if (AR_SREV_9462(ah) || AR_SREV_9565(ah)) {
+ /*
+ * Need to switch back to TSF if it was using TSF2.
+ */
+ if ((timer->index >= AR_GEN_TIMER_BANK_1_LEN)) {
+ REG_CLR_BIT(ah, AR_MAC_PCU_GEN_TIMER_TSF_SEL,
+ (1 << timer->index));
+ }
+ }
+
/* Disable both trigger and thresh interrupt masks */
REG_CLR_BIT(ah, AR_IMR_S5,
(SM(AR_GENTMR_BIT(timer->index), AR_IMR_S5_GENTIMER_THRESH) |