ath9k_hw: enable PCIe low power mode for AR9003
authorLuis R. Rodriguez <lrodriguez@atheros.com>
Fri, 7 May 2010 22:23:22 +0000 (18:23 -0400)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 10 May 2010 18:56:46 +0000 (14:56 -0400)
Cc: Paul Shaw <paul.shaw@atheros.com>
Cc: Don Breslin <don.breslin@atheros.com>
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/hw.c

index 8f37f1c2a3802d62240dce52c24fdec729eabc71..f2d0389a66c0b80f5b7ae848f4c8a0d685a2efd4 100644 (file)
@@ -573,6 +573,26 @@ static int __ath9k_hw_init(struct ath_hw *ah)
 
        ath9k_hw_init_mode_regs(ah);
 
+       /*
+        * Configire PCIE after Ini init. SERDES values now come from ini file
+        * This enables PCIe low power mode.
+        */
+       if (AR_SREV_9300_20_OR_LATER(ah)) {
+               u32 regval;
+               unsigned int i;
+
+               /* Set Bits 16 and 17 in the AR_WA register. */
+               regval = REG_READ(ah, AR_WA);
+               regval |= 0x00030000;
+               REG_WRITE(ah, AR_WA, regval);
+
+               for (i = 0; i < ah->iniPcieSerdesLowPower.ia_rows; i++) {
+                       REG_WRITE(ah,
+                                 INI_RA(&ah->iniPcieSerdesLowPower, i, 0),
+                                 INI_RA(&ah->iniPcieSerdesLowPower, i, 1));
+               }
+       }
+
        if (ah->is_pciexpress)
                ath9k_hw_configpcipowersave(ah, 0, 0);
        else