1 From: Oleksij Rempel <linux@rempel-privat.de>
2 Date: Sun, 22 Mar 2015 19:30:01 +0100
3 Subject: [PATCH] ath9k: use REG_RMW and rmw buffer in
6 it is possible to reduce time needed for this function
7 by rplacing REG_WRITE with REG_RMW (plus dummy 0) and putt all commands
10 Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
11 Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
14 --- a/drivers/net/wireless/ath/ath9k/eeprom_4k.c
15 +++ b/drivers/net/wireless/ath/ath9k/eeprom_4k.c
16 @@ -772,15 +772,14 @@ static void ath9k_hw_4k_set_gain(struct
17 struct ar5416_eeprom_4k *eep,
20 - REG_WRITE(ah, AR_PHY_SWITCH_CHAIN_0,
21 - pModal->antCtrlChain[0]);
23 - REG_WRITE(ah, AR_PHY_TIMING_CTRL4(0),
24 - (REG_READ(ah, AR_PHY_TIMING_CTRL4(0)) &
25 - ~(AR_PHY_TIMING_CTRL4_IQCORR_Q_Q_COFF |
26 - AR_PHY_TIMING_CTRL4_IQCORR_Q_I_COFF)) |
27 - SM(pModal->iqCalICh[0], AR_PHY_TIMING_CTRL4_IQCORR_Q_I_COFF) |
28 - SM(pModal->iqCalQCh[0], AR_PHY_TIMING_CTRL4_IQCORR_Q_Q_COFF));
29 + ENABLE_REG_RMW_BUFFER(ah);
30 + REG_RMW(ah, AR_PHY_SWITCH_CHAIN_0,
31 + pModal->antCtrlChain[0], 0);
33 + REG_RMW(ah, AR_PHY_TIMING_CTRL4(0),
34 + SM(pModal->iqCalICh[0], AR_PHY_TIMING_CTRL4_IQCORR_Q_I_COFF) |
35 + SM(pModal->iqCalQCh[0], AR_PHY_TIMING_CTRL4_IQCORR_Q_Q_COFF),
36 + AR_PHY_TIMING_CTRL4_IQCORR_Q_Q_COFF | AR_PHY_TIMING_CTRL4_IQCORR_Q_I_COFF);
38 if ((eep->baseEepHeader.version & AR5416_EEP_VER_MINOR_MASK) >=
39 AR5416_EEP_MINOR_VER_3) {
40 @@ -819,6 +818,7 @@ static void ath9k_hw_4k_set_gain(struct
41 AR9280_PHY_RXGAIN_TXRX_ATTEN, txRxAttenLocal);
42 REG_RMW_FIELD(ah, AR_PHY_RXGAIN + 0x1000,
43 AR9280_PHY_RXGAIN_TXRX_MARGIN, pModal->rxTxMarginCh[0]);
44 + REG_RMW_BUFFER_FLUSH(ah);