pre-merge coding style cleanup and code review
[helenos.git] / uspace / drv / nic / ar9271 / ar9271.h
blobb0b6db51e8d9a63362ddd7ceed9f12c8d63db63c
1 /*
2 * Copyright (c) 2014 Jan Kolarik
3 * All rights reserved.
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 /** @file ar9271.h
31 * Header file for AR9271 USB WiFi dongle.
35 #ifndef AR9271_H_
36 #define AR9271_H_
38 #include <usb/dev/driver.h>
39 #include "htc.h"
41 /** Number of transmission queues */
42 #define AR9271_QUEUES_COUNT 10
44 /** Number of GPIO pin used for handling led light */
45 #define AR9271_LED_PIN 15
47 /** Nominal value for AR9271 noise floor calibration. */
48 #define AR9271_CALIB_NOMINAL_VALUE_2GHZ -118
50 /** RX errors values. */
51 #define AR9271_RX_ERROR_CRC 0x01
52 #define AR9271_RX_ERROR_PHY 0x02
54 /** Key index used for device in station mode. */
55 #define AR9271_STA_KEY_INDEX 4
57 /* HW encryption key indicator. */
58 enum ath9k_key_type {
59 AR9271_KEY_TYPE_CLEAR,
60 AR9271_KEY_TYPE_WEP,
61 AR9271_KEY_TYPE_AES,
62 AR9271_KEY_TYPE_TKIP,
65 /** AR9271 Registers */
66 typedef enum {
67 /* ATH command register */
68 AR9271_COMMAND = 0x0008,
69 AR9271_COMMAND_RX_ENABLE = 0x00000004,
71 /* ATH config register */
72 AR9271_CONFIG = 0x0014,
73 AR9271_CONFIG_ADHOC = 0x00000020,
75 AR9271_QUEUE_BASE_MASK = 0x1000,
77 /* EEPROM Addresses */
78 AR9271_EEPROM_BASE = 0x2100,
79 AR9271_EEPROM_MAC_ADDR_START = 0x2118,
81 /* Reset MAC interface */
82 AR9271_RC = 0x4000,
83 AR9271_RC_AHB = 0x00000001,
85 /* GPIO registers */
86 AR9271_GPIO_IN_OUT = 0x4048, /**< GPIO value read/set */
87 AR9271_GPIO_OE_OUT = 0x404C, /**< GPIO set to output */
88 AR9271_GPIO_OE_OUT_ALWAYS = 0x3, /**< GPIO always drive output */
89 AR9271_GPIO_OUT_MUX1 = 0x4060,
90 AR9271_GPIO_OUT_MUX2 = 0x4064,
91 AR9271_GPIO_OUT_MUX3 = 0x4068,
92 AR9271_GPIO_OUT_MUX_AS_OUT = 0x0, /**< GPIO set mux as output */
94 /* RTC related registers */
95 AR9271_RTC_RC = 0x7000,
96 AR9271_RTC_RC_MAC_WARM = 0x00000001,
97 AR9271_RTC_RC_MAC_COLD = 0x00000002,
98 AR9271_RTC_RC_MASK = 0x00000003,
99 AR9271_RTC_PLL_CONTROL = 0x7014,
100 AR9271_RTC_RESET = 0x7040,
101 AR9271_RTC_STATUS = 0x7044,
102 AR9271_RTC_STATUS_MASK = 0x0000000F,
103 AR9271_RTC_STATUS_SHUTDOWN = 0x00000001,
104 AR9271_RTC_STATUS_ON = 0x00000002,
105 AR9271_RTC_SLEEP_CLOCK = 0x7048,
106 AR9271_RTC_SLEEP_CLOCK_FORCE_DERIVED = 0x2,
107 AR9271_RTC_FORCE_WAKE = 0x704C,
108 AR9271_RTC_FORCE_WAKE_ENABLE = 0x00000001,
109 AR9271_RTC_FORCE_WAKE_ON_INT = 0x00000002,
111 /* MAC Registers */
112 AR9271_STATION_ID0 = 0x8000, /**< STA Address Lower 32 Bits */
113 AR9271_STATION_ID1 = 0x8004, /**< STA Address Upper 16 Bits */
114 AR9271_BSSID0 = 0x8008, /**< BSSID Lower 32 Bits */
115 AR9271_BSSID1 = 0x800C, /**< BSSID Upper 16 Bits */
116 AR9271_BSSID_MASK0 = 0x80E0, /**< BSSID Mask Lower 32 Bits */
117 AR9271_BSSID_MASK1 = 0x80E4, /**< BSSID Mask Upper 16 Bits */
118 AR9271_STATION_ID1_MASK = 0x0000FFFF,
119 AR9271_STATION_ID1_POWER_SAVING = 0x00040000,
120 AR9271_MULTICAST_FILTER1 = 0x8040,
121 AR9271_MULTICAST_FILTER2 = 0x8044,
122 AR9271_DIAG = 0x8048,
124 /* RX filtering register */
125 AR9271_RX_FILTER = 0x803C,
126 AR9271_RX_FILTER_UNI = 0x00000001,
127 AR9271_RX_FILTER_MULTI = 0x00000002,
128 AR9271_RX_FILTER_BROAD = 0x00000004,
129 AR9271_RX_FILTER_CONTROL = 0x00000008,
130 AR9271_RX_FILTER_BEACON = 0x00000010,
131 AR9271_RX_FILTER_PROMISCUOUS = 0x00000020,
132 AR9271_RX_FILTER_PROBEREQ = 0x00000080,
133 AR9271_RX_FILTER_MYBEACON = 0x00000200,
134 AR9271_RX_FILTER_MCAST_BCAST_ALL = 0x00008000,
136 /* Key related registers */
137 AR9271_KEY_TABLE_BASE = 0x8800,
138 AR9271_KEY_TABLE_TYPE_WEP40 = 0x0,
139 AR9271_KEY_TABLE_TYPE_WEP104 = 0x1,
140 AR9271_KEY_TABLE_TYPE_TKIP = 0x4,
141 AR9271_KEY_TABLE_TYPE_CCMP = 0x6,
142 AR9271_KEY_TABLE_TYPE_CLR = 0x7,
144 /* Physical layer registers */
145 AR9271_PHY_ACTIVE = 0x981C,
146 AR9271_ADC_CONTROL = 0x982C,
147 AR9271_AGC_CONTROL = 0x9860,
148 AR9271_PHY_CAL = 0x9864,
149 AR9271_PHY_SYNTH_CONTROL = 0x9874,
150 AR9271_PHY_SPECTRAL_SCAN = 0x9910,
151 AR9271_PHY_RADAR0 = 0x9954,
152 AR9271_PHY_RADAR0_FFT_ENABLED = 0x80000000,
153 AR9271_PHY_RFBUS_KILL = 0x997C,
154 AR9271_PHY_RFBUS_GRANT = 0x9C20,
155 AR9271_PHY_MODE = 0xA200,
156 AR9271_PHY_CCK_TX_CTRL = 0xA204,
157 AR9271_PHY_TPCRG1 = 0xA258,
158 AR9271_CARRIER_LEAK_CONTROL = 0xA358,
159 AR9271_ADC_CONTROL_OFF_PWDADC = 0x00008000,
160 AR9271_AGC_CONTROL_CALIB = 0x00000001,
161 AR9271_AGC_CONTROL_NF_CALIB = 0x00000002,
162 AR9271_AGC_CONTROL_NF_CALIB_EN = 0x00008000,
163 AR9271_AGC_CONTROL_TX_CALIB = 0x00010000,
164 AR9271_AGC_CONTROL_NF_NOT_UPDATE = 0x00020000,
165 AR9271_PHY_MODE_DYNAMIC = 0x04,
166 AR9271_PHY_CCK_TX_CTRL_JAPAN = 0x00000010,
167 AR9271_PHY_TPCRG1_PD_CALIB = 0x00400000,
168 AR9271_CARRIER_LEAK_CALIB = 0x00000002,
170 AR9271_OPMODE_STATION_AP_MASK = 0x00010000,
171 AR9271_OPMODE_ADHOC_MASK = 0x00020000,
173 AR9271_CLOCK_CONTROL = 0x50040,
174 AR9271_MAX_CPU_CLOCK = 0x304,
176 AR9271_RESET_POWER_DOWN_CONTROL = 0x50044,
177 AR9271_RADIO_RF_RESET = 0x20,
178 AR9271_GATE_MAC_CONTROL = 0x4000,
180 /* FW Addresses */
181 AR9271_FW_ADDRESS = 0x501000,
182 AR9271_FW_OFFSET = 0x903000,
183 } ar9271_registers_t;
185 /** Compute key table base position for key by its id. */
186 #define AR9271_KEY_TABLE(id) (AR9271_KEY_TABLE_BASE + (id) * 32)
188 /** AR9271 Requests */
189 typedef enum {
190 AR9271_FW_DOWNLOAD = 0x30,
191 AR9271_FW_DOWNLOAD_COMP = 0x31,
192 } ar9271_requests_t;
194 /** AR9271 device data */
195 typedef struct {
196 /** Lock for access. */
197 fibril_mutex_t ar9271_lock;
199 /** Whether device is starting up. */
200 bool starting_up;
202 /** Backing DDF device */
203 ddf_dev_t *ddf_dev;
205 /** USB device data */
206 usb_device_t *usb_device;
208 /** IEEE 802.11 device data */
209 ieee80211_dev_t *ieee80211_dev;
211 /** ATH device data */
212 ath_t *ath_device;
214 /** HTC device data */
215 htc_device_t *htc_device;
216 } ar9271_t;
218 /** AR9271 init values for 2GHz mode operation.
220 * Including settings of noise floor limits.
222 * Taken from the Linux driver (drivers/net/wireless/ath/ath9k/)
223 * Copyright (c) 2008-2011 Atheros Communications Inc.
224 * Licensed under the terms of ISC
227 static const uint32_t ar9271_2g_mode_array[][2] = {
228 {0x00001030, 0x00000160},
229 {0x00001070, 0x0000018c},
230 {0x000010b0, 0x00003e38},
231 {0x000010f0, 0x00000000},
232 {0x00008014, 0x08400b00},
233 {0x0000801c, 0x12e0002b},
234 {0x00008318, 0x00003440},
235 {0x00009804, 0x000003c0}, /*< Note: overridden */
236 {0x00009820, 0x02020200},
237 {0x00009824, 0x01000e0e},
238 {0x00009828, 0x0a020001}, /*< Note: overridden */
239 {0x00009834, 0x00000e0e},
240 {0x00009838, 0x00000007},
241 {0x00009840, 0x206a012e},
242 {0x00009844, 0x03721620},
243 {0x00009848, 0x00001053},
244 {0x0000a848, 0x00001053},
245 {0x00009850, 0x6d4000e2},
246 {0x00009858, 0x7ec84d2e},
247 {0x0000985c, 0x3137605e},
248 {0x00009860, 0x00058d18},
249 {0x00009864, 0x0001ce00},
250 {0x00009868, 0x5ac640d0},
251 {0x0000986c, 0x06903881},
252 {0x00009910, 0x30002310},
253 {0x00009914, 0x00000898},
254 {0x00009918, 0x0000000b},
255 {0x00009924, 0xd00a800d},
256 {0x00009944, 0xffbc1020},
257 {0x00009960, 0x00000000},
258 {0x00009964, 0x00000000},
259 {0x000099b8, 0x0000421c},
260 {0x000099bc, 0x00000c00},
261 {0x000099c0, 0x05eea6d4},
262 {0x000099c4, 0x06336f77},
263 {0x000099c8, 0x6af6532f},
264 {0x000099cc, 0x08f186c8},
265 {0x000099d0, 0x00046384},
266 {0x000099d4, 0x00000000},
267 {0x000099d8, 0x00000000},
268 {0x00009a00, 0x00058084},
269 {0x00009a04, 0x00058088},
270 {0x00009a08, 0x0005808c},
271 {0x00009a0c, 0x00058100},
272 {0x00009a10, 0x00058104},
273 {0x00009a14, 0x00058108},
274 {0x00009a18, 0x0005810c},
275 {0x00009a1c, 0x00058110},
276 {0x00009a20, 0x00058114},
277 {0x00009a24, 0x00058180},
278 {0x00009a28, 0x00058184},
279 {0x00009a2c, 0x00058188},
280 {0x00009a30, 0x0005818c},
281 {0x00009a34, 0x00058190},
282 {0x00009a38, 0x00058194},
283 {0x00009a3c, 0x000581a0},
284 {0x00009a40, 0x0005820c},
285 {0x00009a44, 0x000581a8},
286 {0x00009a48, 0x00058284},
287 {0x00009a4c, 0x00058288},
288 {0x00009a50, 0x00058224},
289 {0x00009a54, 0x00058290},
290 {0x00009a58, 0x00058300},
291 {0x00009a5c, 0x00058304},
292 {0x00009a60, 0x00058308},
293 {0x00009a64, 0x0005830c},
294 {0x00009a68, 0x00058380},
295 {0x00009a6c, 0x00058384},
296 {0x00009a70, 0x00068700},
297 {0x00009a74, 0x00068704},
298 {0x00009a78, 0x00068708},
299 {0x00009a7c, 0x0006870c},
300 {0x00009a80, 0x00068780},
301 {0x00009a84, 0x00068784},
302 {0x00009a88, 0x00078b00},
303 {0x00009a8c, 0x00078b04},
304 {0x00009a90, 0x00078b08},
305 {0x00009a94, 0x00078b0c},
306 {0x00009a98, 0x00078b80},
307 {0x00009a9c, 0x00078b84},
308 {0x00009aa0, 0x00078b88},
309 {0x00009aa4, 0x00078b8c},
310 {0x00009aa8, 0x00078b90},
311 {0x00009aac, 0x000caf80},
312 {0x00009ab0, 0x000caf84},
313 {0x00009ab4, 0x000caf88},
314 {0x00009ab8, 0x000caf8c},
315 {0x00009abc, 0x000caf90},
316 {0x00009ac0, 0x000db30c},
317 {0x00009ac4, 0x000db310},
318 {0x00009ac8, 0x000db384},
319 {0x00009acc, 0x000db388},
320 {0x00009ad0, 0x000db324},
321 {0x00009ad4, 0x000eb704},
322 {0x00009ad8, 0x000eb6a4},
323 {0x00009adc, 0x000eb6a8},
324 {0x00009ae0, 0x000eb710},
325 {0x00009ae4, 0x000eb714},
326 {0x00009ae8, 0x000eb720},
327 {0x00009aec, 0x000eb724},
328 {0x00009af0, 0x000eb728},
329 {0x00009af4, 0x000eb72c},
330 {0x00009af8, 0x000eb7a0},
331 {0x00009afc, 0x000eb7a4},
332 {0x00009b00, 0x000eb7a8},
333 {0x00009b04, 0x000eb7b0},
334 {0x00009b08, 0x000eb7b4},
335 {0x00009b0c, 0x000eb7b8},
336 {0x00009b10, 0x000eb7a5},
337 {0x00009b14, 0x000eb7a9},
338 {0x00009b18, 0x000eb7ad},
339 {0x00009b1c, 0x000eb7b1},
340 {0x00009b20, 0x000eb7b5},
341 {0x00009b24, 0x000eb7b9},
342 {0x00009b28, 0x000eb7c5},
343 {0x00009b2c, 0x000eb7c9},
344 {0x00009b30, 0x000eb7d1},
345 {0x00009b34, 0x000eb7d5},
346 {0x00009b38, 0x000eb7d9},
347 {0x00009b3c, 0x000eb7c6},
348 {0x00009b40, 0x000eb7ca},
349 {0x00009b44, 0x000eb7ce},
350 {0x00009b48, 0x000eb7d2},
351 {0x00009b4c, 0x000eb7d6},
352 {0x00009b50, 0x000eb7c3},
353 {0x00009b54, 0x000eb7c7},
354 {0x00009b58, 0x000eb7cb},
355 {0x00009b5c, 0x000eb7cf},
356 {0x00009b60, 0x000eb7d7},
357 {0x00009b64, 0x000eb7db},
358 {0x00009b68, 0x000eb7db},
359 {0x00009b6c, 0x000eb7db},
360 {0x00009b70, 0x000eb7db},
361 {0x00009b74, 0x000eb7db},
362 {0x00009b78, 0x000eb7db},
363 {0x00009b7c, 0x000eb7db},
364 {0x00009b80, 0x000eb7db},
365 {0x00009b84, 0x000eb7db},
366 {0x00009b88, 0x000eb7db},
367 {0x00009b8c, 0x000eb7db},
368 {0x00009b90, 0x000eb7db},
369 {0x00009b94, 0x000eb7db},
370 {0x00009b98, 0x000eb7db},
371 {0x00009b9c, 0x000eb7db},
372 {0x00009ba0, 0x000eb7db},
373 {0x00009ba4, 0x000eb7db},
374 {0x00009ba8, 0x000eb7db},
375 {0x00009bac, 0x000eb7db},
376 {0x00009bb0, 0x000eb7db},
377 {0x00009bb4, 0x000eb7db},
378 {0x00009bb8, 0x000eb7db},
379 {0x00009bbc, 0x000eb7db},
380 {0x00009bc0, 0x000eb7db},
381 {0x00009bc4, 0x000eb7db},
382 {0x00009bc8, 0x000eb7db},
383 {0x00009bcc, 0x000eb7db},
384 {0x00009bd0, 0x000eb7db},
385 {0x00009bd4, 0x000eb7db},
386 {0x00009bd8, 0x000eb7db},
387 {0x00009bdc, 0x000eb7db},
388 {0x00009be0, 0x000eb7db},
389 {0x00009be4, 0x000eb7db},
390 {0x00009be8, 0x000eb7db},
391 {0x00009bec, 0x000eb7db},
392 {0x00009bf0, 0x000eb7db},
393 {0x00009bf4, 0x000eb7db},
394 {0x00009bf8, 0x000eb7db},
395 {0x00009bfc, 0x000eb7db},
396 {0x0000aa00, 0x00058084},
397 {0x0000aa04, 0x00058088},
398 {0x0000aa08, 0x0005808c},
399 {0x0000aa0c, 0x00058100},
400 {0x0000aa10, 0x00058104},
401 {0x0000aa14, 0x00058108},
402 {0x0000aa18, 0x0005810c},
403 {0x0000aa1c, 0x00058110},
404 {0x0000aa20, 0x00058114},
405 {0x0000aa24, 0x00058180},
406 {0x0000aa28, 0x00058184},
407 {0x0000aa2c, 0x00058188},
408 {0x0000aa30, 0x0005818c},
409 {0x0000aa34, 0x00058190},
410 {0x0000aa38, 0x00058194},
411 {0x0000aa3c, 0x000581a0},
412 {0x0000aa40, 0x0005820c},
413 {0x0000aa44, 0x000581a8},
414 {0x0000aa48, 0x00058284},
415 {0x0000aa4c, 0x00058288},
416 {0x0000aa50, 0x00058224},
417 {0x0000aa54, 0x00058290},
418 {0x0000aa58, 0x00058300},
419 {0x0000aa5c, 0x00058304},
420 {0x0000aa60, 0x00058308},
421 {0x0000aa64, 0x0005830c},
422 {0x0000aa68, 0x00058380},
423 {0x0000aa6c, 0x00058384},
424 {0x0000aa70, 0x00068700},
425 {0x0000aa74, 0x00068704},
426 {0x0000aa78, 0x00068708},
427 {0x0000aa7c, 0x0006870c},
428 {0x0000aa80, 0x00068780},
429 {0x0000aa84, 0x00068784},
430 {0x0000aa88, 0x00078b00},
431 {0x0000aa8c, 0x00078b04},
432 {0x0000aa90, 0x00078b08},
433 {0x0000aa94, 0x00078b0c},
434 {0x0000aa98, 0x00078b80},
435 {0x0000aa9c, 0x00078b84},
436 {0x0000aaa0, 0x00078b88},
437 {0x0000aaa4, 0x00078b8c},
438 {0x0000aaa8, 0x00078b90},
439 {0x0000aaac, 0x000caf80},
440 {0x0000aab0, 0x000caf84},
441 {0x0000aab4, 0x000caf88},
442 {0x0000aab8, 0x000caf8c},
443 {0x0000aabc, 0x000caf90},
444 {0x0000aac0, 0x000db30c},
445 {0x0000aac4, 0x000db310},
446 {0x0000aac8, 0x000db384},
447 {0x0000aacc, 0x000db388},
448 {0x0000aad0, 0x000db324},
449 {0x0000aad4, 0x000eb704},
450 {0x0000aad8, 0x000eb6a4},
451 {0x0000aadc, 0x000eb6a8},
452 {0x0000aae0, 0x000eb710},
453 {0x0000aae4, 0x000eb714},
454 {0x0000aae8, 0x000eb720},
455 {0x0000aaec, 0x000eb724},
456 {0x0000aaf0, 0x000eb728},
457 {0x0000aaf4, 0x000eb72c},
458 {0x0000aaf8, 0x000eb7a0},
459 {0x0000aafc, 0x000eb7a4},
460 {0x0000ab00, 0x000eb7a8},
461 {0x0000ab04, 0x000eb7b0},
462 {0x0000ab08, 0x000eb7b4},
463 {0x0000ab0c, 0x000eb7b8},
464 {0x0000ab10, 0x000eb7a5},
465 {0x0000ab14, 0x000eb7a9},
466 {0x0000ab18, 0x000eb7ad},
467 {0x0000ab1c, 0x000eb7b1},
468 {0x0000ab20, 0x000eb7b5},
469 {0x0000ab24, 0x000eb7b9},
470 {0x0000ab28, 0x000eb7c5},
471 {0x0000ab2c, 0x000eb7c9},
472 {0x0000ab30, 0x000eb7d1},
473 {0x0000ab34, 0x000eb7d5},
474 {0x0000ab38, 0x000eb7d9},
475 {0x0000ab3c, 0x000eb7c6},
476 {0x0000ab40, 0x000eb7ca},
477 {0x0000ab44, 0x000eb7ce},
478 {0x0000ab48, 0x000eb7d2},
479 {0x0000ab4c, 0x000eb7d6},
480 {0x0000ab50, 0x000eb7c3},
481 {0x0000ab54, 0x000eb7c7},
482 {0x0000ab58, 0x000eb7cb},
483 {0x0000ab5c, 0x000eb7cf},
484 {0x0000ab60, 0x000eb7d7},
485 {0x0000ab64, 0x000eb7db},
486 {0x0000ab68, 0x000eb7db},
487 {0x0000ab6c, 0x000eb7db},
488 {0x0000ab70, 0x000eb7db},
489 {0x0000ab74, 0x000eb7db},
490 {0x0000ab78, 0x000eb7db},
491 {0x0000ab7c, 0x000eb7db},
492 {0x0000ab80, 0x000eb7db},
493 {0x0000ab84, 0x000eb7db},
494 {0x0000ab88, 0x000eb7db},
495 {0x0000ab8c, 0x000eb7db},
496 {0x0000ab90, 0x000eb7db},
497 {0x0000ab94, 0x000eb7db},
498 {0x0000ab98, 0x000eb7db},
499 {0x0000ab9c, 0x000eb7db},
500 {0x0000aba0, 0x000eb7db},
501 {0x0000aba4, 0x000eb7db},
502 {0x0000aba8, 0x000eb7db},
503 {0x0000abac, 0x000eb7db},
504 {0x0000abb0, 0x000eb7db},
505 {0x0000abb4, 0x000eb7db},
506 {0x0000abb8, 0x000eb7db},
507 {0x0000abbc, 0x000eb7db},
508 {0x0000abc0, 0x000eb7db},
509 {0x0000abc4, 0x000eb7db},
510 {0x0000abc8, 0x000eb7db},
511 {0x0000abcc, 0x000eb7db},
512 {0x0000abd0, 0x000eb7db},
513 {0x0000abd4, 0x000eb7db},
514 {0x0000abd8, 0x000eb7db},
515 {0x0000abdc, 0x000eb7db},
516 {0x0000abe0, 0x000eb7db},
517 {0x0000abe4, 0x000eb7db},
518 {0x0000abe8, 0x000eb7db},
519 {0x0000abec, 0x000eb7db},
520 {0x0000abf0, 0x000eb7db},
521 {0x0000abf4, 0x000eb7db},
522 {0x0000abf8, 0x000eb7db},
523 {0x0000abfc, 0x000eb7db},
524 {0x0000a204, 0x00000004},
525 {0x0000a20c, 0x0001f000},
526 {0x0000b20c, 0x0001f000},
527 {0x0000a21c, 0x1883800a},
528 {0x0000a230, 0x00000108},
529 {0x0000a250, 0x0004a000},
530 {0x0000a358, 0x7999aa0e}
533 /** AR9271 TX init values for 2GHz mode operation.
535 * Taken from the Linux driver (drivers/net/wireless/ath/ath9k/)
536 * Copyright (c) 2008-2011 Atheros Communications Inc.
537 * Licensed under the terms of ISC
540 static const uint32_t ar9271_2g_tx_array[][2] = {
541 {0x0000a300, 0x00010000},
542 {0x0000a304, 0x00016200},
543 {0x0000a308, 0x00018201},
544 {0x0000a30c, 0x0001b240},
545 {0x0000a310, 0x0001d241},
546 {0x0000a314, 0x0001f600},
547 {0x0000a318, 0x00022800},
548 {0x0000a31c, 0x00026802},
549 {0x0000a320, 0x0002b805},
550 {0x0000a324, 0x0002ea41},
551 {0x0000a328, 0x00038b00},
552 {0x0000a32c, 0x0003ab40},
553 {0x0000a330, 0x0003cd80},
554 {0x0000a334, 0x000368de},
555 {0x0000a338, 0x0003891e},
556 {0x0000a33c, 0x0003a95e},
557 {0x0000a340, 0x0003e9df},
558 {0x0000a344, 0x0003e9df},
559 {0x0000a348, 0x0003e9df},
560 {0x0000a34c, 0x0003e9df},
561 {0x0000a350, 0x0003e9df},
562 {0x0000a354, 0x0003e9df},
563 {0x00007838, 0x0000002b},
564 {0x00007824, 0x00d8a7ff},
565 {0x0000786c, 0x08609eba},
566 {0x00007820, 0x00000c00},
567 {0x0000a274, 0x0a214652},
568 {0x0000a278, 0x0e739ce7},
569 {0x0000a27c, 0x05018063},
570 {0x0000a394, 0x06318c63},
571 {0x0000a398, 0x00000063},
572 {0x0000a3dc, 0x06318c63},
573 {0x0000a3e0, 0x00000063}
576 /** AR9271 hardware init values.
578 * Taken from the Linux driver (drivers/net/wireless/ath/ath9k/)
579 * Copyright (c) 2008-2011 Atheros Communications Inc.
580 * Licensed under the terms of ISC
583 static const uint32_t ar9271_init_array[][2] = {
584 {0x0000000c, 0x00000000},
585 {0x00000030, 0x00020045},
586 {0x00000034, 0x00000005},
587 {0x00000040, 0x00000000},
588 {0x00000044, 0x00000008},
589 {0x00000048, 0x00000008},
590 {0x0000004c, 0x00000010},
591 {0x00000050, 0x00000000},
592 {0x00000054, 0x0000001f},
593 {0x00000800, 0x00000000},
594 {0x00000804, 0x00000000},
595 {0x00000808, 0x00000000},
596 {0x0000080c, 0x00000000},
597 {0x00000810, 0x00000000},
598 {0x00000814, 0x00000000},
599 {0x00000818, 0x00000000},
600 {0x0000081c, 0x00000000},
601 {0x00000820, 0x00000000},
602 {0x00000824, 0x00000000},
603 {0x00001040, 0x002ffc0f},
604 {0x00001044, 0x002ffc0f},
605 {0x00001048, 0x002ffc0f},
606 {0x0000104c, 0x002ffc0f},
607 {0x00001050, 0x002ffc0f},
608 {0x00001054, 0x002ffc0f},
609 {0x00001058, 0x002ffc0f},
610 {0x0000105c, 0x002ffc0f},
611 {0x00001060, 0x002ffc0f},
612 {0x00001064, 0x002ffc0f},
613 {0x00001230, 0x00000000},
614 {0x00001270, 0x00000000},
615 {0x00001038, 0x00000000},
616 {0x00001078, 0x00000000},
617 {0x000010b8, 0x00000000},
618 {0x000010f8, 0x00000000},
619 {0x00001138, 0x00000000},
620 {0x00001178, 0x00000000},
621 {0x000011b8, 0x00000000},
622 {0x000011f8, 0x00000000},
623 {0x00001238, 0x00000000},
624 {0x00001278, 0x00000000},
625 {0x000012b8, 0x00000000},
626 {0x000012f8, 0x00000000},
627 {0x00001338, 0x00000000},
628 {0x00001378, 0x00000000},
629 {0x000013b8, 0x00000000},
630 {0x000013f8, 0x00000000},
631 {0x00001438, 0x00000000},
632 {0x00001478, 0x00000000},
633 {0x000014b8, 0x00000000},
634 {0x000014f8, 0x00000000},
635 {0x00001538, 0x00000000},
636 {0x00001578, 0x00000000},
637 {0x000015b8, 0x00000000},
638 {0x000015f8, 0x00000000},
639 {0x00001638, 0x00000000},
640 {0x00001678, 0x00000000},
641 {0x000016b8, 0x00000000},
642 {0x000016f8, 0x00000000},
643 {0x00001738, 0x00000000},
644 {0x00001778, 0x00000000},
645 {0x000017b8, 0x00000000},
646 {0x000017f8, 0x00000000},
647 {0x0000103c, 0x00000000},
648 {0x0000107c, 0x00000000},
649 {0x000010bc, 0x00000000},
650 {0x000010fc, 0x00000000},
651 {0x0000113c, 0x00000000},
652 {0x0000117c, 0x00000000},
653 {0x000011bc, 0x00000000},
654 {0x000011fc, 0x00000000},
655 {0x0000123c, 0x00000000},
656 {0x0000127c, 0x00000000},
657 {0x000012bc, 0x00000000},
658 {0x000012fc, 0x00000000},
659 {0x0000133c, 0x00000000},
660 {0x0000137c, 0x00000000},
661 {0x000013bc, 0x00000000},
662 {0x000013fc, 0x00000000},
663 {0x0000143c, 0x00000000},
664 {0x0000147c, 0x00000000},
665 {0x00004030, 0x00000002},
666 {0x0000403c, 0x00000002},
667 {0x00004024, 0x0000001f},
668 {0x00004060, 0x00000000},
669 {0x00004064, 0x00000000},
670 {0x00008018, 0x00000700},
671 {0x00008020, 0x00000000},
672 {0x00008038, 0x00000000},
673 {0x00008048, 0x00000000},
674 {0x00008054, 0x00000000},
675 {0x00008058, 0x00000000},
676 {0x0000805c, 0x000fc78f},
677 {0x00008060, 0xc7ff000f},
678 {0x00008064, 0x00000000},
679 {0x00008070, 0x00000000},
680 {0x000080b0, 0x00000000},
681 {0x000080b4, 0x00000000},
682 {0x000080b8, 0x00000000},
683 {0x000080bc, 0x00000000},
684 {0x000080c0, 0x2a80001a},
685 {0x000080c4, 0x05dc01e0},
686 {0x000080c8, 0x1f402710},
687 {0x000080cc, 0x01f40000},
688 {0x000080d0, 0x00001e00},
689 {0x000080d4, 0x00000000},
690 {0x000080d8, 0x00400000},
691 {0x000080e0, 0xffffffff},
692 {0x000080e4, 0x0000ffff},
693 {0x000080e8, 0x003f3f3f},
694 {0x000080ec, 0x00000000},
695 {0x000080f0, 0x00000000},
696 {0x000080f4, 0x00000000},
697 {0x000080f8, 0x00000000},
698 {0x000080fc, 0x00020000},
699 {0x00008100, 0x00020000},
700 {0x00008104, 0x00000001},
701 {0x00008108, 0x00000052},
702 {0x0000810c, 0x00000000},
703 {0x00008110, 0x00000168},
704 {0x00008118, 0x000100aa},
705 {0x0000811c, 0x00003210},
706 {0x00008120, 0x08f04810},
707 {0x00008124, 0x00000000},
708 {0x00008128, 0x00000000},
709 {0x0000812c, 0x00000000},
710 {0x00008130, 0x00000000},
711 {0x00008134, 0x00000000},
712 {0x00008138, 0x00000000},
713 {0x0000813c, 0x00000000},
714 {0x00008144, 0xffffffff},
715 {0x00008168, 0x00000000},
716 {0x0000816c, 0x00000000},
717 {0x00008170, 0x32143320},
718 {0x00008174, 0xfaa4fa50},
719 {0x00008178, 0x00000100},
720 {0x0000817c, 0x00000000},
721 {0x000081c0, 0x00000000},
722 {0x000081d0, 0x0000320a},
723 {0x000081ec, 0x00000000},
724 {0x000081f0, 0x00000000},
725 {0x000081f4, 0x00000000},
726 {0x000081f8, 0x00000000},
727 {0x000081fc, 0x00000000},
728 {0x00008200, 0x00000000},
729 {0x00008204, 0x00000000},
730 {0x00008208, 0x00000000},
731 {0x0000820c, 0x00000000},
732 {0x00008210, 0x00000000},
733 {0x00008214, 0x00000000},
734 {0x00008218, 0x00000000},
735 {0x0000821c, 0x00000000},
736 {0x00008220, 0x00000000},
737 {0x00008224, 0x00000000},
738 {0x00008228, 0x00000000},
739 {0x0000822c, 0x00000000},
740 {0x00008230, 0x00000000},
741 {0x00008234, 0x00000000},
742 {0x00008238, 0x00000000},
743 {0x0000823c, 0x00000000},
744 {0x00008240, 0x00100000},
745 {0x00008244, 0x0010f400},
746 {0x00008248, 0x00000100},
747 {0x0000824c, 0x0001e800},
748 {0x00008250, 0x00000000},
749 {0x00008254, 0x00000000},
750 {0x00008258, 0x00000000},
751 {0x0000825c, 0x400000ff},
752 {0x00008260, 0x00080922},
753 {0x00008264, 0x88a00010},
754 {0x00008270, 0x00000000},
755 {0x00008274, 0x40000000},
756 {0x00008278, 0x003e4180},
757 {0x0000827c, 0x00000000},
758 {0x00008284, 0x0000002c},
759 {0x00008288, 0x0000002c},
760 {0x0000828c, 0x00000000},
761 {0x00008294, 0x00000000},
762 {0x00008298, 0x00000000},
763 {0x0000829c, 0x00000000},
764 {0x00008300, 0x00000040},
765 {0x00008314, 0x00000000},
766 {0x00008328, 0x00000000},
767 {0x0000832c, 0x00000001},
768 {0x00008330, 0x00000302},
769 {0x00008334, 0x00000e00},
770 {0x00008338, 0x00ff0000},
771 {0x0000833c, 0x00000000},
772 {0x00008340, 0x00010380},
773 {0x00008344, 0x00481083}, /**< Note: disabled ADHOC_MCAST_KEYID feature */
774 {0x00007010, 0x00000030},
775 {0x00007034, 0x00000002},
776 {0x00007038, 0x000004c2},
777 {0x00007800, 0x00140000},
778 {0x00007804, 0x0e4548d8},
779 {0x00007808, 0x54214514},
780 {0x0000780c, 0x02025820},
781 {0x00007810, 0x71c0d388},
782 {0x00007814, 0x924934a8},
783 {0x0000781c, 0x00000000},
784 {0x00007828, 0x66964300},
785 {0x0000782c, 0x8db6d961},
786 {0x00007830, 0x8db6d96c},
787 {0x00007834, 0x6140008b},
788 {0x0000783c, 0x72ee0a72},
789 {0x00007840, 0xbbfffffc},
790 {0x00007844, 0x000c0db6},
791 {0x00007848, 0x6db6246f},
792 {0x0000784c, 0x6d9b66db},
793 {0x00007850, 0x6d8c6dba},
794 {0x00007854, 0x00040000},
795 {0x00007858, 0xdb003012},
796 {0x0000785c, 0x04924914},
797 {0x00007860, 0x21084210},
798 {0x00007864, 0xf7d7ffde},
799 {0x00007868, 0xc2034080},
800 {0x00007870, 0x10142c00},
801 {0x00009808, 0x00000000},
802 {0x0000980c, 0xafe68e30},
803 {0x00009810, 0xfd14e000},
804 {0x00009814, 0x9c0a9f6b},
805 {0x0000981c, 0x00000000},
806 {0x0000982c, 0x0000a000},
807 {0x00009830, 0x00000000},
808 {0x0000983c, 0x00200400},
809 {0x0000984c, 0x0040233c},
810 {0x00009854, 0x00000044},
811 {0x00009900, 0x00000000},
812 {0x00009904, 0x00000000},
813 {0x00009908, 0x00000000},
814 {0x0000990c, 0x00000000},
815 {0x0000991c, 0x10000fff},
816 {0x00009920, 0x04900000},
817 {0x00009928, 0x00000001},
818 {0x0000992c, 0x00000004},
819 {0x00009934, 0x1e1f2022},
820 {0x00009938, 0x0a0b0c0d},
821 {0x0000993c, 0x00000000},
822 {0x00009940, 0x14750604},
823 {0x00009948, 0x9280c00a},
824 {0x0000994c, 0x00020028},
825 {0x00009954, 0x5f3ca3de},
826 {0x00009958, 0x0108ecff},
827 {0x00009968, 0x000003ce},
828 {0x00009970, 0x192bb514},
829 {0x00009974, 0x00000000},
830 {0x00009978, 0x00000001},
831 {0x0000997c, 0x00000000},
832 {0x00009980, 0x00000000},
833 {0x00009984, 0x00000000},
834 {0x00009988, 0x00000000},
835 {0x0000998c, 0x00000000},
836 {0x00009990, 0x00000000},
837 {0x00009994, 0x00000000},
838 {0x00009998, 0x00000000},
839 {0x0000999c, 0x00000000},
840 {0x000099a0, 0x00000000},
841 {0x000099a4, 0x00000001},
842 {0x000099a8, 0x201fff00},
843 {0x000099ac, 0x2def0400},
844 {0x000099b0, 0x03051000},
845 {0x000099b4, 0x00000820},
846 {0x000099dc, 0x00000000},
847 {0x000099e0, 0x00000000},
848 {0x000099e4, 0xaaaaaaaa},
849 {0x000099e8, 0x3c466478},
850 {0x000099ec, 0x0cc80caa},
851 {0x000099f0, 0x00000000},
852 {0x0000a208, 0x803e68c8},
853 {0x0000a210, 0x4080a333},
854 {0x0000a214, 0x00206c10},
855 {0x0000a218, 0x009c4060},
856 {0x0000a220, 0x01834061},
857 {0x0000a224, 0x00000400},
858 {0x0000a228, 0x000003b5},
859 {0x0000a22c, 0x00000000},
860 {0x0000a234, 0x20202020},
861 {0x0000a238, 0x20202020},
862 {0x0000a244, 0x00000000},
863 {0x0000a248, 0xfffffffc},
864 {0x0000a24c, 0x00000000},
865 {0x0000a254, 0x00000000},
866 {0x0000a258, 0x0ccb5380},
867 {0x0000a25c, 0x15151501},
868 {0x0000a260, 0xdfa90f01},
869 {0x0000a268, 0x00000000},
870 {0x0000a26c, 0x0ebae9e6},
871 {0x0000a388, 0x0c000000},
872 {0x0000a38c, 0x20202020},
873 {0x0000a390, 0x20202020},
874 {0x0000a39c, 0x00000001},
875 {0x0000a3a0, 0x00000000},
876 {0x0000a3a4, 0x00000000},
877 {0x0000a3a8, 0x00000000},
878 {0x0000a3ac, 0x00000000},
879 {0x0000a3b0, 0x00000000},
880 {0x0000a3b4, 0x00000000},
881 {0x0000a3b8, 0x00000000},
882 {0x0000a3bc, 0x00000000},
883 {0x0000a3c0, 0x00000000},
884 {0x0000a3c4, 0x00000000},
885 {0x0000a3cc, 0x20202020},
886 {0x0000a3d0, 0x20202020},
887 {0x0000a3d4, 0x20202020},
888 {0x0000a3e4, 0x00000000},
889 {0x0000a3e8, 0x18c43433},
890 {0x0000a3ec, 0x00f70081},
891 {0x0000a3f0, 0x01036a2f},
892 {0x0000a3f4, 0x00000000},
893 {0x0000d270, 0x0d820820},
894 {0x0000d35c, 0x07ffffef},
895 {0x0000d360, 0x0fffffe7},
896 {0x0000d364, 0x17ffffe5},
897 {0x0000d368, 0x1fffffe4},
898 {0x0000d36c, 0x37ffffe3},
899 {0x0000d370, 0x3fffffe3},
900 {0x0000d374, 0x57ffffe3},
901 {0x0000d378, 0x5fffffe2},
902 {0x0000d37c, 0x7fffffe2},
903 {0x0000d380, 0x7f3c7bba},
904 {0x0000d384, 0xf3307ff0}
907 #endif