ath9k: Fix IQ calibration
This patch fixes a bug in the TX IQ calibration post processing routine because of which the driver disables TX IQ correction even though the calibration results are valid. This fix is applicable for all chips in the AR9003 family. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
1908861f2f
commit
522aaa182a
|
@ -655,8 +655,8 @@ static bool ar9003_hw_calc_iq_corr(struct ath_hw *ah,
|
|||
if (i2_m_q2_a0_d1 > 0x800)
|
||||
i2_m_q2_a0_d1 = -((0xfff - i2_m_q2_a0_d1) + 1);
|
||||
|
||||
if (i2_p_q2_a0_d1 > 0x800)
|
||||
i2_p_q2_a0_d1 = -((0xfff - i2_p_q2_a0_d1) + 1);
|
||||
if (i2_p_q2_a0_d1 > 0x1000)
|
||||
i2_p_q2_a0_d1 = -((0x1fff - i2_p_q2_a0_d1) + 1);
|
||||
|
||||
if (iq_corr_a0_d1 > 0x800)
|
||||
iq_corr_a0_d1 = -((0xfff - iq_corr_a0_d1) + 1);
|
||||
|
@ -700,6 +700,19 @@ static bool ar9003_hw_calc_iq_corr(struct ath_hw *ah,
|
|||
return false;
|
||||
}
|
||||
|
||||
if ((i2_p_q2_a0_d0 < 1024) || (i2_p_q2_a0_d0 > 2047) ||
|
||||
(i2_p_q2_a1_d0 < 0) || (i2_p_q2_a1_d1 < 0) ||
|
||||
(i2_p_q2_a0_d0 <= i2_m_q2_a0_d0) ||
|
||||
(i2_p_q2_a0_d0 <= iq_corr_a0_d0) ||
|
||||
(i2_p_q2_a0_d1 <= i2_m_q2_a0_d1) ||
|
||||
(i2_p_q2_a0_d1 <= iq_corr_a0_d1) ||
|
||||
(i2_p_q2_a1_d0 <= i2_m_q2_a1_d0) ||
|
||||
(i2_p_q2_a1_d0 <= iq_corr_a1_d0) ||
|
||||
(i2_p_q2_a1_d1 <= i2_m_q2_a1_d1) ||
|
||||
(i2_p_q2_a1_d1 <= iq_corr_a1_d1)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
mag_a0_d0 = (i2_m_q2_a0_d0 * res_scale) / i2_p_q2_a0_d0;
|
||||
phs_a0_d0 = (iq_corr_a0_d0 * res_scale) / i2_p_q2_a0_d0;
|
||||
|
||||
|
|
Loading…
Reference in New Issue