ath9k_hw: Do not enable IQ-CAL for half/quarter rates
authorSujith Manoharan <c_manoha@qca.qualcomm.com>
Mon, 7 Jan 2013 08:23:46 +0000 (13:53 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 9 Jan 2013 19:37:10 +0000 (14:37 -0500)
IQ calibration doesn't complete and times out for half/quarter
rates, so skip it correctly.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/ar9003_calib.c

index fa67e84d51ea3786e9168c448b250b1c72d2a850..61caf1cbd77a6bfa4d7dcfc1a98245273658ae81 100644 (file)
@@ -1013,7 +1013,8 @@ static bool ar9003_hw_init_cal(struct ath_hw *ah,
                }
        }
 
-       if (!(ah->enabled_cals & TX_IQ_CAL))
+       if ((IS_CHAN_HALF_RATE(chan) || IS_CHAN_QUARTER_RATE(chan)) ||
+           !(ah->enabled_cals & TX_IQ_CAL))
                goto skip_tx_iqcal;
 
        /* Do Tx IQ Calibration */
@@ -1040,12 +1041,10 @@ static bool ar9003_hw_init_cal(struct ath_hw *ah,
        if (ath9k_hw_mci_is_enabled(ah) && IS_CHAN_2GHZ(chan) && run_agc_cal)
                ar9003_mci_init_cal_req(ah, &is_reusable);
 
-       if (!(IS_CHAN_HALF_RATE(chan) || IS_CHAN_QUARTER_RATE(chan))) {
-               txiqcal_done = ar9003_hw_tx_iq_cal_run(ah);
-               REG_WRITE(ah, AR_PHY_ACTIVE, AR_PHY_ACTIVE_DIS);
-               udelay(5);
-               REG_WRITE(ah, AR_PHY_ACTIVE, AR_PHY_ACTIVE_EN);
-       }
+       txiqcal_done = ar9003_hw_tx_iq_cal_run(ah);
+       REG_WRITE(ah, AR_PHY_ACTIVE, AR_PHY_ACTIVE_DIS);
+       udelay(5);
+       REG_WRITE(ah, AR_PHY_ACTIVE, AR_PHY_ACTIVE_EN);
 
 skip_tx_iqcal:
        if (run_agc_cal || !(ah->ah_flags & AH_FASTCC)) {