firmware-utils/mkzynfw: fix available flash space calculation
[openwrt/staging/chunkeey.git] / package / mac80211 / patches / 321-ath9k_pending_cleanups.patch
1 --- a/drivers/net/wireless/ath/ath9k/ar9002_hw.c
2 +++ b/drivers/net/wireless/ath/ath9k/ar9002_hw.c
3 @@ -26,24 +26,6 @@ MODULE_PARM_DESC(nohwcrypt, "Force new A
4
5 /* General hardware code for the A5008/AR9001/AR9002 hadware families */
6
7 -static bool ar9002_hw_macversion_supported(u32 macversion)
8 -{
9 - switch (macversion) {
10 - case AR_SREV_VERSION_5416_PCI:
11 - case AR_SREV_VERSION_5416_PCIE:
12 - case AR_SREV_VERSION_9160:
13 - case AR_SREV_VERSION_9100:
14 - case AR_SREV_VERSION_9280:
15 - case AR_SREV_VERSION_9285:
16 - case AR_SREV_VERSION_9287:
17 - case AR_SREV_VERSION_9271:
18 - return true;
19 - default:
20 - break;
21 - }
22 - return false;
23 -}
24 -
25 static void ar9002_hw_init_mode_regs(struct ath_hw *ah)
26 {
27 if (AR_SREV_9271(ah)) {
28 @@ -565,7 +547,6 @@ void ar9002_hw_attach_ops(struct ath_hw
29
30 priv_ops->init_mode_regs = ar9002_hw_init_mode_regs;
31 priv_ops->init_mode_gain_regs = ar9002_hw_init_mode_gain_regs;
32 - priv_ops->macversion_supported = ar9002_hw_macversion_supported;
33
34 ops->config_pci_powersave = ar9002_hw_configpcipowersave;
35
36 --- a/drivers/net/wireless/ath/ath9k/ar9002_mac.c
37 +++ b/drivers/net/wireless/ath/ath9k/ar9002_mac.c
38 @@ -283,7 +283,6 @@ static void ar9002_hw_set11n_txdesc(stru
39 {
40 struct ar5416_desc *ads = AR5416DESC(ds);
41
42 - txPower += ah->txpower_indexoffset;
43 if (txPower > 63)
44 txPower = 63;
45
46 --- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
47 +++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
48 @@ -72,7 +72,7 @@ static const struct ar9300_eeprom ar9300
49 .regDmn = { LE16(0), LE16(0x1f) },
50 .txrxMask = 0x77, /* 4 bits tx and 4 bits rx */
51 .opCapFlags = {
52 - .opFlags = AR9300_OPFLAGS_11G | AR9300_OPFLAGS_11A,
53 + .opFlags = AR5416_OPFLAGS_11G | AR5416_OPFLAGS_11A,
54 .eepMisc = 0,
55 },
56 .rfSilent = 0,
57 @@ -649,7 +649,7 @@ static const struct ar9300_eeprom ar9300
58 .regDmn = { LE16(0), LE16(0x1f) },
59 .txrxMask = 0x77, /* 4 bits tx and 4 bits rx */
60 .opCapFlags = {
61 - .opFlags = AR9300_OPFLAGS_11G | AR9300_OPFLAGS_11A,
62 + .opFlags = AR5416_OPFLAGS_11G | AR5416_OPFLAGS_11A,
63 .eepMisc = 0,
64 },
65 .rfSilent = 0,
66 @@ -1227,7 +1227,7 @@ static const struct ar9300_eeprom ar9300
67 .regDmn = { LE16(0), LE16(0x1f) },
68 .txrxMask = 0x77, /* 4 bits tx and 4 bits rx */
69 .opCapFlags = {
70 - .opFlags = AR9300_OPFLAGS_11G | AR9300_OPFLAGS_11A,
71 + .opFlags = AR5416_OPFLAGS_11G | AR5416_OPFLAGS_11A,
72 .eepMisc = 0,
73 },
74 .rfSilent = 0,
75 @@ -1805,7 +1805,7 @@ static const struct ar9300_eeprom ar9300
76 .regDmn = { LE16(0), LE16(0x1f) },
77 .txrxMask = 0x77, /* 4 bits tx and 4 bits rx */
78 .opCapFlags = {
79 - .opFlags = AR9300_OPFLAGS_11G | AR9300_OPFLAGS_11A,
80 + .opFlags = AR5416_OPFLAGS_11G | AR5416_OPFLAGS_11A,
81 .eepMisc = 0,
82 },
83 .rfSilent = 0,
84 @@ -2382,7 +2382,7 @@ static const struct ar9300_eeprom ar9300
85 .regDmn = { LE16(0), LE16(0x1f) },
86 .txrxMask = 0x33, /* 4 bits tx and 4 bits rx */
87 .opCapFlags = {
88 - .opFlags = AR9300_OPFLAGS_11G | AR9300_OPFLAGS_11A,
89 + .opFlags = AR5416_OPFLAGS_11G | AR5416_OPFLAGS_11A,
90 .eepMisc = 0,
91 },
92 .rfSilent = 0,
93 @@ -2974,7 +2974,7 @@ static const struct ar9300_eeprom *ar900
94
95 static u16 ath9k_hw_fbin2freq(u8 fbin, bool is2GHz)
96 {
97 - if (fbin == AR9300_BCHAN_UNUSED)
98 + if (fbin == AR5416_BCHAN_UNUSED)
99 return fbin;
100
101 return (u16) ((is2GHz) ? (2300 + fbin) : (4800 + 5 * fbin));
102 @@ -3427,18 +3427,6 @@ static int ath9k_hw_ar9300_get_eeprom_re
103 return 0;
104 }
105
106 -static u8 ath9k_hw_ar9300_get_num_ant_config(struct ath_hw *ah,
107 - enum ath9k_hal_freq_band freq_band)
108 -{
109 - return 1;
110 -}
111 -
112 -static u32 ath9k_hw_ar9300_get_eeprom_antenna_cfg(struct ath_hw *ah,
113 - struct ath9k_channel *chan)
114 -{
115 - return -EINVAL;
116 -}
117 -
118 static s32 ar9003_hw_xpa_bias_level_get(struct ath_hw *ah, bool is2ghz)
119 {
120 struct ar9300_eeprom *eep = &ah->eeprom.ar9300_eep;
121 @@ -4485,7 +4473,7 @@ static u16 ar9003_hw_get_indirect_edge_p
122 return CTL_EDGE_TPOWER(ctl_5g[idx].ctlEdges[edge - 1]);
123 }
124
125 - return AR9300_MAX_RATE_POWER;
126 + return MAX_RATE_POWER;
127 }
128
129 /*
130 @@ -4494,7 +4482,7 @@ static u16 ar9003_hw_get_indirect_edge_p
131 static u16 ar9003_hw_get_max_edge_power(struct ar9300_eeprom *eep,
132 u16 freq, int idx, bool is2GHz)
133 {
134 - u16 twiceMaxEdgePower = AR9300_MAX_RATE_POWER;
135 + u16 twiceMaxEdgePower = MAX_RATE_POWER;
136 u8 *ctl_freqbin = is2GHz ?
137 &eep->ctl_freqbin_2G[idx][0] :
138 &eep->ctl_freqbin_5G[idx][0];
139 @@ -4504,7 +4492,7 @@ static u16 ar9003_hw_get_max_edge_power(
140
141 /* Get the edge power */
142 for (edge = 0;
143 - (edge < num_edges) && (ctl_freqbin[edge] != AR9300_BCHAN_UNUSED);
144 + (edge < num_edges) && (ctl_freqbin[edge] != AR5416_BCHAN_UNUSED);
145 edge++) {
146 /*
147 * If there's an exact channel match or an inband flag set
148 @@ -4542,9 +4530,9 @@ static void ar9003_hw_set_power_per_rate
149 struct ath_regulatory *regulatory = ath9k_hw_regulatory(ah);
150 struct ath_common *common = ath9k_hw_common(ah);
151 struct ar9300_eeprom *pEepData = &ah->eeprom.ar9300_eep;
152 - u16 twiceMaxEdgePower = AR9300_MAX_RATE_POWER;
153 + u16 twiceMaxEdgePower = MAX_RATE_POWER;
154 static const u16 tpScaleReductionTable[5] = {
155 - 0, 3, 6, 9, AR9300_MAX_RATE_POWER
156 + 0, 3, 6, 9, MAX_RATE_POWER
157 };
158 int i;
159 int16_t twiceLargestAntenna;
160 @@ -4848,8 +4836,6 @@ const struct eeprom_ops eep_ar9300_ops =
161 .fill_eeprom = ath9k_hw_ar9300_fill_eeprom,
162 .get_eeprom_ver = ath9k_hw_ar9300_get_eeprom_ver,
163 .get_eeprom_rev = ath9k_hw_ar9300_get_eeprom_rev,
164 - .get_num_ant_config = ath9k_hw_ar9300_get_num_ant_config,
165 - .get_eeprom_antenna_cfg = ath9k_hw_ar9300_get_eeprom_antenna_cfg,
166 .set_board_values = ath9k_hw_ar9300_set_board_values,
167 .set_addac = ath9k_hw_ar9300_set_addac,
168 .set_txpower = ath9k_hw_ar9300_set_txpower,
169 --- a/drivers/net/wireless/ath/ath9k/ar9003_hw.c
170 +++ b/drivers/net/wireless/ath/ath9k/ar9003_hw.c
171 @@ -21,18 +21,6 @@
172
173 /* General hardware code for the AR9003 hadware family */
174
175 -static bool ar9003_hw_macversion_supported(u32 macversion)
176 -{
177 - switch (macversion) {
178 - case AR_SREV_VERSION_9300:
179 - case AR_SREV_VERSION_9485:
180 - return true;
181 - default:
182 - break;
183 - }
184 - return false;
185 -}
186 -
187 /*
188 * The AR9003 family uses a new INI format (pre, core, post
189 * arrays per subsystem). This provides support for the
190 @@ -322,7 +310,6 @@ void ar9003_hw_attach_ops(struct ath_hw
191
192 priv_ops->init_mode_regs = ar9003_hw_init_mode_regs;
193 priv_ops->init_mode_gain_regs = ar9003_hw_init_mode_gain_regs;
194 - priv_ops->macversion_supported = ar9003_hw_macversion_supported;
195
196 ops->config_pci_powersave = ar9003_hw_configpcipowersave;
197
198 --- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c
199 +++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
200 @@ -322,7 +322,6 @@ static void ar9003_hw_set11n_txdesc(stru
201 if (txpower > ah->txpower_limit)
202 txpower = ah->txpower_limit;
203
204 - txpower += ah->txpower_indexoffset;
205 if (txpower > 63)
206 txpower = 63;
207
208 --- a/drivers/net/wireless/ath/ath9k/eeprom.c
209 +++ b/drivers/net/wireless/ath/ath9k/eeprom.c
210 @@ -234,7 +234,7 @@ void ath9k_hw_get_target_powers(struct a
211 u16 ath9k_hw_get_max_edge_power(u16 freq, struct cal_ctl_edges *pRdEdgesPower,
212 bool is2GHz, int num_band_edges)
213 {
214 - u16 twiceMaxEdgePower = AR5416_MAX_RATE_POWER;
215 + u16 twiceMaxEdgePower = MAX_RATE_POWER;
216 int i;
217
218 for (i = 0; (i < num_band_edges) &&
219 @@ -279,6 +279,219 @@ void ath9k_hw_update_regulatory_maxpower
220 }
221 }
222
223 +void ath9k_hw_get_gain_boundaries_pdadcs(struct ath_hw *ah,
224 + struct ath9k_channel *chan,
225 + void *pRawDataSet,
226 + u8 *bChans, u16 availPiers,
227 + u16 tPdGainOverlap,
228 + u16 *pPdGainBoundaries, u8 *pPDADCValues,
229 + u16 numXpdGains)
230 +{
231 + int i, j, k;
232 + int16_t ss;
233 + u16 idxL = 0, idxR = 0, numPiers;
234 + static u8 vpdTableL[AR5416_NUM_PD_GAINS]
235 + [AR5416_MAX_PWR_RANGE_IN_HALF_DB];
236 + static u8 vpdTableR[AR5416_NUM_PD_GAINS]
237 + [AR5416_MAX_PWR_RANGE_IN_HALF_DB];
238 + static u8 vpdTableI[AR5416_NUM_PD_GAINS]
239 + [AR5416_MAX_PWR_RANGE_IN_HALF_DB];
240 +
241 + u8 *pVpdL, *pVpdR, *pPwrL, *pPwrR;
242 + u8 minPwrT4[AR5416_NUM_PD_GAINS];
243 + u8 maxPwrT4[AR5416_NUM_PD_GAINS];
244 + int16_t vpdStep;
245 + int16_t tmpVal;
246 + u16 sizeCurrVpdTable, maxIndex, tgtIndex;
247 + bool match;
248 + int16_t minDelta = 0;
249 + struct chan_centers centers;
250 + int pdgain_boundary_default;
251 + struct cal_data_per_freq *data_def = pRawDataSet;
252 + struct cal_data_per_freq_4k *data_4k = pRawDataSet;
253 + struct cal_data_per_freq_ar9287 *data_9287 = pRawDataSet;
254 + bool eeprom_4k = AR_SREV_9285(ah) || AR_SREV_9271(ah);
255 + int intercepts;
256 +
257 + if (AR_SREV_9287(ah))
258 + intercepts = AR9287_PD_GAIN_ICEPTS;
259 + else
260 + intercepts = AR5416_PD_GAIN_ICEPTS;
261 +
262 + memset(&minPwrT4, 0, AR5416_NUM_PD_GAINS);
263 + ath9k_hw_get_channel_centers(ah, chan, &centers);
264 +
265 + for (numPiers = 0; numPiers < availPiers; numPiers++) {
266 + if (bChans[numPiers] == AR5416_BCHAN_UNUSED)
267 + break;
268 + }
269 +
270 + match = ath9k_hw_get_lower_upper_index((u8)FREQ2FBIN(centers.synth_center,
271 + IS_CHAN_2GHZ(chan)),
272 + bChans, numPiers, &idxL, &idxR);
273 +
274 + if (match) {
275 + if (AR_SREV_9287(ah)) {
276 + /* FIXME: array overrun? */
277 + for (i = 0; i < numXpdGains; i++) {
278 + minPwrT4[i] = data_9287[idxL].pwrPdg[i][0];
279 + maxPwrT4[i] = data_9287[idxL].pwrPdg[i][4];
280 + ath9k_hw_fill_vpd_table(minPwrT4[i], maxPwrT4[i],
281 + data_9287[idxL].pwrPdg[i],
282 + data_9287[idxL].vpdPdg[i],
283 + intercepts,
284 + vpdTableI[i]);
285 + }
286 + } else if (eeprom_4k) {
287 + for (i = 0; i < numXpdGains; i++) {
288 + minPwrT4[i] = data_4k[idxL].pwrPdg[i][0];
289 + maxPwrT4[i] = data_4k[idxL].pwrPdg[i][4];
290 + ath9k_hw_fill_vpd_table(minPwrT4[i], maxPwrT4[i],
291 + data_4k[idxL].pwrPdg[i],
292 + data_4k[idxL].vpdPdg[i],
293 + intercepts,
294 + vpdTableI[i]);
295 + }
296 + } else {
297 + for (i = 0; i < numXpdGains; i++) {
298 + minPwrT4[i] = data_def[idxL].pwrPdg[i][0];
299 + maxPwrT4[i] = data_def[idxL].pwrPdg[i][4];
300 + ath9k_hw_fill_vpd_table(minPwrT4[i], maxPwrT4[i],
301 + data_def[idxL].pwrPdg[i],
302 + data_def[idxL].vpdPdg[i],
303 + intercepts,
304 + vpdTableI[i]);
305 + }
306 + }
307 + } else {
308 + for (i = 0; i < numXpdGains; i++) {
309 + if (AR_SREV_9287(ah)) {
310 + pVpdL = data_9287[idxL].vpdPdg[i];
311 + pPwrL = data_9287[idxL].pwrPdg[i];
312 + pVpdR = data_9287[idxR].vpdPdg[i];
313 + pPwrR = data_9287[idxR].pwrPdg[i];
314 + } else if (eeprom_4k) {
315 + pVpdL = data_4k[idxL].vpdPdg[i];
316 + pPwrL = data_4k[idxL].pwrPdg[i];
317 + pVpdR = data_4k[idxR].vpdPdg[i];
318 + pPwrR = data_4k[idxR].pwrPdg[i];
319 + } else {
320 + pVpdL = data_def[idxL].vpdPdg[i];
321 + pPwrL = data_def[idxL].pwrPdg[i];
322 + pVpdR = data_def[idxR].vpdPdg[i];
323 + pPwrR = data_def[idxR].pwrPdg[i];
324 + }
325 +
326 + minPwrT4[i] = max(pPwrL[0], pPwrR[0]);
327 +
328 + maxPwrT4[i] =
329 + min(pPwrL[intercepts - 1],
330 + pPwrR[intercepts - 1]);
331 +
332 +
333 + ath9k_hw_fill_vpd_table(minPwrT4[i], maxPwrT4[i],
334 + pPwrL, pVpdL,
335 + intercepts,
336 + vpdTableL[i]);
337 + ath9k_hw_fill_vpd_table(minPwrT4[i], maxPwrT4[i],
338 + pPwrR, pVpdR,
339 + intercepts,
340 + vpdTableR[i]);
341 +
342 + for (j = 0; j <= (maxPwrT4[i] - minPwrT4[i]) / 2; j++) {
343 + vpdTableI[i][j] =
344 + (u8)(ath9k_hw_interpolate((u16)
345 + FREQ2FBIN(centers.
346 + synth_center,
347 + IS_CHAN_2GHZ
348 + (chan)),
349 + bChans[idxL], bChans[idxR],
350 + vpdTableL[i][j], vpdTableR[i][j]));
351 + }
352 + }
353 + }
354 +
355 + k = 0;
356 +
357 + for (i = 0; i < numXpdGains; i++) {
358 + if (i == (numXpdGains - 1))
359 + pPdGainBoundaries[i] =
360 + (u16)(maxPwrT4[i] / 2);
361 + else
362 + pPdGainBoundaries[i] =
363 + (u16)((maxPwrT4[i] + minPwrT4[i + 1]) / 4);
364 +
365 + pPdGainBoundaries[i] =
366 + min((u16)MAX_RATE_POWER, pPdGainBoundaries[i]);
367 +
368 + if ((i == 0) && !AR_SREV_5416_20_OR_LATER(ah)) {
369 + minDelta = pPdGainBoundaries[0] - 23;
370 + pPdGainBoundaries[0] = 23;
371 + } else {
372 + minDelta = 0;
373 + }
374 +
375 + if (i == 0) {
376 + if (AR_SREV_9280_20_OR_LATER(ah))
377 + ss = (int16_t)(0 - (minPwrT4[i] / 2));
378 + else
379 + ss = 0;
380 + } else {
381 + ss = (int16_t)((pPdGainBoundaries[i - 1] -
382 + (minPwrT4[i] / 2)) -
383 + tPdGainOverlap + 1 + minDelta);
384 + }
385 + vpdStep = (int16_t)(vpdTableI[i][1] - vpdTableI[i][0]);
386 + vpdStep = (int16_t)((vpdStep < 1) ? 1 : vpdStep);
387 +
388 + while ((ss < 0) && (k < (AR5416_NUM_PDADC_VALUES - 1))) {
389 + tmpVal = (int16_t)(vpdTableI[i][0] + ss * vpdStep);
390 + pPDADCValues[k++] = (u8)((tmpVal < 0) ? 0 : tmpVal);
391 + ss++;
392 + }
393 +
394 + sizeCurrVpdTable = (u8) ((maxPwrT4[i] - minPwrT4[i]) / 2 + 1);
395 + tgtIndex = (u8)(pPdGainBoundaries[i] + tPdGainOverlap -
396 + (minPwrT4[i] / 2));
397 + maxIndex = (tgtIndex < sizeCurrVpdTable) ?
398 + tgtIndex : sizeCurrVpdTable;
399 +
400 + while ((ss < maxIndex) && (k < (AR5416_NUM_PDADC_VALUES - 1))) {
401 + pPDADCValues[k++] = vpdTableI[i][ss++];
402 + }
403 +
404 + vpdStep = (int16_t)(vpdTableI[i][sizeCurrVpdTable - 1] -
405 + vpdTableI[i][sizeCurrVpdTable - 2]);
406 + vpdStep = (int16_t)((vpdStep < 1) ? 1 : vpdStep);
407 +
408 + if (tgtIndex >= maxIndex) {
409 + while ((ss <= tgtIndex) &&
410 + (k < (AR5416_NUM_PDADC_VALUES - 1))) {
411 + tmpVal = (int16_t)((vpdTableI[i][sizeCurrVpdTable - 1] +
412 + (ss - maxIndex + 1) * vpdStep));
413 + pPDADCValues[k++] = (u8)((tmpVal > 255) ?
414 + 255 : tmpVal);
415 + ss++;
416 + }
417 + }
418 + }
419 +
420 + if (eeprom_4k)
421 + pdgain_boundary_default = 58;
422 + else
423 + pdgain_boundary_default = pPdGainBoundaries[i - 1];
424 +
425 + while (i < AR5416_PD_GAINS_IN_MASK) {
426 + pPdGainBoundaries[i] = pdgain_boundary_default;
427 + i++;
428 + }
429 +
430 + while (k < AR5416_NUM_PDADC_VALUES) {
431 + pPDADCValues[k] = pPDADCValues[k - 1];
432 + k++;
433 + }
434 +}
435 +
436 int ath9k_hw_eeprom_init(struct ath_hw *ah)
437 {
438 int status;
439 --- a/drivers/net/wireless/ath/ath9k/eeprom.h
440 +++ b/drivers/net/wireless/ath/ath9k/eeprom.h
441 @@ -17,6 +17,8 @@
442 #ifndef EEPROM_H
443 #define EEPROM_H
444
445 +#define AR_EEPROM_MODAL_SPURS 5
446 +
447 #include "../ath.h"
448 #include <net/cfg80211.h>
449 #include "ar9003_eeprom.h"
450 @@ -149,8 +151,6 @@
451 #define AR5416_NUM_PD_GAINS 4
452 #define AR5416_PD_GAINS_IN_MASK 4
453 #define AR5416_PD_GAIN_ICEPTS 5
454 -#define AR5416_EEPROM_MODAL_SPURS 5
455 -#define AR5416_MAX_RATE_POWER 63
456 #define AR5416_NUM_PDADC_VALUES 128
457 #define AR5416_BCHAN_UNUSED 0xFF
458 #define AR5416_MAX_PWR_RANGE_IN_HALF_DB 64
459 @@ -175,8 +175,6 @@
460 #define AR5416_EEP4K_NUM_CTLS 12
461 #define AR5416_EEP4K_NUM_BAND_EDGES 4
462 #define AR5416_EEP4K_NUM_PD_GAINS 2
463 -#define AR5416_EEP4K_PD_GAINS_IN_MASK 4
464 -#define AR5416_EEP4K_PD_GAIN_ICEPTS 5
465 #define AR5416_EEP4K_MAX_CHAINS 1
466
467 #define AR9280_TX_GAIN_TABLE_SIZE 22
468 @@ -198,35 +196,12 @@
469 #define AR9287_NUM_2G_40_TARGET_POWERS 3
470 #define AR9287_NUM_CTLS 12
471 #define AR9287_NUM_BAND_EDGES 4
472 -#define AR9287_NUM_PD_GAINS 4
473 -#define AR9287_PD_GAINS_IN_MASK 4
474 #define AR9287_PD_GAIN_ICEPTS 1
475 -#define AR9287_EEPROM_MODAL_SPURS 5
476 -#define AR9287_MAX_RATE_POWER 63
477 -#define AR9287_NUM_PDADC_VALUES 128
478 -#define AR9287_NUM_RATES 16
479 -#define AR9287_BCHAN_UNUSED 0xFF
480 -#define AR9287_MAX_PWR_RANGE_IN_HALF_DB 64
481 -#define AR9287_OPFLAGS_11A 0x01
482 -#define AR9287_OPFLAGS_11G 0x02
483 -#define AR9287_OPFLAGS_2G_HT40 0x08
484 -#define AR9287_OPFLAGS_2G_HT20 0x20
485 -#define AR9287_OPFLAGS_5G_HT40 0x04
486 -#define AR9287_OPFLAGS_5G_HT20 0x10
487 #define AR9287_EEPMISC_BIG_ENDIAN 0x01
488 #define AR9287_EEPMISC_WOW 0x02
489 #define AR9287_MAX_CHAINS 2
490 #define AR9287_ANT_16S 32
491 -#define AR9287_custdatasize 20
492
493 -#define AR9287_NUM_ANT_CHAIN_FIELDS 6
494 -#define AR9287_NUM_ANT_COMMON_FIELDS 4
495 -#define AR9287_SIZE_ANT_CHAIN_FIELD 2
496 -#define AR9287_SIZE_ANT_COMMON_FIELD 4
497 -#define AR9287_ANT_CHAIN_MASK 0x3
498 -#define AR9287_ANT_COMMON_MASK 0xf
499 -#define AR9287_CHAIN_0_IDX 0
500 -#define AR9287_CHAIN_1_IDX 1
501 #define AR9287_DATA_SZ 32
502
503 #define AR9287_PWR_TABLE_OFFSET_DB -5
504 @@ -396,7 +371,7 @@ struct modal_eep_header {
505 u16 xpaBiasLvlFreq[3];
506 u8 futureModal[6];
507
508 - struct spur_chan spurChans[AR5416_EEPROM_MODAL_SPURS];
509 + struct spur_chan spurChans[AR_EEPROM_MODAL_SPURS];
510 } __packed;
511
512 struct calDataPerFreqOpLoop {
513 @@ -464,7 +439,7 @@ struct modal_eep_4k_header {
514 u8 db2_4:4, reserved:4;
515 #endif
516 u8 futureModal[4];
517 - struct spur_chan spurChans[AR5416_EEPROM_MODAL_SPURS];
518 + struct spur_chan spurChans[AR_EEPROM_MODAL_SPURS];
519 } __packed;
520
521 struct base_eep_ar9287_header {
522 @@ -522,7 +497,7 @@ struct modal_eep_ar9287_header {
523 u8 ob_qam;
524 u8 ob_pal_off;
525 u8 futureModal[30];
526 - struct spur_chan spurChans[AR9287_EEPROM_MODAL_SPURS];
527 + struct spur_chan spurChans[AR_EEPROM_MODAL_SPURS];
528 } __packed;
529
530 struct cal_data_per_freq {
531 @@ -531,8 +506,8 @@ struct cal_data_per_freq {
532 } __packed;
533
534 struct cal_data_per_freq_4k {
535 - u8 pwrPdg[AR5416_EEP4K_NUM_PD_GAINS][AR5416_EEP4K_PD_GAIN_ICEPTS];
536 - u8 vpdPdg[AR5416_EEP4K_NUM_PD_GAINS][AR5416_EEP4K_PD_GAIN_ICEPTS];
537 + u8 pwrPdg[AR5416_EEP4K_NUM_PD_GAINS][AR5416_PD_GAIN_ICEPTS];
538 + u8 vpdPdg[AR5416_EEP4K_NUM_PD_GAINS][AR5416_PD_GAIN_ICEPTS];
539 } __packed;
540
541 struct cal_target_power_leg {
542 @@ -558,8 +533,8 @@ struct cal_data_op_loop_ar9287 {
543 } __packed;
544
545 struct cal_data_per_freq_ar9287 {
546 - u8 pwrPdg[AR9287_NUM_PD_GAINS][AR9287_PD_GAIN_ICEPTS];
547 - u8 vpdPdg[AR9287_NUM_PD_GAINS][AR9287_PD_GAIN_ICEPTS];
548 + u8 pwrPdg[AR5416_NUM_PD_GAINS][AR9287_PD_GAIN_ICEPTS];
549 + u8 vpdPdg[AR5416_NUM_PD_GAINS][AR9287_PD_GAIN_ICEPTS];
550 } __packed;
551
552 union cal_data_per_freq_ar9287_u {
553 @@ -674,10 +649,6 @@ struct eeprom_ops {
554 bool (*fill_eeprom)(struct ath_hw *hw);
555 int (*get_eeprom_ver)(struct ath_hw *hw);
556 int (*get_eeprom_rev)(struct ath_hw *hw);
557 - u8 (*get_num_ant_config)(struct ath_hw *hw,
558 - enum ath9k_hal_freq_band band);
559 - u32 (*get_eeprom_antenna_cfg)(struct ath_hw *hw,
560 - struct ath9k_channel *chan);
561 void (*set_board_values)(struct ath_hw *hw, struct ath9k_channel *chan);
562 void (*set_addac)(struct ath_hw *hw, struct ath9k_channel *chan);
563 void (*set_txpower)(struct ath_hw *hw, struct ath9k_channel *chan,
564 @@ -716,6 +687,14 @@ u16 ath9k_hw_get_max_edge_power(u16 freq
565 void ath9k_hw_update_regulatory_maxpower(struct ath_hw *ah);
566 int ath9k_hw_eeprom_init(struct ath_hw *ah);
567
568 +void ath9k_hw_get_gain_boundaries_pdadcs(struct ath_hw *ah,
569 + struct ath9k_channel *chan,
570 + void *pRawDataSet,
571 + u8 *bChans, u16 availPiers,
572 + u16 tPdGainOverlap,
573 + u16 *pPdGainBoundaries, u8 *pPDADCValues,
574 + u16 numXpdGains);
575 +
576 #define ar5416_get_ntxchains(_txchainmask) \
577 (((_txchainmask >> 2) & 1) + \
578 ((_txchainmask >> 1) & 1) + (_txchainmask & 1))
579 --- a/drivers/net/wireless/ath/ath9k/eeprom_4k.c
580 +++ b/drivers/net/wireless/ath/ath9k/eeprom_4k.c
581 @@ -153,7 +153,7 @@ static int ath9k_hw_4k_check_eeprom(stru
582 eep->modalHeader.antCtrlChain[i] = integer;
583 }
584
585 - for (i = 0; i < AR5416_EEPROM_MODAL_SPURS; i++) {
586 + for (i = 0; i < AR_EEPROM_MODAL_SPURS; i++) {
587 word = swab16(eep->modalHeader.spurChans[i].spurChan);
588 eep->modalHeader.spurChans[i].spurChan = word;
589 }
590 @@ -227,173 +227,6 @@ static u32 ath9k_hw_4k_get_eeprom(struct
591 }
592 }
593
594 -static void ath9k_hw_get_4k_gain_boundaries_pdadcs(struct ath_hw *ah,
595 - struct ath9k_channel *chan,
596 - struct cal_data_per_freq_4k *pRawDataSet,
597 - u8 *bChans, u16 availPiers,
598 - u16 tPdGainOverlap,
599 - u16 *pPdGainBoundaries, u8 *pPDADCValues,
600 - u16 numXpdGains)
601 -{
602 -#define TMP_VAL_VPD_TABLE \
603 - ((vpdTableI[i][sizeCurrVpdTable - 1] + (ss - maxIndex + 1) * vpdStep));
604 - int i, j, k;
605 - int16_t ss;
606 - u16 idxL = 0, idxR = 0, numPiers;
607 - static u8 vpdTableL[AR5416_EEP4K_NUM_PD_GAINS]
608 - [AR5416_MAX_PWR_RANGE_IN_HALF_DB];
609 - static u8 vpdTableR[AR5416_EEP4K_NUM_PD_GAINS]
610 - [AR5416_MAX_PWR_RANGE_IN_HALF_DB];
611 - static u8 vpdTableI[AR5416_EEP4K_NUM_PD_GAINS]
612 - [AR5416_MAX_PWR_RANGE_IN_HALF_DB];
613 -
614 - u8 *pVpdL, *pVpdR, *pPwrL, *pPwrR;
615 - u8 minPwrT4[AR5416_EEP4K_NUM_PD_GAINS];
616 - u8 maxPwrT4[AR5416_EEP4K_NUM_PD_GAINS];
617 - int16_t vpdStep;
618 - int16_t tmpVal;
619 - u16 sizeCurrVpdTable, maxIndex, tgtIndex;
620 - bool match;
621 - int16_t minDelta = 0;
622 - struct chan_centers centers;
623 -#define PD_GAIN_BOUNDARY_DEFAULT 58;
624 -
625 - memset(&minPwrT4, 0, AR9287_NUM_PD_GAINS);
626 - ath9k_hw_get_channel_centers(ah, chan, &centers);
627 -
628 - for (numPiers = 0; numPiers < availPiers; numPiers++) {
629 - if (bChans[numPiers] == AR5416_BCHAN_UNUSED)
630 - break;
631 - }
632 -
633 - match = ath9k_hw_get_lower_upper_index(
634 - (u8)FREQ2FBIN(centers.synth_center,
635 - IS_CHAN_2GHZ(chan)), bChans, numPiers,
636 - &idxL, &idxR);
637 -
638 - if (match) {
639 - for (i = 0; i < numXpdGains; i++) {
640 - minPwrT4[i] = pRawDataSet[idxL].pwrPdg[i][0];
641 - maxPwrT4[i] = pRawDataSet[idxL].pwrPdg[i][4];
642 - ath9k_hw_fill_vpd_table(minPwrT4[i], maxPwrT4[i],
643 - pRawDataSet[idxL].pwrPdg[i],
644 - pRawDataSet[idxL].vpdPdg[i],
645 - AR5416_EEP4K_PD_GAIN_ICEPTS,
646 - vpdTableI[i]);
647 - }
648 - } else {
649 - for (i = 0; i < numXpdGains; i++) {
650 - pVpdL = pRawDataSet[idxL].vpdPdg[i];
651 - pPwrL = pRawDataSet[idxL].pwrPdg[i];
652 - pVpdR = pRawDataSet[idxR].vpdPdg[i];
653 - pPwrR = pRawDataSet[idxR].pwrPdg[i];
654 -
655 - minPwrT4[i] = max(pPwrL[0], pPwrR[0]);
656 -
657 - maxPwrT4[i] =
658 - min(pPwrL[AR5416_EEP4K_PD_GAIN_ICEPTS - 1],
659 - pPwrR[AR5416_EEP4K_PD_GAIN_ICEPTS - 1]);
660 -
661 -
662 - ath9k_hw_fill_vpd_table(minPwrT4[i], maxPwrT4[i],
663 - pPwrL, pVpdL,
664 - AR5416_EEP4K_PD_GAIN_ICEPTS,
665 - vpdTableL[i]);
666 - ath9k_hw_fill_vpd_table(minPwrT4[i], maxPwrT4[i],
667 - pPwrR, pVpdR,
668 - AR5416_EEP4K_PD_GAIN_ICEPTS,
669 - vpdTableR[i]);
670 -
671 - for (j = 0; j <= (maxPwrT4[i] - minPwrT4[i]) / 2; j++) {
672 - vpdTableI[i][j] =
673 - (u8)(ath9k_hw_interpolate((u16)
674 - FREQ2FBIN(centers.
675 - synth_center,
676 - IS_CHAN_2GHZ
677 - (chan)),
678 - bChans[idxL], bChans[idxR],
679 - vpdTableL[i][j], vpdTableR[i][j]));
680 - }
681 - }
682 - }
683 -
684 - k = 0;
685 -
686 - for (i = 0; i < numXpdGains; i++) {
687 - if (i == (numXpdGains - 1))
688 - pPdGainBoundaries[i] =
689 - (u16)(maxPwrT4[i] / 2);
690 - else
691 - pPdGainBoundaries[i] =
692 - (u16)((maxPwrT4[i] + minPwrT4[i + 1]) / 4);
693 -
694 - pPdGainBoundaries[i] =
695 - min((u16)AR5416_MAX_RATE_POWER, pPdGainBoundaries[i]);
696 -
697 - if ((i == 0) && !AR_SREV_5416_20_OR_LATER(ah)) {
698 - minDelta = pPdGainBoundaries[0] - 23;
699 - pPdGainBoundaries[0] = 23;
700 - } else {
701 - minDelta = 0;
702 - }
703 -
704 - if (i == 0) {
705 - if (AR_SREV_9280_20_OR_LATER(ah))
706 - ss = (int16_t)(0 - (minPwrT4[i] / 2));
707 - else
708 - ss = 0;
709 - } else {
710 - ss = (int16_t)((pPdGainBoundaries[i - 1] -
711 - (minPwrT4[i] / 2)) -
712 - tPdGainOverlap + 1 + minDelta);
713 - }
714 - vpdStep = (int16_t)(vpdTableI[i][1] - vpdTableI[i][0]);
715 - vpdStep = (int16_t)((vpdStep < 1) ? 1 : vpdStep);
716 -
717 - while ((ss < 0) && (k < (AR5416_NUM_PDADC_VALUES - 1))) {
718 - tmpVal = (int16_t)(vpdTableI[i][0] + ss * vpdStep);
719 - pPDADCValues[k++] = (u8)((tmpVal < 0) ? 0 : tmpVal);
720 - ss++;
721 - }
722 -
723 - sizeCurrVpdTable = (u8) ((maxPwrT4[i] - minPwrT4[i]) / 2 + 1);
724 - tgtIndex = (u8)(pPdGainBoundaries[i] + tPdGainOverlap -
725 - (minPwrT4[i] / 2));
726 - maxIndex = (tgtIndex < sizeCurrVpdTable) ?
727 - tgtIndex : sizeCurrVpdTable;
728 -
729 - while ((ss < maxIndex) && (k < (AR5416_NUM_PDADC_VALUES - 1)))
730 - pPDADCValues[k++] = vpdTableI[i][ss++];
731 -
732 - vpdStep = (int16_t)(vpdTableI[i][sizeCurrVpdTable - 1] -
733 - vpdTableI[i][sizeCurrVpdTable - 2]);
734 - vpdStep = (int16_t)((vpdStep < 1) ? 1 : vpdStep);
735 -
736 - if (tgtIndex >= maxIndex) {
737 - while ((ss <= tgtIndex) &&
738 - (k < (AR5416_NUM_PDADC_VALUES - 1))) {
739 - tmpVal = (int16_t) TMP_VAL_VPD_TABLE;
740 - pPDADCValues[k++] = (u8)((tmpVal > 255) ?
741 - 255 : tmpVal);
742 - ss++;
743 - }
744 - }
745 - }
746 -
747 - while (i < AR5416_EEP4K_PD_GAINS_IN_MASK) {
748 - pPdGainBoundaries[i] = PD_GAIN_BOUNDARY_DEFAULT;
749 - i++;
750 - }
751 -
752 - while (k < AR5416_NUM_PDADC_VALUES) {
753 - pPDADCValues[k] = pPDADCValues[k - 1];
754 - k++;
755 - }
756 -
757 - return;
758 -#undef TMP_VAL_VPD_TABLE
759 -}
760 -
761 static void ath9k_hw_set_4k_power_cal_table(struct ath_hw *ah,
762 struct ath9k_channel *chan,
763 int16_t *pTxPowerIndexOffset)
764 @@ -404,7 +237,7 @@ static void ath9k_hw_set_4k_power_cal_ta
765 u8 *pCalBChans = NULL;
766 u16 pdGainOverlap_t2;
767 static u8 pdadcValues[AR5416_NUM_PDADC_VALUES];
768 - u16 gainBoundaries[AR5416_EEP4K_PD_GAINS_IN_MASK];
769 + u16 gainBoundaries[AR5416_PD_GAINS_IN_MASK];
770 u16 numPiers, i, j;
771 u16 numXpdGain, xpdMask;
772 u16 xpdGainValues[AR5416_EEP4K_NUM_PD_GAINS] = { 0, 0 };
773 @@ -426,12 +259,12 @@ static void ath9k_hw_set_4k_power_cal_ta
774
775 numXpdGain = 0;
776
777 - for (i = 1; i <= AR5416_EEP4K_PD_GAINS_IN_MASK; i++) {
778 - if ((xpdMask >> (AR5416_EEP4K_PD_GAINS_IN_MASK - i)) & 1) {
779 + for (i = 1; i <= AR5416_PD_GAINS_IN_MASK; i++) {
780 + if ((xpdMask >> (AR5416_PD_GAINS_IN_MASK - i)) & 1) {
781 if (numXpdGain >= AR5416_EEP4K_NUM_PD_GAINS)
782 break;
783 xpdGainValues[numXpdGain] =
784 - (u16)(AR5416_EEP4K_PD_GAINS_IN_MASK - i);
785 + (u16)(AR5416_PD_GAINS_IN_MASK - i);
786 numXpdGain++;
787 }
788 }
789 @@ -455,7 +288,7 @@ static void ath9k_hw_set_4k_power_cal_ta
790 if (pEepData->baseEepHeader.txMask & (1 << i)) {
791 pRawDataset = pEepData->calPierData2G[i];
792
793 - ath9k_hw_get_4k_gain_boundaries_pdadcs(ah, chan,
794 + ath9k_hw_get_gain_boundaries_pdadcs(ah, chan,
795 pRawDataset, pCalBChans,
796 numPiers, pdGainOverlap_t2,
797 gainBoundaries,
798 @@ -528,7 +361,7 @@ static void ath9k_hw_set_4k_power_per_ra
799 int i;
800 int16_t twiceLargestAntenna;
801 u16 twiceMinEdgePower;
802 - u16 twiceMaxEdgePower = AR5416_MAX_RATE_POWER;
803 + u16 twiceMaxEdgePower = MAX_RATE_POWER;
804 u16 scaledPower = 0, minCtlPower, maxRegAllowedPower;
805 u16 numCtlModes;
806 const u16 *pCtlMode;
807 @@ -537,7 +370,7 @@ static void ath9k_hw_set_4k_power_per_ra
808 struct cal_ctl_data_4k *rep;
809 struct ar5416_eeprom_4k *pEepData = &ah->eeprom.map4k;
810 static const u16 tpScaleReductionTable[5] =
811 - { 0, 3, 6, 9, AR5416_MAX_RATE_POWER };
812 + { 0, 3, 6, 9, MAX_RATE_POWER };
813 struct cal_target_power_leg targetPowerOfdm, targetPowerCck = {
814 0, { 0, 0, 0, 0}
815 };
816 @@ -613,7 +446,7 @@ static void ath9k_hw_set_4k_power_per_ra
817
818 if (ah->eep_ops->get_eeprom_ver(ah) == 14 &&
819 ah->eep_ops->get_eeprom_rev(ah) <= 2)
820 - twiceMaxEdgePower = AR5416_MAX_RATE_POWER;
821 + twiceMaxEdgePower = MAX_RATE_POWER;
822
823 for (i = 0; (i < AR5416_EEP4K_NUM_CTLS) &&
824 pEepData->ctlIndex[i]; i++) {
825 @@ -752,8 +585,8 @@ static void ath9k_hw_4k_set_txpower(stru
826 regulatory->max_power_level = 0;
827 for (i = 0; i < ARRAY_SIZE(ratesArray); i++) {
828 ratesArray[i] = (int16_t)(txPowerIndexOffset + ratesArray[i]);
829 - if (ratesArray[i] > AR5416_MAX_RATE_POWER)
830 - ratesArray[i] = AR5416_MAX_RATE_POWER;
831 + if (ratesArray[i] > MAX_RATE_POWER)
832 + ratesArray[i] = MAX_RATE_POWER;
833
834 if (ratesArray[i] > regulatory->max_power_level)
835 regulatory->max_power_level = ratesArray[i];
836 @@ -937,8 +770,7 @@ static void ath9k_hw_4k_set_board_values
837 pModal = &eep->modalHeader;
838 txRxAttenLocal = 23;
839
840 - REG_WRITE(ah, AR_PHY_SWITCH_COM,
841 - ah->eep_ops->get_eeprom_antenna_cfg(ah, chan));
842 + REG_WRITE(ah, AR_PHY_SWITCH_COM, pModal->antCtrlCommon);
843
844 /* Single chain for 4K EEPROM*/
845 ath9k_hw_4k_set_gain(ah, pModal, eep, txRxAttenLocal);
846 @@ -1154,21 +986,6 @@ static void ath9k_hw_4k_set_board_values
847 }
848 }
849
850 -static u32 ath9k_hw_4k_get_eeprom_antenna_cfg(struct ath_hw *ah,
851 - struct ath9k_channel *chan)
852 -{
853 - struct ar5416_eeprom_4k *eep = &ah->eeprom.map4k;
854 - struct modal_eep_4k_header *pModal = &eep->modalHeader;
855 -
856 - return pModal->antCtrlCommon;
857 -}
858 -
859 -static u8 ath9k_hw_4k_get_num_ant_config(struct ath_hw *ah,
860 - enum ath9k_hal_freq_band freq_band)
861 -{
862 - return 1;
863 -}
864 -
865 static u16 ath9k_hw_4k_get_spur_channel(struct ath_hw *ah, u16 i, bool is2GHz)
866 {
867 #define EEP_MAP4K_SPURCHAN \
868 @@ -1205,8 +1022,6 @@ const struct eeprom_ops eep_4k_ops = {
869 .fill_eeprom = ath9k_hw_4k_fill_eeprom,
870 .get_eeprom_ver = ath9k_hw_4k_get_eeprom_ver,
871 .get_eeprom_rev = ath9k_hw_4k_get_eeprom_rev,
872 - .get_num_ant_config = ath9k_hw_4k_get_num_ant_config,
873 - .get_eeprom_antenna_cfg = ath9k_hw_4k_get_eeprom_antenna_cfg,
874 .set_board_values = ath9k_hw_4k_set_board_values,
875 .set_addac = ath9k_hw_4k_set_addac,
876 .set_txpower = ath9k_hw_4k_set_txpower,
877 --- a/drivers/net/wireless/ath/ath9k/eeprom_9287.c
878 +++ b/drivers/net/wireless/ath/ath9k/eeprom_9287.c
879 @@ -150,7 +150,7 @@ static int ath9k_hw_ar9287_check_eeprom(
880 eep->modalHeader.antCtrlChain[i] = integer;
881 }
882
883 - for (i = 0; i < AR9287_EEPROM_MODAL_SPURS; i++) {
884 + for (i = 0; i < AR_EEPROM_MODAL_SPURS; i++) {
885 word = swab16(eep->modalHeader.spurChans[i].spurChan);
886 eep->modalHeader.spurChans[i].spurChan = word;
887 }
888 @@ -220,163 +220,6 @@ static u32 ath9k_hw_ar9287_get_eeprom(st
889 }
890 }
891
892 -static void ath9k_hw_get_ar9287_gain_boundaries_pdadcs(struct ath_hw *ah,
893 - struct ath9k_channel *chan,
894 - struct cal_data_per_freq_ar9287 *pRawDataSet,
895 - u8 *bChans, u16 availPiers,
896 - u16 tPdGainOverlap,
897 - u16 *pPdGainBoundaries,
898 - u8 *pPDADCValues,
899 - u16 numXpdGains)
900 -{
901 -#define TMP_VAL_VPD_TABLE \
902 - ((vpdTableI[i][sizeCurrVpdTable - 1] + (ss - maxIndex + 1) * vpdStep));
903 -
904 - int i, j, k;
905 - int16_t ss;
906 - u16 idxL = 0, idxR = 0, numPiers;
907 - u8 *pVpdL, *pVpdR, *pPwrL, *pPwrR;
908 - u8 minPwrT4[AR9287_NUM_PD_GAINS];
909 - u8 maxPwrT4[AR9287_NUM_PD_GAINS];
910 - int16_t vpdStep;
911 - int16_t tmpVal;
912 - u16 sizeCurrVpdTable, maxIndex, tgtIndex;
913 - bool match;
914 - int16_t minDelta = 0;
915 - struct chan_centers centers;
916 - static u8 vpdTableL[AR5416_EEP4K_NUM_PD_GAINS]
917 - [AR5416_MAX_PWR_RANGE_IN_HALF_DB];
918 - static u8 vpdTableR[AR5416_EEP4K_NUM_PD_GAINS]
919 - [AR5416_MAX_PWR_RANGE_IN_HALF_DB];
920 - static u8 vpdTableI[AR5416_EEP4K_NUM_PD_GAINS]
921 - [AR5416_MAX_PWR_RANGE_IN_HALF_DB];
922 -
923 - memset(&minPwrT4, 0, AR9287_NUM_PD_GAINS);
924 - ath9k_hw_get_channel_centers(ah, chan, &centers);
925 -
926 - for (numPiers = 0; numPiers < availPiers; numPiers++) {
927 - if (bChans[numPiers] == AR9287_BCHAN_UNUSED)
928 - break;
929 - }
930 -
931 - match = ath9k_hw_get_lower_upper_index(
932 - (u8)FREQ2FBIN(centers.synth_center, IS_CHAN_2GHZ(chan)),
933 - bChans, numPiers, &idxL, &idxR);
934 -
935 - if (match) {
936 - for (i = 0; i < numXpdGains; i++) {
937 - minPwrT4[i] = pRawDataSet[idxL].pwrPdg[i][0];
938 - maxPwrT4[i] = pRawDataSet[idxL].pwrPdg[i][4];
939 - ath9k_hw_fill_vpd_table(minPwrT4[i], maxPwrT4[i],
940 - pRawDataSet[idxL].pwrPdg[i],
941 - pRawDataSet[idxL].vpdPdg[i],
942 - AR9287_PD_GAIN_ICEPTS,
943 - vpdTableI[i]);
944 - }
945 - } else {
946 - for (i = 0; i < numXpdGains; i++) {
947 - pVpdL = pRawDataSet[idxL].vpdPdg[i];
948 - pPwrL = pRawDataSet[idxL].pwrPdg[i];
949 - pVpdR = pRawDataSet[idxR].vpdPdg[i];
950 - pPwrR = pRawDataSet[idxR].pwrPdg[i];
951 -
952 - minPwrT4[i] = max(pPwrL[0], pPwrR[0]);
953 -
954 - maxPwrT4[i] = min(pPwrL[AR9287_PD_GAIN_ICEPTS - 1],
955 - pPwrR[AR9287_PD_GAIN_ICEPTS - 1]);
956 -
957 - ath9k_hw_fill_vpd_table(minPwrT4[i], maxPwrT4[i],
958 - pPwrL, pVpdL,
959 - AR9287_PD_GAIN_ICEPTS,
960 - vpdTableL[i]);
961 - ath9k_hw_fill_vpd_table(minPwrT4[i], maxPwrT4[i],
962 - pPwrR, pVpdR,
963 - AR9287_PD_GAIN_ICEPTS,
964 - vpdTableR[i]);
965 -
966 - for (j = 0; j <= (maxPwrT4[i] - minPwrT4[i]) / 2; j++) {
967 - vpdTableI[i][j] = (u8)(ath9k_hw_interpolate(
968 - (u16)FREQ2FBIN(centers. synth_center,
969 - IS_CHAN_2GHZ(chan)),
970 - bChans[idxL], bChans[idxR],
971 - vpdTableL[i][j], vpdTableR[i][j]));
972 - }
973 - }
974 - }
975 -
976 - k = 0;
977 -
978 - for (i = 0; i < numXpdGains; i++) {
979 - if (i == (numXpdGains - 1))
980 - pPdGainBoundaries[i] =
981 - (u16)(maxPwrT4[i] / 2);
982 - else
983 - pPdGainBoundaries[i] =
984 - (u16)((maxPwrT4[i] + minPwrT4[i+1]) / 4);
985 -
986 - pPdGainBoundaries[i] = min((u16)AR5416_MAX_RATE_POWER,
987 - pPdGainBoundaries[i]);
988 -
989 -
990 - minDelta = 0;
991 -
992 - if (i == 0) {
993 - if (AR_SREV_9280_20_OR_LATER(ah))
994 - ss = (int16_t)(0 - (minPwrT4[i] / 2));
995 - else
996 - ss = 0;
997 - } else {
998 - ss = (int16_t)((pPdGainBoundaries[i-1] -
999 - (minPwrT4[i] / 2)) -
1000 - tPdGainOverlap + 1 + minDelta);
1001 - }
1002 -
1003 - vpdStep = (int16_t)(vpdTableI[i][1] - vpdTableI[i][0]);
1004 - vpdStep = (int16_t)((vpdStep < 1) ? 1 : vpdStep);
1005 -
1006 - while ((ss < 0) && (k < (AR9287_NUM_PDADC_VALUES - 1))) {
1007 - tmpVal = (int16_t)(vpdTableI[i][0] + ss * vpdStep);
1008 - pPDADCValues[k++] = (u8)((tmpVal < 0) ? 0 : tmpVal);
1009 - ss++;
1010 - }
1011 -
1012 - sizeCurrVpdTable = (u8)((maxPwrT4[i] - minPwrT4[i]) / 2 + 1);
1013 - tgtIndex = (u8)(pPdGainBoundaries[i] +
1014 - tPdGainOverlap - (minPwrT4[i] / 2));
1015 - maxIndex = (tgtIndex < sizeCurrVpdTable) ?
1016 - tgtIndex : sizeCurrVpdTable;
1017 -
1018 - while ((ss < maxIndex) && (k < (AR9287_NUM_PDADC_VALUES - 1)))
1019 - pPDADCValues[k++] = vpdTableI[i][ss++];
1020 -
1021 - vpdStep = (int16_t)(vpdTableI[i][sizeCurrVpdTable - 1] -
1022 - vpdTableI[i][sizeCurrVpdTable - 2]);
1023 - vpdStep = (int16_t)((vpdStep < 1) ? 1 : vpdStep);
1024 -
1025 - if (tgtIndex > maxIndex) {
1026 - while ((ss <= tgtIndex) &&
1027 - (k < (AR9287_NUM_PDADC_VALUES - 1))) {
1028 - tmpVal = (int16_t) TMP_VAL_VPD_TABLE;
1029 - pPDADCValues[k++] =
1030 - (u8)((tmpVal > 255) ? 255 : tmpVal);
1031 - ss++;
1032 - }
1033 - }
1034 - }
1035 -
1036 - while (i < AR9287_PD_GAINS_IN_MASK) {
1037 - pPdGainBoundaries[i] = pPdGainBoundaries[i-1];
1038 - i++;
1039 - }
1040 -
1041 - while (k < AR9287_NUM_PDADC_VALUES) {
1042 - pPDADCValues[k] = pPDADCValues[k-1];
1043 - k++;
1044 - }
1045 -
1046 -#undef TMP_VAL_VPD_TABLE
1047 -}
1048 -
1049 static void ar9287_eeprom_get_tx_gain_index(struct ath_hw *ah,
1050 struct ath9k_channel *chan,
1051 struct cal_data_op_loop_ar9287 *pRawDatasetOpLoop,
1052 @@ -389,7 +232,7 @@ static void ar9287_eeprom_get_tx_gain_in
1053 ath9k_hw_get_channel_centers(ah, chan, &centers);
1054
1055 for (numPiers = 0; numPiers < availPiers; numPiers++) {
1056 - if (pCalChans[numPiers] == AR9287_BCHAN_UNUSED)
1057 + if (pCalChans[numPiers] == AR5416_BCHAN_UNUSED)
1058 break;
1059 }
1060
1061 @@ -455,11 +298,11 @@ static void ath9k_hw_set_ar9287_power_ca
1062 struct cal_data_op_loop_ar9287 *pRawDatasetOpenLoop;
1063 u8 *pCalBChans = NULL;
1064 u16 pdGainOverlap_t2;
1065 - u8 pdadcValues[AR9287_NUM_PDADC_VALUES];
1066 - u16 gainBoundaries[AR9287_PD_GAINS_IN_MASK];
1067 + u8 pdadcValues[AR5416_NUM_PDADC_VALUES];
1068 + u16 gainBoundaries[AR5416_PD_GAINS_IN_MASK];
1069 u16 numPiers = 0, i, j;
1070 u16 numXpdGain, xpdMask;
1071 - u16 xpdGainValues[AR9287_NUM_PD_GAINS] = {0, 0, 0, 0};
1072 + u16 xpdGainValues[AR5416_NUM_PD_GAINS] = {0, 0, 0, 0};
1073 u32 reg32, regOffset, regChainOffset, regval;
1074 int16_t modalIdx, diff = 0;
1075 struct ar9287_eeprom *pEepData = &ah->eeprom.map9287;
1076 @@ -487,12 +330,12 @@ static void ath9k_hw_set_ar9287_power_ca
1077 numXpdGain = 0;
1078
1079 /* Calculate the value of xpdgains from the xpdGain Mask */
1080 - for (i = 1; i <= AR9287_PD_GAINS_IN_MASK; i++) {
1081 - if ((xpdMask >> (AR9287_PD_GAINS_IN_MASK - i)) & 1) {
1082 - if (numXpdGain >= AR9287_NUM_PD_GAINS)
1083 + for (i = 1; i <= AR5416_PD_GAINS_IN_MASK; i++) {
1084 + if ((xpdMask >> (AR5416_PD_GAINS_IN_MASK - i)) & 1) {
1085 + if (numXpdGain >= AR5416_NUM_PD_GAINS)
1086 break;
1087 xpdGainValues[numXpdGain] =
1088 - (u16)(AR9287_PD_GAINS_IN_MASK-i);
1089 + (u16)(AR5416_PD_GAINS_IN_MASK-i);
1090 numXpdGain++;
1091 }
1092 }
1093 @@ -525,7 +368,7 @@ static void ath9k_hw_set_ar9287_power_ca
1094 (struct cal_data_per_freq_ar9287 *)
1095 pEepData->calPierData2G[i];
1096
1097 - ath9k_hw_get_ar9287_gain_boundaries_pdadcs(ah, chan,
1098 + ath9k_hw_get_gain_boundaries_pdadcs(ah, chan,
1099 pRawDataset,
1100 pCalBChans, numPiers,
1101 pdGainOverlap_t2,
1102 @@ -561,13 +404,13 @@ static void ath9k_hw_set_ar9287_power_ca
1103 (int32_t)AR9287_PWR_TABLE_OFFSET_DB);
1104 diff *= 2;
1105
1106 - for (j = 0; j < ((u16)AR9287_NUM_PDADC_VALUES-diff); j++)
1107 + for (j = 0; j < ((u16)AR5416_NUM_PDADC_VALUES-diff); j++)
1108 pdadcValues[j] = pdadcValues[j+diff];
1109
1110 - for (j = (u16)(AR9287_NUM_PDADC_VALUES-diff);
1111 - j < AR9287_NUM_PDADC_VALUES; j++)
1112 + for (j = (u16)(AR5416_NUM_PDADC_VALUES-diff);
1113 + j < AR5416_NUM_PDADC_VALUES; j++)
1114 pdadcValues[j] =
1115 - pdadcValues[AR9287_NUM_PDADC_VALUES-diff];
1116 + pdadcValues[AR5416_NUM_PDADC_VALUES-diff];
1117 }
1118
1119 if (!ath9k_hw_ar9287_get_eeprom(ah, EEP_OL_PWRCTRL)) {
1120 @@ -610,9 +453,9 @@ static void ath9k_hw_set_ar9287_power_pe
1121 #define REDUCE_SCALED_POWER_BY_THREE_CHAIN 10
1122
1123 struct ath_regulatory *regulatory = ath9k_hw_regulatory(ah);
1124 - u16 twiceMaxEdgePower = AR5416_MAX_RATE_POWER;
1125 + u16 twiceMaxEdgePower = MAX_RATE_POWER;
1126 static const u16 tpScaleReductionTable[5] =
1127 - { 0, 3, 6, 9, AR5416_MAX_RATE_POWER };
1128 + { 0, 3, 6, 9, MAX_RATE_POWER };
1129 int i;
1130 int16_t twiceLargestAntenna;
1131 struct cal_ctl_data_ar9287 *rep;
1132 @@ -877,8 +720,8 @@ static void ath9k_hw_ar9287_set_txpower(
1133 regulatory->max_power_level = 0;
1134 for (i = 0; i < ARRAY_SIZE(ratesArray); i++) {
1135 ratesArray[i] = (int16_t)(txPowerIndexOffset + ratesArray[i]);
1136 - if (ratesArray[i] > AR9287_MAX_RATE_POWER)
1137 - ratesArray[i] = AR9287_MAX_RATE_POWER;
1138 + if (ratesArray[i] > MAX_RATE_POWER)
1139 + ratesArray[i] = MAX_RATE_POWER;
1140
1141 if (ratesArray[i] > regulatory->max_power_level)
1142 regulatory->max_power_level = ratesArray[i];
1143 @@ -1023,8 +866,7 @@ static void ath9k_hw_ar9287_set_board_va
1144 antWrites[j++] = (u16)(pModal->antCtrlChain[i] & 0x3);
1145 }
1146
1147 - REG_WRITE(ah, AR_PHY_SWITCH_COM,
1148 - ah->eep_ops->get_eeprom_antenna_cfg(ah, chan));
1149 + REG_WRITE(ah, AR_PHY_SWITCH_COM, pModal->antCtrlCommon);
1150
1151 for (i = 0; i < AR9287_MAX_CHAINS; i++) {
1152 regChainOffset = i * 0x1000;
1153 @@ -1125,21 +967,6 @@ static void ath9k_hw_ar9287_set_board_va
1154 pModal->xpaBiasLvl);
1155 }
1156
1157 -static u8 ath9k_hw_ar9287_get_num_ant_config(struct ath_hw *ah,
1158 - enum ath9k_hal_freq_band freq_band)
1159 -{
1160 - return 1;
1161 -}
1162 -
1163 -static u32 ath9k_hw_ar9287_get_eeprom_antenna_cfg(struct ath_hw *ah,
1164 - struct ath9k_channel *chan)
1165 -{
1166 - struct ar9287_eeprom *eep = &ah->eeprom.map9287;
1167 - struct modal_eep_ar9287_header *pModal = &eep->modalHeader;
1168 -
1169 - return pModal->antCtrlCommon;
1170 -}
1171 -
1172 static u16 ath9k_hw_ar9287_get_spur_channel(struct ath_hw *ah,
1173 u16 i, bool is2GHz)
1174 {
1175 @@ -1177,8 +1004,6 @@ const struct eeprom_ops eep_ar9287_ops =
1176 .fill_eeprom = ath9k_hw_ar9287_fill_eeprom,
1177 .get_eeprom_ver = ath9k_hw_ar9287_get_eeprom_ver,
1178 .get_eeprom_rev = ath9k_hw_ar9287_get_eeprom_rev,
1179 - .get_num_ant_config = ath9k_hw_ar9287_get_num_ant_config,
1180 - .get_eeprom_antenna_cfg = ath9k_hw_ar9287_get_eeprom_antenna_cfg,
1181 .set_board_values = ath9k_hw_ar9287_set_board_values,
1182 .set_addac = ath9k_hw_ar9287_set_addac,
1183 .set_txpower = ath9k_hw_ar9287_set_txpower,
1184 --- a/drivers/net/wireless/ath/ath9k/eeprom_def.c
1185 +++ b/drivers/net/wireless/ath/ath9k/eeprom_def.c
1186 @@ -206,7 +206,7 @@ static int ath9k_hw_def_check_eeprom(str
1187 pModal->antCtrlChain[i] = integer;
1188 }
1189
1190 - for (i = 0; i < AR5416_EEPROM_MODAL_SPURS; i++) {
1191 + for (i = 0; i < AR_EEPROM_MODAL_SPURS; i++) {
1192 word = swab16(pModal->spurChans[i].spurChan);
1193 pModal->spurChans[i].spurChan = word;
1194 }
1195 @@ -374,8 +374,7 @@ static void ath9k_hw_def_set_board_value
1196 pModal = &(eep->modalHeader[IS_CHAN_2GHZ(chan)]);
1197 txRxAttenLocal = IS_CHAN_2GHZ(chan) ? 23 : 44;
1198
1199 - REG_WRITE(ah, AR_PHY_SWITCH_COM,
1200 - ah->eep_ops->get_eeprom_antenna_cfg(ah, chan));
1201 + REG_WRITE(ah, AR_PHY_SWITCH_COM, pModal->antCtrlCommon & 0xffff);
1202
1203 for (i = 0; i < AR5416_MAX_CHAINS; i++) {
1204 if (AR_SREV_9280(ah)) {
1205 @@ -588,168 +587,6 @@ static void ath9k_hw_def_set_addac(struc
1206 #undef XPA_LVL_FREQ
1207 }
1208
1209 -static void ath9k_hw_get_def_gain_boundaries_pdadcs(struct ath_hw *ah,
1210 - struct ath9k_channel *chan,
1211 - struct cal_data_per_freq *pRawDataSet,
1212 - u8 *bChans, u16 availPiers,
1213 - u16 tPdGainOverlap,
1214 - u16 *pPdGainBoundaries, u8 *pPDADCValues,
1215 - u16 numXpdGains)
1216 -{
1217 - int i, j, k;
1218 - int16_t ss;
1219 - u16 idxL = 0, idxR = 0, numPiers;
1220 - static u8 vpdTableL[AR5416_NUM_PD_GAINS]
1221 - [AR5416_MAX_PWR_RANGE_IN_HALF_DB];
1222 - static u8 vpdTableR[AR5416_NUM_PD_GAINS]
1223 - [AR5416_MAX_PWR_RANGE_IN_HALF_DB];
1224 - static u8 vpdTableI[AR5416_NUM_PD_GAINS]
1225 - [AR5416_MAX_PWR_RANGE_IN_HALF_DB];
1226 -
1227 - u8 *pVpdL, *pVpdR, *pPwrL, *pPwrR;
1228 - u8 minPwrT4[AR5416_NUM_PD_GAINS];
1229 - u8 maxPwrT4[AR5416_NUM_PD_GAINS];
1230 - int16_t vpdStep;
1231 - int16_t tmpVal;
1232 - u16 sizeCurrVpdTable, maxIndex, tgtIndex;
1233 - bool match;
1234 - int16_t minDelta = 0;
1235 - struct chan_centers centers;
1236 -
1237 - memset(&minPwrT4, 0, AR9287_NUM_PD_GAINS);
1238 - ath9k_hw_get_channel_centers(ah, chan, &centers);
1239 -
1240 - for (numPiers = 0; numPiers < availPiers; numPiers++) {
1241 - if (bChans[numPiers] == AR5416_BCHAN_UNUSED)
1242 - break;
1243 - }
1244 -
1245 - match = ath9k_hw_get_lower_upper_index((u8)FREQ2FBIN(centers.synth_center,
1246 - IS_CHAN_2GHZ(chan)),
1247 - bChans, numPiers, &idxL, &idxR);
1248 -
1249 - if (match) {
1250 - for (i = 0; i < numXpdGains; i++) {
1251 - minPwrT4[i] = pRawDataSet[idxL].pwrPdg[i][0];
1252 - maxPwrT4[i] = pRawDataSet[idxL].pwrPdg[i][4];
1253 - ath9k_hw_fill_vpd_table(minPwrT4[i], maxPwrT4[i],
1254 - pRawDataSet[idxL].pwrPdg[i],
1255 - pRawDataSet[idxL].vpdPdg[i],
1256 - AR5416_PD_GAIN_ICEPTS,
1257 - vpdTableI[i]);
1258 - }
1259 - } else {
1260 - for (i = 0; i < numXpdGains; i++) {
1261 - pVpdL = pRawDataSet[idxL].vpdPdg[i];
1262 - pPwrL = pRawDataSet[idxL].pwrPdg[i];
1263 - pVpdR = pRawDataSet[idxR].vpdPdg[i];
1264 - pPwrR = pRawDataSet[idxR].pwrPdg[i];
1265 -
1266 - minPwrT4[i] = max(pPwrL[0], pPwrR[0]);
1267 -
1268 - maxPwrT4[i] =
1269 - min(pPwrL[AR5416_PD_GAIN_ICEPTS - 1],
1270 - pPwrR[AR5416_PD_GAIN_ICEPTS - 1]);
1271 -
1272 -
1273 - ath9k_hw_fill_vpd_table(minPwrT4[i], maxPwrT4[i],
1274 - pPwrL, pVpdL,
1275 - AR5416_PD_GAIN_ICEPTS,
1276 - vpdTableL[i]);
1277 - ath9k_hw_fill_vpd_table(minPwrT4[i], maxPwrT4[i],
1278 - pPwrR, pVpdR,
1279 - AR5416_PD_GAIN_ICEPTS,
1280 - vpdTableR[i]);
1281 -
1282 - for (j = 0; j <= (maxPwrT4[i] - minPwrT4[i]) / 2; j++) {
1283 - vpdTableI[i][j] =
1284 - (u8)(ath9k_hw_interpolate((u16)
1285 - FREQ2FBIN(centers.
1286 - synth_center,
1287 - IS_CHAN_2GHZ
1288 - (chan)),
1289 - bChans[idxL], bChans[idxR],
1290 - vpdTableL[i][j], vpdTableR[i][j]));
1291 - }
1292 - }
1293 - }
1294 -
1295 - k = 0;
1296 -
1297 - for (i = 0; i < numXpdGains; i++) {
1298 - if (i == (numXpdGains - 1))
1299 - pPdGainBoundaries[i] =
1300 - (u16)(maxPwrT4[i] / 2);
1301 - else
1302 - pPdGainBoundaries[i] =
1303 - (u16)((maxPwrT4[i] + minPwrT4[i + 1]) / 4);
1304 -
1305 - pPdGainBoundaries[i] =
1306 - min((u16)AR5416_MAX_RATE_POWER, pPdGainBoundaries[i]);
1307 -
1308 - if ((i == 0) && !AR_SREV_5416_20_OR_LATER(ah)) {
1309 - minDelta = pPdGainBoundaries[0] - 23;
1310 - pPdGainBoundaries[0] = 23;
1311 - } else {
1312 - minDelta = 0;
1313 - }
1314 -
1315 - if (i == 0) {
1316 - if (AR_SREV_9280_20_OR_LATER(ah))
1317 - ss = (int16_t)(0 - (minPwrT4[i] / 2));
1318 - else
1319 - ss = 0;
1320 - } else {
1321 - ss = (int16_t)((pPdGainBoundaries[i - 1] -
1322 - (minPwrT4[i] / 2)) -
1323 - tPdGainOverlap + 1 + minDelta);
1324 - }
1325 - vpdStep = (int16_t)(vpdTableI[i][1] - vpdTableI[i][0]);
1326 - vpdStep = (int16_t)((vpdStep < 1) ? 1 : vpdStep);
1327 -
1328 - while ((ss < 0) && (k < (AR5416_NUM_PDADC_VALUES - 1))) {
1329 - tmpVal = (int16_t)(vpdTableI[i][0] + ss * vpdStep);
1330 - pPDADCValues[k++] = (u8)((tmpVal < 0) ? 0 : tmpVal);
1331 - ss++;
1332 - }
1333 -
1334 - sizeCurrVpdTable = (u8) ((maxPwrT4[i] - minPwrT4[i]) / 2 + 1);
1335 - tgtIndex = (u8)(pPdGainBoundaries[i] + tPdGainOverlap -
1336 - (minPwrT4[i] / 2));
1337 - maxIndex = (tgtIndex < sizeCurrVpdTable) ?
1338 - tgtIndex : sizeCurrVpdTable;
1339 -
1340 - while ((ss < maxIndex) && (k < (AR5416_NUM_PDADC_VALUES - 1))) {
1341 - pPDADCValues[k++] = vpdTableI[i][ss++];
1342 - }
1343 -
1344 - vpdStep = (int16_t)(vpdTableI[i][sizeCurrVpdTable - 1] -
1345 - vpdTableI[i][sizeCurrVpdTable - 2]);
1346 - vpdStep = (int16_t)((vpdStep < 1) ? 1 : vpdStep);
1347 -
1348 - if (tgtIndex >= maxIndex) {
1349 - while ((ss <= tgtIndex) &&
1350 - (k < (AR5416_NUM_PDADC_VALUES - 1))) {
1351 - tmpVal = (int16_t)((vpdTableI[i][sizeCurrVpdTable - 1] +
1352 - (ss - maxIndex + 1) * vpdStep));
1353 - pPDADCValues[k++] = (u8)((tmpVal > 255) ?
1354 - 255 : tmpVal);
1355 - ss++;
1356 - }
1357 - }
1358 - }
1359 -
1360 - while (i < AR5416_PD_GAINS_IN_MASK) {
1361 - pPdGainBoundaries[i] = pPdGainBoundaries[i - 1];
1362 - i++;
1363 - }
1364 -
1365 - while (k < AR5416_NUM_PDADC_VALUES) {
1366 - pPDADCValues[k] = pPDADCValues[k - 1];
1367 - k++;
1368 - }
1369 -}
1370 -
1371 static int16_t ath9k_change_gain_boundary_setting(struct ath_hw *ah,
1372 u16 *gb,
1373 u16 numXpdGain,
1374 @@ -782,7 +619,7 @@ static int16_t ath9k_change_gain_boundar
1375 /* Because of a hardware limitation, ensure the gain boundary
1376 * is not larger than (63 - overlap)
1377 */
1378 - gb_limit = (u16)(AR5416_MAX_RATE_POWER - pdGainOverlap_t2);
1379 + gb_limit = (u16)(MAX_RATE_POWER - pdGainOverlap_t2);
1380
1381 for (k = 0; k < numXpdGain; k++)
1382 gb[k] = (u16)min(gb_limit, gb[k]);
1383 @@ -916,7 +753,7 @@ static void ath9k_hw_set_def_power_cal_t
1384 ath9k_olc_get_pdadcs(ah, pcdacIdx,
1385 txPower/2, pdadcValues);
1386 } else {
1387 - ath9k_hw_get_def_gain_boundaries_pdadcs(ah,
1388 + ath9k_hw_get_gain_boundaries_pdadcs(ah,
1389 chan, pRawDataset,
1390 pCalBChans, numPiers,
1391 pdGainOverlap_t2,
1392 @@ -1001,9 +838,9 @@ static void ath9k_hw_set_def_power_per_r
1393
1394 struct ath_regulatory *regulatory = ath9k_hw_regulatory(ah);
1395 struct ar5416_eeprom_def *pEepData = &ah->eeprom.def;
1396 - u16 twiceMaxEdgePower = AR5416_MAX_RATE_POWER;
1397 + u16 twiceMaxEdgePower = MAX_RATE_POWER;
1398 static const u16 tpScaleReductionTable[5] =
1399 - { 0, 3, 6, 9, AR5416_MAX_RATE_POWER };
1400 + { 0, 3, 6, 9, MAX_RATE_POWER };
1401
1402 int i;
1403 int16_t twiceLargestAntenna;
1404 @@ -1148,7 +985,7 @@ static void ath9k_hw_set_def_power_per_r
1405
1406 if (ah->eep_ops->get_eeprom_ver(ah) == 14 &&
1407 ah->eep_ops->get_eeprom_rev(ah) <= 2)
1408 - twiceMaxEdgePower = AR5416_MAX_RATE_POWER;
1409 + twiceMaxEdgePower = MAX_RATE_POWER;
1410
1411 for (i = 0; (i < AR5416_NUM_CTLS) && pEepData->ctlIndex[i]; i++) {
1412 if ((((cfgCtl & ~CTL_MODE_M) |
1413 @@ -1293,8 +1130,8 @@ static void ath9k_hw_def_set_txpower(str
1414 regulatory->max_power_level = 0;
1415 for (i = 0; i < ARRAY_SIZE(ratesArray); i++) {
1416 ratesArray[i] = (int16_t)(txPowerIndexOffset + ratesArray[i]);
1417 - if (ratesArray[i] > AR5416_MAX_RATE_POWER)
1418 - ratesArray[i] = AR5416_MAX_RATE_POWER;
1419 + if (ratesArray[i] > MAX_RATE_POWER)
1420 + ratesArray[i] = MAX_RATE_POWER;
1421 if (ratesArray[i] > regulatory->max_power_level)
1422 regulatory->max_power_level = ratesArray[i];
1423 }
1424 @@ -1426,34 +1263,6 @@ static void ath9k_hw_def_set_txpower(str
1425 | ATH9K_POW_SM(pModal->pwrDecreaseFor2Chain, 0));
1426 }
1427
1428 -static u8 ath9k_hw_def_get_num_ant_config(struct ath_hw *ah,
1429 - enum ath9k_hal_freq_band freq_band)
1430 -{
1431 - struct ar5416_eeprom_def *eep = &ah->eeprom.def;
1432 - struct modal_eep_header *pModal =
1433 - &(eep->modalHeader[freq_band]);
1434 - struct base_eep_header *pBase = &eep->baseEepHeader;
1435 - u8 num_ant_config;
1436 -
1437 - num_ant_config = 1;
1438 -
1439 - if (pBase->version >= 0x0E0D &&
1440 - (pModal->lna_ctl & LNA_CTL_USE_ANT1))
1441 - num_ant_config += 1;
1442 -
1443 - return num_ant_config;
1444 -}
1445 -
1446 -static u32 ath9k_hw_def_get_eeprom_antenna_cfg(struct ath_hw *ah,
1447 - struct ath9k_channel *chan)
1448 -{
1449 - struct ar5416_eeprom_def *eep = &ah->eeprom.def;
1450 - struct modal_eep_header *pModal =
1451 - &(eep->modalHeader[IS_CHAN_2GHZ(chan)]);
1452 -
1453 - return pModal->antCtrlCommon;
1454 -}
1455 -
1456 static u16 ath9k_hw_def_get_spur_channel(struct ath_hw *ah, u16 i, bool is2GHz)
1457 {
1458 #define EEP_DEF_SPURCHAN \
1459 @@ -1490,8 +1299,6 @@ const struct eeprom_ops eep_def_ops = {
1460 .fill_eeprom = ath9k_hw_def_fill_eeprom,
1461 .get_eeprom_ver = ath9k_hw_def_get_eeprom_ver,
1462 .get_eeprom_rev = ath9k_hw_def_get_eeprom_rev,
1463 - .get_num_ant_config = ath9k_hw_def_get_num_ant_config,
1464 - .get_eeprom_antenna_cfg = ath9k_hw_def_get_eeprom_antenna_cfg,
1465 .set_board_values = ath9k_hw_def_set_board_values,
1466 .set_addac = ath9k_hw_def_set_addac,
1467 .set_txpower = ath9k_hw_def_set_txpower,
1468 --- a/drivers/net/wireless/ath/ath9k/hw.c
1469 +++ b/drivers/net/wireless/ath/ath9k/hw.c
1470 @@ -54,13 +54,6 @@ static void ath9k_hw_init_mode_regs(stru
1471 ath9k_hw_private_ops(ah)->init_mode_regs(ah);
1472 }
1473
1474 -static bool ath9k_hw_macversion_supported(struct ath_hw *ah)
1475 -{
1476 - struct ath_hw_private_ops *priv_ops = ath9k_hw_private_ops(ah);
1477 -
1478 - return priv_ops->macversion_supported(ah->hw_version.macVersion);
1479 -}
1480 -
1481 static u32 ath9k_hw_compute_pll_control(struct ath_hw *ah,
1482 struct ath9k_channel *chan)
1483 {
1484 @@ -414,7 +407,6 @@ static void ath9k_hw_init_defaults(struc
1485 ah->sta_id1_defaults =
1486 AR_STA_ID1_CRPT_MIC_ENABLE |
1487 AR_STA_ID1_MCAST_KSRCH;
1488 - ah->beacon_interval = 100;
1489 ah->enable_32kHz_clock = DONT_USE_32KHZ;
1490 ah->slottime = (u32) -1;
1491 ah->globaltxtimeout = (u32) -1;
1492 @@ -534,10 +526,22 @@ static int __ath9k_hw_init(struct ath_hw
1493 else
1494 ah->config.max_txtrig_level = MAX_TX_FIFO_THRESHOLD;
1495
1496 - if (!ath9k_hw_macversion_supported(ah)) {
1497 - ath_err(common,
1498 - "Mac Chip Rev 0x%02x.%x is not supported by this driver\n",
1499 - ah->hw_version.macVersion, ah->hw_version.macRev);
1500 + switch (ah->hw_version.macVersion) {
1501 + case AR_SREV_VERSION_5416_PCI:
1502 + case AR_SREV_VERSION_5416_PCIE:
1503 + case AR_SREV_VERSION_9160:
1504 + case AR_SREV_VERSION_9100:
1505 + case AR_SREV_VERSION_9280:
1506 + case AR_SREV_VERSION_9285:
1507 + case AR_SREV_VERSION_9287:
1508 + case AR_SREV_VERSION_9271:
1509 + case AR_SREV_VERSION_9300:
1510 + case AR_SREV_VERSION_9485:
1511 + break;
1512 + default:
1513 + ath_err(common, "Mac Chip Rev 0x%02x.%x is not supported by "
1514 + "this driver\n", ah->hw_version.macVersion,
1515 + ah->hw_version.macRev);
1516 return -EOPNOTSUPP;
1517 }
1518
1519 @@ -1639,8 +1643,6 @@ void ath9k_hw_beaconinit(struct ath_hw *
1520 {
1521 int flags = 0;
1522
1523 - ah->beacon_interval = beacon_period;
1524 -
1525 ENABLE_REGWRITE_BUFFER(ah);
1526
1527 switch (ah->opmode) {
1528 @@ -1932,11 +1934,6 @@ int ath9k_hw_fill_cap_info(struct ath_hw
1529 AR_SREV_5416(ah))
1530 pCap->reg_cap |= AR_EEPROM_EEREGCAP_EN_FCC_MIDBAND;
1531
1532 - pCap->num_antcfg_5ghz =
1533 - ah->eep_ops->get_num_ant_config(ah, ATH9K_HAL_FREQ_BAND_5GHZ);
1534 - pCap->num_antcfg_2ghz =
1535 - ah->eep_ops->get_num_ant_config(ah, ATH9K_HAL_FREQ_BAND_2GHZ);
1536 -
1537 if (AR_SREV_9280_20_OR_LATER(ah) && common->btcoex_enabled) {
1538 btcoex_hw->btactive_gpio = ATH_BTACTIVE_GPIO;
1539 btcoex_hw->wlanactive_gpio = ATH_WLANACTIVE_GPIO;
1540 --- a/drivers/net/wireless/ath/ath9k/hw.h
1541 +++ b/drivers/net/wireless/ath/ath9k/hw.h
1542 @@ -204,8 +204,6 @@ struct ath9k_hw_capabilities {
1543 u16 tx_triglevel_max;
1544 u16 reg_cap;
1545 u8 num_gpio_pins;
1546 - u8 num_antcfg_2ghz;
1547 - u8 num_antcfg_5ghz;
1548 u8 rx_hp_qdepth;
1549 u8 rx_lp_qdepth;
1550 u8 rx_status_len;
1551 @@ -238,7 +236,6 @@ struct ath9k_ops_config {
1552 #define SPUR_DISABLE 0
1553 #define SPUR_ENABLE_IOCTL 1
1554 #define SPUR_ENABLE_EEPROM 2
1555 -#define AR_EEPROM_MODAL_SPURS 5
1556 #define AR_SPUR_5413_1 1640
1557 #define AR_SPUR_5413_2 1200
1558 #define AR_NO_SPUR 0x8000
1559 @@ -535,7 +532,6 @@ struct ath_hw_radar_conf {
1560 *
1561 * @init_mode_regs: Initializes mode registers
1562 * @init_mode_gain_regs: Initialize TX/RX gain registers
1563 - * @macversion_supported: If this specific mac revision is supported
1564 *
1565 * @rf_set_freq: change frequency
1566 * @spur_mitigate_freq: spur mitigation
1567 @@ -557,7 +553,6 @@ struct ath_hw_private_ops {
1568
1569 void (*init_mode_regs)(struct ath_hw *ah);
1570 void (*init_mode_gain_regs)(struct ath_hw *ah);
1571 - bool (*macversion_supported)(u32 macversion);
1572 void (*setup_calibration)(struct ath_hw *ah,
1573 struct ath9k_cal_list *currCal);
1574
1575 @@ -767,9 +762,7 @@ struct ath_hw {
1576 u32 *bank6Temp;
1577
1578 u8 txpower_limit;
1579 - int16_t txpower_indexoffset;
1580 int coverage_class;
1581 - u32 beacon_interval;
1582 u32 slottime;
1583 u32 globaltxtimeout;
1584
1585 --- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h
1586 +++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h
1587 @@ -20,48 +20,17 @@
1588 /* #define AR9300_NUM_CTLS 21 */
1589 #define AR9300_NUM_CTLS_5G 9
1590 #define AR9300_NUM_CTLS_2G 12
1591 -#define AR9300_CTL_MODE_M 0xF
1592 #define AR9300_NUM_BAND_EDGES_5G 8
1593 #define AR9300_NUM_BAND_EDGES_2G 4
1594 -#define AR9300_NUM_PD_GAINS 4
1595 -#define AR9300_PD_GAINS_IN_MASK 4
1596 -#define AR9300_PD_GAIN_ICEPTS 5
1597 -#define AR9300_EEPROM_MODAL_SPURS 5
1598 -#define AR9300_MAX_RATE_POWER 63
1599 -#define AR9300_NUM_PDADC_VALUES 128
1600 -#define AR9300_NUM_RATES 16
1601 -#define AR9300_BCHAN_UNUSED 0xFF
1602 -#define AR9300_MAX_PWR_RANGE_IN_HALF_DB 64
1603 -#define AR9300_OPFLAGS_11A 0x01
1604 -#define AR9300_OPFLAGS_11G 0x02
1605 -#define AR9300_OPFLAGS_5G_HT40 0x04
1606 -#define AR9300_OPFLAGS_2G_HT40 0x08
1607 -#define AR9300_OPFLAGS_5G_HT20 0x10
1608 -#define AR9300_OPFLAGS_2G_HT20 0x20
1609 #define AR9300_EEPMISC_BIG_ENDIAN 0x01
1610 #define AR9300_EEPMISC_WOW 0x02
1611 #define AR9300_CUSTOMER_DATA_SIZE 20
1612
1613 -#define FREQ2FBIN(x, y) ((y) ? ((x) - 2300) : (((x) - 4800) / 5))
1614 #define FBIN2FREQ(x, y) ((y) ? (2300 + x) : (4800 + 5 * x))
1615 #define AR9300_MAX_CHAINS 3
1616 #define AR9300_ANT_16S 25
1617 #define AR9300_FUTURE_MODAL_SZ 6
1618
1619 -#define AR9300_NUM_ANT_CHAIN_FIELDS 7
1620 -#define AR9300_NUM_ANT_COMMON_FIELDS 4
1621 -#define AR9300_SIZE_ANT_CHAIN_FIELD 3
1622 -#define AR9300_SIZE_ANT_COMMON_FIELD 4
1623 -#define AR9300_ANT_CHAIN_MASK 0x7
1624 -#define AR9300_ANT_COMMON_MASK 0xf
1625 -#define AR9300_CHAIN_0_IDX 0
1626 -#define AR9300_CHAIN_1_IDX 1
1627 -#define AR9300_CHAIN_2_IDX 2
1628 -
1629 -#define AR928X_NUM_ANT_CHAIN_FIELDS 6
1630 -#define AR928X_SIZE_ANT_CHAIN_FIELD 2
1631 -#define AR928X_ANT_CHAIN_MASK 0x3
1632 -
1633 /* Delta from which to start power to pdadc table */
1634 /* This offset is used in both open loop and closed loop power control
1635 * schemes. In open loop power control, it is not really needed, but for
1636 @@ -71,12 +40,8 @@
1637 */
1638 #define AR9300_PWR_TABLE_OFFSET 0
1639
1640 -/* enable flags for voltage and temp compensation */
1641 -#define ENABLE_TEMP_COMPENSATION 0x01
1642 -#define ENABLE_VOLT_COMPENSATION 0x02
1643 /* byte addressable */
1644 #define AR9300_EEPROM_SIZE (16*1024)
1645 -#define FIXED_CCA_THRESHOLD 15
1646
1647 #define AR9300_BASE_ADDR_4K 0xfff
1648 #define AR9300_BASE_ADDR 0x3ff
1649 @@ -226,7 +191,7 @@ struct ar9300_modal_eep_header {
1650 int8_t tempSlope;
1651 int8_t voltSlope;
1652 /* spur channels in usual fbin coding format */
1653 - u8 spurChans[AR9300_EEPROM_MODAL_SPURS];
1654 + u8 spurChans[AR_EEPROM_MODAL_SPURS];
1655 /* 3 Check if the register is per chain */
1656 int8_t noiseFloorThreshCh[AR9300_MAX_CHAINS];
1657 u8 ob[AR9300_MAX_CHAINS];