aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2010-12-13 02:40:53 -0500
committerJohn W. Linville <linville@tuxdriver.com>2010-12-13 15:23:33 -0500
commit1782352d4908c79d195b43e0c1b6b109e0d93d05 (patch)
treefeff3bddf7f505efa006d9a9892ab90f35c8b874
parent7607cbe2ad6931400c5d15ced342ab329ab8f92c (diff)
ath9k_hw: fix the PA predistortion rate mask
The EEPROM PAPRD rate mask fields only contain mask values for actual rates in the low 25 bits. The upper bits are reserved for tx power scale values. Add the proper mask definitions and use them before writing the values to the register. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9003_eeprom.h6
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9003_paprd.c4
2 files changed, 8 insertions, 2 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h
index 620821ea6927..efb6a02be377 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h
+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h
@@ -31,6 +31,12 @@
31#define AR9300_ANT_16S 25 31#define AR9300_ANT_16S 25
32#define AR9300_FUTURE_MODAL_SZ 6 32#define AR9300_FUTURE_MODAL_SZ 6
33 33
34#define AR9300_PAPRD_RATE_MASK 0x01ffffff
35#define AR9300_PAPRD_SCALE_1 0x0e000000
36#define AR9300_PAPRD_SCALE_1_S 25
37#define AR9300_PAPRD_SCALE_2 0x70000000
38#define AR9300_PAPRD_SCALE_2_S 28
39
34/* Delta from which to start power to pdadc table */ 40/* Delta from which to start power to pdadc table */
35/* This offset is used in both open loop and closed loop power control 41/* This offset is used in both open loop and closed loop power control
36 * schemes. In open loop power control, it is not really needed, but for 42 * schemes. In open loop power control, it is not really needed, but for
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_paprd.c b/drivers/net/wireless/ath/ath9k/ar9003_paprd.c
index 74cff4365c43..cdca4c3265b9 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_paprd.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_paprd.c
@@ -52,8 +52,8 @@ static void ar9003_paprd_setup_single_table(struct ath_hw *ah)
52 else 52 else
53 hdr = &eep->modalHeader2G; 53 hdr = &eep->modalHeader2G;
54 54
55 am_mask = le32_to_cpu(hdr->papdRateMaskHt20); 55 am_mask = le32_to_cpu(hdr->papdRateMaskHt20) & AR9300_PAPRD_RATE_MASK;
56 ht40_mask = le32_to_cpu(hdr->papdRateMaskHt40); 56 ht40_mask = le32_to_cpu(hdr->papdRateMaskHt40) & AR9300_PAPRD_RATE_MASK;
57 57
58 REG_RMW_FIELD(ah, AR_PHY_PAPRD_AM2AM, AR_PHY_PAPRD_AM2AM_MASK, am_mask); 58 REG_RMW_FIELD(ah, AR_PHY_PAPRD_AM2AM, AR_PHY_PAPRD_AM2AM_MASK, am_mask);
59 REG_RMW_FIELD(ah, AR_PHY_PAPRD_AM2PM, AR_PHY_PAPRD_AM2PM_MASK, am_mask); 59 REG_RMW_FIELD(ah, AR_PHY_PAPRD_AM2PM, AR_PHY_PAPRD_AM2PM_MASK, am_mask);