diff options
author | Felix Fietkau <nbd@openwrt.org> | 2012-03-03 09:17:02 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-03-07 13:51:37 -0500 |
commit | 9c083af8683808e486c20ca1f36da520d82e5981 (patch) | |
tree | de4f2478d9c62a450561fea4a018569a86cbb44a | |
parent | fcff4f108dce0692410f390a05565f4b1b84577f (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>
-rw-r--r-- | drivers/net/wireless/ath/ath9k/hw.c | 14 |
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 8c840cad3ac2..d582cf73098f 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) | |||
1386 | static bool ath9k_hw_chip_reset(struct ath_hw *ah, | 1386 | static 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)) |