diff options
author | Felix Fietkau <nbd@openwrt.org> | 2015-04-14 12:17:34 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2015-04-14 12:17:34 +0000 |
commit | cd59cb2a4004c0a4bd13ded3c0ee7abf850fda7d (patch) | |
tree | 580c994a8d121e191f2de5383c8de7ea84afb665 /package/kernel/mac80211/patches/333-ath9k-use-REG_RMW-and-rmw-buffer-in-ath9k_hw_4k_set_.patch | |
parent | 054044ff91891723025a6b35bd583c98e141ea3d (diff) | |
download | upstream-cd59cb2a4004c0a4bd13ded3c0ee7abf850fda7d.tar.gz upstream-cd59cb2a4004c0a4bd13ded3c0ee7abf850fda7d.tar.bz2 upstream-cd59cb2a4004c0a4bd13ded3c0ee7abf850fda7d.zip |
mac80211: merge a number of upstream driver fixes/improvements
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@45432 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/kernel/mac80211/patches/333-ath9k-use-REG_RMW-and-rmw-buffer-in-ath9k_hw_4k_set_.patch')
-rw-r--r-- | package/kernel/mac80211/patches/333-ath9k-use-REG_RMW-and-rmw-buffer-in-ath9k_hw_4k_set_.patch | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/333-ath9k-use-REG_RMW-and-rmw-buffer-in-ath9k_hw_4k_set_.patch b/package/kernel/mac80211/patches/333-ath9k-use-REG_RMW-and-rmw-buffer-in-ath9k_hw_4k_set_.patch new file mode 100644 index 0000000000..053df8428d --- /dev/null +++ b/package/kernel/mac80211/patches/333-ath9k-use-REG_RMW-and-rmw-buffer-in-ath9k_hw_4k_set_.patch @@ -0,0 +1,47 @@ +From: Oleksij Rempel <linux@rempel-privat.de> +Date: Sun, 22 Mar 2015 19:30:01 +0100 +Subject: [PATCH] ath9k: use REG_RMW and rmw buffer in + ath9k_hw_4k_set_gain + +it is possible to reduce time needed for this function +by rplacing REG_WRITE with REG_RMW (plus dummy 0) and putt all commands +in same buffer. + +Signed-off-by: Oleksij Rempel <linux@rempel-privat.de> +Signed-off-by: Kalle Valo <kvalo@codeaurora.org> +--- + +--- a/drivers/net/wireless/ath/ath9k/eeprom_4k.c ++++ b/drivers/net/wireless/ath/ath9k/eeprom_4k.c +@@ -772,15 +772,14 @@ static void ath9k_hw_4k_set_gain(struct + struct ar5416_eeprom_4k *eep, + u8 txRxAttenLocal) + { +- REG_WRITE(ah, AR_PHY_SWITCH_CHAIN_0, +- pModal->antCtrlChain[0]); +- +- REG_WRITE(ah, AR_PHY_TIMING_CTRL4(0), +- (REG_READ(ah, AR_PHY_TIMING_CTRL4(0)) & +- ~(AR_PHY_TIMING_CTRL4_IQCORR_Q_Q_COFF | +- AR_PHY_TIMING_CTRL4_IQCORR_Q_I_COFF)) | +- SM(pModal->iqCalICh[0], AR_PHY_TIMING_CTRL4_IQCORR_Q_I_COFF) | +- SM(pModal->iqCalQCh[0], AR_PHY_TIMING_CTRL4_IQCORR_Q_Q_COFF)); ++ ENABLE_REG_RMW_BUFFER(ah); ++ REG_RMW(ah, AR_PHY_SWITCH_CHAIN_0, ++ pModal->antCtrlChain[0], 0); ++ ++ REG_RMW(ah, AR_PHY_TIMING_CTRL4(0), ++ SM(pModal->iqCalICh[0], AR_PHY_TIMING_CTRL4_IQCORR_Q_I_COFF) | ++ SM(pModal->iqCalQCh[0], AR_PHY_TIMING_CTRL4_IQCORR_Q_Q_COFF), ++ AR_PHY_TIMING_CTRL4_IQCORR_Q_Q_COFF | AR_PHY_TIMING_CTRL4_IQCORR_Q_I_COFF); + + if ((eep->baseEepHeader.version & AR5416_EEP_VER_MINOR_MASK) >= + AR5416_EEP_MINOR_VER_3) { +@@ -819,6 +818,7 @@ static void ath9k_hw_4k_set_gain(struct + AR9280_PHY_RXGAIN_TXRX_ATTEN, txRxAttenLocal); + REG_RMW_FIELD(ah, AR_PHY_RXGAIN + 0x1000, + AR9280_PHY_RXGAIN_TXRX_MARGIN, pModal->rxTxMarginCh[0]); ++ REG_RMW_BUFFER_FLUSH(ah); + } + + /* |