Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ath9k: Enable manual peak detect calibration

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>

authored by

Sujith Manoharan and committed by
Kalle Valo
cfbed87b e4e292f3

+8 -2
+8 -2
drivers/net/wireless/ath/ath9k/ar9003_calib.c
··· 1640 1640 1641 1641 skip_tx_iqcal: 1642 1642 if (run_agc_cal || !(ah->ah_flags & AH_FASTCC)) { 1643 - if (AR_SREV_9330_11(ah)) 1644 - ar9003_hw_manual_peak_cal(ah, 0, IS_CHAN_2GHZ(chan)); 1643 + if (AR_SREV_9330_11(ah) || AR_SREV_9531(ah) || AR_SREV_9550(ah)) { 1644 + for (i = 0; i < AR9300_MAX_CHAINS; i++) { 1645 + if (!(ah->rxchainmask & (1 << i))) 1646 + continue; 1647 + ar9003_hw_manual_peak_cal(ah, i, 1648 + IS_CHAN_2GHZ(chan)); 1649 + } 1650 + } 1645 1651 1646 1652 /* 1647 1653 * For non-AR9550 chips, we just trigger AGC calibration