diff options
author | Vasanthakumar Thiagarajan <vasanth@atheros.com> | 2010-09-02 04:34:41 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-09-07 13:54:33 -0400 |
commit | 754dc53641e0038cd4fd3574b1f5b3c7239f73ce (patch) | |
tree | 4e3e3389fece8217f4a40364f66d927385ee2e33 /drivers/net/wireless/ath/ath9k | |
parent | 7a374d8eeb1140c08d215de7a181e595ca606196 (diff) |
ath9k_hw: Add capability flag for Antenna diversity and combining feature
This is enabled only for ar9285.
Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath9k')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/eeprom.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/eeprom_4k.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/hw.c | 9 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/hw.h | 1 |
4 files changed, 16 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/eeprom.h b/drivers/net/wireless/ath/ath9k/eeprom.h index 7f48df1e2903..090778da5d67 100644 --- a/drivers/net/wireless/ath/ath9k/eeprom.h +++ b/drivers/net/wireless/ath/ath9k/eeprom.h | |||
@@ -266,6 +266,8 @@ enum eeprom_param { | |||
266 | EEP_INTERNAL_REGULATOR, | 266 | EEP_INTERNAL_REGULATOR, |
267 | EEP_SWREG, | 267 | EEP_SWREG, |
268 | EEP_PAPRD, | 268 | EEP_PAPRD, |
269 | EEP_MODAL_VER, | ||
270 | EEP_ANT_DIV_CTL1, | ||
269 | }; | 271 | }; |
270 | 272 | ||
271 | enum ar5416_rates { | 273 | enum ar5416_rates { |
diff --git a/drivers/net/wireless/ath/ath9k/eeprom_4k.c b/drivers/net/wireless/ath/ath9k/eeprom_4k.c index 9cccd12e8f21..2e1397b68a87 100644 --- a/drivers/net/wireless/ath/ath9k/eeprom_4k.c +++ b/drivers/net/wireless/ath/ath9k/eeprom_4k.c | |||
@@ -213,6 +213,10 @@ static u32 ath9k_hw_4k_get_eeprom(struct ath_hw *ah, | |||
213 | return 0; | 213 | return 0; |
214 | case EEP_PWR_TABLE_OFFSET: | 214 | case EEP_PWR_TABLE_OFFSET: |
215 | return AR5416_PWR_TABLE_OFFSET_DB; | 215 | return AR5416_PWR_TABLE_OFFSET_DB; |
216 | case EEP_MODAL_VER: | ||
217 | return pModal->version; | ||
218 | case EEP_ANT_DIV_CTL1: | ||
219 | return pModal->antdiv_ctl1; | ||
216 | default: | 220 | default: |
217 | return 0; | 221 | return 0; |
218 | } | 222 | } |
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c index 3384ca164562..68940a8864e0 100644 --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c | |||
@@ -2056,6 +2056,7 @@ int ath9k_hw_fill_cap_info(struct ath_hw *ah) | |||
2056 | struct ath_btcoex_hw *btcoex_hw = &ah->btcoex_hw; | 2056 | struct ath_btcoex_hw *btcoex_hw = &ah->btcoex_hw; |
2057 | 2057 | ||
2058 | u16 capField = 0, eeval; | 2058 | u16 capField = 0, eeval; |
2059 | u8 ant_div_ctl1; | ||
2059 | 2060 | ||
2060 | eeval = ah->eep_ops->get_eeprom(ah, EEP_REG_0); | 2061 | eeval = ah->eep_ops->get_eeprom(ah, EEP_REG_0); |
2061 | regulatory->current_rd = eeval; | 2062 | regulatory->current_rd = eeval; |
@@ -2280,6 +2281,14 @@ int ath9k_hw_fill_cap_info(struct ath_hw *ah) | |||
2280 | if (AR_SREV_9287_10_OR_LATER(ah) || AR_SREV_9271(ah)) | 2281 | if (AR_SREV_9287_10_OR_LATER(ah) || AR_SREV_9271(ah)) |
2281 | pCap->hw_caps |= ATH9K_HW_CAP_SGI_20; | 2282 | pCap->hw_caps |= ATH9K_HW_CAP_SGI_20; |
2282 | 2283 | ||
2284 | if (AR_SREV_9285(ah)) | ||
2285 | if (ah->eep_ops->get_eeprom(ah, EEP_MODAL_VER) >= 3) { | ||
2286 | ant_div_ctl1 = | ||
2287 | ah->eep_ops->get_eeprom(ah, EEP_ANT_DIV_CTL1); | ||
2288 | if ((ant_div_ctl1 & 0x1) && ((ant_div_ctl1 >> 3) & 0x1)) | ||
2289 | pCap->hw_caps |= ATH9K_HW_CAP_ANT_DIV_COMB; | ||
2290 | } | ||
2291 | |||
2283 | return 0; | 2292 | return 0; |
2284 | } | 2293 | } |
2285 | 2294 | ||
diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h index 1601dd439890..1a0efbd03e4f 100644 --- a/drivers/net/wireless/ath/ath9k/hw.h +++ b/drivers/net/wireless/ath/ath9k/hw.h | |||
@@ -204,6 +204,7 @@ enum ath9k_hw_caps { | |||
204 | ATH9K_HW_CAP_FASTCLOCK = BIT(20), | 204 | ATH9K_HW_CAP_FASTCLOCK = BIT(20), |
205 | ATH9K_HW_CAP_SGI_20 = BIT(21), | 205 | ATH9K_HW_CAP_SGI_20 = BIT(21), |
206 | ATH9K_HW_CAP_PAPRD = BIT(22), | 206 | ATH9K_HW_CAP_PAPRD = BIT(22), |
207 | ATH9K_HW_CAP_ANT_DIV_COMB = BIT(23), | ||
207 | }; | 208 | }; |
208 | 209 | ||
209 | struct ath9k_hw_capabilities { | 210 | struct ath9k_hw_capabilities { |