diff options
author | Sujith <Sujith.Manoharan@atheros.com> | 2009-02-11 23:36:43 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-02-27 14:51:43 -0500 |
commit | fec0de1110e58ed39647e484bff8437e4185158d (patch) | |
tree | 61c7af7a434c92d3ef0d2423b1150744adf9dbc3 | |
parent | e421c7b35c17752dbe6d26d910eb2d6814073355 (diff) |
ath9k: Fix rd_ext EEPROM capability for AR9285
AR9285 chipsets have a different EEPROM layout,
handle this appropriately when populating the rd_ext
capability.
Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/ath9k/eeprom.h | 12 | ||||
-rw-r--r-- | drivers/net/wireless/ath9k/hw.c | 3 |
2 files changed, 14 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath9k/eeprom.h b/drivers/net/wireless/ath9k/eeprom.h index b7c656c84ba3..5c0d6c339fe9 100644 --- a/drivers/net/wireless/ath9k/eeprom.h +++ b/drivers/net/wireless/ath9k/eeprom.h | |||
@@ -78,6 +78,18 @@ | |||
78 | #define INCREASE_MAXPOW_BY_TWO_CHAIN 6 /* 10*log10(2)*2 */ | 78 | #define INCREASE_MAXPOW_BY_TWO_CHAIN 6 /* 10*log10(2)*2 */ |
79 | #define INCREASE_MAXPOW_BY_THREE_CHAIN 10 /* 10*log10(3)*2 */ | 79 | #define INCREASE_MAXPOW_BY_THREE_CHAIN 10 /* 10*log10(3)*2 */ |
80 | 80 | ||
81 | /* | ||
82 | * For AR9285 and later chipsets, the following bits are not being programmed | ||
83 | * in EEPROM and so need to be enabled always. | ||
84 | * | ||
85 | * Bit 0: en_fcc_mid | ||
86 | * Bit 1: en_jap_mid | ||
87 | * Bit 2: en_fcc_dfs_ht40 | ||
88 | * Bit 3: en_jap_ht40 | ||
89 | * Bit 4: en_jap_dfs_ht40 | ||
90 | */ | ||
91 | #define AR9285_RDEXT_DEFAULT 0x1F | ||
92 | |||
81 | #define AR_EEPROM_MAC(i) (0x1d+(i)) | 93 | #define AR_EEPROM_MAC(i) (0x1d+(i)) |
82 | #define ATH9K_POW_SM(_r, _s) (((_r) & 0x3f) << (_s)) | 94 | #define ATH9K_POW_SM(_r, _s) (((_r) & 0x3f) << (_s)) |
83 | #define FREQ2FBIN(x, y) ((y) ? ((x) - 2300) : (((x) - 4800) / 5)) | 95 | #define FREQ2FBIN(x, y) ((y) ? ((x) - 2300) : (((x) - 4800) / 5)) |
diff --git a/drivers/net/wireless/ath9k/hw.c b/drivers/net/wireless/ath9k/hw.c index cad8e39c201e..55d5a7440942 100644 --- a/drivers/net/wireless/ath9k/hw.c +++ b/drivers/net/wireless/ath9k/hw.c | |||
@@ -3128,10 +3128,11 @@ bool ath9k_hw_fill_cap_info(struct ath_hw *ah) | |||
3128 | u16 capField = 0, eeval; | 3128 | u16 capField = 0, eeval; |
3129 | 3129 | ||
3130 | eeval = ah->eep_ops->get_eeprom(ah, EEP_REG_0); | 3130 | eeval = ah->eep_ops->get_eeprom(ah, EEP_REG_0); |
3131 | |||
3132 | ah->regulatory.current_rd = eeval; | 3131 | ah->regulatory.current_rd = eeval; |
3133 | 3132 | ||
3134 | eeval = ah->eep_ops->get_eeprom(ah, EEP_REG_1); | 3133 | eeval = ah->eep_ops->get_eeprom(ah, EEP_REG_1); |
3134 | if (AR_SREV_9285_10_OR_LATER(ah)) | ||
3135 | eeval |= AR9285_RDEXT_DEFAULT; | ||
3135 | ah->regulatory.current_rd_ext = eeval; | 3136 | ah->regulatory.current_rd_ext = eeval; |
3136 | 3137 | ||
3137 | capField = ah->eep_ops->get_eeprom(ah, EEP_OP_CAP); | 3138 | capField = ah->eep_ops->get_eeprom(ah, EEP_OP_CAP); |