aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath9k/phy.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/ath9k/phy.c')
-rw-r--r--drivers/net/wireless/ath9k/phy.c19
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;