ath5k: IQ calibration for AR5211 is slightly different
PATCH v2 1/1 ath5k: IQ calibration for AR5211 is slightly different
according to the HAL sources the calculation of the Q value is slightly different for AR5211 chips.
i couldn't test this since IQ calibration never finishes on older parts. this is a different problem...
Signed-off-by Bruno Randolf <[email protected]>
---
v2: resend to fix merge errors caused by the change to the previous patch
--- drivers/net/wireless/ath/ath5k/phy.c | 11 +++++++++-- 1 files changed, 9 insertions(+), 2 deletions(-)
drivers/net/wireless/ath/ath5k/phy.c +9 -2
@@ -1399,7 +1399,11 @@ static int ath5k_hw_rf511x_calibrate(struct ath5k_hw *ah, } i_coffd = ((i_pwr >>1 ) + (q_pwr >>1 )) >>7 ; - q_coffd = q_pwr >>7 ; + +if (ah->ah_version ==AR5K_AR5211 ) + q_coffd = q_pwr >>6 ; +else + q_coffd = q_pwr >>7 ;/* protect against divide by 0 and loss of sign bits */ if (i_coffd ==0 || q_coffd <2 )
@@ -1408,7 +1412,10 @@ static int ath5k_hw_rf511x_calibrate(struct ath5k_hw *ah, i_coff = (-iq_corr) / i_coffd; i_coff =clamp (i_coff,-32 ,31 );/* signed 6 bit */ - q_coff = (i_pwr / q_coffd) -128 ; +if (ah->ah_version ==AR5K_AR5211 ) + q_coff = (i_pwr / q_coffd) -64 ; +else + q_coff = (i_pwr / q_coffd) -128 ; q_coff =clamp (q_coff,-16 ,15 );/* signed 5 bit */ ATH5K_DBG_UNLIMIT(ah->ah_sc, ATH5K_DEBUG_CALIBRATE,