]> git.karo-electronics.de Git - linux-beck.git/blobdiff - drivers/net/wireless/ath/ath5k/eeprom.c
Merge branch 'for-linus3' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris...
[linux-beck.git] / drivers / net / wireless / ath / ath5k / eeprom.c
index c56b494d417acd40d445d922f2861b53cc2315df..644962adda97306943857b0effbaad9ccfbd0608 100644 (file)
@@ -167,6 +167,16 @@ ath5k_eeprom_init_header(struct ath5k_hw *ah)
        ee->ee_rfkill_pin = (u8) AR5K_REG_MS(val, AR5K_EEPROM_RFKILL_GPIO_SEL);
        ee->ee_rfkill_pol = val & AR5K_EEPROM_RFKILL_POLARITY ? true : false;
 
+       /* Check if PCIE_OFFSET points to PCIE_SERDES_SECTION
+        * and enable serdes programming if needed.
+        *
+        * XXX: Serdes values seem to be fixed so
+        * no need to read them here, we write them
+        * during ath5k_hw_attach */
+       AR5K_EEPROM_READ(AR5K_EEPROM_PCIE_OFFSET, val);
+       ee->ee_serdes = (val == AR5K_EEPROM_PCIE_SERDES_SECTION) ?
+                                                       true : false;
+
        return 0;
 }
 
@@ -404,27 +414,11 @@ static int ath5k_eeprom_read_modes(struct ath5k_hw *ah, u32 *offset,
                break;
        }
 
-done:
-       /* return new offset */
-       *offset = o;
-
-       return 0;
-}
-
-/*
- * Read turbo mode information on newer EEPROM versions
- */
-static int
-ath5k_eeprom_read_turbo_modes(struct ath5k_hw *ah,
-                             u32 *offset, unsigned int mode)
-{
-       struct ath5k_eeprom_info *ee = &ah->ah_capabilities.cap_eeprom;
-       u32 o = *offset;
-       u16 val;
-       int ret;
-
+       /*
+        * Read turbo mode information on newer EEPROM versions
+        */
        if (ee->ee_version < AR5K_EEPROM_VERSION_5_0)
-               return 0;
+               goto done;
 
        switch (mode){
        case AR5K_EEPROM_MODE_11A:
@@ -458,6 +452,7 @@ ath5k_eeprom_read_turbo_modes(struct ath5k_hw *ah,
                break;
        }
 
+done:
        /* return new offset */
        *offset = o;
 
@@ -494,10 +489,6 @@ ath5k_eeprom_init_modes(struct ath5k_hw *ah)
                ret = ath5k_eeprom_read_modes(ah, &offset, mode);
                if (ret)
                        return ret;
-
-               ret = ath5k_eeprom_read_turbo_modes(ah, &offset, mode);
-               if (ret)
-                       return ret;
        }
 
        /* override for older eeprom versions for better performance */