ath9k: fall back to OTP ROM if the platform data does not contain valid eeprom data
authorFelix Fietkau <nbd@openwrt.org>
Mon, 4 Jun 2012 10:42:03 +0000 (10:42 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Mon, 4 Jun 2012 10:42:03 +0000 (10:42 +0000)
SVN-Revision: 32044

package/mac80211/patches/560-ath9k_ar9003_otp_fallback.patch [new file with mode: 0644]

diff --git a/package/mac80211/patches/560-ath9k_ar9003_otp_fallback.patch b/package/mac80211/patches/560-ath9k_ar9003_otp_fallback.patch
new file mode 100644 (file)
index 0000000..8bcf44e
--- /dev/null
@@ -0,0 +1,25 @@
+--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
++++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
+@@ -3260,10 +3260,20 @@ static int ar9300_eeprom_restore_interna
+       int it;
+       u16 checksum, mchecksum;
+       struct ath_common *common = ath9k_hw_common(ah);
++      struct ar9300_eeprom *eep;
+       eeprom_read_op read;
+-      if (ath9k_hw_use_flash(ah))
+-              return ar9300_eeprom_restore_flash(ah, mptr, mdata_size);
++      if (ath9k_hw_use_flash(ah)) {
++              u8 txrx;
++
++              ar9300_eeprom_restore_flash(ah, mptr, mdata_size);
++
++              /* check if eeprom contains valid data */
++              eep = (struct ar9300_eeprom *) mptr;
++              txrx = eep->baseEepHeader.txrxMask;
++              if (txrx != 0 && txrx != 0xff)
++                      return 0;
++      }
+       word = kzalloc(2048, GFP_KERNEL);
+       if (!word)