ath9k: Fix thermometer programming
authorSujith Manoharan <c_manoha@qca.qualcomm.com>
Sun, 16 Nov 2014 00:41:05 +0000 (06:11 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 17 Nov 2014 20:32:16 +0000 (15:32 -0500)
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>
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c

index 80c6eac..e726e40 100644 (file)
@@ -4079,27 +4079,28 @@ static int ar9003_hw_get_thermometer(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);
        u8 therm_on = (thermometer < 0) ? 0 : 1;
 
        REG_RMW_FIELD(ah, AR_PHY_65NM_CH0_RXTX4,
                      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,
                              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,
                              AR_PHY_65NM_CH0_RXTX4_THERM_ON_OVR, therm_on);
 
        therm_on = (thermometer < 0) ? 0 : (thermometer == 0);
        REG_RMW_FIELD(ah, AR_PHY_65NM_CH0_RXTX4,
                      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);
                REG_RMW_FIELD(ah, AR_PHY_65NM_CH1_RXTX4,
                              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);
                REG_RMW_FIELD(ah, AR_PHY_65NM_CH2_RXTX4,
                              AR_PHY_65NM_CH0_RXTX4_THERM_ON, therm_on);