Browse Source

ath9k: Fix RTC reset delay

The delay that is required after issuing a RTC reset
varies for each chip. Handle this properly.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Sujith Manoharan 11 years ago
parent
commit
4dc78c437a
1 changed files with 6 additions and 1 deletions
  1. 6 1
      drivers/net/wireless/ath/ath9k/hw.c

+ 6 - 1
drivers/net/wireless/ath/ath9k/hw.c

@@ -1363,7 +1363,12 @@ static bool ath9k_hw_set_reset(struct ath_hw *ah, int type)
 
 
 	REGWRITE_BUFFER_FLUSH(ah);
 	REGWRITE_BUFFER_FLUSH(ah);
 
 
-	udelay(50);
+	if (AR_SREV_9300_20_OR_LATER(ah))
+		udelay(50);
+	else if (AR_SREV_9100(ah))
+		udelay(10000);
+	else
+		udelay(100);
 
 
 	REG_WRITE(ah, AR_RTC_RC, 0);
 	REG_WRITE(ah, AR_RTC_RC, 0);
 	if (!ath9k_hw_wait(ah, AR_RTC_RC, AR_RTC_RC_M, 0, AH_WAIT_TIMEOUT)) {
 	if (!ath9k_hw_wait(ah, AR_RTC_RC, AR_RTC_RC_M, 0, AH_WAIT_TIMEOUT)) {