diff options
Diffstat (limited to 'drivers/net/wireless/ath9k/phy.c')
-rw-r--r-- | drivers/net/wireless/ath9k/phy.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/drivers/net/wireless/ath9k/phy.c b/drivers/net/wireless/ath9k/phy.c index 52aa2a7abe7a..e1494bae0f9f 100644 --- a/drivers/net/wireless/ath9k/phy.c +++ b/drivers/net/wireless/ath9k/phy.c | |||
@@ -132,20 +132,27 @@ ath9k_hw_ar9280_set_channel(struct ath_hw *ah, | |||
132 | bMode = 0; | 132 | bMode = 0; |
133 | fracMode = 0; | 133 | fracMode = 0; |
134 | 134 | ||
135 | if ((freq % 20) == 0) { | 135 | switch(ah->eep_ops->get_eeprom(ah, EEP_FRAC_N_5G)) { |
136 | aModeRefSel = 3; | 136 | case 0: |
137 | } else if ((freq % 10) == 0) { | 137 | if ((freq % 20) == 0) { |
138 | aModeRefSel = 2; | 138 | aModeRefSel = 3; |
139 | } else { | 139 | } else if ((freq % 10) == 0) { |
140 | aModeRefSel = 2; | ||
141 | } | ||
142 | if (aModeRefSel) | ||
143 | break; | ||
144 | case 1: | ||
145 | default: | ||
140 | aModeRefSel = 0; | 146 | aModeRefSel = 0; |
141 | |||
142 | fracMode = 1; | 147 | fracMode = 1; |
143 | refDivA = 1; | 148 | refDivA = 1; |
144 | channelSel = (freq * 0x8000) / 15; | 149 | channelSel = (freq * 0x8000) / 15; |
145 | 150 | ||
146 | REG_RMW_FIELD(ah, AR_AN_SYNTH9, | 151 | REG_RMW_FIELD(ah, AR_AN_SYNTH9, |
147 | AR_AN_SYNTH9_REFDIVA, refDivA); | 152 | AR_AN_SYNTH9_REFDIVA, refDivA); |
153 | |||
148 | } | 154 | } |
155 | |||
149 | if (!fracMode) { | 156 | if (!fracMode) { |
150 | ndiv = (freq * (refDivA >> aModeRefSel)) / 60; | 157 | ndiv = (freq * (refDivA >> aModeRefSel)) / 60; |
151 | channelSel = ndiv & 0x1ff; | 158 | channelSel = ndiv & 0x1ff; |