diff options
author | Vasanthakumar Thiagarajan <vasanth@atheros.com> | 2011-04-19 09:59:08 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-04-25 14:50:10 -0400 |
commit | 17869f4fe940407b5b80039110c0257c90e18a99 (patch) | |
tree | 151b71be3380dd9ef7b292b7319c671ac7a53ada | |
parent | d1395d85fa58438c70b77185b7c5780b94046348 (diff) |
ath9k_hw: Configure RF channel freqency for AR9340
Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_phy.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_phy.c b/drivers/net/wireless/ath/ath9k/ar9003_phy.c index 0b999f94cd95..ea2f60c08f8b 100644 --- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c +++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c | |||
@@ -86,14 +86,31 @@ static int ar9003_hw_set_channel(struct ath_hw *ah, struct ath9k_channel *chan) | |||
86 | channelSel = (freq * 4) / 120; | 86 | channelSel = (freq * 4) / 120; |
87 | chan_frac = (((freq * 4) % 120) * 0x20000) / 120; | 87 | chan_frac = (((freq * 4) % 120) * 0x20000) / 120; |
88 | channelSel = (channelSel << 17) | chan_frac; | 88 | channelSel = (channelSel << 17) | chan_frac; |
89 | } else if (AR_SREV_9340(ah)) { | ||
90 | if (ah->is_clk_25mhz) { | ||
91 | u32 chan_frac; | ||
92 | |||
93 | channelSel = (freq * 2) / 75; | ||
94 | chan_frac = (((freq * 2) % 75) * 0x20000) / 75; | ||
95 | channelSel = (channelSel << 17) | chan_frac; | ||
96 | } else | ||
97 | channelSel = CHANSEL_2G(freq) >> 1; | ||
89 | } else | 98 | } else |
90 | channelSel = CHANSEL_2G(freq); | 99 | channelSel = CHANSEL_2G(freq); |
91 | /* Set to 2G mode */ | 100 | /* Set to 2G mode */ |
92 | bMode = 1; | 101 | bMode = 1; |
93 | } else { | 102 | } else { |
94 | channelSel = CHANSEL_5G(freq); | 103 | if (AR_SREV_9340(ah) && ah->is_clk_25mhz) { |
95 | /* Doubler is ON, so, divide channelSel by 2. */ | 104 | u32 chan_frac; |
96 | channelSel >>= 1; | 105 | |
106 | channelSel = (freq * 2) / 75; | ||
107 | chan_frac = ((freq % 75) * 0x20000) / 75; | ||
108 | channelSel = (channelSel << 17) | chan_frac; | ||
109 | } else { | ||
110 | channelSel = CHANSEL_5G(freq); | ||
111 | /* Doubler is ON, so, divide channelSel by 2. */ | ||
112 | channelSel >>= 1; | ||
113 | } | ||
97 | /* Set to 5G mode */ | 114 | /* Set to 5G mode */ |
98 | bMode = 0; | 115 | bMode = 0; |
99 | } | 116 | } |