053df8428db7070dbe5a99a5bf1cf32ba92ba324
[openwrt/staging/chunkeey.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 /*