diff options
-rw-r--r-- | drivers/net/wireless/ath/ath9k/hw.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c index 8f37f1c2a380..f2d0389a66c0 100644 --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c | |||
@@ -573,6 +573,26 @@ static int __ath9k_hw_init(struct ath_hw *ah) | |||
573 | 573 | ||
574 | ath9k_hw_init_mode_regs(ah); | 574 | ath9k_hw_init_mode_regs(ah); |
575 | 575 | ||
576 | /* | ||
577 | * Configire PCIE after Ini init. SERDES values now come from ini file | ||
578 | * This enables PCIe low power mode. | ||
579 | */ | ||
580 | if (AR_SREV_9300_20_OR_LATER(ah)) { | ||
581 | u32 regval; | ||
582 | unsigned int i; | ||
583 | |||
584 | /* Set Bits 16 and 17 in the AR_WA register. */ | ||
585 | regval = REG_READ(ah, AR_WA); | ||
586 | regval |= 0x00030000; | ||
587 | REG_WRITE(ah, AR_WA, regval); | ||
588 | |||
589 | for (i = 0; i < ah->iniPcieSerdesLowPower.ia_rows; i++) { | ||
590 | REG_WRITE(ah, | ||
591 | INI_RA(&ah->iniPcieSerdesLowPower, i, 0), | ||
592 | INI_RA(&ah->iniPcieSerdesLowPower, i, 1)); | ||
593 | } | ||
594 | } | ||
595 | |||
576 | if (ah->is_pciexpress) | 596 | if (ah->is_pciexpress) |
577 | ath9k_hw_configpcipowersave(ah, 0, 0); | 597 | ath9k_hw_configpcipowersave(ah, 0, 0); |
578 | else | 598 | else |