2010/3/9 Bruno Randolf <br1@xxxxxxxxxxx>: > 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 <br1@xxxxxxxxxxx> > --- > drivers/net/wireless/ath/ath5k/phy.c | 11 +++++++++-- > 1 files changed, 9 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/wireless/ath/ath5k/phy.c b/drivers/net/wireless/ath/ath5k/phy.c > index 95cebd6..3a18742 100644 > --- a/drivers/net/wireless/ath/ath5k/phy.c > +++ b/drivers/net/wireless/ath/ath5k/phy.c > @@ -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, > > -- > To unsubscribe from this list: send the line "unsubscribe linux-wireless" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > Acked-by: Nick Kossifidis <mickflemm@xxxxxxxxx> -- GPG ID: 0xD21DB2DB As you read this post global entropy rises. Have Fun ;-) Nick -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html