add chaos_calmer branch
[15.05/openwrt.git] / package / kernel / mac80211 / patches / 333-ath9k-use-REG_RMW-and-rmw-buffer-in-ath9k_hw_4k_set_.patch
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
4  ath9k_hw_4k_set_gain
5
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
8 in same buffer.
9
10 Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
11 Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
12 ---
13
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,
18                                  u8 txRxAttenLocal)
19  {
20 -       REG_WRITE(ah, AR_PHY_SWITCH_CHAIN_0,
21 -                 pModal->antCtrlChain[0]);
22 -
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);
32 +
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);
37  
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);
45  }
46  
47  /*