ath9k: Enable manual peak detect calibration
authorSujith Manoharan <c_manoha@qca.qualcomm.com>
Wed, 28 Jan 2015 12:24:26 +0000 (17:54 +0530)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 29 Jan 2015 08:33:25 +0000 (10:33 +0200)
On some AR955x/QCA953x boards, noise floor calibration
gets stuck and the cause is a hardware/BB issue. To fix
this, peak detect calibration in the HW is disabled
and is done in the driver instead. There a few differences
with the calibration routine for older chips like
AR9331.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/ath9k/ar9003_calib.c

index 91130c0e31d376e23591de803741847775201419..174442beb9522d85f304be1cdc6ccbc6acf14c7d 100644 (file)
@@ -1640,8 +1640,14 @@ static bool ar9003_hw_init_cal_soc(struct ath_hw *ah,
 
 skip_tx_iqcal:
        if (run_agc_cal || !(ah->ah_flags & AH_FASTCC)) {
-               if (AR_SREV_9330_11(ah))
-                       ar9003_hw_manual_peak_cal(ah, 0, IS_CHAN_2GHZ(chan));
+               if (AR_SREV_9330_11(ah) || AR_SREV_9531(ah) || AR_SREV_9550(ah)) {
+                       for (i = 0; i < AR9300_MAX_CHAINS; i++) {
+                               if (!(ah->rxchainmask & (1 << i)))
+                                       continue;
+                               ar9003_hw_manual_peak_cal(ah, i,
+                                                         IS_CHAN_2GHZ(chan));
+                       }
+               }
 
                /*
                 * For non-AR9550 chips, we just trigger AGC calibration