ath9k: disable RIFS search on some chips to avoid baseband hangs
authorFelix Fietkau <nbd@openwrt.org>
Wed, 24 Feb 2010 03:43:30 +0000 (03:43 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Wed, 24 Feb 2010 03:43:30 +0000 (03:43 +0000)
SVN-Revision: 19829

package/mac80211/patches/550-ath9k_rifs_disable.patch [new file with mode: 0644]

diff --git a/package/mac80211/patches/550-ath9k_rifs_disable.patch b/package/mac80211/patches/550-ath9k_rifs_disable.patch
new file mode 100644 (file)
index 0000000..57441b6
--- /dev/null
@@ -0,0 +1,31 @@
+--- a/drivers/net/wireless/ath/ath9k/hw.c
++++ b/drivers/net/wireless/ath/ath9k/hw.c
+@@ -1326,6 +1326,16 @@ static void ath9k_hw_override_ini(struct
+        * Necessary to avoid issues on AR5416 2.0
+        */
+       REG_WRITE(ah, 0x9800 + (651 << 2), 0x11);
++
++      /*
++       * Disable RIFS search on some chips to avoid baseband
++       * hang issues.
++       */
++      if (AR_SREV_9100(ah) || AR_SREV_9160(ah)) {
++              val = REG_READ(ah, AR_PHY_HEAVY_CLIP_FACTOR_RIFS);
++              val &= ~AR_PHY_RIFS_INIT_DELAY;
++              REG_WRITE(ah, AR_PHY_HEAVY_CLIP_FACTOR_RIFS, val);
++      }
+ }
+ static u32 ath9k_hw_def_ini_fixup(struct ath_hw *ah,
+--- a/drivers/net/wireless/ath/ath9k/phy.h
++++ b/drivers/net/wireless/ath/ath9k/phy.h
+@@ -384,6 +384,9 @@ bool ath9k_hw_set_rf_regs(struct ath_hw 
+ #define AR_PHY_HEAVY_CLIP_ENABLE         0x99E0
++#define AR_PHY_HEAVY_CLIP_FACTOR_RIFS    0x99EC
++#define AR_PHY_RIFS_INIT_DELAY         0x03ff0000
++
+ #define AR_PHY_M_SLEEP      0x99f0
+ #define AR_PHY_REFCLKDLY    0x99f4
+ #define AR_PHY_REFCLKPD     0x99f8