ath9k_hw: Improve power control accuracy for AR9003
It is done for 5Ghz by adding three temperature slopes. Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
committed by
John W. Linville
parent
f4475a6e52
commit
15cbbc44cc
@@ -4062,6 +4062,7 @@ static int ar9003_hw_power_control_override(struct ath_hw *ah,
|
|||||||
{
|
{
|
||||||
int tempSlope = 0;
|
int tempSlope = 0;
|
||||||
struct ar9300_eeprom *eep = &ah->eeprom.ar9300_eep;
|
struct ar9300_eeprom *eep = &ah->eeprom.ar9300_eep;
|
||||||
|
int f[3], t[3];
|
||||||
|
|
||||||
REG_RMW(ah, AR_PHY_TPC_11_B0,
|
REG_RMW(ah, AR_PHY_TPC_11_B0,
|
||||||
(correction[0] << AR_PHY_TPC_OLPC_GAIN_DELTA_S),
|
(correction[0] << AR_PHY_TPC_OLPC_GAIN_DELTA_S),
|
||||||
@@ -4090,7 +4091,16 @@ static int ar9003_hw_power_control_override(struct ath_hw *ah,
|
|||||||
*/
|
*/
|
||||||
if (frequency < 4000)
|
if (frequency < 4000)
|
||||||
tempSlope = eep->modalHeader2G.tempSlope;
|
tempSlope = eep->modalHeader2G.tempSlope;
|
||||||
else
|
else if (eep->base_ext2.tempSlopeLow != 0) {
|
||||||
|
t[0] = eep->base_ext2.tempSlopeLow;
|
||||||
|
f[0] = 5180;
|
||||||
|
t[1] = eep->modalHeader5G.tempSlope;
|
||||||
|
f[1] = 5500;
|
||||||
|
t[2] = eep->base_ext2.tempSlopeHigh;
|
||||||
|
f[2] = 5785;
|
||||||
|
tempSlope = ar9003_hw_power_interpolate((s32) frequency,
|
||||||
|
f, t, 3);
|
||||||
|
} else
|
||||||
tempSlope = eep->modalHeader5G.tempSlope;
|
tempSlope = eep->modalHeader5G.tempSlope;
|
||||||
|
|
||||||
REG_RMW_FIELD(ah, AR_PHY_TPC_19, AR_PHY_TPC_19_ALPHA_THERM, tempSlope);
|
REG_RMW_FIELD(ah, AR_PHY_TPC_19, AR_PHY_TPC_19_ALPHA_THERM, tempSlope);
|
||||||
|
Reference in New Issue
Block a user