1 /*
2  * Copyright (c) 2010 Atheros Communications Inc.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
16 
17 static const u32 ar5416Modes[][6] = {
18 	{0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160, 0x000001e0},
19 	{0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c, 0x000001e0},
20 	{0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38, 0x00001180},
21 	{0x000010f0, 0x0000a000, 0x00014000, 0x00016000, 0x0000b000, 0x00014008},
22 	{0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00, 0x06e006e0},
23 	{0x0000801c, 0x128d93a7, 0x128d93cf, 0x12e013d7, 0x12e013ab, 0x098813cf},
24 	{0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810, 0x08f04810},
25 	{0x000081d0, 0x00003210, 0x00003210, 0x0000320a, 0x0000320a, 0x0000320a},
26 	{0x00009804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0x00000303},
27 	{0x00009820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200},
28 	{0x00009824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e},
29 	{0x00009828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001},
30 	{0x00009834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e},
31 	{0x00009838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0x00000007},
32 	{0x00009844, 0x1372161e, 0x1372161e, 0x137216a0, 0x137216a0, 0x137216a0},
33 	{0x00009848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68},
34 	{0x0000a848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68},
35 	{0x0000b848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0x00197a68},
36 	{0x00009850, 0x6c48b4e0, 0x6d48b4e0, 0x6d48b0de, 0x6c48b0de, 0x6c48b0de},
37 	{0x00009858, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e, 0x7ec82d2e},
38 	{0x0000985c, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e, 0x31395d5e},
39 	{0x00009860, 0x00049d18, 0x00049d18, 0x00049d18, 0x00049d18, 0x00049d18},
40 	{0x00009864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00},
41 	{0x00009868, 0x409a4190, 0x409a4190, 0x409a4190, 0x409a4190, 0x409a4190},
42 	{0x0000986c, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081},
43 	{0x00009914, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898, 0x000007d0},
44 	{0x00009918, 0x000001b8, 0x00000370, 0x00000268, 0x00000134, 0x00000134},
45 	{0x00009924, 0xd0058a0b, 0xd0058a0b, 0xd0058a0b, 0xd0058a0b, 0xd0058a0b},
46 	{0x00009944, 0xffb81020, 0xffb81020, 0xffb81020, 0xffb81020, 0xffb81020},
47 	{0x00009960, 0x00000900, 0x00000900, 0x00012d80, 0x00012d80, 0x00012d80},
48 	{0x0000a960, 0x00000900, 0x00000900, 0x00012d80, 0x00012d80, 0x00012d80},
49 	{0x0000b960, 0x00000900, 0x00000900, 0x00012d80, 0x00012d80, 0x00012d80},
50 	{0x00009964, 0x00000000, 0x00000000, 0x00001120, 0x00001120, 0x00001120},
51 	{0x000099bc, 0x001a0a00, 0x001a0a00, 0x001a0a00, 0x001a0a00, 0x001a0a00},
52 	{0x000099c0, 0x038919be, 0x038919be, 0x038919be, 0x038919be, 0x038919be},
53 	{0x000099c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77},
54 	{0x000099c8, 0x6af6532c, 0x6af6532c, 0x6af6532c, 0x6af6532c, 0x6af6532c},
55 	{0x000099cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8},
56 	{0x000099d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0x00046384},
57 	{0x000099d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
58 	{0x000099d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
59 	{0x0000a204, 0x00000880, 0x00000880, 0x00000880, 0x00000880, 0x00000880},
60 	{0x0000a208, 0xd6be4788, 0xd6be4788, 0xd03e4788, 0xd03e4788, 0xd03e4788},
61 	{0x0000a20c, 0x002ec1e0, 0x002ec1e0, 0x002ac120, 0x002ac120, 0x002ac120},
62 	{0x0000b20c, 0x002ec1e0, 0x002ec1e0, 0x002ac120, 0x002ac120, 0x002ac120},
63 	{0x0000c20c, 0x002ec1e0, 0x002ec1e0, 0x002ac120, 0x002ac120, 0x002ac120},
64 	{0x0000a21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a},
65 	{0x0000a230, 0x00000000, 0x00000000, 0x00000210, 0x00000108, 0x00000000},
66 	{0x0000a274, 0x0a1a9caa, 0x0a1a9caa, 0x0a1a7caa, 0x0a1a7caa, 0x0a1a7caa},
67 	{0x0000a300, 0x18010000, 0x18010000, 0x18010000, 0x18010000, 0x18010000},
68 	{0x0000a304, 0x30032602, 0x30032602, 0x2e032402, 0x2e032402, 0x2e032402},
69 	{0x0000a308, 0x48073e06, 0x48073e06, 0x4a0a3c06, 0x4a0a3c06, 0x4a0a3c06},
70 	{0x0000a30c, 0x560b4c0a, 0x560b4c0a, 0x621a540b, 0x621a540b, 0x621a540b},
71 	{0x0000a310, 0x641a600f, 0x641a600f, 0x764f6c1b, 0x764f6c1b, 0x764f6c1b},
72 	{0x0000a314, 0x7a4f6e1b, 0x7a4f6e1b, 0x845b7a5a, 0x845b7a5a, 0x845b7a5a},
73 	{0x0000a318, 0x8c5b7e5a, 0x8c5b7e5a, 0x950f8ccf, 0x950f8ccf, 0x950f8ccf},
74 	{0x0000a31c, 0x9d0f96cf, 0x9d0f96cf, 0xa5cf9b4f, 0xa5cf9b4f, 0xa5cf9b4f},
75 	{0x0000a320, 0xb51fa69f, 0xb51fa69f, 0xbddfaf1f, 0xbddfaf1f, 0xbddfaf1f},
76 	{0x0000a324, 0xcb3fbd07, 0xcb3fbcbf, 0xd1ffc93f, 0xd1ffc93f, 0xd1ffc93f},
77 	{0x0000a328, 0x0000d7bf, 0x0000d7bf, 0x00000000, 0x00000000, 0x00000000},
78 	{0x0000a32c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
79 	{0x0000a330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
80 	{0x0000a334, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
81 };
82 
83 static const u32 ar5416Common[][2] = {
84 	/* Addr      allmodes  */
85 	{0x0000000c, 0x00000000},
86 	{0x00000030, 0x00020015},
87 	{0x00000034, 0x00000005},
88 	{0x00000040, 0x00000000},
89 	{0x00000044, 0x00000008},
90 	{0x00000048, 0x00000008},
91 	{0x0000004c, 0x00000010},
92 	{0x00000050, 0x00000000},
93 	{0x00000054, 0x0000001f},
94 	{0x00000800, 0x00000000},
95 	{0x00000804, 0x00000000},
96 	{0x00000808, 0x00000000},
97 	{0x0000080c, 0x00000000},
98 	{0x00000810, 0x00000000},
99 	{0x00000814, 0x00000000},
100 	{0x00000818, 0x00000000},
101 	{0x0000081c, 0x00000000},
102 	{0x00000820, 0x00000000},
103 	{0x00000824, 0x00000000},
104 	{0x00001040, 0x002ffc0f},
105 	{0x00001044, 0x002ffc0f},
106 	{0x00001048, 0x002ffc0f},
107 	{0x0000104c, 0x002ffc0f},
108 	{0x00001050, 0x002ffc0f},
109 	{0x00001054, 0x002ffc0f},
110 	{0x00001058, 0x002ffc0f},
111 	{0x0000105c, 0x002ffc0f},
112 	{0x00001060, 0x002ffc0f},
113 	{0x00001064, 0x002ffc0f},
114 	{0x00001230, 0x00000000},
115 	{0x00001270, 0x00000000},
116 	{0x00001038, 0x00000000},
117 	{0x00001078, 0x00000000},
118 	{0x000010b8, 0x00000000},
119 	{0x000010f8, 0x00000000},
120 	{0x00001138, 0x00000000},
121 	{0x00001178, 0x00000000},
122 	{0x000011b8, 0x00000000},
123 	{0x000011f8, 0x00000000},
124 	{0x00001238, 0x00000000},
125 	{0x00001278, 0x00000000},
126 	{0x000012b8, 0x00000000},
127 	{0x000012f8, 0x00000000},
128 	{0x00001338, 0x00000000},
129 	{0x00001378, 0x00000000},
130 	{0x000013b8, 0x00000000},
131 	{0x000013f8, 0x00000000},
132 	{0x00001438, 0x00000000},
133 	{0x00001478, 0x00000000},
134 	{0x000014b8, 0x00000000},
135 	{0x000014f8, 0x00000000},
136 	{0x00001538, 0x00000000},
137 	{0x00001578, 0x00000000},
138 	{0x000015b8, 0x00000000},
139 	{0x000015f8, 0x00000000},
140 	{0x00001638, 0x00000000},
141 	{0x00001678, 0x00000000},
142 	{0x000016b8, 0x00000000},
143 	{0x000016f8, 0x00000000},
144 	{0x00001738, 0x00000000},
145 	{0x00001778, 0x00000000},
146 	{0x000017b8, 0x00000000},
147 	{0x000017f8, 0x00000000},
148 	{0x0000103c, 0x00000000},
149 	{0x0000107c, 0x00000000},
150 	{0x000010bc, 0x00000000},
151 	{0x000010fc, 0x00000000},
152 	{0x0000113c, 0x00000000},
153 	{0x0000117c, 0x00000000},
154 	{0x000011bc, 0x00000000},
155 	{0x000011fc, 0x00000000},
156 	{0x0000123c, 0x00000000},
157 	{0x0000127c, 0x00000000},
158 	{0x000012bc, 0x00000000},
159 	{0x000012fc, 0x00000000},
160 	{0x0000133c, 0x00000000},
161 	{0x0000137c, 0x00000000},
162 	{0x000013bc, 0x00000000},
163 	{0x000013fc, 0x00000000},
164 	{0x0000143c, 0x00000000},
165 	{0x0000147c, 0x00000000},
166 	{0x00004030, 0x00000002},
167 	{0x0000403c, 0x00000002},
168 	{0x00007010, 0x00000000},
169 	{0x00007038, 0x000004c2},
170 	{0x00008004, 0x00000000},
171 	{0x00008008, 0x00000000},
172 	{0x0000800c, 0x00000000},
173 	{0x00008018, 0x00000700},
174 	{0x00008020, 0x00000000},
175 	{0x00008038, 0x00000000},
176 	{0x0000803c, 0x00000000},
177 	{0x00008048, 0x40000000},
178 	{0x00008054, 0x00000000},
179 	{0x00008058, 0x00000000},
180 	{0x0000805c, 0x000fc78f},
181 	{0x00008060, 0x0000000f},
182 	{0x00008064, 0x00000000},
183 	{0x000080c0, 0x2a82301a},
184 	{0x000080c4, 0x05dc01e0},
185 	{0x000080c8, 0x1f402710},
186 	{0x000080cc, 0x01f40000},
187 	{0x000080d0, 0x00001e00},
188 	{0x000080d4, 0x00000000},
189 	{0x000080d8, 0x00400000},
190 	{0x000080e0, 0xffffffff},
191 	{0x000080e4, 0x0000ffff},
192 	{0x000080e8, 0x003f3f3f},
193 	{0x000080ec, 0x00000000},
194 	{0x000080f0, 0x00000000},
195 	{0x000080f4, 0x00000000},
196 	{0x000080f8, 0x00000000},
197 	{0x000080fc, 0x00020000},
198 	{0x00008100, 0x00020000},
199 	{0x00008104, 0x00000001},
200 	{0x00008108, 0x00000052},
201 	{0x0000810c, 0x00000000},
202 	{0x00008110, 0x00000168},
203 	{0x00008118, 0x000100aa},
204 	{0x0000811c, 0x00003210},
205 	{0x00008124, 0x00000000},
206 	{0x00008128, 0x00000000},
207 	{0x0000812c, 0x00000000},
208 	{0x00008130, 0x00000000},
209 	{0x00008134, 0x00000000},
210 	{0x00008138, 0x00000000},
211 	{0x0000813c, 0x00000000},
212 	{0x00008144, 0xffffffff},
213 	{0x00008168, 0x00000000},
214 	{0x0000816c, 0x00000000},
215 	{0x00008170, 0x32143320},
216 	{0x00008174, 0xfaa4fa50},
217 	{0x00008178, 0x00000100},
218 	{0x0000817c, 0x00000000},
219 	{0x000081c4, 0x00000000},
220 	{0x000081ec, 0x00000000},
221 	{0x000081f0, 0x00000000},
222 	{0x000081f4, 0x00000000},
223 	{0x000081f8, 0x00000000},
224 	{0x000081fc, 0x00000000},
225 	{0x00008200, 0x00000000},
226 	{0x00008204, 0x00000000},
227 	{0x00008208, 0x00000000},
228 	{0x0000820c, 0x00000000},
229 	{0x00008210, 0x00000000},
230 	{0x00008214, 0x00000000},
231 	{0x00008218, 0x00000000},
232 	{0x0000821c, 0x00000000},
233 	{0x00008220, 0x00000000},
234 	{0x00008224, 0x00000000},
235 	{0x00008228, 0x00000000},
236 	{0x0000822c, 0x00000000},
237 	{0x00008230, 0x00000000},
238 	{0x00008234, 0x00000000},
239 	{0x00008238, 0x00000000},
240 	{0x0000823c, 0x00000000},
241 	{0x00008240, 0x00100000},
242 	{0x00008244, 0x0010f400},
243 	{0x00008248, 0x00000100},
244 	{0x0000824c, 0x0001e800},
245 	{0x00008250, 0x00000000},
246 	{0x00008254, 0x00000000},
247 	{0x00008258, 0x00000000},
248 	{0x0000825c, 0x400000ff},
249 	{0x00008260, 0x00080922},
250 	{0x00008264, 0x88000010},
251 	{0x00008270, 0x00000000},
252 	{0x00008274, 0x40000000},
253 	{0x00008278, 0x003e4180},
254 	{0x0000827c, 0x00000000},
255 	{0x00008284, 0x0000002c},
256 	{0x00008288, 0x0000002c},
257 	{0x0000828c, 0x00000000},
258 	{0x00008294, 0x00000000},
259 	{0x00008298, 0x00000000},
260 	{0x00008300, 0x00000000},
261 	{0x00008304, 0x00000000},
262 	{0x00008308, 0x00000000},
263 	{0x0000830c, 0x00000000},
264 	{0x00008310, 0x00000000},
265 	{0x00008314, 0x00000000},
266 	{0x00008318, 0x00000000},
267 	{0x00008328, 0x00000000},
268 	{0x0000832c, 0x00000007},
269 	{0x00008330, 0x00000302},
270 	{0x00008334, 0x00000e00},
271 	{0x00008338, 0x00070000},
272 	{0x0000833c, 0x00000000},
273 	{0x00008340, 0x000107ff},
274 	{0x00009808, 0x00000000},
275 	{0x0000980c, 0xad848e19},
276 	{0x00009810, 0x7d14e000},
277 	{0x00009814, 0x9c0a9f6b},
278 	{0x0000981c, 0x00000000},
279 	{0x0000982c, 0x0000a000},
280 	{0x00009830, 0x00000000},
281 	{0x0000983c, 0x00200400},
282 	{0x00009840, 0x206a002e},
283 	{0x0000984c, 0x1284233c},
284 	{0x00009854, 0x00000859},
285 	{0x00009900, 0x00000000},
286 	{0x00009904, 0x00000000},
287 	{0x00009908, 0x00000000},
288 	{0x0000990c, 0x00000000},
289 	{0x0000991c, 0x10000fff},
290 	{0x00009920, 0x05100000},
291 	{0x0000a920, 0x05100000},
292 	{0x0000b920, 0x05100000},
293 	{0x00009928, 0x00000001},
294 	{0x0000992c, 0x00000004},
295 	{0x00009934, 0x1e1f2022},
296 	{0x00009938, 0x0a0b0c0d},
297 	{0x0000993c, 0x00000000},
298 	{0x00009948, 0x9280b212},
299 	{0x0000994c, 0x00020028},
300 	{0x00009954, 0x5d50e188},
301 	{0x00009958, 0x00081fff},
302 	{0x0000c95c, 0x004b6a8e},
303 	{0x0000c968, 0x000003ce},
304 	{0x00009970, 0x190fb515},
305 	{0x00009974, 0x00000000},
306 	{0x00009978, 0x00000001},
307 	{0x0000997c, 0x00000000},
308 	{0x00009980, 0x00000000},
309 	{0x00009984, 0x00000000},
310 	{0x00009988, 0x00000000},
311 	{0x0000998c, 0x00000000},
312 	{0x00009990, 0x00000000},
313 	{0x00009994, 0x00000000},
314 	{0x00009998, 0x00000000},
315 	{0x0000999c, 0x00000000},
316 	{0x000099a0, 0x00000000},
317 	{0x000099a4, 0x00000001},
318 	{0x000099a8, 0x001fff00},
319 	{0x000099ac, 0x00000000},
320 	{0x000099b0, 0x03051000},
321 	{0x000099dc, 0x00000000},
322 	{0x000099e0, 0x00000200},
323 	{0x000099e4, 0xaaaaaaaa},
324 	{0x000099e8, 0x3c466478},
325 	{0x000099ec, 0x000000aa},
326 	{0x000099fc, 0x00001042},
327 	{0x00009b00, 0x00000000},
328 	{0x00009b04, 0x00000001},
329 	{0x00009b08, 0x00000002},
330 	{0x00009b0c, 0x00000003},
331 	{0x00009b10, 0x00000004},
332 	{0x00009b14, 0x00000005},
333 	{0x00009b18, 0x00000008},
334 	{0x00009b1c, 0x00000009},
335 	{0x00009b20, 0x0000000a},
336 	{0x00009b24, 0x0000000b},
337 	{0x00009b28, 0x0000000c},
338 	{0x00009b2c, 0x0000000d},
339 	{0x00009b30, 0x00000010},
340 	{0x00009b34, 0x00000011},
341 	{0x00009b38, 0x00000012},
342 	{0x00009b3c, 0x00000013},
343 	{0x00009b40, 0x00000014},
344 	{0x00009b44, 0x00000015},
345 	{0x00009b48, 0x00000018},
346 	{0x00009b4c, 0x00000019},
347 	{0x00009b50, 0x0000001a},
348 	{0x00009b54, 0x0000001b},
349 	{0x00009b58, 0x0000001c},
350 	{0x00009b5c, 0x0000001d},
351 	{0x00009b60, 0x00000020},
352 	{0x00009b64, 0x00000021},
353 	{0x00009b68, 0x00000022},
354 	{0x00009b6c, 0x00000023},
355 	{0x00009b70, 0x00000024},
356 	{0x00009b74, 0x00000025},
357 	{0x00009b78, 0x00000028},
358 	{0x00009b7c, 0x00000029},
359 	{0x00009b80, 0x0000002a},
360 	{0x00009b84, 0x0000002b},
361 	{0x00009b88, 0x0000002c},
362 	{0x00009b8c, 0x0000002d},
363 	{0x00009b90, 0x00000030},
364 	{0x00009b94, 0x00000031},
365 	{0x00009b98, 0x00000032},
366 	{0x00009b9c, 0x00000033},
367 	{0x00009ba0, 0x00000034},
368 	{0x00009ba4, 0x00000035},
369 	{0x00009ba8, 0x00000035},
370 	{0x00009bac, 0x00000035},
371 	{0x00009bb0, 0x00000035},
372 	{0x00009bb4, 0x00000035},
373 	{0x00009bb8, 0x00000035},
374 	{0x00009bbc, 0x00000035},
375 	{0x00009bc0, 0x00000035},
376 	{0x00009bc4, 0x00000035},
377 	{0x00009bc8, 0x00000035},
378 	{0x00009bcc, 0x00000035},
379 	{0x00009bd0, 0x00000035},
380 	{0x00009bd4, 0x00000035},
381 	{0x00009bd8, 0x00000035},
382 	{0x00009bdc, 0x00000035},
383 	{0x00009be0, 0x00000035},
384 	{0x00009be4, 0x00000035},
385 	{0x00009be8, 0x00000035},
386 	{0x00009bec, 0x00000035},
387 	{0x00009bf0, 0x00000035},
388 	{0x00009bf4, 0x00000035},
389 	{0x00009bf8, 0x00000010},
390 	{0x00009bfc, 0x0000001a},
391 	{0x0000a210, 0x40806333},
392 	{0x0000a214, 0x00106c10},
393 	{0x0000a218, 0x009c4060},
394 	{0x0000a220, 0x018830c6},
395 	{0x0000a224, 0x00000400},
396 	{0x0000a228, 0x00000bb5},
397 	{0x0000a22c, 0x00000011},
398 	{0x0000a234, 0x20202020},
399 	{0x0000a238, 0x20202020},
400 	{0x0000a23c, 0x13c889af},
401 	{0x0000a240, 0x38490a20},
402 	{0x0000a244, 0x00007bb6},
403 	{0x0000a248, 0x0fff3ffc},
404 	{0x0000a24c, 0x00000001},
405 	{0x0000a250, 0x0000a000},
406 	{0x0000a254, 0x00000000},
407 	{0x0000a258, 0x0cc75380},
408 	{0x0000a25c, 0x0f0f0f01},
409 	{0x0000a260, 0xdfa91f01},
410 	{0x0000a268, 0x00000000},
411 	{0x0000a26c, 0x0e79e5c6},
412 	{0x0000b26c, 0x0e79e5c6},
413 	{0x0000c26c, 0x0e79e5c6},
414 	{0x0000d270, 0x00820820},
415 	{0x0000a278, 0x1ce739ce},
416 	{0x0000a27c, 0x051701ce},
417 	{0x0000a338, 0x00000000},
418 	{0x0000a33c, 0x00000000},
419 	{0x0000a340, 0x00000000},
420 	{0x0000a344, 0x00000000},
421 	{0x0000a348, 0x3fffffff},
422 	{0x0000a34c, 0x3fffffff},
423 	{0x0000a350, 0x3fffffff},
424 	{0x0000a354, 0x0003ffff},
425 	{0x0000a358, 0x79a8aa1f},
426 	{0x0000d35c, 0x07ffffef},
427 	{0x0000d360, 0x0fffffe7},
428 	{0x0000d364, 0x17ffffe5},
429 	{0x0000d368, 0x1fffffe4},
430 	{0x0000d36c, 0x37ffffe3},
431 	{0x0000d370, 0x3fffffe3},
432 	{0x0000d374, 0x57ffffe3},
433 	{0x0000d378, 0x5fffffe2},
434 	{0x0000d37c, 0x7fffffe2},
435 	{0x0000d380, 0x7f3c7bba},
436 	{0x0000d384, 0xf3307ff0},
437 	{0x0000a388, 0x08000000},
438 	{0x0000a38c, 0x20202020},
439 	{0x0000a390, 0x20202020},
440 	{0x0000a394, 0x1ce739ce},
441 	{0x0000a398, 0x000001ce},
442 	{0x0000a39c, 0x00000001},
443 	{0x0000a3a0, 0x00000000},
444 	{0x0000a3a4, 0x00000000},
445 	{0x0000a3a8, 0x00000000},
446 	{0x0000a3ac, 0x00000000},
447 	{0x0000a3b0, 0x00000000},
448 	{0x0000a3b4, 0x00000000},
449 	{0x0000a3b8, 0x00000000},
450 	{0x0000a3bc, 0x00000000},
451 	{0x0000a3c0, 0x00000000},
452 	{0x0000a3c4, 0x00000000},
453 	{0x0000a3c8, 0x00000246},
454 	{0x0000a3cc, 0x20202020},
455 	{0x0000a3d0, 0x20202020},
456 	{0x0000a3d4, 0x20202020},
457 	{0x0000a3dc, 0x1ce739ce},
458 	{0x0000a3e0, 0x000001ce},
459 };
460 
461 static const u32 ar5416Bank0[][2] = {
462 	/* Addr      allmodes  */
463 	{0x000098b0, 0x1e5795e5},
464 	{0x000098e0, 0x02008020},
465 };
466 
467 static const u32 ar5416BB_RfGain[][3] = {
468 	/* Addr      5G_HT20     5G_HT40   */
469 	{0x00009a00, 0x00000000, 0x00000000},
470 	{0x00009a04, 0x00000040, 0x00000040},
471 	{0x00009a08, 0x00000080, 0x00000080},
472 	{0x00009a0c, 0x000001a1, 0x00000141},
473 	{0x00009a10, 0x000001e1, 0x00000181},
474 	{0x00009a14, 0x00000021, 0x000001c1},
475 	{0x00009a18, 0x00000061, 0x00000001},
476 	{0x00009a1c, 0x00000168, 0x00000041},
477 	{0x00009a20, 0x000001a8, 0x000001a8},
478 	{0x00009a24, 0x000001e8, 0x000001e8},
479 	{0x00009a28, 0x00000028, 0x00000028},
480 	{0x00009a2c, 0x00000068, 0x00000068},
481 	{0x00009a30, 0x00000189, 0x000000a8},
482 	{0x00009a34, 0x000001c9, 0x00000169},
483 	{0x00009a38, 0x00000009, 0x000001a9},
484 	{0x00009a3c, 0x00000049, 0x000001e9},
485 	{0x00009a40, 0x00000089, 0x00000029},
486 	{0x00009a44, 0x00000170, 0x00000069},
487 	{0x00009a48, 0x000001b0, 0x00000190},
488 	{0x00009a4c, 0x000001f0, 0x000001d0},
489 	{0x00009a50, 0x00000030, 0x00000010},
490 	{0x00009a54, 0x00000070, 0x00000050},
491 	{0x00009a58, 0x00000191, 0x00000090},
492 	{0x00009a5c, 0x000001d1, 0x00000151},
493 	{0x00009a60, 0x00000011, 0x00000191},
494 	{0x00009a64, 0x00000051, 0x000001d1},
495 	{0x00009a68, 0x00000091, 0x00000011},
496 	{0x00009a6c, 0x000001b8, 0x00000051},
497 	{0x00009a70, 0x000001f8, 0x00000198},
498 	{0x00009a74, 0x00000038, 0x000001d8},
499 	{0x00009a78, 0x00000078, 0x00000018},
500 	{0x00009a7c, 0x00000199, 0x00000058},
501 	{0x00009a80, 0x000001d9, 0x00000098},
502 	{0x00009a84, 0x00000019, 0x00000159},
503 	{0x00009a88, 0x00000059, 0x00000199},
504 	{0x00009a8c, 0x00000099, 0x000001d9},
505 	{0x00009a90, 0x000000d9, 0x00000019},
506 	{0x00009a94, 0x000000f9, 0x00000059},
507 	{0x00009a98, 0x000000f9, 0x00000099},
508 	{0x00009a9c, 0x000000f9, 0x000000d9},
509 	{0x00009aa0, 0x000000f9, 0x000000f9},
510 	{0x00009aa4, 0x000000f9, 0x000000f9},
511 	{0x00009aa8, 0x000000f9, 0x000000f9},
512 	{0x00009aac, 0x000000f9, 0x000000f9},
513 	{0x00009ab0, 0x000000f9, 0x000000f9},
514 	{0x00009ab4, 0x000000f9, 0x000000f9},
515 	{0x00009ab8, 0x000000f9, 0x000000f9},
516 	{0x00009abc, 0x000000f9, 0x000000f9},
517 	{0x00009ac0, 0x000000f9, 0x000000f9},
518 	{0x00009ac4, 0x000000f9, 0x000000f9},
519 	{0x00009ac8, 0x000000f9, 0x000000f9},
520 	{0x00009acc, 0x000000f9, 0x000000f9},
521 	{0x00009ad0, 0x000000f9, 0x000000f9},
522 	{0x00009ad4, 0x000000f9, 0x000000f9},
523 	{0x00009ad8, 0x000000f9, 0x000000f9},
524 	{0x00009adc, 0x000000f9, 0x000000f9},
525 	{0x00009ae0, 0x000000f9, 0x000000f9},
526 	{0x00009ae4, 0x000000f9, 0x000000f9},
527 	{0x00009ae8, 0x000000f9, 0x000000f9},
528 	{0x00009aec, 0x000000f9, 0x000000f9},
529 	{0x00009af0, 0x000000f9, 0x000000f9},
530 	{0x00009af4, 0x000000f9, 0x000000f9},
531 	{0x00009af8, 0x000000f9, 0x000000f9},
532 	{0x00009afc, 0x000000f9, 0x000000f9},
533 };
534 
535 static const u32 ar5416Bank1[][2] = {
536 	/* Addr      allmodes  */
537 	{0x000098b0, 0x02108421},
538 	{0x000098ec, 0x00000008},
539 };
540 
541 static const u32 ar5416Bank2[][2] = {
542 	/* Addr      allmodes  */
543 	{0x000098b0, 0x0e73ff17},
544 	{0x000098e0, 0x00000420},
545 };
546 
547 static const u32 ar5416Bank3[][3] = {
548 	/* Addr      5G_HT20     5G_HT40   */
549 	{0x000098f0, 0x01400018, 0x01c00018},
550 };
551 
552 static const u32 ar5416Bank6[][3] = {
553 	/* Addr      5G_HT20     5G_HT40   */
554 	{0x0000989c, 0x00000000, 0x00000000},
555 	{0x0000989c, 0x00000000, 0x00000000},
556 	{0x0000989c, 0x00000000, 0x00000000},
557 	{0x0000989c, 0x00e00000, 0x00e00000},
558 	{0x0000989c, 0x005e0000, 0x005e0000},
559 	{0x0000989c, 0x00120000, 0x00120000},
560 	{0x0000989c, 0x00620000, 0x00620000},
561 	{0x0000989c, 0x00020000, 0x00020000},
562 	{0x0000989c, 0x00ff0000, 0x00ff0000},
563 	{0x0000989c, 0x00ff0000, 0x00ff0000},
564 	{0x0000989c, 0x00ff0000, 0x00ff0000},
565 	{0x0000989c, 0x40ff0000, 0x40ff0000},
566 	{0x0000989c, 0x005f0000, 0x005f0000},
567 	{0x0000989c, 0x00870000, 0x00870000},
568 	{0x0000989c, 0x00f90000, 0x00f90000},
569 	{0x0000989c, 0x007b0000, 0x007b0000},
570 	{0x0000989c, 0x00ff0000, 0x00ff0000},
571 	{0x0000989c, 0x00f50000, 0x00f50000},
572 	{0x0000989c, 0x00dc0000, 0x00dc0000},
573 	{0x0000989c, 0x00110000, 0x00110000},
574 	{0x0000989c, 0x006100a8, 0x006100a8},
575 	{0x0000989c, 0x004210a2, 0x004210a2},
576 	{0x0000989c, 0x0014008f, 0x0014008f},
577 	{0x0000989c, 0x00c40003, 0x00c40003},
578 	{0x0000989c, 0x003000f2, 0x003000f2},
579 	{0x0000989c, 0x00440016, 0x00440016},
580 	{0x0000989c, 0x00410040, 0x00410040},
581 	{0x0000989c, 0x0001805e, 0x0001805e},
582 	{0x0000989c, 0x0000c0ab, 0x0000c0ab},
583 	{0x0000989c, 0x000000f1, 0x000000f1},
584 	{0x0000989c, 0x00002081, 0x00002081},
585 	{0x0000989c, 0x000000d4, 0x000000d4},
586 	{0x000098d0, 0x0000000f, 0x0010000f},
587 };
588 
589 static const u32 ar5416Bank6TPC[][3] = {
590 	/* Addr      5G_HT20     5G_HT40   */
591 	{0x0000989c, 0x00000000, 0x00000000},
592 	{0x0000989c, 0x00000000, 0x00000000},
593 	{0x0000989c, 0x00000000, 0x00000000},
594 	{0x0000989c, 0x00e00000, 0x00e00000},
595 	{0x0000989c, 0x005e0000, 0x005e0000},
596 	{0x0000989c, 0x00120000, 0x00120000},
597 	{0x0000989c, 0x00620000, 0x00620000},
598 	{0x0000989c, 0x00020000, 0x00020000},
599 	{0x0000989c, 0x00ff0000, 0x00ff0000},
600 	{0x0000989c, 0x00ff0000, 0x00ff0000},
601 	{0x0000989c, 0x00ff0000, 0x00ff0000},
602 	{0x0000989c, 0x40ff0000, 0x40ff0000},
603 	{0x0000989c, 0x005f0000, 0x005f0000},
604 	{0x0000989c, 0x00870000, 0x00870000},
605 	{0x0000989c, 0x00f90000, 0x00f90000},
606 	{0x0000989c, 0x007b0000, 0x007b0000},
607 	{0x0000989c, 0x00ff0000, 0x00ff0000},
608 	{0x0000989c, 0x00f50000, 0x00f50000},
609 	{0x0000989c, 0x00dc0000, 0x00dc0000},
610 	{0x0000989c, 0x00110000, 0x00110000},
611 	{0x0000989c, 0x006100a8, 0x006100a8},
612 	{0x0000989c, 0x00423022, 0x00423022},
613 	{0x0000989c, 0x201400df, 0x201400df},
614 	{0x0000989c, 0x00c40002, 0x00c40002},
615 	{0x0000989c, 0x003000f2, 0x003000f2},
616 	{0x0000989c, 0x00440016, 0x00440016},
617 	{0x0000989c, 0x00410040, 0x00410040},
618 	{0x0000989c, 0x0001805e, 0x0001805e},
619 	{0x0000989c, 0x0000c0ab, 0x0000c0ab},
620 	{0x0000989c, 0x000000e1, 0x000000e1},
621 	{0x0000989c, 0x00007081, 0x00007081},
622 	{0x0000989c, 0x000000d4, 0x000000d4},
623 	{0x000098d0, 0x0000000f, 0x0010000f},
624 };
625 
626 static const u32 ar5416Bank7[][2] = {
627 	/* Addr      allmodes  */
628 	{0x0000989c, 0x00000500},
629 	{0x0000989c, 0x00000800},
630 	{0x000098cc, 0x0000000e},
631 };
632 
633 static const u32 ar5416Addac[][2] = {
634 	/* Addr      allmodes  */
635 	{0x0000989c, 0x00000000},
636 	{0x0000989c, 0x00000003},
637 	{0x0000989c, 0x00000000},
638 	{0x0000989c, 0x0000000c},
639 	{0x0000989c, 0x00000000},
640 	{0x0000989c, 0x00000030},
641 	{0x0000989c, 0x00000000},
642 	{0x0000989c, 0x00000000},
643 	{0x0000989c, 0x00000000},
644 	{0x0000989c, 0x00000000},
645 	{0x0000989c, 0x00000000},
646 	{0x0000989c, 0x00000000},
647 	{0x0000989c, 0x00000000},
648 	{0x0000989c, 0x00000000},
649 	{0x0000989c, 0x00000000},
650 	{0x0000989c, 0x00000000},
651 	{0x0000989c, 0x00000000},
652 	{0x0000989c, 0x00000000},
653 	{0x0000989c, 0x00000060},
654 	{0x0000989c, 0x00000000},
655 	{0x0000989c, 0x00000000},
656 	{0x0000989c, 0x00000000},
657 	{0x0000989c, 0x00000000},
658 	{0x0000989c, 0x00000000},
659 	{0x0000989c, 0x00000000},
660 	{0x0000989c, 0x00000000},
661 	{0x0000989c, 0x00000000},
662 	{0x0000989c, 0x00000000},
663 	{0x0000989c, 0x00000000},
664 	{0x0000989c, 0x00000000},
665 	{0x0000989c, 0x00000000},
666 	{0x0000989c, 0x00000058},
667 	{0x0000989c, 0x00000000},
668 	{0x0000989c, 0x00000000},
669 	{0x0000989c, 0x00000000},
670 	{0x0000989c, 0x00000000},
671 	{0x000098cc, 0x00000000},
672 };
673 
674