ath9k_hw: Eeeprom changes for AR9485
authorVasanthakumar Thiagarajan <vasanth@atheros.com>
Mon, 6 Dec 2010 12:27:39 +0000 (04:27 -0800)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 7 Dec 2010 21:34:52 +0000 (16:34 -0500)
Calibration data are stored at 4k address (0xfff). The cal data
for AR9485 is not compressed so its lengh can exceed 1024 limit,
take care of that.

Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
drivers/net/wireless/ath/ath9k/ar9003_eeprom.h

index 8c49610..29b5a6d 100644 (file)
@@ -3319,7 +3319,10 @@ static int ar9300_eeprom_restore_internal(struct ath_hw *ah,
        memcpy(mptr, &ar9300_default, mdata_size);
 
        read = ar9300_read_eeprom;
-       cptr = AR9300_BASE_ADDR;
+       if (AR_SREV_9485(ah))
+               cptr = AR9300_BASE_ADDR_4K;
+       else
+               cptr = AR9300_BASE_ADDR;
        ath_dbg(common, ATH_DBG_EEPROM,
                "Trying EEPROM accesss at Address 0x%04x\n", cptr);
        if (ar9300_check_eeprom_header(ah, read, cptr))
@@ -3361,7 +3364,8 @@ found:
                ath_dbg(common, ATH_DBG_EEPROM,
                        "Found block at %x: code=%d ref=%d length=%d major=%d minor=%d\n",
                        cptr, code, reference, length, major, minor);
-               if (length >= 1024) {
+               if ((!AR_SREV_9485(ah) && length >= 1024) ||
+                   (AR_SREV_9485(ah) && length >= (4 * 1024))) {
                        ath_dbg(common, ATH_DBG_EEPROM,
                                "Skipping bad header\n");
                        cptr -= COMP_HDR_LEN;
index 9c14633..ce4d762 100644 (file)
@@ -78,6 +78,7 @@
 #define AR9300_EEPROM_SIZE (16*1024)
 #define FIXED_CCA_THRESHOLD 15
 
+#define AR9300_BASE_ADDR_4K 0xfff
 #define AR9300_BASE_ADDR 0x3ff
 #define AR9300_BASE_ADDR_512 0x1ff