ath9k: use rmw buffer in ath9k_hw_set_operating_mode and ath9k_hw_reset
authorOleksij Rempel <linux@rempel-privat.de>
Sun, 22 Mar 2015 18:29:57 +0000 (19:29 +0100)
committerKalle Valo <kvalo@codeaurora.org>
Mon, 30 Mar 2015 08:31:35 +0000 (11:31 +0300)
Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/ath9k/hw.c

index 6d5b4bc8ab482bda9f6458d6c6868ba50f6be7df..1d9ad5bfe0c8d71a250afc8c6dabd60254746b33 100644 (file)
@@ -1230,6 +1230,7 @@ static void ath9k_hw_set_operating_mode(struct ath_hw *ah, int opmode)
        u32 mask = AR_STA_ID1_STA_AP | AR_STA_ID1_ADHOC;
        u32 set = AR_STA_ID1_KSRCH_MODE;
 
+       ENABLE_REG_RMW_BUFFER(ah);
        switch (opmode) {
        case NL80211_IFTYPE_ADHOC:
                if (!AR_SREV_9340_13(ah)) {
@@ -1251,6 +1252,7 @@ static void ath9k_hw_set_operating_mode(struct ath_hw *ah, int opmode)
                break;
        }
        REG_RMW(ah, AR_STA_ID1, set, mask);
+       REG_RMW_BUFFER_FLUSH(ah);
 }
 
 void ath9k_hw_get_delta_slope_vals(struct ath_hw *ah, u32 coef_scaled,
@@ -1963,6 +1965,7 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
        if (!ath9k_hw_mci_is_enabled(ah))
                REG_WRITE(ah, AR_OBS, 8);
 
+       ENABLE_REG_RMW_BUFFER(ah);
        if (ah->config.rx_intr_mitigation) {
                REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_LAST, ah->config.rimt_last);
                REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_FIRST, ah->config.rimt_first);
@@ -1972,6 +1975,7 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
                REG_RMW_FIELD(ah, AR_TIMT, AR_TIMT_LAST, 300);
                REG_RMW_FIELD(ah, AR_TIMT, AR_TIMT_FIRST, 750);
        }
+       REG_RMW_BUFFER_FLUSH(ah);
 
        ath9k_hw_init_bb(ah, chan);