aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2013-05-23 06:20:55 -0400
committerJohn W. Linville <linville@tuxdriver.com>2013-05-24 12:50:22 -0400
commita37a99102e4573145aa60a2f78a690cc8def027c (patch)
treeaa9e0b718a5357ac2c7532bfb190fa92f0eeccca
parent23dd9b2a43698df12f7951e0e5a5fbffd0b3108a (diff)
ath9k_hw: fix host interface reset on AR934x
If a local bus timeout has been detected, the host interface needs to be reset to clear the errors. AR934x uses a different synchronous interrupt bit to indicate this, so the check needs to be fixed. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/ath/ath9k/hw.c10
-rw-r--r--drivers/net/wireless/ath/ath9k/reg.h2
2 files changed, 9 insertions, 3 deletions
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
index 7f25da8444fe..01e97ce438ba 100644
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -1306,9 +1306,13 @@ static bool ath9k_hw_set_reset(struct ath_hw *ah, int type)
1306 AR_RTC_RC_COLD_RESET | AR_RTC_RC_WARM_RESET; 1306 AR_RTC_RC_COLD_RESET | AR_RTC_RC_WARM_RESET;
1307 } else { 1307 } else {
1308 tmpReg = REG_READ(ah, AR_INTR_SYNC_CAUSE); 1308 tmpReg = REG_READ(ah, AR_INTR_SYNC_CAUSE);
1309 if (tmpReg & 1309 if (AR_SREV_9340(ah))
1310 (AR_INTR_SYNC_LOCAL_TIMEOUT | 1310 tmpReg &= AR9340_INTR_SYNC_LOCAL_TIMEOUT;
1311 AR_INTR_SYNC_RADM_CPL_TIMEOUT)) { 1311 else
1312 tmpReg &= AR_INTR_SYNC_LOCAL_TIMEOUT |
1313 AR_INTR_SYNC_RADM_CPL_TIMEOUT;
1314
1315 if (tmpReg) {
1312 u32 val; 1316 u32 val;
1313 REG_WRITE(ah, AR_INTR_SYNC_ENABLE, 0); 1317 REG_WRITE(ah, AR_INTR_SYNC_ENABLE, 0);
1314 1318
diff --git a/drivers/net/wireless/ath/ath9k/reg.h b/drivers/net/wireless/ath/ath9k/reg.h
index 5c4ab5026dca..9c056a80b85d 100644
--- a/drivers/net/wireless/ath/ath9k/reg.h
+++ b/drivers/net/wireless/ath/ath9k/reg.h
@@ -1007,6 +1007,8 @@ enum {
1007 AR_INTR_SYNC_LOCAL_TIMEOUT | 1007 AR_INTR_SYNC_LOCAL_TIMEOUT |
1008 AR_INTR_SYNC_MAC_SLEEP_ACCESS), 1008 AR_INTR_SYNC_MAC_SLEEP_ACCESS),
1009 1009
1010 AR9340_INTR_SYNC_LOCAL_TIMEOUT = 0x00000010,
1011
1010 AR_INTR_SYNC_SPURIOUS = 0xFFFFFFFF, 1012 AR_INTR_SYNC_SPURIOUS = 0xFFFFFFFF,
1011 1013
1012}; 1014};