Commit 64cdb0e3 authored by Fabio Rossi's avatar Fabio Rossi Committed by John W. Linville

ath5k: fix interpolation with equal power levels

When the EEPROM contains weird values for the power levels we have to
fix the interpolation process.
Signed-off-by: default avatarFabio Rossi <rossi.f@inwind.it>
Acked-by: default avatarNick Kossifidis <mickflemm@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 910cfee3
...@@ -1487,28 +1487,35 @@ ath5k_get_linear_pcdac_min(const u8 *stepL, const u8 *stepR, ...@@ -1487,28 +1487,35 @@ ath5k_get_linear_pcdac_min(const u8 *stepL, const u8 *stepR,
{ {
s8 tmp; s8 tmp;
s16 min_pwrL, min_pwrR; s16 min_pwrL, min_pwrR;
s16 pwr_i = pwrL[0]; s16 pwr_i;
if (pwrL[0] == pwrL[1])
min_pwrL = pwrL[0];
else {
pwr_i = pwrL[0];
do { do {
pwr_i--; pwr_i--;
tmp = (s8) ath5k_get_interpolated_value(pwr_i, tmp = (s8) ath5k_get_interpolated_value(pwr_i,
pwrL[0], pwrL[1], pwrL[0], pwrL[1],
stepL[0], stepL[1]); stepL[0], stepL[1]);
} while (tmp > 1); } while (tmp > 1);
min_pwrL = pwr_i; min_pwrL = pwr_i;
}
if (pwrR[0] == pwrR[1])
min_pwrR = pwrR[0];
else {
pwr_i = pwrR[0]; pwr_i = pwrR[0];
do { do {
pwr_i--; pwr_i--;
tmp = (s8) ath5k_get_interpolated_value(pwr_i, tmp = (s8) ath5k_get_interpolated_value(pwr_i,
pwrR[0], pwrR[1], pwrR[0], pwrR[1],
stepR[0], stepR[1]); stepR[0], stepR[1]);
} while (tmp > 1); } while (tmp > 1);
min_pwrR = pwr_i; min_pwrR = pwr_i;
}
/* Keep the right boundary so that it works for both curves */ /* Keep the right boundary so that it works for both curves */
return max(min_pwrL, min_pwrR); return max(min_pwrL, min_pwrR);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment