ath9k: Fix thermometer programming
The registers that control the on-chip thermometer need to be programmed based on the chainmask that the solution supports, not the chainmask that is present in the eeprom. Cc: Miaoqing Pan <miaoqing@qca.qualcomm.com> 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
ee79ccd9ea
commit
89b6e35c20
|
@ -4079,27 +4079,28 @@ static int ar9003_hw_get_thermometer(struct ath_hw *ah)
|
||||||
|
|
||||||
static void ar9003_hw_thermometer_apply(struct ath_hw *ah)
|
static void ar9003_hw_thermometer_apply(struct ath_hw *ah)
|
||||||
{
|
{
|
||||||
|
struct ath9k_hw_capabilities *pCap = &ah->caps;
|
||||||
int thermometer = ar9003_hw_get_thermometer(ah);
|
int thermometer = ar9003_hw_get_thermometer(ah);
|
||||||
u8 therm_on = (thermometer < 0) ? 0 : 1;
|
u8 therm_on = (thermometer < 0) ? 0 : 1;
|
||||||
|
|
||||||
REG_RMW_FIELD(ah, AR_PHY_65NM_CH0_RXTX4,
|
REG_RMW_FIELD(ah, AR_PHY_65NM_CH0_RXTX4,
|
||||||
AR_PHY_65NM_CH0_RXTX4_THERM_ON_OVR, therm_on);
|
AR_PHY_65NM_CH0_RXTX4_THERM_ON_OVR, therm_on);
|
||||||
if (ah->caps.tx_chainmask & BIT(1))
|
if (pCap->chip_chainmask & BIT(1))
|
||||||
REG_RMW_FIELD(ah, AR_PHY_65NM_CH1_RXTX4,
|
REG_RMW_FIELD(ah, AR_PHY_65NM_CH1_RXTX4,
|
||||||
AR_PHY_65NM_CH0_RXTX4_THERM_ON_OVR, therm_on);
|
AR_PHY_65NM_CH0_RXTX4_THERM_ON_OVR, therm_on);
|
||||||
if (ah->caps.tx_chainmask & BIT(2))
|
if (pCap->chip_chainmask & BIT(2))
|
||||||
REG_RMW_FIELD(ah, AR_PHY_65NM_CH2_RXTX4,
|
REG_RMW_FIELD(ah, AR_PHY_65NM_CH2_RXTX4,
|
||||||
AR_PHY_65NM_CH0_RXTX4_THERM_ON_OVR, therm_on);
|
AR_PHY_65NM_CH0_RXTX4_THERM_ON_OVR, therm_on);
|
||||||
|
|
||||||
therm_on = (thermometer < 0) ? 0 : (thermometer == 0);
|
therm_on = (thermometer < 0) ? 0 : (thermometer == 0);
|
||||||
REG_RMW_FIELD(ah, AR_PHY_65NM_CH0_RXTX4,
|
REG_RMW_FIELD(ah, AR_PHY_65NM_CH0_RXTX4,
|
||||||
AR_PHY_65NM_CH0_RXTX4_THERM_ON, therm_on);
|
AR_PHY_65NM_CH0_RXTX4_THERM_ON, therm_on);
|
||||||
if (ah->caps.tx_chainmask & BIT(1)) {
|
if (pCap->chip_chainmask & BIT(1)) {
|
||||||
therm_on = (thermometer < 0) ? 0 : (thermometer == 1);
|
therm_on = (thermometer < 0) ? 0 : (thermometer == 1);
|
||||||
REG_RMW_FIELD(ah, AR_PHY_65NM_CH1_RXTX4,
|
REG_RMW_FIELD(ah, AR_PHY_65NM_CH1_RXTX4,
|
||||||
AR_PHY_65NM_CH0_RXTX4_THERM_ON, therm_on);
|
AR_PHY_65NM_CH0_RXTX4_THERM_ON, therm_on);
|
||||||
}
|
}
|
||||||
if (ah->caps.tx_chainmask & BIT(2)) {
|
if (pCap->chip_chainmask & BIT(2)) {
|
||||||
therm_on = (thermometer < 0) ? 0 : (thermometer == 2);
|
therm_on = (thermometer < 0) ? 0 : (thermometer == 2);
|
||||||
REG_RMW_FIELD(ah, AR_PHY_65NM_CH2_RXTX4,
|
REG_RMW_FIELD(ah, AR_PHY_65NM_CH2_RXTX4,
|
||||||
AR_PHY_65NM_CH0_RXTX4_THERM_ON, therm_on);
|
AR_PHY_65NM_CH0_RXTX4_THERM_ON, therm_on);
|
||||||
|
|
Loading…
Reference in New Issue