aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath9k
diff options
context:
space:
mode:
authorVasanthakumar Thiagarajan <vasanth@atheros.com>2010-09-02 04:34:41 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-09-07 13:54:33 -0400
commit754dc53641e0038cd4fd3574b1f5b3c7239f73ce (patch)
tree4e3e3389fece8217f4a40364f66d927385ee2e33 /drivers/net/wireless/ath/ath9k
parent7a374d8eeb1140c08d215de7a181e595ca606196 (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.h2
-rw-r--r--drivers/net/wireless/ath/ath9k/eeprom_4k.c4
-rw-r--r--drivers/net/wireless/ath/ath9k/hw.c9
-rw-r--r--drivers/net/wireless/ath/ath9k/hw.h1
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
271enum ar5416_rates { 273enum 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
209struct ath9k_hw_capabilities { 210struct ath9k_hw_capabilities {