Signed-off-by: Oleksij Rempel <[email protected]>
---
 drivers/net/wireless/ath/ath9k/eeprom_def.c | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/eeprom_def.c 
b/drivers/net/wireless/ath/ath9k/eeprom_def.c
index 0980590..4b43539 100644
--- a/drivers/net/wireless/ath/ath9k/eeprom_def.c
+++ b/drivers/net/wireless/ath/ath9k/eeprom_def.c
@@ -466,6 +466,7 @@ static void ath9k_hw_def_set_gain(struct ath_hw *ah,
                                  struct ar5416_eeprom_def *eep,
                                  u8 txRxAttenLocal, int regChainOffset, int i)
 {
+       ENABLE_REG_RMW_BUFFER(ah);
        if (AR5416_VER_MASK >= AR5416_EEP_MINOR_VER_3) {
                txRxAttenLocal = pModal->txRxAttenCh[i];
 
@@ -483,16 +484,16 @@ static void ath9k_hw_def_set_gain(struct ath_hw *ah,
                              AR_PHY_GAIN_2GHZ_XATTEN2_DB,
                              pModal->xatten2Db[i]);
                } else {
-                       REG_WRITE(ah, AR_PHY_GAIN_2GHZ + regChainOffset,
+                       REG_RMW(ah, AR_PHY_GAIN_2GHZ + regChainOffset,
                          (REG_READ(ah, AR_PHY_GAIN_2GHZ + regChainOffset) &
                           ~AR_PHY_GAIN_2GHZ_BSW_MARGIN)
                          | SM(pModal-> bswMargin[i],
-                              AR_PHY_GAIN_2GHZ_BSW_MARGIN));
-                       REG_WRITE(ah, AR_PHY_GAIN_2GHZ + regChainOffset,
+                              AR_PHY_GAIN_2GHZ_BSW_MARGIN), 0);
+                       REG_RMW(ah, AR_PHY_GAIN_2GHZ + regChainOffset,
                          (REG_READ(ah, AR_PHY_GAIN_2GHZ + regChainOffset) &
                           ~AR_PHY_GAIN_2GHZ_BSW_ATTEN)
                          | SM(pModal->bswAtten[i],
-                              AR_PHY_GAIN_2GHZ_BSW_ATTEN));
+                              AR_PHY_GAIN_2GHZ_BSW_ATTEN), 0);
                }
        }
 
@@ -504,17 +505,19 @@ static void ath9k_hw_def_set_gain(struct ath_hw *ah,
                      AR_PHY_RXGAIN + regChainOffset,
                      AR9280_PHY_RXGAIN_TXRX_MARGIN, pModal->rxTxMarginCh[i]);
        } else {
-               REG_WRITE(ah,
+               REG_RMW(ah,
                          AR_PHY_RXGAIN + regChainOffset,
                          (REG_READ(ah, AR_PHY_RXGAIN + regChainOffset) &
                           ~AR_PHY_RXGAIN_TXRX_ATTEN)
-                         | SM(txRxAttenLocal, AR_PHY_RXGAIN_TXRX_ATTEN));
-               REG_WRITE(ah,
+                         | SM(txRxAttenLocal, AR_PHY_RXGAIN_TXRX_ATTEN), 0);
+               REG_RMW(ah,
                          AR_PHY_GAIN_2GHZ + regChainOffset,
                          (REG_READ(ah, AR_PHY_GAIN_2GHZ + regChainOffset) &
                           ~AR_PHY_GAIN_2GHZ_RXTX_MARGIN) |
-                         SM(pModal->rxTxMarginCh[i], 
AR_PHY_GAIN_2GHZ_RXTX_MARGIN));
+                         SM(pModal->rxTxMarginCh[i],
+                         AR_PHY_GAIN_2GHZ_RXTX_MARGIN), 0);
        }
+       REG_RMW_BUFFER_FLUSH(ah);
 }
 
 static void ath9k_hw_def_set_board_values(struct ath_hw *ah,
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to