From 1e6f5133622f8734c70bf2be783acb9c0a63d9f9 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sun, 19 May 2013 22:49:09 +0000 Subject: ar71xx: add an external reset callback for ar913x and use it in ath9k should reduce the frequency of DMA stop failures Backport of r36530 Signed-off-by: Felix Fietkau git-svn-id: svn://svn.openwrt.org/openwrt/branches/attitude_adjustment@36664 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../patches/556-ath9k_ar913x_external_reset.patch | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 package/mac80211/patches/556-ath9k_ar913x_external_reset.patch (limited to 'package') diff --git a/package/mac80211/patches/556-ath9k_ar913x_external_reset.patch b/package/mac80211/patches/556-ath9k_ar913x_external_reset.patch new file mode 100644 index 0000000000..c95f391478 --- /dev/null +++ b/package/mac80211/patches/556-ath9k_ar913x_external_reset.patch @@ -0,0 +1,28 @@ +--- a/drivers/net/wireless/ath/ath9k/hw.c ++++ b/drivers/net/wireless/ath/ath9k/hw.c +@@ -1374,7 +1374,10 @@ static bool ath9k_hw_set_reset(struct at + + REGWRITE_BUFFER_FLUSH(ah); + +- udelay(50); ++ if (AR_SREV_9100(ah)) ++ mdelay(10); ++ else ++ udelay(50); + + REG_WRITE(ah, AR_RTC_RC, 0); + if (!ath9k_hw_wait(ah, AR_RTC_RC, AR_RTC_RC_M, 0, AH_WAIT_TIMEOUT)) { +@@ -1385,8 +1388,12 @@ static bool ath9k_hw_set_reset(struct at + if (!AR_SREV_9100(ah)) + REG_WRITE(ah, AR_RC, 0); + +- if (AR_SREV_9100(ah)) ++ if (AR_SREV_9100(ah) && type != ATH9K_RESET_WARM) { ++ if (ah->external_reset) ++ ah->external_reset(); ++ + udelay(50); ++ } + + return true; + } -- cgit v1.2.3