aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2012-03-03 09:17:02 -0500
committerJohn W. Linville <linville@tuxdriver.com>2012-03-07 13:51:37 -0500
commit9c083af8683808e486c20ca1f36da520d82e5981 (patch)
treede4f2478d9c62a450561fea4a018569a86cbb44a /drivers/net
parentfcff4f108dce0692410f390a05565f4b1b84577f (diff)
ath9k_hw: use cold instead of warm reset on AR9280
Cold reset is more reliable for getting the hardware out of some specific stuck states. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/ath/ath9k/hw.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
index 8c840cad3ac..d582cf73098 100644
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -1386,10 +1386,16 @@ static bool ath9k_hw_set_reset_reg(struct ath_hw *ah, u32 type)
1386static bool ath9k_hw_chip_reset(struct ath_hw *ah, 1386static bool ath9k_hw_chip_reset(struct ath_hw *ah,
1387 struct ath9k_channel *chan) 1387 struct ath9k_channel *chan)
1388{ 1388{
1389 if (AR_SREV_9280(ah) && ah->eep_ops->get_eeprom(ah, EEP_OL_PWRCTRL)) { 1389 int reset_type = ATH9K_RESET_WARM;
1390 if (!ath9k_hw_set_reset_reg(ah, ATH9K_RESET_POWER_ON)) 1390
1391 return false; 1391 if (AR_SREV_9280(ah)) {
1392 } else if (!ath9k_hw_set_reset_reg(ah, ATH9K_RESET_WARM)) 1392 if (ah->eep_ops->get_eeprom(ah, EEP_OL_PWRCTRL))
1393 reset_type = ATH9K_RESET_POWER_ON;
1394 else
1395 reset_type = ATH9K_RESET_COLD;
1396 }
1397
1398 if (!ath9k_hw_set_reset_reg(ah, reset_type))
1393 return false; 1399 return false;
1394 1400
1395 if (!ath9k_hw_setpower(ah, ATH9K_PM_AWAKE)) 1401 if (!ath9k_hw_setpower(ah, ATH9K_PM_AWAKE))