mac80211: update to wireless-testing 2010-05-12 plus some pending patches
[oweals/openwrt.git] / package / mac80211 / patches / 500-pending_work.patch
1 --- /dev/null
2 +++ b/drivers/net/wireless/ath/ath9k/ar9003_2p0_initvals.h
3 @@ -0,0 +1,1784 @@
4 +/*
5 + * Copyright (c) 2010 Atheros Communications Inc.
6 + *
7 + * Permission to use, copy, modify, and/or distribute this software for any
8 + * purpose with or without fee is hereby granted, provided that the above
9 + * copyright notice and this permission notice appear in all copies.
10 + *
11 + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12 + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13 + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14 + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15 + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16 + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17 + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18 + */
19 +
20 +#ifndef INITVALS_9003_2P0_H
21 +#define INITVALS_9003_2P0_H
22 +
23 +/* AR9003 2.0 */
24 +
25 +static const u32 ar9300_2p0_radio_postamble[][5] = {
26 +       /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */
27 +       {0x0001609c, 0x0dd08f29, 0x0dd08f29, 0x0b283f31, 0x0b283f31},
28 +       {0x000160ac, 0xa4653c00, 0xa4653c00, 0x24652800, 0x24652800},
29 +       {0x000160b0, 0x03284f3e, 0x03284f3e, 0x05d08f20, 0x05d08f20},
30 +       {0x0001610c, 0x08000000, 0x00000000, 0x00000000, 0x00000000},
31 +       {0x00016140, 0x10804008, 0x10804008, 0x50804008, 0x50804008},
32 +       {0x0001650c, 0x08000000, 0x00000000, 0x00000000, 0x00000000},
33 +       {0x00016540, 0x10804008, 0x10804008, 0x50804008, 0x50804008},
34 +       {0x0001690c, 0x08000000, 0x00000000, 0x00000000, 0x00000000},
35 +       {0x00016940, 0x10804008, 0x10804008, 0x50804008, 0x50804008},
36 +};
37 +
38 +static const u32 ar9300Modes_lowest_ob_db_tx_gain_table_2p0[][5] = {
39 +       /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */
40 +       {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9},
41 +       {0x0000a500, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
42 +       {0x0000a504, 0x06000003, 0x06000003, 0x04000002, 0x04000002},
43 +       {0x0000a508, 0x0a000020, 0x0a000020, 0x08000004, 0x08000004},
44 +       {0x0000a50c, 0x10000023, 0x10000023, 0x0b000200, 0x0b000200},
45 +       {0x0000a510, 0x16000220, 0x16000220, 0x0f000202, 0x0f000202},
46 +       {0x0000a514, 0x1c000223, 0x1c000223, 0x12000400, 0x12000400},
47 +       {0x0000a518, 0x21020220, 0x21020220, 0x16000402, 0x16000402},
48 +       {0x0000a51c, 0x27020223, 0x27020223, 0x19000404, 0x19000404},
49 +       {0x0000a520, 0x2b022220, 0x2b022220, 0x1c000603, 0x1c000603},
50 +       {0x0000a524, 0x2f022222, 0x2f022222, 0x21000a02, 0x21000a02},
51 +       {0x0000a528, 0x34022225, 0x34022225, 0x25000a04, 0x25000a04},
52 +       {0x0000a52c, 0x3a02222a, 0x3a02222a, 0x28000a20, 0x28000a20},
53 +       {0x0000a530, 0x3e02222c, 0x3e02222c, 0x2c000e20, 0x2c000e20},
54 +       {0x0000a534, 0x4202242a, 0x4202242a, 0x30000e22, 0x30000e22},
55 +       {0x0000a538, 0x4702244a, 0x4702244a, 0x34000e24, 0x34000e24},
56 +       {0x0000a53c, 0x4b02244c, 0x4b02244c, 0x38001640, 0x38001640},
57 +       {0x0000a540, 0x4e02246c, 0x4e02246c, 0x3c001660, 0x3c001660},
58 +       {0x0000a544, 0x5302266c, 0x5302266c, 0x3f001861, 0x3f001861},
59 +       {0x0000a548, 0x5702286c, 0x5702286c, 0x43001a81, 0x43001a81},
60 +       {0x0000a54c, 0x5c04286b, 0x5c04286b, 0x47001a83, 0x47001a83},
61 +       {0x0000a550, 0x61042a6c, 0x61042a6c, 0x4a001c84, 0x4a001c84},
62 +       {0x0000a554, 0x66062a6c, 0x66062a6c, 0x4e001ce3, 0x4e001ce3},
63 +       {0x0000a558, 0x6b062e6c, 0x6b062e6c, 0x52001ce5, 0x52001ce5},
64 +       {0x0000a55c, 0x7006308c, 0x7006308c, 0x56001ce9, 0x56001ce9},
65 +       {0x0000a560, 0x730a308a, 0x730a308a, 0x5a001ceb, 0x5a001ceb},
66 +       {0x0000a564, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
67 +       {0x0000a568, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
68 +       {0x0000a56c, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
69 +       {0x0000a570, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
70 +       {0x0000a574, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
71 +       {0x0000a578, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
72 +       {0x0000a57c, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
73 +       {0x0000a580, 0x00800000, 0x00800000, 0x00800000, 0x00800000},
74 +       {0x0000a584, 0x06800003, 0x06800003, 0x04800002, 0x04800002},
75 +       {0x0000a588, 0x0a800020, 0x0a800020, 0x08800004, 0x08800004},
76 +       {0x0000a58c, 0x10800023, 0x10800023, 0x0b800200, 0x0b800200},
77 +       {0x0000a590, 0x16800220, 0x16800220, 0x0f800202, 0x0f800202},
78 +       {0x0000a594, 0x1c800223, 0x1c800223, 0x12800400, 0x12800400},
79 +       {0x0000a598, 0x21820220, 0x21820220, 0x16800402, 0x16800402},
80 +       {0x0000a59c, 0x27820223, 0x27820223, 0x19800404, 0x19800404},
81 +       {0x0000a5a0, 0x2b822220, 0x2b822220, 0x1c800603, 0x1c800603},
82 +       {0x0000a5a4, 0x2f822222, 0x2f822222, 0x21800a02, 0x21800a02},
83 +       {0x0000a5a8, 0x34822225, 0x34822225, 0x25800a04, 0x25800a04},
84 +       {0x0000a5ac, 0x3a82222a, 0x3a82222a, 0x28800a20, 0x28800a20},
85 +       {0x0000a5b0, 0x3e82222c, 0x3e82222c, 0x2c800e20, 0x2c800e20},
86 +       {0x0000a5b4, 0x4282242a, 0x4282242a, 0x30800e22, 0x30800e22},
87 +       {0x0000a5b8, 0x4782244a, 0x4782244a, 0x34800e24, 0x34800e24},
88 +       {0x0000a5bc, 0x4b82244c, 0x4b82244c, 0x38801640, 0x38801640},
89 +       {0x0000a5c0, 0x4e82246c, 0x4e82246c, 0x3c801660, 0x3c801660},
90 +       {0x0000a5c4, 0x5382266c, 0x5382266c, 0x3f801861, 0x3f801861},
91 +       {0x0000a5c8, 0x5782286c, 0x5782286c, 0x43801a81, 0x43801a81},
92 +       {0x0000a5cc, 0x5c84286b, 0x5c84286b, 0x47801a83, 0x47801a83},
93 +       {0x0000a5d0, 0x61842a6c, 0x61842a6c, 0x4a801c84, 0x4a801c84},
94 +       {0x0000a5d4, 0x66862a6c, 0x66862a6c, 0x4e801ce3, 0x4e801ce3},
95 +       {0x0000a5d8, 0x6b862e6c, 0x6b862e6c, 0x52801ce5, 0x52801ce5},
96 +       {0x0000a5dc, 0x7086308c, 0x7086308c, 0x56801ce9, 0x56801ce9},
97 +       {0x0000a5e0, 0x738a308a, 0x738a308a, 0x5a801ceb, 0x5a801ceb},
98 +       {0x0000a5e4, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
99 +       {0x0000a5e8, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
100 +       {0x0000a5ec, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
101 +       {0x0000a5f0, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
102 +       {0x0000a5f4, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
103 +       {0x0000a5f8, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
104 +       {0x0000a5fc, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
105 +       {0x00016044, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4},
106 +       {0x00016048, 0x62480001, 0x62480001, 0x62480001, 0x62480001},
107 +       {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
108 +       {0x00016444, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4},
109 +       {0x00016448, 0x62480001, 0x62480001, 0x62480001, 0x62480001},
110 +       {0x00016468, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
111 +       {0x00016844, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4},
112 +       {0x00016848, 0x62480001, 0x62480001, 0x62480001, 0x62480001},
113 +       {0x00016868, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
114 +};
115 +
116 +static const u32 ar9300Modes_fast_clock_2p0[][3] = {
117 +       /* Addr      5G_HT20     5G_HT40   */
118 +       {0x00001030, 0x00000268, 0x000004d0},
119 +       {0x00001070, 0x0000018c, 0x00000318},
120 +       {0x000010b0, 0x00000fd0, 0x00001fa0},
121 +       {0x00008014, 0x044c044c, 0x08980898},
122 +       {0x0000801c, 0x148ec02b, 0x148ec057},
123 +       {0x00008318, 0x000044c0, 0x00008980},
124 +       {0x00009e00, 0x03721821, 0x03721821},
125 +       {0x0000a230, 0x0000000b, 0x00000016},
126 +       {0x0000a254, 0x00000898, 0x00001130},
127 +};
128 +
129 +static const u32 ar9300_2p0_radio_core[][2] = {
130 +       /* Addr      allmodes  */
131 +       {0x00016000, 0x36db6db6},
132 +       {0x00016004, 0x6db6db40},
133 +       {0x00016008, 0x73f00000},
134 +       {0x0001600c, 0x00000000},
135 +       {0x00016040, 0x7f80fff8},
136 +       {0x0001604c, 0x76d005b5},
137 +       {0x00016050, 0x556cf031},
138 +       {0x00016054, 0x13449440},
139 +       {0x00016058, 0x0c51c92c},
140 +       {0x0001605c, 0x3db7fffc},
141 +       {0x00016060, 0xfffffffc},
142 +       {0x00016064, 0x000f0278},
143 +       {0x0001606c, 0x6db60000},
144 +       {0x00016080, 0x00000000},
145 +       {0x00016084, 0x0e48048c},
146 +       {0x00016088, 0x54214514},
147 +       {0x0001608c, 0x119f481e},
148 +       {0x00016090, 0x24926490},
149 +       {0x00016098, 0xd2888888},
150 +       {0x000160a0, 0x0a108ffe},
151 +       {0x000160a4, 0x812fc370},
152 +       {0x000160a8, 0x423c8000},
153 +       {0x000160b4, 0x92480080},
154 +       {0x000160c0, 0x00adb6d0},
155 +       {0x000160c4, 0x6db6db60},
156 +       {0x000160c8, 0x6db6db6c},
157 +       {0x000160cc, 0x01e6c000},
158 +       {0x00016100, 0x3fffbe01},
159 +       {0x00016104, 0xfff80000},
160 +       {0x00016108, 0x00080010},
161 +       {0x00016144, 0x02084080},
162 +       {0x00016148, 0x00000000},
163 +       {0x00016280, 0x058a0001},
164 +       {0x00016284, 0x3d840208},
165 +       {0x00016288, 0x05a20408},
166 +       {0x0001628c, 0x00038c07},
167 +       {0x00016290, 0x40000004},
168 +       {0x00016294, 0x458aa14f},
169 +       {0x00016380, 0x00000000},
170 +       {0x00016384, 0x00000000},
171 +       {0x00016388, 0x00800700},
172 +       {0x0001638c, 0x00800700},
173 +       {0x00016390, 0x00800700},
174 +       {0x00016394, 0x00000000},
175 +       {0x00016398, 0x00000000},
176 +       {0x0001639c, 0x00000000},
177 +       {0x000163a0, 0x00000001},
178 +       {0x000163a4, 0x00000001},
179 +       {0x000163a8, 0x00000000},
180 +       {0x000163ac, 0x00000000},
181 +       {0x000163b0, 0x00000000},
182 +       {0x000163b4, 0x00000000},
183 +       {0x000163b8, 0x00000000},
184 +       {0x000163bc, 0x00000000},
185 +       {0x000163c0, 0x000000a0},
186 +       {0x000163c4, 0x000c0000},
187 +       {0x000163c8, 0x14021402},
188 +       {0x000163cc, 0x00001402},
189 +       {0x000163d0, 0x00000000},
190 +       {0x000163d4, 0x00000000},
191 +       {0x00016400, 0x36db6db6},
192 +       {0x00016404, 0x6db6db40},
193 +       {0x00016408, 0x73f00000},
194 +       {0x0001640c, 0x00000000},
195 +       {0x00016440, 0x7f80fff8},
196 +       {0x0001644c, 0x76d005b5},
197 +       {0x00016450, 0x556cf031},
198 +       {0x00016454, 0x13449440},
199 +       {0x00016458, 0x0c51c92c},
200 +       {0x0001645c, 0x3db7fffc},
201 +       {0x00016460, 0xfffffffc},
202 +       {0x00016464, 0x000f0278},
203 +       {0x0001646c, 0x6db60000},
204 +       {0x00016500, 0x3fffbe01},
205 +       {0x00016504, 0xfff80000},
206 +       {0x00016508, 0x00080010},
207 +       {0x00016544, 0x02084080},
208 +       {0x00016548, 0x00000000},
209 +       {0x00016780, 0x00000000},
210 +       {0x00016784, 0x00000000},
211 +       {0x00016788, 0x00800700},
212 +       {0x0001678c, 0x00800700},
213 +       {0x00016790, 0x00800700},
214 +       {0x00016794, 0x00000000},
215 +       {0x00016798, 0x00000000},
216 +       {0x0001679c, 0x00000000},
217 +       {0x000167a0, 0x00000001},
218 +       {0x000167a4, 0x00000001},
219 +       {0x000167a8, 0x00000000},
220 +       {0x000167ac, 0x00000000},
221 +       {0x000167b0, 0x00000000},
222 +       {0x000167b4, 0x00000000},
223 +       {0x000167b8, 0x00000000},
224 +       {0x000167bc, 0x00000000},
225 +       {0x000167c0, 0x000000a0},
226 +       {0x000167c4, 0x000c0000},
227 +       {0x000167c8, 0x14021402},
228 +       {0x000167cc, 0x00001402},
229 +       {0x000167d0, 0x00000000},
230 +       {0x000167d4, 0x00000000},
231 +       {0x00016800, 0x36db6db6},
232 +       {0x00016804, 0x6db6db40},
233 +       {0x00016808, 0x73f00000},
234 +       {0x0001680c, 0x00000000},
235 +       {0x00016840, 0x7f80fff8},
236 +       {0x0001684c, 0x76d005b5},
237 +       {0x00016850, 0x556cf031},
238 +       {0x00016854, 0x13449440},
239 +       {0x00016858, 0x0c51c92c},
240 +       {0x0001685c, 0x3db7fffc},
241 +       {0x00016860, 0xfffffffc},
242 +       {0x00016864, 0x000f0278},
243 +       {0x0001686c, 0x6db60000},
244 +       {0x00016900, 0x3fffbe01},
245 +       {0x00016904, 0xfff80000},
246 +       {0x00016908, 0x00080010},
247 +       {0x00016944, 0x02084080},
248 +       {0x00016948, 0x00000000},
249 +       {0x00016b80, 0x00000000},
250 +       {0x00016b84, 0x00000000},
251 +       {0x00016b88, 0x00800700},
252 +       {0x00016b8c, 0x00800700},
253 +       {0x00016b90, 0x00800700},
254 +       {0x00016b94, 0x00000000},
255 +       {0x00016b98, 0x00000000},
256 +       {0x00016b9c, 0x00000000},
257 +       {0x00016ba0, 0x00000001},
258 +       {0x00016ba4, 0x00000001},
259 +       {0x00016ba8, 0x00000000},
260 +       {0x00016bac, 0x00000000},
261 +       {0x00016bb0, 0x00000000},
262 +       {0x00016bb4, 0x00000000},
263 +       {0x00016bb8, 0x00000000},
264 +       {0x00016bbc, 0x00000000},
265 +       {0x00016bc0, 0x000000a0},
266 +       {0x00016bc4, 0x000c0000},
267 +       {0x00016bc8, 0x14021402},
268 +       {0x00016bcc, 0x00001402},
269 +       {0x00016bd0, 0x00000000},
270 +       {0x00016bd4, 0x00000000},
271 +};
272 +
273 +static const u32 ar9300Common_rx_gain_table_merlin_2p0[][2] = {
274 +       /* Addr      allmodes  */
275 +       {0x0000a000, 0x02000101},
276 +       {0x0000a004, 0x02000102},
277 +       {0x0000a008, 0x02000103},
278 +       {0x0000a00c, 0x02000104},
279 +       {0x0000a010, 0x02000200},
280 +       {0x0000a014, 0x02000201},
281 +       {0x0000a018, 0x02000202},
282 +       {0x0000a01c, 0x02000203},
283 +       {0x0000a020, 0x02000204},
284 +       {0x0000a024, 0x02000205},
285 +       {0x0000a028, 0x02000208},
286 +       {0x0000a02c, 0x02000302},
287 +       {0x0000a030, 0x02000303},
288 +       {0x0000a034, 0x02000304},
289 +       {0x0000a038, 0x02000400},
290 +       {0x0000a03c, 0x02010300},
291 +       {0x0000a040, 0x02010301},
292 +       {0x0000a044, 0x02010302},
293 +       {0x0000a048, 0x02000500},
294 +       {0x0000a04c, 0x02010400},
295 +       {0x0000a050, 0x02020300},
296 +       {0x0000a054, 0x02020301},
297 +       {0x0000a058, 0x02020302},
298 +       {0x0000a05c, 0x02020303},
299 +       {0x0000a060, 0x02020400},
300 +       {0x0000a064, 0x02030300},
301 +       {0x0000a068, 0x02030301},
302 +       {0x0000a06c, 0x02030302},
303 +       {0x0000a070, 0x02030303},
304 +       {0x0000a074, 0x02030400},
305 +       {0x0000a078, 0x02040300},
306 +       {0x0000a07c, 0x02040301},
307 +       {0x0000a080, 0x02040302},
308 +       {0x0000a084, 0x02040303},
309 +       {0x0000a088, 0x02030500},
310 +       {0x0000a08c, 0x02040400},
311 +       {0x0000a090, 0x02050203},
312 +       {0x0000a094, 0x02050204},
313 +       {0x0000a098, 0x02050205},
314 +       {0x0000a09c, 0x02040500},
315 +       {0x0000a0a0, 0x02050301},
316 +       {0x0000a0a4, 0x02050302},
317 +       {0x0000a0a8, 0x02050303},
318 +       {0x0000a0ac, 0x02050400},
319 +       {0x0000a0b0, 0x02050401},
320 +       {0x0000a0b4, 0x02050402},
321 +       {0x0000a0b8, 0x02050403},
322 +       {0x0000a0bc, 0x02050500},
323 +       {0x0000a0c0, 0x02050501},
324 +       {0x0000a0c4, 0x02050502},
325 +       {0x0000a0c8, 0x02050503},
326 +       {0x0000a0cc, 0x02050504},
327 +       {0x0000a0d0, 0x02050600},
328 +       {0x0000a0d4, 0x02050601},
329 +       {0x0000a0d8, 0x02050602},
330 +       {0x0000a0dc, 0x02050603},
331 +       {0x0000a0e0, 0x02050604},
332 +       {0x0000a0e4, 0x02050700},
333 +       {0x0000a0e8, 0x02050701},
334 +       {0x0000a0ec, 0x02050702},
335 +       {0x0000a0f0, 0x02050703},
336 +       {0x0000a0f4, 0x02050704},
337 +       {0x0000a0f8, 0x02050705},
338 +       {0x0000a0fc, 0x02050708},
339 +       {0x0000a100, 0x02050709},
340 +       {0x0000a104, 0x0205070a},
341 +       {0x0000a108, 0x0205070b},
342 +       {0x0000a10c, 0x0205070c},
343 +       {0x0000a110, 0x0205070d},
344 +       {0x0000a114, 0x02050710},
345 +       {0x0000a118, 0x02050711},
346 +       {0x0000a11c, 0x02050712},
347 +       {0x0000a120, 0x02050713},
348 +       {0x0000a124, 0x02050714},
349 +       {0x0000a128, 0x02050715},
350 +       {0x0000a12c, 0x02050730},
351 +       {0x0000a130, 0x02050731},
352 +       {0x0000a134, 0x02050732},
353 +       {0x0000a138, 0x02050733},
354 +       {0x0000a13c, 0x02050734},
355 +       {0x0000a140, 0x02050735},
356 +       {0x0000a144, 0x02050750},
357 +       {0x0000a148, 0x02050751},
358 +       {0x0000a14c, 0x02050752},
359 +       {0x0000a150, 0x02050753},
360 +       {0x0000a154, 0x02050754},
361 +       {0x0000a158, 0x02050755},
362 +       {0x0000a15c, 0x02050770},
363 +       {0x0000a160, 0x02050771},
364 +       {0x0000a164, 0x02050772},
365 +       {0x0000a168, 0x02050773},
366 +       {0x0000a16c, 0x02050774},
367 +       {0x0000a170, 0x02050775},
368 +       {0x0000a174, 0x00000776},
369 +       {0x0000a178, 0x00000776},
370 +       {0x0000a17c, 0x00000776},
371 +       {0x0000a180, 0x00000776},
372 +       {0x0000a184, 0x00000776},
373 +       {0x0000a188, 0x00000776},
374 +       {0x0000a18c, 0x00000776},
375 +       {0x0000a190, 0x00000776},
376 +       {0x0000a194, 0x00000776},
377 +       {0x0000a198, 0x00000776},
378 +       {0x0000a19c, 0x00000776},
379 +       {0x0000a1a0, 0x00000776},
380 +       {0x0000a1a4, 0x00000776},
381 +       {0x0000a1a8, 0x00000776},
382 +       {0x0000a1ac, 0x00000776},
383 +       {0x0000a1b0, 0x00000776},
384 +       {0x0000a1b4, 0x00000776},
385 +       {0x0000a1b8, 0x00000776},
386 +       {0x0000a1bc, 0x00000776},
387 +       {0x0000a1c0, 0x00000776},
388 +       {0x0000a1c4, 0x00000776},
389 +       {0x0000a1c8, 0x00000776},
390 +       {0x0000a1cc, 0x00000776},
391 +       {0x0000a1d0, 0x00000776},
392 +       {0x0000a1d4, 0x00000776},
393 +       {0x0000a1d8, 0x00000776},
394 +       {0x0000a1dc, 0x00000776},
395 +       {0x0000a1e0, 0x00000776},
396 +       {0x0000a1e4, 0x00000776},
397 +       {0x0000a1e8, 0x00000776},
398 +       {0x0000a1ec, 0x00000776},
399 +       {0x0000a1f0, 0x00000776},
400 +       {0x0000a1f4, 0x00000776},
401 +       {0x0000a1f8, 0x00000776},
402 +       {0x0000a1fc, 0x00000776},
403 +       {0x0000b000, 0x02000101},
404 +       {0x0000b004, 0x02000102},
405 +       {0x0000b008, 0x02000103},
406 +       {0x0000b00c, 0x02000104},
407 +       {0x0000b010, 0x02000200},
408 +       {0x0000b014, 0x02000201},
409 +       {0x0000b018, 0x02000202},
410 +       {0x0000b01c, 0x02000203},
411 +       {0x0000b020, 0x02000204},
412 +       {0x0000b024, 0x02000205},
413 +       {0x0000b028, 0x02000208},
414 +       {0x0000b02c, 0x02000302},
415 +       {0x0000b030, 0x02000303},
416 +       {0x0000b034, 0x02000304},
417 +       {0x0000b038, 0x02000400},
418 +       {0x0000b03c, 0x02010300},
419 +       {0x0000b040, 0x02010301},
420 +       {0x0000b044, 0x02010302},
421 +       {0x0000b048, 0x02000500},
422 +       {0x0000b04c, 0x02010400},
423 +       {0x0000b050, 0x02020300},
424 +       {0x0000b054, 0x02020301},
425 +       {0x0000b058, 0x02020302},
426 +       {0x0000b05c, 0x02020303},
427 +       {0x0000b060, 0x02020400},
428 +       {0x0000b064, 0x02030300},
429 +       {0x0000b068, 0x02030301},
430 +       {0x0000b06c, 0x02030302},
431 +       {0x0000b070, 0x02030303},
432 +       {0x0000b074, 0x02030400},
433 +       {0x0000b078, 0x02040300},
434 +       {0x0000b07c, 0x02040301},
435 +       {0x0000b080, 0x02040302},
436 +       {0x0000b084, 0x02040303},
437 +       {0x0000b088, 0x02030500},
438 +       {0x0000b08c, 0x02040400},
439 +       {0x0000b090, 0x02050203},
440 +       {0x0000b094, 0x02050204},
441 +       {0x0000b098, 0x02050205},
442 +       {0x0000b09c, 0x02040500},
443 +       {0x0000b0a0, 0x02050301},
444 +       {0x0000b0a4, 0x02050302},
445 +       {0x0000b0a8, 0x02050303},
446 +       {0x0000b0ac, 0x02050400},
447 +       {0x0000b0b0, 0x02050401},
448 +       {0x0000b0b4, 0x02050402},
449 +       {0x0000b0b8, 0x02050403},
450 +       {0x0000b0bc, 0x02050500},
451 +       {0x0000b0c0, 0x02050501},
452 +       {0x0000b0c4, 0x02050502},
453 +       {0x0000b0c8, 0x02050503},
454 +       {0x0000b0cc, 0x02050504},
455 +       {0x0000b0d0, 0x02050600},
456 +       {0x0000b0d4, 0x02050601},
457 +       {0x0000b0d8, 0x02050602},
458 +       {0x0000b0dc, 0x02050603},
459 +       {0x0000b0e0, 0x02050604},
460 +       {0x0000b0e4, 0x02050700},
461 +       {0x0000b0e8, 0x02050701},
462 +       {0x0000b0ec, 0x02050702},
463 +       {0x0000b0f0, 0x02050703},
464 +       {0x0000b0f4, 0x02050704},
465 +       {0x0000b0f8, 0x02050705},
466 +       {0x0000b0fc, 0x02050708},
467 +       {0x0000b100, 0x02050709},
468 +       {0x0000b104, 0x0205070a},
469 +       {0x0000b108, 0x0205070b},
470 +       {0x0000b10c, 0x0205070c},
471 +       {0x0000b110, 0x0205070d},
472 +       {0x0000b114, 0x02050710},
473 +       {0x0000b118, 0x02050711},
474 +       {0x0000b11c, 0x02050712},
475 +       {0x0000b120, 0x02050713},
476 +       {0x0000b124, 0x02050714},
477 +       {0x0000b128, 0x02050715},
478 +       {0x0000b12c, 0x02050730},
479 +       {0x0000b130, 0x02050731},
480 +       {0x0000b134, 0x02050732},
481 +       {0x0000b138, 0x02050733},
482 +       {0x0000b13c, 0x02050734},
483 +       {0x0000b140, 0x02050735},
484 +       {0x0000b144, 0x02050750},
485 +       {0x0000b148, 0x02050751},
486 +       {0x0000b14c, 0x02050752},
487 +       {0x0000b150, 0x02050753},
488 +       {0x0000b154, 0x02050754},
489 +       {0x0000b158, 0x02050755},
490 +       {0x0000b15c, 0x02050770},
491 +       {0x0000b160, 0x02050771},
492 +       {0x0000b164, 0x02050772},
493 +       {0x0000b168, 0x02050773},
494 +       {0x0000b16c, 0x02050774},
495 +       {0x0000b170, 0x02050775},
496 +       {0x0000b174, 0x00000776},
497 +       {0x0000b178, 0x00000776},
498 +       {0x0000b17c, 0x00000776},
499 +       {0x0000b180, 0x00000776},
500 +       {0x0000b184, 0x00000776},
501 +       {0x0000b188, 0x00000776},
502 +       {0x0000b18c, 0x00000776},
503 +       {0x0000b190, 0x00000776},
504 +       {0x0000b194, 0x00000776},
505 +       {0x0000b198, 0x00000776},
506 +       {0x0000b19c, 0x00000776},
507 +       {0x0000b1a0, 0x00000776},
508 +       {0x0000b1a4, 0x00000776},
509 +       {0x0000b1a8, 0x00000776},
510 +       {0x0000b1ac, 0x00000776},
511 +       {0x0000b1b0, 0x00000776},
512 +       {0x0000b1b4, 0x00000776},
513 +       {0x0000b1b8, 0x00000776},
514 +       {0x0000b1bc, 0x00000776},
515 +       {0x0000b1c0, 0x00000776},
516 +       {0x0000b1c4, 0x00000776},
517 +       {0x0000b1c8, 0x00000776},
518 +       {0x0000b1cc, 0x00000776},
519 +       {0x0000b1d0, 0x00000776},
520 +       {0x0000b1d4, 0x00000776},
521 +       {0x0000b1d8, 0x00000776},
522 +       {0x0000b1dc, 0x00000776},
523 +       {0x0000b1e0, 0x00000776},
524 +       {0x0000b1e4, 0x00000776},
525 +       {0x0000b1e8, 0x00000776},
526 +       {0x0000b1ec, 0x00000776},
527 +       {0x0000b1f0, 0x00000776},
528 +       {0x0000b1f4, 0x00000776},
529 +       {0x0000b1f8, 0x00000776},
530 +       {0x0000b1fc, 0x00000776},
531 +};
532 +
533 +static const u32 ar9300_2p0_mac_postamble[][5] = {
534 +       /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */
535 +       {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160},
536 +       {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c},
537 +       {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38},
538 +       {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00},
539 +       {0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b},
540 +       {0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810},
541 +       {0x000081d0, 0x00003210, 0x00003210, 0x0000320a, 0x0000320a},
542 +       {0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440},
543 +};
544 +
545 +static const u32 ar9300_2p0_soc_postamble[][5] = {
546 +       /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */
547 +       {0x00007010, 0x00000023, 0x00000023, 0x00000023, 0x00000023},
548 +};
549 +
550 +static const u32 ar9200_merlin_2p0_radio_core[][2] = {
551 +       /* Addr      allmodes  */
552 +       {0x00007800, 0x00040000},
553 +       {0x00007804, 0xdb005012},
554 +       {0x00007808, 0x04924914},
555 +       {0x0000780c, 0x21084210},
556 +       {0x00007810, 0x6d801300},
557 +       {0x00007814, 0x0019beff},
558 +       {0x00007818, 0x07e41000},
559 +       {0x0000781c, 0x00392000},
560 +       {0x00007820, 0x92592480},
561 +       {0x00007824, 0x00040000},
562 +       {0x00007828, 0xdb005012},
563 +       {0x0000782c, 0x04924914},
564 +       {0x00007830, 0x21084210},
565 +       {0x00007834, 0x6d801300},
566 +       {0x00007838, 0x0019beff},
567 +       {0x0000783c, 0x07e40000},
568 +       {0x00007840, 0x00392000},
569 +       {0x00007844, 0x92592480},
570 +       {0x00007848, 0x00100000},
571 +       {0x0000784c, 0x773f0567},
572 +       {0x00007850, 0x54214514},
573 +       {0x00007854, 0x12035828},
574 +       {0x00007858, 0x92592692},
575 +       {0x0000785c, 0x00000000},
576 +       {0x00007860, 0x56400000},
577 +       {0x00007864, 0x0a8e370e},
578 +       {0x00007868, 0xc0102850},
579 +       {0x0000786c, 0x812d4000},
580 +       {0x00007870, 0x807ec400},
581 +       {0x00007874, 0x001b6db0},
582 +       {0x00007878, 0x00376b63},
583 +       {0x0000787c, 0x06db6db6},
584 +       {0x00007880, 0x006d8000},
585 +       {0x00007884, 0xffeffffe},
586 +       {0x00007888, 0xffeffffe},
587 +       {0x0000788c, 0x00010000},
588 +       {0x00007890, 0x02060aeb},
589 +       {0x00007894, 0x5a108000},
590 +};
591 +
592 +static const u32 ar9300_2p0_baseband_postamble[][5] = {
593 +       /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */
594 +       {0x00009810, 0xd00a8005, 0xd00a8005, 0xd00a8011, 0xd00a8011},
595 +       {0x00009820, 0x206a022e, 0x206a022e, 0x206a012e, 0x206a012e},
596 +       {0x00009824, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0},
597 +       {0x00009828, 0x06903081, 0x06903081, 0x06903881, 0x06903881},
598 +       {0x0000982c, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4},
599 +       {0x00009830, 0x0000059c, 0x0000059c, 0x0000119c, 0x0000119c},
600 +       {0x00009c00, 0x00000044, 0x000000c4, 0x000000c4, 0x00000044},
601 +       {0x00009e00, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0},
602 +       {0x00009e04, 0x00802020, 0x00802020, 0x00802020, 0x00802020},
603 +       {0x00009e0c, 0x6c4000e2, 0x6d4000e2, 0x6d4000e2, 0x6c4000e2},
604 +       {0x00009e10, 0x7ec88d2e, 0x7ec88d2e, 0x7ec84d2e, 0x7ec84d2e},
605 +       {0x00009e14, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e},
606 +       {0x00009e18, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
607 +       {0x00009e1c, 0x0001cf9c, 0x0001cf9c, 0x00021f9c, 0x00021f9c},
608 +       {0x00009e20, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce},
609 +       {0x00009e2c, 0x0000001c, 0x0000001c, 0x00000021, 0x00000021},
610 +       {0x00009e44, 0x02321e27, 0x02321e27, 0x02291e27, 0x02291e27},
611 +       {0x00009e48, 0x5030201a, 0x5030201a, 0x50302012, 0x50302012},
612 +       {0x00009fc8, 0x0003f000, 0x0003f000, 0x0001a000, 0x0001a000},
613 +       {0x0000a204, 0x000037c0, 0x000037c4, 0x000037c4, 0x000037c0},
614 +       {0x0000a208, 0x00000104, 0x00000104, 0x00000004, 0x00000004},
615 +       {0x0000a230, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b},
616 +       {0x0000a238, 0xffb81018, 0xffb81018, 0xffb81018, 0xffb81018},
617 +       {0x0000a250, 0x00000000, 0x00000000, 0x00000210, 0x00000108},
618 +       {0x0000a254, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898},
619 +       {0x0000a258, 0x02020002, 0x02020002, 0x02020002, 0x02020002},
620 +       {0x0000a25c, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e},
621 +       {0x0000a260, 0x0a021501, 0x0a021501, 0x3a021501, 0x3a021501},
622 +       {0x0000a264, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e},
623 +       {0x0000a280, 0x00000007, 0x00000007, 0x0000000b, 0x0000000b},
624 +       {0x0000a284, 0x00000000, 0x00000000, 0x00000150, 0x00000150},
625 +       {0x0000a288, 0x00000110, 0x00000110, 0x00000110, 0x00000110},
626 +       {0x0000a28c, 0x00022222, 0x00022222, 0x00022222, 0x00022222},
627 +       {0x0000a2c4, 0x00158d18, 0x00158d18, 0x00158d18, 0x00158d18},
628 +       {0x0000a2d0, 0x00071981, 0x00071981, 0x00071981, 0x00071982},
629 +       {0x0000a2d8, 0xf999a83a, 0xf999a83a, 0xf999a83a, 0xf999a83a},
630 +       {0x0000a358, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
631 +       {0x0000a830, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c},
632 +       {0x0000ae04, 0x00800000, 0x00800000, 0x00800000, 0x00800000},
633 +       {0x0000ae18, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
634 +       {0x0000ae1c, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c},
635 +       {0x0000ae20, 0x000001b5, 0x000001b5, 0x000001ce, 0x000001ce},
636 +       {0x0000b284, 0x00000000, 0x00000000, 0x00000150, 0x00000150},
637 +       {0x0000b830, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c},
638 +       {0x0000be04, 0x00800000, 0x00800000, 0x00800000, 0x00800000},
639 +       {0x0000be18, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
640 +       {0x0000be1c, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c},
641 +       {0x0000be20, 0x000001b5, 0x000001b5, 0x000001ce, 0x000001ce},
642 +       {0x0000c284, 0x00000000, 0x00000000, 0x00000150, 0x00000150},
643 +};
644 +
645 +static const u32 ar9300_2p0_baseband_core[][2] = {
646 +       /* Addr      allmodes  */
647 +       {0x00009800, 0xafe68e30},
648 +       {0x00009804, 0xfd14e000},
649 +       {0x00009808, 0x9c0a9f6b},
650 +       {0x0000980c, 0x04900000},
651 +       {0x00009814, 0x9280c00a},
652 +       {0x00009818, 0x00000000},
653 +       {0x0000981c, 0x00020028},
654 +       {0x00009834, 0x5f3ca3de},
655 +       {0x00009838, 0x0108ecff},
656 +       {0x0000983c, 0x14750600},
657 +       {0x00009880, 0x201fff00},
658 +       {0x00009884, 0x00001042},
659 +       {0x000098a4, 0x00200400},
660 +       {0x000098b0, 0x52440bbe},
661 +       {0x000098d0, 0x004b6a8e},
662 +       {0x000098d4, 0x00000820},
663 +       {0x000098dc, 0x00000000},
664 +       {0x000098f0, 0x00000000},
665 +       {0x000098f4, 0x00000000},
666 +       {0x00009c04, 0xff55ff55},
667 +       {0x00009c08, 0x0320ff55},
668 +       {0x00009c0c, 0x00000000},
669 +       {0x00009c10, 0x00000000},
670 +       {0x00009c14, 0x00046384},
671 +       {0x00009c18, 0x05b6b440},
672 +       {0x00009c1c, 0x00b6b440},
673 +       {0x00009d00, 0xc080a333},
674 +       {0x00009d04, 0x40206c10},
675 +       {0x00009d08, 0x009c4060},
676 +       {0x00009d0c, 0x9883800a},
677 +       {0x00009d10, 0x01834061},
678 +       {0x00009d14, 0x00c0040b},
679 +       {0x00009d18, 0x00000000},
680 +       {0x00009e08, 0x0038230c},
681 +       {0x00009e24, 0x990bb515},
682 +       {0x00009e28, 0x0c6f0000},
683 +       {0x00009e30, 0x06336f77},
684 +       {0x00009e34, 0x6af6532f},
685 +       {0x00009e38, 0x0cc80c00},
686 +       {0x00009e3c, 0xcf946222},
687 +       {0x00009e40, 0x0d261820},
688 +       {0x00009e4c, 0x00001004},
689 +       {0x00009e50, 0x00ff03f1},
690 +       {0x00009e54, 0x00000000},
691 +       {0x00009fc0, 0x803e4788},
692 +       {0x00009fc4, 0x0001efb5},
693 +       {0x00009fcc, 0x40000014},
694 +       {0x00009fd0, 0x01193b93},
695 +       {0x0000a20c, 0x00000000},
696 +       {0x0000a220, 0x00000000},
697 +       {0x0000a224, 0x00000000},
698 +       {0x0000a228, 0x10002310},
699 +       {0x0000a22c, 0x01036a1e},
700 +       {0x0000a234, 0x10000fff},
701 +       {0x0000a23c, 0x00000000},
702 +       {0x0000a244, 0x0c000000},
703 +       {0x0000a2a0, 0x00000001},
704 +       {0x0000a2c0, 0x00000001},
705 +       {0x0000a2c8, 0x00000000},
706 +       {0x0000a2cc, 0x18c43433},
707 +       {0x0000a2d4, 0x00000000},
708 +       {0x0000a2dc, 0x00000000},
709 +       {0x0000a2e0, 0x00000000},
710 +       {0x0000a2e4, 0x00000000},
711 +       {0x0000a2e8, 0x00000000},
712 +       {0x0000a2ec, 0x00000000},
713 +       {0x0000a2f0, 0x00000000},
714 +       {0x0000a2f4, 0x00000000},
715 +       {0x0000a2f8, 0x00000000},
716 +       {0x0000a344, 0x00000000},
717 +       {0x0000a34c, 0x00000000},
718 +       {0x0000a350, 0x0000a000},
719 +       {0x0000a364, 0x00000000},
720 +       {0x0000a370, 0x00000000},
721 +       {0x0000a390, 0x00000001},
722 +       {0x0000a394, 0x00000444},
723 +       {0x0000a398, 0x001f0e0f},
724 +       {0x0000a39c, 0x0075393f},
725 +       {0x0000a3a0, 0xb79f6427},
726 +       {0x0000a3a4, 0x00000000},
727 +       {0x0000a3a8, 0xaaaaaaaa},
728 +       {0x0000a3ac, 0x3c466478},
729 +       {0x0000a3c0, 0x20202020},
730 +       {0x0000a3c4, 0x22222220},
731 +       {0x0000a3c8, 0x20200020},
732 +       {0x0000a3cc, 0x20202020},
733 +       {0x0000a3d0, 0x20202020},
734 +       {0x0000a3d4, 0x20202020},
735 +       {0x0000a3d8, 0x20202020},
736 +       {0x0000a3dc, 0x20202020},
737 +       {0x0000a3e0, 0x20202020},
738 +       {0x0000a3e4, 0x20202020},
739 +       {0x0000a3e8, 0x20202020},
740 +       {0x0000a3ec, 0x20202020},
741 +       {0x0000a3f0, 0x00000000},
742 +       {0x0000a3f4, 0x00000246},
743 +       {0x0000a3f8, 0x0cdbd380},
744 +       {0x0000a3fc, 0x000f0f01},
745 +       {0x0000a400, 0x8fa91f01},
746 +       {0x0000a404, 0x00000000},
747 +       {0x0000a408, 0x0e79e5c6},
748 +       {0x0000a40c, 0x00820820},
749 +       {0x0000a414, 0x1ce739ce},
750 +       {0x0000a418, 0x2d001dce},
751 +       {0x0000a41c, 0x1ce739ce},
752 +       {0x0000a420, 0x000001ce},
753 +       {0x0000a424, 0x1ce739ce},
754 +       {0x0000a428, 0x000001ce},
755 +       {0x0000a42c, 0x1ce739ce},
756 +       {0x0000a430, 0x1ce739ce},
757 +       {0x0000a434, 0x00000000},
758 +       {0x0000a438, 0x00001801},
759 +       {0x0000a43c, 0x00000000},
760 +       {0x0000a440, 0x00000000},
761 +       {0x0000a444, 0x00000000},
762 +       {0x0000a448, 0x04000080},
763 +       {0x0000a44c, 0x00000001},
764 +       {0x0000a450, 0x00010000},
765 +       {0x0000a458, 0x00000000},
766 +       {0x0000a600, 0x00000000},
767 +       {0x0000a604, 0x00000000},
768 +       {0x0000a608, 0x00000000},
769 +       {0x0000a60c, 0x00000000},
770 +       {0x0000a610, 0x00000000},
771 +       {0x0000a614, 0x00000000},
772 +       {0x0000a618, 0x00000000},
773 +       {0x0000a61c, 0x00000000},
774 +       {0x0000a620, 0x00000000},
775 +       {0x0000a624, 0x00000000},
776 +       {0x0000a628, 0x00000000},
777 +       {0x0000a62c, 0x00000000},
778 +       {0x0000a630, 0x00000000},
779 +       {0x0000a634, 0x00000000},
780 +       {0x0000a638, 0x00000000},
781 +       {0x0000a63c, 0x00000000},
782 +       {0x0000a640, 0x00000000},
783 +       {0x0000a644, 0x3fad9d74},
784 +       {0x0000a648, 0x0048060a},
785 +       {0x0000a64c, 0x00000637},
786 +       {0x0000a670, 0x03020100},
787 +       {0x0000a674, 0x09080504},
788 +       {0x0000a678, 0x0d0c0b0a},
789 +       {0x0000a67c, 0x13121110},
790 +       {0x0000a680, 0x31301514},
791 +       {0x0000a684, 0x35343332},
792 +       {0x0000a688, 0x00000036},
793 +       {0x0000a690, 0x00000838},
794 +       {0x0000a7c0, 0x00000000},
795 +       {0x0000a7c4, 0xfffffffc},
796 +       {0x0000a7c8, 0x00000000},
797 +       {0x0000a7cc, 0x00000000},
798 +       {0x0000a7d0, 0x00000000},
799 +       {0x0000a7d4, 0x00000004},
800 +       {0x0000a7dc, 0x00000001},
801 +       {0x0000a8d0, 0x004b6a8e},
802 +       {0x0000a8d4, 0x00000820},
803 +       {0x0000a8dc, 0x00000000},
804 +       {0x0000a8f0, 0x00000000},
805 +       {0x0000a8f4, 0x00000000},
806 +       {0x0000b2d0, 0x00000080},
807 +       {0x0000b2d4, 0x00000000},
808 +       {0x0000b2dc, 0x00000000},
809 +       {0x0000b2e0, 0x00000000},
810 +       {0x0000b2e4, 0x00000000},
811 +       {0x0000b2e8, 0x00000000},
812 +       {0x0000b2ec, 0x00000000},
813 +       {0x0000b2f0, 0x00000000},
814 +       {0x0000b2f4, 0x00000000},
815 +       {0x0000b2f8, 0x00000000},
816 +       {0x0000b408, 0x0e79e5c0},
817 +       {0x0000b40c, 0x00820820},
818 +       {0x0000b420, 0x00000000},
819 +       {0x0000b8d0, 0x004b6a8e},
820 +       {0x0000b8d4, 0x00000820},
821 +       {0x0000b8dc, 0x00000000},
822 +       {0x0000b8f0, 0x00000000},
823 +       {0x0000b8f4, 0x00000000},
824 +       {0x0000c2d0, 0x00000080},
825 +       {0x0000c2d4, 0x00000000},
826 +       {0x0000c2dc, 0x00000000},
827 +       {0x0000c2e0, 0x00000000},
828 +       {0x0000c2e4, 0x00000000},
829 +       {0x0000c2e8, 0x00000000},
830 +       {0x0000c2ec, 0x00000000},
831 +       {0x0000c2f0, 0x00000000},
832 +       {0x0000c2f4, 0x00000000},
833 +       {0x0000c2f8, 0x00000000},
834 +       {0x0000c408, 0x0e79e5c0},
835 +       {0x0000c40c, 0x00820820},
836 +       {0x0000c420, 0x00000000},
837 +};
838 +
839 +static const u32 ar9300Modes_high_power_tx_gain_table_2p0[][5] = {
840 +       /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */
841 +       {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9},
842 +       {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000},
843 +       {0x0000a504, 0x06002223, 0x06002223, 0x04000002, 0x04000002},
844 +       {0x0000a508, 0x0a022220, 0x0a022220, 0x08000004, 0x08000004},
845 +       {0x0000a50c, 0x0f022223, 0x0f022223, 0x0b000200, 0x0b000200},
846 +       {0x0000a510, 0x14022620, 0x14022620, 0x0f000202, 0x0f000202},
847 +       {0x0000a514, 0x18022622, 0x18022622, 0x11000400, 0x11000400},
848 +       {0x0000a518, 0x1b022822, 0x1b022822, 0x15000402, 0x15000402},
849 +       {0x0000a51c, 0x20022842, 0x20022842, 0x19000404, 0x19000404},
850 +       {0x0000a520, 0x22022c41, 0x22022c41, 0x1b000603, 0x1b000603},
851 +       {0x0000a524, 0x28023042, 0x28023042, 0x1f000a02, 0x1f000a02},
852 +       {0x0000a528, 0x2c023044, 0x2c023044, 0x23000a04, 0x23000a04},
853 +       {0x0000a52c, 0x2f023644, 0x2f023644, 0x26000a20, 0x26000a20},
854 +       {0x0000a530, 0x34025643, 0x34025643, 0x2a000e20, 0x2a000e20},
855 +       {0x0000a534, 0x38025a44, 0x38025a44, 0x2e000e22, 0x2e000e22},
856 +       {0x0000a538, 0x3b025e45, 0x3b025e45, 0x31000e24, 0x31000e24},
857 +       {0x0000a53c, 0x41025e4a, 0x41025e4a, 0x34001640, 0x34001640},
858 +       {0x0000a540, 0x48025e6c, 0x48025e6c, 0x38001660, 0x38001660},
859 +       {0x0000a544, 0x4e025e8e, 0x4e025e8e, 0x3b001861, 0x3b001861},
860 +       {0x0000a548, 0x53025eb2, 0x53025eb2, 0x3e001a81, 0x3e001a81},
861 +       {0x0000a54c, 0x59025eb5, 0x59025eb5, 0x42001a83, 0x42001a83},
862 +       {0x0000a550, 0x5f025ef6, 0x5f025ef6, 0x44001c84, 0x44001c84},
863 +       {0x0000a554, 0x62025f56, 0x62025f56, 0x48001ce3, 0x48001ce3},
864 +       {0x0000a558, 0x66027f56, 0x66027f56, 0x4c001ce5, 0x4c001ce5},
865 +       {0x0000a55c, 0x6a029f56, 0x6a029f56, 0x50001ce9, 0x50001ce9},
866 +       {0x0000a560, 0x70049f56, 0x70049f56, 0x54001ceb, 0x54001ceb},
867 +       {0x0000a564, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
868 +       {0x0000a568, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
869 +       {0x0000a56c, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
870 +       {0x0000a570, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
871 +       {0x0000a574, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
872 +       {0x0000a578, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
873 +       {0x0000a57c, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
874 +       {0x0000a580, 0x00802220, 0x00802220, 0x00800000, 0x00800000},
875 +       {0x0000a584, 0x06802223, 0x06802223, 0x04800002, 0x04800002},
876 +       {0x0000a588, 0x0a822220, 0x0a822220, 0x08800004, 0x08800004},
877 +       {0x0000a58c, 0x0f822223, 0x0f822223, 0x0b800200, 0x0b800200},
878 +       {0x0000a590, 0x14822620, 0x14822620, 0x0f800202, 0x0f800202},
879 +       {0x0000a594, 0x18822622, 0x18822622, 0x11800400, 0x11800400},
880 +       {0x0000a598, 0x1b822822, 0x1b822822, 0x15800402, 0x15800402},
881 +       {0x0000a59c, 0x20822842, 0x20822842, 0x19800404, 0x19800404},
882 +       {0x0000a5a0, 0x22822c41, 0x22822c41, 0x1b800603, 0x1b800603},
883 +       {0x0000a5a4, 0x28823042, 0x28823042, 0x1f800a02, 0x1f800a02},
884 +       {0x0000a5a8, 0x2c823044, 0x2c823044, 0x23800a04, 0x23800a04},
885 +       {0x0000a5ac, 0x2f823644, 0x2f823644, 0x26800a20, 0x26800a20},
886 +       {0x0000a5b0, 0x34825643, 0x34825643, 0x2a800e20, 0x2a800e20},
887 +       {0x0000a5b4, 0x38825a44, 0x38825a44, 0x2e800e22, 0x2e800e22},
888 +       {0x0000a5b8, 0x3b825e45, 0x3b825e45, 0x31800e24, 0x31800e24},
889 +       {0x0000a5bc, 0x41825e4a, 0x41825e4a, 0x34801640, 0x34801640},
890 +       {0x0000a5c0, 0x48825e6c, 0x48825e6c, 0x38801660, 0x38801660},
891 +       {0x0000a5c4, 0x4e825e8e, 0x4e825e8e, 0x3b801861, 0x3b801861},
892 +       {0x0000a5c8, 0x53825eb2, 0x53825eb2, 0x3e801a81, 0x3e801a81},
893 +       {0x0000a5cc, 0x59825eb5, 0x59825eb5, 0x42801a83, 0x42801a83},
894 +       {0x0000a5d0, 0x5f825ef6, 0x5f825ef6, 0x44801c84, 0x44801c84},
895 +       {0x0000a5d4, 0x62825f56, 0x62825f56, 0x48801ce3, 0x48801ce3},
896 +       {0x0000a5d8, 0x66827f56, 0x66827f56, 0x4c801ce5, 0x4c801ce5},
897 +       {0x0000a5dc, 0x6a829f56, 0x6a829f56, 0x50801ce9, 0x50801ce9},
898 +       {0x0000a5e0, 0x70849f56, 0x70849f56, 0x54801ceb, 0x54801ceb},
899 +       {0x0000a5e4, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
900 +       {0x0000a5e8, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
901 +       {0x0000a5ec, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
902 +       {0x0000a5f0, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
903 +       {0x0000a5f4, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
904 +       {0x0000a5f8, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
905 +       {0x0000a5fc, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
906 +       {0x00016044, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6},
907 +       {0x00016048, 0xae480001, 0xae480001, 0xae480001, 0xae480001},
908 +       {0x00016068, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c},
909 +       {0x00016444, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6},
910 +       {0x00016448, 0xae480001, 0xae480001, 0xae480001, 0xae480001},
911 +       {0x00016468, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c},
912 +       {0x00016844, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6},
913 +       {0x00016848, 0xae480001, 0xae480001, 0xae480001, 0xae480001},
914 +       {0x00016868, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c},
915 +};
916 +
917 +static const u32 ar9300Modes_high_ob_db_tx_gain_table_2p0[][5] = {
918 +       /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */
919 +       {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9},
920 +       {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000},
921 +       {0x0000a504, 0x06002223, 0x06002223, 0x04000002, 0x04000002},
922 +       {0x0000a508, 0x0a022220, 0x0a022220, 0x08000004, 0x08000004},
923 +       {0x0000a50c, 0x0f022223, 0x0f022223, 0x0b000200, 0x0b000200},
924 +       {0x0000a510, 0x14022620, 0x14022620, 0x0f000202, 0x0f000202},
925 +       {0x0000a514, 0x18022622, 0x18022622, 0x11000400, 0x11000400},
926 +       {0x0000a518, 0x1b022822, 0x1b022822, 0x15000402, 0x15000402},
927 +       {0x0000a51c, 0x20022842, 0x20022842, 0x19000404, 0x19000404},
928 +       {0x0000a520, 0x22022c41, 0x22022c41, 0x1b000603, 0x1b000603},
929 +       {0x0000a524, 0x28023042, 0x28023042, 0x1f000a02, 0x1f000a02},
930 +       {0x0000a528, 0x2c023044, 0x2c023044, 0x23000a04, 0x23000a04},
931 +       {0x0000a52c, 0x2f023644, 0x2f023644, 0x26000a20, 0x26000a20},
932 +       {0x0000a530, 0x34025643, 0x34025643, 0x2a000e20, 0x2a000e20},
933 +       {0x0000a534, 0x38025a44, 0x38025a44, 0x2e000e22, 0x2e000e22},
934 +       {0x0000a538, 0x3b025e45, 0x3b025e45, 0x31000e24, 0x31000e24},
935 +       {0x0000a53c, 0x41025e4a, 0x41025e4a, 0x34001640, 0x34001640},
936 +       {0x0000a540, 0x48025e6c, 0x48025e6c, 0x38001660, 0x38001660},
937 +       {0x0000a544, 0x4e025e8e, 0x4e025e8e, 0x3b001861, 0x3b001861},
938 +       {0x0000a548, 0x53025eb2, 0x53025eb2, 0x3e001a81, 0x3e001a81},
939 +       {0x0000a54c, 0x59025eb5, 0x59025eb5, 0x42001a83, 0x42001a83},
940 +       {0x0000a550, 0x5f025ef6, 0x5f025ef6, 0x44001c84, 0x44001c84},
941 +       {0x0000a554, 0x62025f56, 0x62025f56, 0x48001ce3, 0x48001ce3},
942 +       {0x0000a558, 0x66027f56, 0x66027f56, 0x4c001ce5, 0x4c001ce5},
943 +       {0x0000a55c, 0x6a029f56, 0x6a029f56, 0x50001ce9, 0x50001ce9},
944 +       {0x0000a560, 0x70049f56, 0x70049f56, 0x54001ceb, 0x54001ceb},
945 +       {0x0000a564, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
946 +       {0x0000a568, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
947 +       {0x0000a56c, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
948 +       {0x0000a570, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
949 +       {0x0000a574, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
950 +       {0x0000a578, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
951 +       {0x0000a57c, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
952 +       {0x0000a580, 0x00802220, 0x00802220, 0x00800000, 0x00800000},
953 +       {0x0000a584, 0x06802223, 0x06802223, 0x04800002, 0x04800002},
954 +       {0x0000a588, 0x0a822220, 0x0a822220, 0x08800004, 0x08800004},
955 +       {0x0000a58c, 0x0f822223, 0x0f822223, 0x0b800200, 0x0b800200},
956 +       {0x0000a590, 0x14822620, 0x14822620, 0x0f800202, 0x0f800202},
957 +       {0x0000a594, 0x18822622, 0x18822622, 0x11800400, 0x11800400},
958 +       {0x0000a598, 0x1b822822, 0x1b822822, 0x15800402, 0x15800402},
959 +       {0x0000a59c, 0x20822842, 0x20822842, 0x19800404, 0x19800404},
960 +       {0x0000a5a0, 0x22822c41, 0x22822c41, 0x1b800603, 0x1b800603},
961 +       {0x0000a5a4, 0x28823042, 0x28823042, 0x1f800a02, 0x1f800a02},
962 +       {0x0000a5a8, 0x2c823044, 0x2c823044, 0x23800a04, 0x23800a04},
963 +       {0x0000a5ac, 0x2f823644, 0x2f823644, 0x26800a20, 0x26800a20},
964 +       {0x0000a5b0, 0x34825643, 0x34825643, 0x2a800e20, 0x2a800e20},
965 +       {0x0000a5b4, 0x38825a44, 0x38825a44, 0x2e800e22, 0x2e800e22},
966 +       {0x0000a5b8, 0x3b825e45, 0x3b825e45, 0x31800e24, 0x31800e24},
967 +       {0x0000a5bc, 0x41825e4a, 0x41825e4a, 0x34801640, 0x34801640},
968 +       {0x0000a5c0, 0x48825e6c, 0x48825e6c, 0x38801660, 0x38801660},
969 +       {0x0000a5c4, 0x4e825e8e, 0x4e825e8e, 0x3b801861, 0x3b801861},
970 +       {0x0000a5c8, 0x53825eb2, 0x53825eb2, 0x3e801a81, 0x3e801a81},
971 +       {0x0000a5cc, 0x59825eb5, 0x59825eb5, 0x42801a83, 0x42801a83},
972 +       {0x0000a5d0, 0x5f825ef6, 0x5f825ef6, 0x44801c84, 0x44801c84},
973 +       {0x0000a5d4, 0x62825f56, 0x62825f56, 0x48801ce3, 0x48801ce3},
974 +       {0x0000a5d8, 0x66827f56, 0x66827f56, 0x4c801ce5, 0x4c801ce5},
975 +       {0x0000a5dc, 0x6a829f56, 0x6a829f56, 0x50801ce9, 0x50801ce9},
976 +       {0x0000a5e0, 0x70849f56, 0x70849f56, 0x54801ceb, 0x54801ceb},
977 +       {0x0000a5e4, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
978 +       {0x0000a5e8, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
979 +       {0x0000a5ec, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
980 +       {0x0000a5f0, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
981 +       {0x0000a5f4, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
982 +       {0x0000a5f8, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
983 +       {0x0000a5fc, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
984 +       {0x00016044, 0x056db2e4, 0x056db2e4, 0x056db2e4, 0x056db2e4},
985 +       {0x00016048, 0x8e480001, 0x8e480001, 0x8e480001, 0x8e480001},
986 +       {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
987 +       {0x00016444, 0x056db2e4, 0x056db2e4, 0x056db2e4, 0x056db2e4},
988 +       {0x00016448, 0x8e480001, 0x8e480001, 0x8e480001, 0x8e480001},
989 +       {0x00016468, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
990 +       {0x00016844, 0x056db2e4, 0x056db2e4, 0x056db2e4, 0x056db2e4},
991 +       {0x00016848, 0x8e480001, 0x8e480001, 0x8e480001, 0x8e480001},
992 +       {0x00016868, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
993 +};
994 +
995 +static const u32 ar9300Common_rx_gain_table_2p0[][2] = {
996 +       /* Addr      allmodes  */
997 +       {0x0000a000, 0x00010000},
998 +       {0x0000a004, 0x00030002},
999 +       {0x0000a008, 0x00050004},
1000 +       {0x0000a00c, 0x00810080},
1001 +       {0x0000a010, 0x00830082},
1002 +       {0x0000a014, 0x01810180},
1003 +       {0x0000a018, 0x01830182},
1004 +       {0x0000a01c, 0x01850184},
1005 +       {0x0000a020, 0x01890188},
1006 +       {0x0000a024, 0x018b018a},
1007 +       {0x0000a028, 0x018d018c},
1008 +       {0x0000a02c, 0x01910190},
1009 +       {0x0000a030, 0x01930192},
1010 +       {0x0000a034, 0x01950194},
1011 +       {0x0000a038, 0x038a0196},
1012 +       {0x0000a03c, 0x038c038b},
1013 +       {0x0000a040, 0x0390038d},
1014 +       {0x0000a044, 0x03920391},
1015 +       {0x0000a048, 0x03940393},
1016 +       {0x0000a04c, 0x03960395},
1017 +       {0x0000a050, 0x00000000},
1018 +       {0x0000a054, 0x00000000},
1019 +       {0x0000a058, 0x00000000},
1020 +       {0x0000a05c, 0x00000000},
1021 +       {0x0000a060, 0x00000000},
1022 +       {0x0000a064, 0x00000000},
1023 +       {0x0000a068, 0x00000000},
1024 +       {0x0000a06c, 0x00000000},
1025 +       {0x0000a070, 0x00000000},
1026 +       {0x0000a074, 0x00000000},
1027 +       {0x0000a078, 0x00000000},
1028 +       {0x0000a07c, 0x00000000},
1029 +       {0x0000a080, 0x22222229},
1030 +       {0x0000a084, 0x1d1d1d1d},
1031 +       {0x0000a088, 0x1d1d1d1d},
1032 +       {0x0000a08c, 0x1d1d1d1d},
1033 +       {0x0000a090, 0x171d1d1d},
1034 +       {0x0000a094, 0x11111717},
1035 +       {0x0000a098, 0x00030311},
1036 +       {0x0000a09c, 0x00000000},
1037 +       {0x0000a0a0, 0x00000000},
1038 +       {0x0000a0a4, 0x00000000},
1039 +       {0x0000a0a8, 0x00000000},
1040 +       {0x0000a0ac, 0x00000000},
1041 +       {0x0000a0b0, 0x00000000},
1042 +       {0x0000a0b4, 0x00000000},
1043 +       {0x0000a0b8, 0x00000000},
1044 +       {0x0000a0bc, 0x00000000},
1045 +       {0x0000a0c0, 0x001f0000},
1046 +       {0x0000a0c4, 0x01000101},
1047 +       {0x0000a0c8, 0x011e011f},
1048 +       {0x0000a0cc, 0x011c011d},
1049 +       {0x0000a0d0, 0x02030204},
1050 +       {0x0000a0d4, 0x02010202},
1051 +       {0x0000a0d8, 0x021f0200},
1052 +       {0x0000a0dc, 0x0302021e},
1053 +       {0x0000a0e0, 0x03000301},
1054 +       {0x0000a0e4, 0x031e031f},
1055 +       {0x0000a0e8, 0x0402031d},
1056 +       {0x0000a0ec, 0x04000401},
1057 +       {0x0000a0f0, 0x041e041f},
1058 +       {0x0000a0f4, 0x0502041d},
1059 +       {0x0000a0f8, 0x05000501},
1060 +       {0x0000a0fc, 0x051e051f},
1061 +       {0x0000a100, 0x06010602},
1062 +       {0x0000a104, 0x061f0600},
1063 +       {0x0000a108, 0x061d061e},
1064 +       {0x0000a10c, 0x07020703},
1065 +       {0x0000a110, 0x07000701},
1066 +       {0x0000a114, 0x00000000},
1067 +       {0x0000a118, 0x00000000},
1068 +       {0x0000a11c, 0x00000000},
1069 +       {0x0000a120, 0x00000000},
1070 +       {0x0000a124, 0x00000000},
1071 +       {0x0000a128, 0x00000000},
1072 +       {0x0000a12c, 0x00000000},
1073 +       {0x0000a130, 0x00000000},
1074 +       {0x0000a134, 0x00000000},
1075 +       {0x0000a138, 0x00000000},
1076 +       {0x0000a13c, 0x00000000},
1077 +       {0x0000a140, 0x001f0000},
1078 +       {0x0000a144, 0x01000101},
1079 +       {0x0000a148, 0x011e011f},
1080 +       {0x0000a14c, 0x011c011d},
1081 +       {0x0000a150, 0x02030204},
1082 +       {0x0000a154, 0x02010202},
1083 +       {0x0000a158, 0x021f0200},
1084 +       {0x0000a15c, 0x0302021e},
1085 +       {0x0000a160, 0x03000301},
1086 +       {0x0000a164, 0x031e031f},
1087 +       {0x0000a168, 0x0402031d},
1088 +       {0x0000a16c, 0x04000401},
1089 +       {0x0000a170, 0x041e041f},
1090 +       {0x0000a174, 0x0502041d},
1091 +       {0x0000a178, 0x05000501},
1092 +       {0x0000a17c, 0x051e051f},
1093 +       {0x0000a180, 0x06010602},
1094 +       {0x0000a184, 0x061f0600},
1095 +       {0x0000a188, 0x061d061e},
1096 +       {0x0000a18c, 0x07020703},
1097 +       {0x0000a190, 0x07000701},
1098 +       {0x0000a194, 0x00000000},
1099 +       {0x0000a198, 0x00000000},
1100 +       {0x0000a19c, 0x00000000},
1101 +       {0x0000a1a0, 0x00000000},
1102 +       {0x0000a1a4, 0x00000000},
1103 +       {0x0000a1a8, 0x00000000},
1104 +       {0x0000a1ac, 0x00000000},
1105 +       {0x0000a1b0, 0x00000000},
1106 +       {0x0000a1b4, 0x00000000},
1107 +       {0x0000a1b8, 0x00000000},
1108 +       {0x0000a1bc, 0x00000000},
1109 +       {0x0000a1c0, 0x00000000},
1110 +       {0x0000a1c4, 0x00000000},
1111 +       {0x0000a1c8, 0x00000000},
1112 +       {0x0000a1cc, 0x00000000},
1113 +       {0x0000a1d0, 0x00000000},
1114 +       {0x0000a1d4, 0x00000000},
1115 +       {0x0000a1d8, 0x00000000},
1116 +       {0x0000a1dc, 0x00000000},
1117 +       {0x0000a1e0, 0x00000000},
1118 +       {0x0000a1e4, 0x00000000},
1119 +       {0x0000a1e8, 0x00000000},
1120 +       {0x0000a1ec, 0x00000000},
1121 +       {0x0000a1f0, 0x00000396},
1122 +       {0x0000a1f4, 0x00000396},
1123 +       {0x0000a1f8, 0x00000396},
1124 +       {0x0000a1fc, 0x00000196},
1125 +       {0x0000b000, 0x00010000},
1126 +       {0x0000b004, 0x00030002},
1127 +       {0x0000b008, 0x00050004},
1128 +       {0x0000b00c, 0x00810080},
1129 +       {0x0000b010, 0x00830082},
1130 +       {0x0000b014, 0x01810180},
1131 +       {0x0000b018, 0x01830182},
1132 +       {0x0000b01c, 0x01850184},
1133 +       {0x0000b020, 0x02810280},
1134 +       {0x0000b024, 0x02830282},
1135 +       {0x0000b028, 0x02850284},
1136 +       {0x0000b02c, 0x02890288},
1137 +       {0x0000b030, 0x028b028a},
1138 +       {0x0000b034, 0x0388028c},
1139 +       {0x0000b038, 0x038a0389},
1140 +       {0x0000b03c, 0x038c038b},
1141 +       {0x0000b040, 0x0390038d},
1142 +       {0x0000b044, 0x03920391},
1143 +       {0x0000b048, 0x03940393},
1144 +       {0x0000b04c, 0x03960395},
1145 +       {0x0000b050, 0x00000000},
1146 +       {0x0000b054, 0x00000000},
1147 +       {0x0000b058, 0x00000000},
1148 +       {0x0000b05c, 0x00000000},
1149 +       {0x0000b060, 0x00000000},
1150 +       {0x0000b064, 0x00000000},
1151 +       {0x0000b068, 0x00000000},
1152 +       {0x0000b06c, 0x00000000},
1153 +       {0x0000b070, 0x00000000},
1154 +       {0x0000b074, 0x00000000},
1155 +       {0x0000b078, 0x00000000},
1156 +       {0x0000b07c, 0x00000000},
1157 +       {0x0000b080, 0x32323232},
1158 +       {0x0000b084, 0x2f2f3232},
1159 +       {0x0000b088, 0x23282a2d},
1160 +       {0x0000b08c, 0x1c1e2123},
1161 +       {0x0000b090, 0x14171919},
1162 +       {0x0000b094, 0x0e0e1214},
1163 +       {0x0000b098, 0x03050707},
1164 +       {0x0000b09c, 0x00030303},
1165 +       {0x0000b0a0, 0x00000000},
1166 +       {0x0000b0a4, 0x00000000},
1167 +       {0x0000b0a8, 0x00000000},
1168 +       {0x0000b0ac, 0x00000000},
1169 +       {0x0000b0b0, 0x00000000},
1170 +       {0x0000b0b4, 0x00000000},
1171 +       {0x0000b0b8, 0x00000000},
1172 +       {0x0000b0bc, 0x00000000},
1173 +       {0x0000b0c0, 0x003f0020},
1174 +       {0x0000b0c4, 0x00400041},
1175 +       {0x0000b0c8, 0x0140005f},
1176 +       {0x0000b0cc, 0x0160015f},
1177 +       {0x0000b0d0, 0x017e017f},
1178 +       {0x0000b0d4, 0x02410242},
1179 +       {0x0000b0d8, 0x025f0240},
1180 +       {0x0000b0dc, 0x027f0260},
1181 +       {0x0000b0e0, 0x0341027e},
1182 +       {0x0000b0e4, 0x035f0340},
1183 +       {0x0000b0e8, 0x037f0360},
1184 +       {0x0000b0ec, 0x04400441},
1185 +       {0x0000b0f0, 0x0460045f},
1186 +       {0x0000b0f4, 0x0541047f},
1187 +       {0x0000b0f8, 0x055f0540},
1188 +       {0x0000b0fc, 0x057f0560},
1189 +       {0x0000b100, 0x06400641},
1190 +       {0x0000b104, 0x0660065f},
1191 +       {0x0000b108, 0x067e067f},
1192 +       {0x0000b10c, 0x07410742},
1193 +       {0x0000b110, 0x075f0740},
1194 +       {0x0000b114, 0x077f0760},
1195 +       {0x0000b118, 0x07800781},
1196 +       {0x0000b11c, 0x07a0079f},
1197 +       {0x0000b120, 0x07c107bf},
1198 +       {0x0000b124, 0x000007c0},
1199 +       {0x0000b128, 0x00000000},
1200 +       {0x0000b12c, 0x00000000},
1201 +       {0x0000b130, 0x00000000},
1202 +       {0x0000b134, 0x00000000},
1203 +       {0x0000b138, 0x00000000},
1204 +       {0x0000b13c, 0x00000000},
1205 +       {0x0000b140, 0x003f0020},
1206 +       {0x0000b144, 0x00400041},
1207 +       {0x0000b148, 0x0140005f},
1208 +       {0x0000b14c, 0x0160015f},
1209 +       {0x0000b150, 0x017e017f},
1210 +       {0x0000b154, 0x02410242},
1211 +       {0x0000b158, 0x025f0240},
1212 +       {0x0000b15c, 0x027f0260},
1213 +       {0x0000b160, 0x0341027e},
1214 +       {0x0000b164, 0x035f0340},
1215 +       {0x0000b168, 0x037f0360},
1216 +       {0x0000b16c, 0x04400441},
1217 +       {0x0000b170, 0x0460045f},
1218 +       {0x0000b174, 0x0541047f},
1219 +       {0x0000b178, 0x055f0540},
1220 +       {0x0000b17c, 0x057f0560},
1221 +       {0x0000b180, 0x06400641},
1222 +       {0x0000b184, 0x0660065f},
1223 +       {0x0000b188, 0x067e067f},
1224 +       {0x0000b18c, 0x07410742},
1225 +       {0x0000b190, 0x075f0740},
1226 +       {0x0000b194, 0x077f0760},
1227 +       {0x0000b198, 0x07800781},
1228 +       {0x0000b19c, 0x07a0079f},
1229 +       {0x0000b1a0, 0x07c107bf},
1230 +       {0x0000b1a4, 0x000007c0},
1231 +       {0x0000b1a8, 0x00000000},
1232 +       {0x0000b1ac, 0x00000000},
1233 +       {0x0000b1b0, 0x00000000},
1234 +       {0x0000b1b4, 0x00000000},
1235 +       {0x0000b1b8, 0x00000000},
1236 +       {0x0000b1bc, 0x00000000},
1237 +       {0x0000b1c0, 0x00000000},
1238 +       {0x0000b1c4, 0x00000000},
1239 +       {0x0000b1c8, 0x00000000},
1240 +       {0x0000b1cc, 0x00000000},
1241 +       {0x0000b1d0, 0x00000000},
1242 +       {0x0000b1d4, 0x00000000},
1243 +       {0x0000b1d8, 0x00000000},
1244 +       {0x0000b1dc, 0x00000000},
1245 +       {0x0000b1e0, 0x00000000},
1246 +       {0x0000b1e4, 0x00000000},
1247 +       {0x0000b1e8, 0x00000000},
1248 +       {0x0000b1ec, 0x00000000},
1249 +       {0x0000b1f0, 0x00000396},
1250 +       {0x0000b1f4, 0x00000396},
1251 +       {0x0000b1f8, 0x00000396},
1252 +       {0x0000b1fc, 0x00000196},
1253 +};
1254 +
1255 +static const u32 ar9300Modes_low_ob_db_tx_gain_table_2p0[][5] = {
1256 +       /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */
1257 +       {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9},
1258 +       {0x0000a500, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
1259 +       {0x0000a504, 0x06000003, 0x06000003, 0x04000002, 0x04000002},
1260 +       {0x0000a508, 0x0a000020, 0x0a000020, 0x08000004, 0x08000004},
1261 +       {0x0000a50c, 0x10000023, 0x10000023, 0x0b000200, 0x0b000200},
1262 +       {0x0000a510, 0x16000220, 0x16000220, 0x0f000202, 0x0f000202},
1263 +       {0x0000a514, 0x1c000223, 0x1c000223, 0x12000400, 0x12000400},
1264 +       {0x0000a518, 0x21020220, 0x21020220, 0x16000402, 0x16000402},
1265 +       {0x0000a51c, 0x27020223, 0x27020223, 0x19000404, 0x19000404},
1266 +       {0x0000a520, 0x2b022220, 0x2b022220, 0x1c000603, 0x1c000603},
1267 +       {0x0000a524, 0x2f022222, 0x2f022222, 0x21000a02, 0x21000a02},
1268 +       {0x0000a528, 0x34022225, 0x34022225, 0x25000a04, 0x25000a04},
1269 +       {0x0000a52c, 0x3a02222a, 0x3a02222a, 0x28000a20, 0x28000a20},
1270 +       {0x0000a530, 0x3e02222c, 0x3e02222c, 0x2c000e20, 0x2c000e20},
1271 +       {0x0000a534, 0x4202242a, 0x4202242a, 0x30000e22, 0x30000e22},
1272 +       {0x0000a538, 0x4702244a, 0x4702244a, 0x34000e24, 0x34000e24},
1273 +       {0x0000a53c, 0x4b02244c, 0x4b02244c, 0x38001640, 0x38001640},
1274 +       {0x0000a540, 0x4e02246c, 0x4e02246c, 0x3c001660, 0x3c001660},
1275 +       {0x0000a544, 0x5302266c, 0x5302266c, 0x3f001861, 0x3f001861},
1276 +       {0x0000a548, 0x5702286c, 0x5702286c, 0x43001a81, 0x43001a81},
1277 +       {0x0000a54c, 0x5c04286b, 0x5c04286b, 0x47001a83, 0x47001a83},
1278 +       {0x0000a550, 0x61042a6c, 0x61042a6c, 0x4a001c84, 0x4a001c84},
1279 +       {0x0000a554, 0x66062a6c, 0x66062a6c, 0x4e001ce3, 0x4e001ce3},
1280 +       {0x0000a558, 0x6b062e6c, 0x6b062e6c, 0x52001ce5, 0x52001ce5},
1281 +       {0x0000a55c, 0x7006308c, 0x7006308c, 0x56001ce9, 0x56001ce9},
1282 +       {0x0000a560, 0x730a308a, 0x730a308a, 0x5a001ceb, 0x5a001ceb},
1283 +       {0x0000a564, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
1284 +       {0x0000a568, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
1285 +       {0x0000a56c, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
1286 +       {0x0000a570, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
1287 +       {0x0000a574, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
1288 +       {0x0000a578, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
1289 +       {0x0000a57c, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
1290 +       {0x0000a580, 0x00800000, 0x00800000, 0x00800000, 0x00800000},
1291 +       {0x0000a584, 0x06800003, 0x06800003, 0x04800002, 0x04800002},
1292 +       {0x0000a588, 0x0a800020, 0x0a800020, 0x08800004, 0x08800004},
1293 +       {0x0000a58c, 0x10800023, 0x10800023, 0x0b800200, 0x0b800200},
1294 +       {0x0000a590, 0x16800220, 0x16800220, 0x0f800202, 0x0f800202},
1295 +       {0x0000a594, 0x1c800223, 0x1c800223, 0x12800400, 0x12800400},
1296 +       {0x0000a598, 0x21820220, 0x21820220, 0x16800402, 0x16800402},
1297 +       {0x0000a59c, 0x27820223, 0x27820223, 0x19800404, 0x19800404},
1298 +       {0x0000a5a0, 0x2b822220, 0x2b822220, 0x1c800603, 0x1c800603},
1299 +       {0x0000a5a4, 0x2f822222, 0x2f822222, 0x21800a02, 0x21800a02},
1300 +       {0x0000a5a8, 0x34822225, 0x34822225, 0x25800a04, 0x25800a04},
1301 +       {0x0000a5ac, 0x3a82222a, 0x3a82222a, 0x28800a20, 0x28800a20},
1302 +       {0x0000a5b0, 0x3e82222c, 0x3e82222c, 0x2c800e20, 0x2c800e20},
1303 +       {0x0000a5b4, 0x4282242a, 0x4282242a, 0x30800e22, 0x30800e22},
1304 +       {0x0000a5b8, 0x4782244a, 0x4782244a, 0x34800e24, 0x34800e24},
1305 +       {0x0000a5bc, 0x4b82244c, 0x4b82244c, 0x38801640, 0x38801640},
1306 +       {0x0000a5c0, 0x4e82246c, 0x4e82246c, 0x3c801660, 0x3c801660},
1307 +       {0x0000a5c4, 0x5382266c, 0x5382266c, 0x3f801861, 0x3f801861},
1308 +       {0x0000a5c8, 0x5782286c, 0x5782286c, 0x43801a81, 0x43801a81},
1309 +       {0x0000a5cc, 0x5c84286b, 0x5c84286b, 0x47801a83, 0x47801a83},
1310 +       {0x0000a5d0, 0x61842a6c, 0x61842a6c, 0x4a801c84, 0x4a801c84},
1311 +       {0x0000a5d4, 0x66862a6c, 0x66862a6c, 0x4e801ce3, 0x4e801ce3},
1312 +       {0x0000a5d8, 0x6b862e6c, 0x6b862e6c, 0x52801ce5, 0x52801ce5},
1313 +       {0x0000a5dc, 0x7086308c, 0x7086308c, 0x56801ce9, 0x56801ce9},
1314 +       {0x0000a5e0, 0x738a308a, 0x738a308a, 0x5a801ceb, 0x5a801ceb},
1315 +       {0x0000a5e4, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
1316 +       {0x0000a5e8, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
1317 +       {0x0000a5ec, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
1318 +       {0x0000a5f0, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
1319 +       {0x0000a5f4, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
1320 +       {0x0000a5f8, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
1321 +       {0x0000a5fc, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
1322 +       {0x00016044, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4},
1323 +       {0x00016048, 0x64000001, 0x64000001, 0x64000001, 0x64000001},
1324 +       {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
1325 +       {0x00016444, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4},
1326 +       {0x00016448, 0x64000001, 0x64000001, 0x64000001, 0x64000001},
1327 +       {0x00016468, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
1328 +       {0x00016844, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4},
1329 +       {0x00016848, 0x64000001, 0x64000001, 0x64000001, 0x64000001},
1330 +       {0x00016868, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
1331 +};
1332 +
1333 +static const u32 ar9300_2p0_mac_core[][2] = {
1334 +       /* Addr      allmodes  */
1335 +       {0x00000008, 0x00000000},
1336 +       {0x00000030, 0x00020085},
1337 +       {0x00000034, 0x00000005},
1338 +       {0x00000040, 0x00000000},
1339 +       {0x00000044, 0x00000000},
1340 +       {0x00000048, 0x00000008},
1341 +       {0x0000004c, 0x00000010},
1342 +       {0x00000050, 0x00000000},
1343 +       {0x00001040, 0x002ffc0f},
1344 +       {0x00001044, 0x002ffc0f},
1345 +       {0x00001048, 0x002ffc0f},
1346 +       {0x0000104c, 0x002ffc0f},
1347 +       {0x00001050, 0x002ffc0f},
1348 +       {0x00001054, 0x002ffc0f},
1349 +       {0x00001058, 0x002ffc0f},
1350 +       {0x0000105c, 0x002ffc0f},
1351 +       {0x00001060, 0x002ffc0f},
1352 +       {0x00001064, 0x002ffc0f},
1353 +       {0x000010f0, 0x00000100},
1354 +       {0x00001270, 0x00000000},
1355 +       {0x000012b0, 0x00000000},
1356 +       {0x000012f0, 0x00000000},
1357 +       {0x0000143c, 0x00000000},
1358 +       {0x0000147c, 0x00000000},
1359 +       {0x00008000, 0x00000000},
1360 +       {0x00008004, 0x00000000},
1361 +       {0x00008008, 0x00000000},
1362 +       {0x0000800c, 0x00000000},
1363 +       {0x00008018, 0x00000000},
1364 +       {0x00008020, 0x00000000},
1365 +       {0x00008038, 0x00000000},
1366 +       {0x0000803c, 0x00000000},
1367 +       {0x00008040, 0x00000000},
1368 +       {0x00008044, 0x00000000},
1369 +       {0x00008048, 0x00000000},
1370 +       {0x0000804c, 0xffffffff},
1371 +       {0x00008054, 0x00000000},
1372 +       {0x00008058, 0x00000000},
1373 +       {0x0000805c, 0x000fc78f},
1374 +       {0x00008060, 0x0000000f},
1375 +       {0x00008064, 0x00000000},
1376 +       {0x00008070, 0x00000310},
1377 +       {0x00008074, 0x00000020},
1378 +       {0x00008078, 0x00000000},
1379 +       {0x0000809c, 0x0000000f},
1380 +       {0x000080a0, 0x00000000},
1381 +       {0x000080a4, 0x02ff0000},
1382 +       {0x000080a8, 0x0e070605},
1383 +       {0x000080ac, 0x0000000d},
1384 +       {0x000080b0, 0x00000000},
1385 +       {0x000080b4, 0x00000000},
1386 +       {0x000080b8, 0x00000000},
1387 +       {0x000080bc, 0x00000000},
1388 +       {0x000080c0, 0x2a800000},
1389 +       {0x000080c4, 0x06900168},
1390 +       {0x000080c8, 0x13881c20},
1391 +       {0x000080cc, 0x01f40000},
1392 +       {0x000080d0, 0x00252500},
1393 +       {0x000080d4, 0x00a00000},
1394 +       {0x000080d8, 0x00400000},
1395 +       {0x000080dc, 0x00000000},
1396 +       {0x000080e0, 0xffffffff},
1397 +       {0x000080e4, 0x0000ffff},
1398 +       {0x000080e8, 0x3f3f3f3f},
1399 +       {0x000080ec, 0x00000000},
1400 +       {0x000080f0, 0x00000000},
1401 +       {0x000080f4, 0x00000000},
1402 +       {0x000080fc, 0x00020000},
1403 +       {0x00008100, 0x00000000},
1404 +       {0x00008108, 0x00000052},
1405 +       {0x0000810c, 0x00000000},
1406 +       {0x00008110, 0x00000000},
1407 +       {0x00008114, 0x000007ff},
1408 +       {0x00008118, 0x000000aa},
1409 +       {0x0000811c, 0x00003210},
1410 +       {0x00008124, 0x00000000},
1411 +       {0x00008128, 0x00000000},
1412 +       {0x0000812c, 0x00000000},
1413 +       {0x00008130, 0x00000000},
1414 +       {0x00008134, 0x00000000},
1415 +       {0x00008138, 0x00000000},
1416 +       {0x0000813c, 0x0000ffff},
1417 +       {0x00008144, 0xffffffff},
1418 +       {0x00008168, 0x00000000},
1419 +       {0x0000816c, 0x00000000},
1420 +       {0x00008170, 0x18486200},
1421 +       {0x00008174, 0x33332210},
1422 +       {0x00008178, 0x00000000},
1423 +       {0x0000817c, 0x00020000},
1424 +       {0x000081c0, 0x00000000},
1425 +       {0x000081c4, 0x33332210},
1426 +       {0x000081c8, 0x00000000},
1427 +       {0x000081cc, 0x00000000},
1428 +       {0x000081d4, 0x00000000},
1429 +       {0x000081ec, 0x00000000},
1430 +       {0x000081f0, 0x00000000},
1431 +       {0x000081f4, 0x00000000},
1432 +       {0x000081f8, 0x00000000},
1433 +       {0x000081fc, 0x00000000},
1434 +       {0x00008240, 0x00100000},
1435 +       {0x00008244, 0x0010f424},
1436 +       {0x00008248, 0x00000800},
1437 +       {0x0000824c, 0x0001e848},
1438 +       {0x00008250, 0x00000000},
1439 +       {0x00008254, 0x00000000},
1440 +       {0x00008258, 0x00000000},
1441 +       {0x0000825c, 0x40000000},
1442 +       {0x00008260, 0x00080922},
1443 +       {0x00008264, 0x98a00010},
1444 +       {0x00008268, 0xffffffff},
1445 +       {0x0000826c, 0x0000ffff},
1446 +       {0x00008270, 0x00000000},
1447 +       {0x00008274, 0x40000000},
1448 +       {0x00008278, 0x003e4180},
1449 +       {0x0000827c, 0x00000004},
1450 +       {0x00008284, 0x0000002c},
1451 +       {0x00008288, 0x0000002c},
1452 +       {0x0000828c, 0x000000ff},
1453 +       {0x00008294, 0x00000000},
1454 +       {0x00008298, 0x00000000},
1455 +       {0x0000829c, 0x00000000},
1456 +       {0x00008300, 0x00000140},
1457 +       {0x00008314, 0x00000000},
1458 +       {0x0000831c, 0x0000010d},
1459 +       {0x00008328, 0x00000000},
1460 +       {0x0000832c, 0x00000007},
1461 +       {0x00008330, 0x00000302},
1462 +       {0x00008334, 0x00000700},
1463 +       {0x00008338, 0x00ff0000},
1464 +       {0x0000833c, 0x02400000},
1465 +       {0x00008340, 0x000107ff},
1466 +       {0x00008344, 0xaa48105b},
1467 +       {0x00008348, 0x008f0000},
1468 +       {0x0000835c, 0x00000000},
1469 +       {0x00008360, 0xffffffff},
1470 +       {0x00008364, 0xffffffff},
1471 +       {0x00008368, 0x00000000},
1472 +       {0x00008370, 0x00000000},
1473 +       {0x00008374, 0x000000ff},
1474 +       {0x00008378, 0x00000000},
1475 +       {0x0000837c, 0x00000000},
1476 +       {0x00008380, 0xffffffff},
1477 +       {0x00008384, 0xffffffff},
1478 +       {0x00008390, 0xffffffff},
1479 +       {0x00008394, 0xffffffff},
1480 +       {0x00008398, 0x00000000},
1481 +       {0x0000839c, 0x00000000},
1482 +       {0x000083a0, 0x00000000},
1483 +       {0x000083a4, 0x0000fa14},
1484 +       {0x000083a8, 0x000f0c00},
1485 +       {0x000083ac, 0x33332210},
1486 +       {0x000083b0, 0x33332210},
1487 +       {0x000083b4, 0x33332210},
1488 +       {0x000083b8, 0x33332210},
1489 +       {0x000083bc, 0x00000000},
1490 +       {0x000083c0, 0x00000000},
1491 +       {0x000083c4, 0x00000000},
1492 +       {0x000083c8, 0x00000000},
1493 +       {0x000083cc, 0x00000200},
1494 +       {0x000083d0, 0x000301ff},
1495 +};
1496 +
1497 +static const u32 ar9300Common_wo_xlna_rx_gain_table_2p0[][2] = {
1498 +       /* Addr      allmodes  */
1499 +       {0x0000a000, 0x00010000},
1500 +       {0x0000a004, 0x00030002},
1501 +       {0x0000a008, 0x00050004},
1502 +       {0x0000a00c, 0x00810080},
1503 +       {0x0000a010, 0x00830082},
1504 +       {0x0000a014, 0x01810180},
1505 +       {0x0000a018, 0x01830182},
1506 +       {0x0000a01c, 0x01850184},
1507 +       {0x0000a020, 0x01890188},
1508 +       {0x0000a024, 0x018b018a},
1509 +       {0x0000a028, 0x018d018c},
1510 +       {0x0000a02c, 0x03820190},
1511 +       {0x0000a030, 0x03840383},
1512 +       {0x0000a034, 0x03880385},
1513 +       {0x0000a038, 0x038a0389},
1514 +       {0x0000a03c, 0x038c038b},
1515 +       {0x0000a040, 0x0390038d},
1516 +       {0x0000a044, 0x03920391},
1517 +       {0x0000a048, 0x03940393},
1518 +       {0x0000a04c, 0x03960395},
1519 +       {0x0000a050, 0x00000000},
1520 +       {0x0000a054, 0x00000000},
1521 +       {0x0000a058, 0x00000000},
1522 +       {0x0000a05c, 0x00000000},
1523 +       {0x0000a060, 0x00000000},
1524 +       {0x0000a064, 0x00000000},
1525 +       {0x0000a068, 0x00000000},
1526 +       {0x0000a06c, 0x00000000},
1527 +       {0x0000a070, 0x00000000},
1528 +       {0x0000a074, 0x00000000},
1529 +       {0x0000a078, 0x00000000},
1530 +       {0x0000a07c, 0x00000000},
1531 +       {0x0000a080, 0x29292929},
1532 +       {0x0000a084, 0x29292929},
1533 +       {0x0000a088, 0x29292929},
1534 +       {0x0000a08c, 0x29292929},
1535 +       {0x0000a090, 0x22292929},
1536 +       {0x0000a094, 0x1d1d2222},
1537 +       {0x0000a098, 0x0c111117},
1538 +       {0x0000a09c, 0x00030303},
1539 +       {0x0000a0a0, 0x00000000},
1540 +       {0x0000a0a4, 0x00000000},
1541 +       {0x0000a0a8, 0x00000000},
1542 +       {0x0000a0ac, 0x00000000},
1543 +       {0x0000a0b0, 0x00000000},
1544 +       {0x0000a0b4, 0x00000000},
1545 +       {0x0000a0b8, 0x00000000},
1546 +       {0x0000a0bc, 0x00000000},
1547 +       {0x0000a0c0, 0x001f0000},
1548 +       {0x0000a0c4, 0x01000101},
1549 +       {0x0000a0c8, 0x011e011f},
1550 +       {0x0000a0cc, 0x011c011d},
1551 +       {0x0000a0d0, 0x02030204},
1552 +       {0x0000a0d4, 0x02010202},
1553 +       {0x0000a0d8, 0x021f0200},
1554 +       {0x0000a0dc, 0x0302021e},
1555 +       {0x0000a0e0, 0x03000301},
1556 +       {0x0000a0e4, 0x031e031f},
1557 +       {0x0000a0e8, 0x0402031d},
1558 +       {0x0000a0ec, 0x04000401},
1559 +       {0x0000a0f0, 0x041e041f},
1560 +       {0x0000a0f4, 0x0502041d},
1561 +       {0x0000a0f8, 0x05000501},
1562 +       {0x0000a0fc, 0x051e051f},
1563 +       {0x0000a100, 0x06010602},
1564 +       {0x0000a104, 0x061f0600},
1565 +       {0x0000a108, 0x061d061e},
1566 +       {0x0000a10c, 0x07020703},
1567 +       {0x0000a110, 0x07000701},
1568 +       {0x0000a114, 0x00000000},
1569 +       {0x0000a118, 0x00000000},
1570 +       {0x0000a11c, 0x00000000},
1571 +       {0x0000a120, 0x00000000},
1572 +       {0x0000a124, 0x00000000},
1573 +       {0x0000a128, 0x00000000},
1574 +       {0x0000a12c, 0x00000000},
1575 +       {0x0000a130, 0x00000000},
1576 +       {0x0000a134, 0x00000000},
1577 +       {0x0000a138, 0x00000000},
1578 +       {0x0000a13c, 0x00000000},
1579 +       {0x0000a140, 0x001f0000},
1580 +       {0x0000a144, 0x01000101},
1581 +       {0x0000a148, 0x011e011f},
1582 +       {0x0000a14c, 0x011c011d},
1583 +       {0x0000a150, 0x02030204},
1584 +       {0x0000a154, 0x02010202},
1585 +       {0x0000a158, 0x021f0200},
1586 +       {0x0000a15c, 0x0302021e},
1587 +       {0x0000a160, 0x03000301},
1588 +       {0x0000a164, 0x031e031f},
1589 +       {0x0000a168, 0x0402031d},
1590 +       {0x0000a16c, 0x04000401},
1591 +       {0x0000a170, 0x041e041f},
1592 +       {0x0000a174, 0x0502041d},
1593 +       {0x0000a178, 0x05000501},
1594 +       {0x0000a17c, 0x051e051f},
1595 +       {0x0000a180, 0x06010602},
1596 +       {0x0000a184, 0x061f0600},
1597 +       {0x0000a188, 0x061d061e},
1598 +       {0x0000a18c, 0x07020703},
1599 +       {0x0000a190, 0x07000701},
1600 +       {0x0000a194, 0x00000000},
1601 +       {0x0000a198, 0x00000000},
1602 +       {0x0000a19c, 0x00000000},
1603 +       {0x0000a1a0, 0x00000000},
1604 +       {0x0000a1a4, 0x00000000},
1605 +       {0x0000a1a8, 0x00000000},
1606 +       {0x0000a1ac, 0x00000000},
1607 +       {0x0000a1b0, 0x00000000},
1608 +       {0x0000a1b4, 0x00000000},
1609 +       {0x0000a1b8, 0x00000000},
1610 +       {0x0000a1bc, 0x00000000},
1611 +       {0x0000a1c0, 0x00000000},
1612 +       {0x0000a1c4, 0x00000000},
1613 +       {0x0000a1c8, 0x00000000},
1614 +       {0x0000a1cc, 0x00000000},
1615 +       {0x0000a1d0, 0x00000000},
1616 +       {0x0000a1d4, 0x00000000},
1617 +       {0x0000a1d8, 0x00000000},
1618 +       {0x0000a1dc, 0x00000000},
1619 +       {0x0000a1e0, 0x00000000},
1620 +       {0x0000a1e4, 0x00000000},
1621 +       {0x0000a1e8, 0x00000000},
1622 +       {0x0000a1ec, 0x00000000},
1623 +       {0x0000a1f0, 0x00000396},
1624 +       {0x0000a1f4, 0x00000396},
1625 +       {0x0000a1f8, 0x00000396},
1626 +       {0x0000a1fc, 0x00000196},
1627 +       {0x0000b000, 0x00010000},
1628 +       {0x0000b004, 0x00030002},
1629 +       {0x0000b008, 0x00050004},
1630 +       {0x0000b00c, 0x00810080},
1631 +       {0x0000b010, 0x00830082},
1632 +       {0x0000b014, 0x01810180},
1633 +       {0x0000b018, 0x01830182},
1634 +       {0x0000b01c, 0x01850184},
1635 +       {0x0000b020, 0x02810280},
1636 +       {0x0000b024, 0x02830282},
1637 +       {0x0000b028, 0x02850284},
1638 +       {0x0000b02c, 0x02890288},
1639 +       {0x0000b030, 0x028b028a},
1640 +       {0x0000b034, 0x0388028c},
1641 +       {0x0000b038, 0x038a0389},
1642 +       {0x0000b03c, 0x038c038b},
1643 +       {0x0000b040, 0x0390038d},
1644 +       {0x0000b044, 0x03920391},
1645 +       {0x0000b048, 0x03940393},
1646 +       {0x0000b04c, 0x03960395},
1647 +       {0x0000b050, 0x00000000},
1648 +       {0x0000b054, 0x00000000},
1649 +       {0x0000b058, 0x00000000},
1650 +       {0x0000b05c, 0x00000000},
1651 +       {0x0000b060, 0x00000000},
1652 +       {0x0000b064, 0x00000000},
1653 +       {0x0000b068, 0x00000000},
1654 +       {0x0000b06c, 0x00000000},
1655 +       {0x0000b070, 0x00000000},
1656 +       {0x0000b074, 0x00000000},
1657 +       {0x0000b078, 0x00000000},
1658 +       {0x0000b07c, 0x00000000},
1659 +       {0x0000b080, 0x32323232},
1660 +       {0x0000b084, 0x2f2f3232},
1661 +       {0x0000b088, 0x23282a2d},
1662 +       {0x0000b08c, 0x1c1e2123},
1663 +       {0x0000b090, 0x14171919},
1664 +       {0x0000b094, 0x0e0e1214},
1665 +       {0x0000b098, 0x03050707},
1666 +       {0x0000b09c, 0x00030303},
1667 +       {0x0000b0a0, 0x00000000},
1668 +       {0x0000b0a4, 0x00000000},
1669 +       {0x0000b0a8, 0x00000000},
1670 +       {0x0000b0ac, 0x00000000},
1671 +       {0x0000b0b0, 0x00000000},
1672 +       {0x0000b0b4, 0x00000000},
1673 +       {0x0000b0b8, 0x00000000},
1674 +       {0x0000b0bc, 0x00000000},
1675 +       {0x0000b0c0, 0x003f0020},
1676 +       {0x0000b0c4, 0x00400041},
1677 +       {0x0000b0c8, 0x0140005f},
1678 +       {0x0000b0cc, 0x0160015f},
1679 +       {0x0000b0d0, 0x017e017f},
1680 +       {0x0000b0d4, 0x02410242},
1681 +       {0x0000b0d8, 0x025f0240},
1682 +       {0x0000b0dc, 0x027f0260},
1683 +       {0x0000b0e0, 0x0341027e},
1684 +       {0x0000b0e4, 0x035f0340},
1685 +       {0x0000b0e8, 0x037f0360},
1686 +       {0x0000b0ec, 0x04400441},
1687 +       {0x0000b0f0, 0x0460045f},
1688 +       {0x0000b0f4, 0x0541047f},
1689 +       {0x0000b0f8, 0x055f0540},
1690 +       {0x0000b0fc, 0x057f0560},
1691 +       {0x0000b100, 0x06400641},
1692 +       {0x0000b104, 0x0660065f},
1693 +       {0x0000b108, 0x067e067f},
1694 +       {0x0000b10c, 0x07410742},
1695 +       {0x0000b110, 0x075f0740},
1696 +       {0x0000b114, 0x077f0760},
1697 +       {0x0000b118, 0x07800781},
1698 +       {0x0000b11c, 0x07a0079f},
1699 +       {0x0000b120, 0x07c107bf},
1700 +       {0x0000b124, 0x000007c0},
1701 +       {0x0000b128, 0x00000000},
1702 +       {0x0000b12c, 0x00000000},
1703 +       {0x0000b130, 0x00000000},
1704 +       {0x0000b134, 0x00000000},
1705 +       {0x0000b138, 0x00000000},
1706 +       {0x0000b13c, 0x00000000},
1707 +       {0x0000b140, 0x003f0020},
1708 +       {0x0000b144, 0x00400041},
1709 +       {0x0000b148, 0x0140005f},
1710 +       {0x0000b14c, 0x0160015f},
1711 +       {0x0000b150, 0x017e017f},
1712 +       {0x0000b154, 0x02410242},
1713 +       {0x0000b158, 0x025f0240},
1714 +       {0x0000b15c, 0x027f0260},
1715 +       {0x0000b160, 0x0341027e},
1716 +       {0x0000b164, 0x035f0340},
1717 +       {0x0000b168, 0x037f0360},
1718 +       {0x0000b16c, 0x04400441},
1719 +       {0x0000b170, 0x0460045f},
1720 +       {0x0000b174, 0x0541047f},
1721 +       {0x0000b178, 0x055f0540},
1722 +       {0x0000b17c, 0x057f0560},
1723 +       {0x0000b180, 0x06400641},
1724 +       {0x0000b184, 0x0660065f},
1725 +       {0x0000b188, 0x067e067f},
1726 +       {0x0000b18c, 0x07410742},
1727 +       {0x0000b190, 0x075f0740},
1728 +       {0x0000b194, 0x077f0760},
1729 +       {0x0000b198, 0x07800781},
1730 +       {0x0000b19c, 0x07a0079f},
1731 +       {0x0000b1a0, 0x07c107bf},
1732 +       {0x0000b1a4, 0x000007c0},
1733 +       {0x0000b1a8, 0x00000000},
1734 +       {0x0000b1ac, 0x00000000},
1735 +       {0x0000b1b0, 0x00000000},
1736 +       {0x0000b1b4, 0x00000000},
1737 +       {0x0000b1b8, 0x00000000},
1738 +       {0x0000b1bc, 0x00000000},
1739 +       {0x0000b1c0, 0x00000000},
1740 +       {0x0000b1c4, 0x00000000},
1741 +       {0x0000b1c8, 0x00000000},
1742 +       {0x0000b1cc, 0x00000000},
1743 +       {0x0000b1d0, 0x00000000},
1744 +       {0x0000b1d4, 0x00000000},
1745 +       {0x0000b1d8, 0x00000000},
1746 +       {0x0000b1dc, 0x00000000},
1747 +       {0x0000b1e0, 0x00000000},
1748 +       {0x0000b1e4, 0x00000000},
1749 +       {0x0000b1e8, 0x00000000},
1750 +       {0x0000b1ec, 0x00000000},
1751 +       {0x0000b1f0, 0x00000396},
1752 +       {0x0000b1f4, 0x00000396},
1753 +       {0x0000b1f8, 0x00000396},
1754 +       {0x0000b1fc, 0x00000196},
1755 +};
1756 +
1757 +static const u32 ar9300_2p0_soc_preamble[][2] = {
1758 +       /* Addr      allmodes  */
1759 +       {0x000040a4, 0x00a0c1c9},
1760 +       {0x00007008, 0x00000000},
1761 +       {0x00007020, 0x00000000},
1762 +       {0x00007034, 0x00000002},
1763 +       {0x00007038, 0x000004c2},
1764 +};
1765 +
1766 +static const u32 ar9300PciePhy_pll_on_clkreq_disable_L1_2p0[][2] = {
1767 +       /* Addr      allmodes  */
1768 +       {0x00004040, 0x08212e5e},
1769 +       {0x00004040, 0x0008003b},
1770 +       {0x00004044, 0x00000000},
1771 +};
1772 +
1773 +static const u32 ar9300PciePhy_clkreq_enable_L1_2p0[][2] = {
1774 +       /* Addr      allmodes  */
1775 +       {0x00004040, 0x08253e5e},
1776 +       {0x00004040, 0x0008003b},
1777 +       {0x00004044, 0x00000000},
1778 +};
1779 +
1780 +static const u32 ar9300PciePhy_clkreq_disable_L1_2p0[][2] = {
1781 +       /* Addr      allmodes  */
1782 +       {0x00004040, 0x08213e5e},
1783 +       {0x00004040, 0x0008003b},
1784 +       {0x00004044, 0x00000000},
1785 +};
1786 +
1787 +#endif /* INITVALS_9003_2P0_H */
1788 --- /dev/null
1789 +++ b/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
1790 @@ -0,0 +1,1785 @@
1791 +/*
1792 + * Copyright (c) 2010 Atheros Communications Inc.
1793 + *
1794 + * Permission to use, copy, modify, and/or distribute this software for any
1795 + * purpose with or without fee is hereby granted, provided that the above
1796 + * copyright notice and this permission notice appear in all copies.
1797 + *
1798 + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1799 + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1800 + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1801 + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1802 + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1803 + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1804 + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1805 + */
1806 +
1807 +#ifndef INITVALS_9003_2P2_H
1808 +#define INITVALS_9003_2P2_H
1809 +
1810 +/* AR9003 2.2 */
1811 +
1812 +static const u32 ar9300_2p2_radio_postamble[][5] = {
1813 +       /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */
1814 +       {0x0001609c, 0x0dd08f29, 0x0dd08f29, 0x0b283f31, 0x0b283f31},
1815 +       {0x000160ac, 0xa4653c00, 0xa4653c00, 0x24652800, 0x24652800},
1816 +       {0x000160b0, 0x03284f3e, 0x03284f3e, 0x05d08f20, 0x05d08f20},
1817 +       {0x0001610c, 0x08000000, 0x00000000, 0x00000000, 0x00000000},
1818 +       {0x00016140, 0x10804008, 0x10804008, 0x50804008, 0x50804008},
1819 +       {0x0001650c, 0x08000000, 0x00000000, 0x00000000, 0x00000000},
1820 +       {0x00016540, 0x10804008, 0x10804008, 0x50804008, 0x50804008},
1821 +       {0x0001690c, 0x08000000, 0x00000000, 0x00000000, 0x00000000},
1822 +       {0x00016940, 0x10804008, 0x10804008, 0x50804008, 0x50804008},
1823 +};
1824 +
1825 +static const u32 ar9300Modes_lowest_ob_db_tx_gain_table_2p2[][5] = {
1826 +       /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */
1827 +       {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9},
1828 +       {0x0000a500, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
1829 +       {0x0000a504, 0x06000003, 0x06000003, 0x04000002, 0x04000002},
1830 +       {0x0000a508, 0x0a000020, 0x0a000020, 0x08000004, 0x08000004},
1831 +       {0x0000a50c, 0x10000023, 0x10000023, 0x0b000200, 0x0b000200},
1832 +       {0x0000a510, 0x16000220, 0x16000220, 0x0f000202, 0x0f000202},
1833 +       {0x0000a514, 0x1c000223, 0x1c000223, 0x12000400, 0x12000400},
1834 +       {0x0000a518, 0x21002220, 0x21002220, 0x16000402, 0x16000402},
1835 +       {0x0000a51c, 0x27002223, 0x27002223, 0x19000404, 0x19000404},
1836 +       {0x0000a520, 0x2b022220, 0x2b022220, 0x1c000603, 0x1c000603},
1837 +       {0x0000a524, 0x2f022222, 0x2f022222, 0x21000a02, 0x21000a02},
1838 +       {0x0000a528, 0x34022225, 0x34022225, 0x25000a04, 0x25000a04},
1839 +       {0x0000a52c, 0x3a02222a, 0x3a02222a, 0x28000a20, 0x28000a20},
1840 +       {0x0000a530, 0x3e02222c, 0x3e02222c, 0x2c000e20, 0x2c000e20},
1841 +       {0x0000a534, 0x4202242a, 0x4202242a, 0x30000e22, 0x30000e22},
1842 +       {0x0000a538, 0x4702244a, 0x4702244a, 0x34000e24, 0x34000e24},
1843 +       {0x0000a53c, 0x4b02244c, 0x4b02244c, 0x38001640, 0x38001640},
1844 +       {0x0000a540, 0x4e02246c, 0x4e02246c, 0x3c001660, 0x3c001660},
1845 +       {0x0000a544, 0x5302266c, 0x5302266c, 0x3f001861, 0x3f001861},
1846 +       {0x0000a548, 0x5702286c, 0x5702286c, 0x43001a81, 0x43001a81},
1847 +       {0x0000a54c, 0x5c02486b, 0x5c02486b, 0x47001a83, 0x47001a83},
1848 +       {0x0000a550, 0x61024a6c, 0x61024a6c, 0x4a001c84, 0x4a001c84},
1849 +       {0x0000a554, 0x66026a6c, 0x66026a6c, 0x4e001ce3, 0x4e001ce3},
1850 +       {0x0000a558, 0x6b026e6c, 0x6b026e6c, 0x52001ce5, 0x52001ce5},
1851 +       {0x0000a55c, 0x7002708c, 0x7002708c, 0x56001ce9, 0x56001ce9},
1852 +       {0x0000a560, 0x7302b08a, 0x7302b08a, 0x5a001ceb, 0x5a001ceb},
1853 +       {0x0000a564, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec},
1854 +       {0x0000a568, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec},
1855 +       {0x0000a56c, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec},
1856 +       {0x0000a570, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec},
1857 +       {0x0000a574, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec},
1858 +       {0x0000a578, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec},
1859 +       {0x0000a57c, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec},
1860 +       {0x0000a580, 0x00800000, 0x00800000, 0x00800000, 0x00800000},
1861 +       {0x0000a584, 0x06800003, 0x06800003, 0x04800002, 0x04800002},
1862 +       {0x0000a588, 0x0a800020, 0x0a800020, 0x08800004, 0x08800004},
1863 +       {0x0000a58c, 0x10800023, 0x10800023, 0x0b800200, 0x0b800200},
1864 +       {0x0000a590, 0x16800220, 0x16800220, 0x0f800202, 0x0f800202},
1865 +       {0x0000a594, 0x1c800223, 0x1c800223, 0x12800400, 0x12800400},
1866 +       {0x0000a598, 0x21802220, 0x21802220, 0x16800402, 0x16800402},
1867 +       {0x0000a59c, 0x27802223, 0x27802223, 0x19800404, 0x19800404},
1868 +       {0x0000a5a0, 0x2b822220, 0x2b822220, 0x1c800603, 0x1c800603},
1869 +       {0x0000a5a4, 0x2f822222, 0x2f822222, 0x21800a02, 0x21800a02},
1870 +       {0x0000a5a8, 0x34822225, 0x34822225, 0x25800a04, 0x25800a04},
1871 +       {0x0000a5ac, 0x3a82222a, 0x3a82222a, 0x28800a20, 0x28800a20},
1872 +       {0x0000a5b0, 0x3e82222c, 0x3e82222c, 0x2c800e20, 0x2c800e20},
1873 +       {0x0000a5b4, 0x4282242a, 0x4282242a, 0x30800e22, 0x30800e22},
1874 +       {0x0000a5b8, 0x4782244a, 0x4782244a, 0x34800e24, 0x34800e24},
1875 +       {0x0000a5bc, 0x4b82244c, 0x4b82244c, 0x38801640, 0x38801640},
1876 +       {0x0000a5c0, 0x4e82246c, 0x4e82246c, 0x3c801660, 0x3c801660},
1877 +       {0x0000a5c4, 0x5382266c, 0x5382266c, 0x3f801861, 0x3f801861},
1878 +       {0x0000a5c8, 0x5782286c, 0x5782286c, 0x43801a81, 0x43801a81},
1879 +       {0x0000a5cc, 0x5c82486b, 0x5c82486b, 0x47801a83, 0x47801a83},
1880 +       {0x0000a5d0, 0x61824a6c, 0x61824a6c, 0x4a801c84, 0x4a801c84},
1881 +       {0x0000a5d4, 0x66826a6c, 0x66826a6c, 0x4e801ce3, 0x4e801ce3},
1882 +       {0x0000a5d8, 0x6b826e6c, 0x6b826e6c, 0x52801ce5, 0x52801ce5},
1883 +       {0x0000a5dc, 0x7082708c, 0x7082708c, 0x56801ce9, 0x56801ce9},
1884 +       {0x0000a5e0, 0x7382b08a, 0x7382b08a, 0x5a801ceb, 0x5a801ceb},
1885 +       {0x0000a5e4, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec},
1886 +       {0x0000a5e8, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec},
1887 +       {0x0000a5ec, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec},
1888 +       {0x0000a5f0, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec},
1889 +       {0x0000a5f4, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec},
1890 +       {0x0000a5f8, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec},
1891 +       {0x0000a5fc, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec},
1892 +       {0x00016044, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4},
1893 +       {0x00016048, 0x62480001, 0x62480001, 0x62480001, 0x62480001},
1894 +       {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
1895 +       {0x00016444, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4},
1896 +       {0x00016448, 0x62480001, 0x62480001, 0x62480001, 0x62480001},
1897 +       {0x00016468, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
1898 +       {0x00016844, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4},
1899 +       {0x00016848, 0x62480001, 0x62480001, 0x62480001, 0x62480001},
1900 +       {0x00016868, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
1901 +};
1902 +
1903 +static const u32 ar9300Modes_fast_clock_2p2[][3] = {
1904 +       /* Addr      5G_HT20     5G_HT40   */
1905 +       {0x00001030, 0x00000268, 0x000004d0},
1906 +       {0x00001070, 0x0000018c, 0x00000318},
1907 +       {0x000010b0, 0x00000fd0, 0x00001fa0},
1908 +       {0x00008014, 0x044c044c, 0x08980898},
1909 +       {0x0000801c, 0x148ec02b, 0x148ec057},
1910 +       {0x00008318, 0x000044c0, 0x00008980},
1911 +       {0x00009e00, 0x03721821, 0x03721821},
1912 +       {0x0000a230, 0x0000000b, 0x00000016},
1913 +       {0x0000a254, 0x00000898, 0x00001130},
1914 +};
1915 +
1916 +static const u32 ar9300_2p2_radio_core[][2] = {
1917 +       /* Addr      allmodes  */
1918 +       {0x00016000, 0x36db6db6},
1919 +       {0x00016004, 0x6db6db40},
1920 +       {0x00016008, 0x73f00000},
1921 +       {0x0001600c, 0x00000000},
1922 +       {0x00016040, 0x7f80fff8},
1923 +       {0x0001604c, 0x76d005b5},
1924 +       {0x00016050, 0x556cf031},
1925 +       {0x00016054, 0x13449440},
1926 +       {0x00016058, 0x0c51c92c},
1927 +       {0x0001605c, 0x3db7fffc},
1928 +       {0x00016060, 0xfffffffc},
1929 +       {0x00016064, 0x000f0278},
1930 +       {0x0001606c, 0x6db60000},
1931 +       {0x00016080, 0x00000000},
1932 +       {0x00016084, 0x0e48048c},
1933 +       {0x00016088, 0x54214514},
1934 +       {0x0001608c, 0x119f481e},
1935 +       {0x00016090, 0x24926490},
1936 +       {0x00016098, 0xd2888888},
1937 +       {0x000160a0, 0x0a108ffe},
1938 +       {0x000160a4, 0x812fc370},
1939 +       {0x000160a8, 0x423c8000},
1940 +       {0x000160b4, 0x92480080},
1941 +       {0x000160c0, 0x00adb6d0},
1942 +       {0x000160c4, 0x6db6db60},
1943 +       {0x000160c8, 0x6db6db6c},
1944 +       {0x000160cc, 0x01e6c000},
1945 +       {0x00016100, 0x3fffbe01},
1946 +       {0x00016104, 0xfff80000},
1947 +       {0x00016108, 0x00080010},
1948 +       {0x00016144, 0x02084080},
1949 +       {0x00016148, 0x00000000},
1950 +       {0x00016280, 0x058a0001},
1951 +       {0x00016284, 0x3d840208},
1952 +       {0x00016288, 0x05a20408},
1953 +       {0x0001628c, 0x00038c07},
1954 +       {0x00016290, 0x00000004},
1955 +       {0x00016294, 0x458aa14f},
1956 +       {0x00016380, 0x00000000},
1957 +       {0x00016384, 0x00000000},
1958 +       {0x00016388, 0x00800700},
1959 +       {0x0001638c, 0x00800700},
1960 +       {0x00016390, 0x00800700},
1961 +       {0x00016394, 0x00000000},
1962 +       {0x00016398, 0x00000000},
1963 +       {0x0001639c, 0x00000000},
1964 +       {0x000163a0, 0x00000001},
1965 +       {0x000163a4, 0x00000001},
1966 +       {0x000163a8, 0x00000000},
1967 +       {0x000163ac, 0x00000000},
1968 +       {0x000163b0, 0x00000000},
1969 +       {0x000163b4, 0x00000000},
1970 +       {0x000163b8, 0x00000000},
1971 +       {0x000163bc, 0x00000000},
1972 +       {0x000163c0, 0x000000a0},
1973 +       {0x000163c4, 0x000c0000},
1974 +       {0x000163c8, 0x14021402},
1975 +       {0x000163cc, 0x00001402},
1976 +       {0x000163d0, 0x00000000},
1977 +       {0x000163d4, 0x00000000},
1978 +       {0x00016400, 0x36db6db6},
1979 +       {0x00016404, 0x6db6db40},
1980 +       {0x00016408, 0x73f00000},
1981 +       {0x0001640c, 0x00000000},
1982 +       {0x00016440, 0x7f80fff8},
1983 +       {0x0001644c, 0x76d005b5},
1984 +       {0x00016450, 0x556cf031},
1985 +       {0x00016454, 0x13449440},
1986 +       {0x00016458, 0x0c51c92c},
1987 +       {0x0001645c, 0x3db7fffc},
1988 +       {0x00016460, 0xfffffffc},
1989 +       {0x00016464, 0x000f0278},
1990 +       {0x0001646c, 0x6db60000},
1991 +       {0x00016500, 0x3fffbe01},
1992 +       {0x00016504, 0xfff80000},
1993 +       {0x00016508, 0x00080010},
1994 +       {0x00016544, 0x02084080},
1995 +       {0x00016548, 0x00000000},
1996 +       {0x00016780, 0x00000000},
1997 +       {0x00016784, 0x00000000},
1998 +       {0x00016788, 0x00800700},
1999 +       {0x0001678c, 0x00800700},
2000 +       {0x00016790, 0x00800700},
2001 +       {0x00016794, 0x00000000},
2002 +       {0x00016798, 0x00000000},
2003 +       {0x0001679c, 0x00000000},
2004 +       {0x000167a0, 0x00000001},
2005 +       {0x000167a4, 0x00000001},
2006 +       {0x000167a8, 0x00000000},
2007 +       {0x000167ac, 0x00000000},
2008 +       {0x000167b0, 0x00000000},
2009 +       {0x000167b4, 0x00000000},
2010 +       {0x000167b8, 0x00000000},
2011 +       {0x000167bc, 0x00000000},
2012 +       {0x000167c0, 0x000000a0},
2013 +       {0x000167c4, 0x000c0000},
2014 +       {0x000167c8, 0x14021402},
2015 +       {0x000167cc, 0x00001402},
2016 +       {0x000167d0, 0x00000000},
2017 +       {0x000167d4, 0x00000000},
2018 +       {0x00016800, 0x36db6db6},
2019 +       {0x00016804, 0x6db6db40},
2020 +       {0x00016808, 0x73f00000},
2021 +       {0x0001680c, 0x00000000},
2022 +       {0x00016840, 0x7f80fff8},
2023 +       {0x0001684c, 0x76d005b5},
2024 +       {0x00016850, 0x556cf031},
2025 +       {0x00016854, 0x13449440},
2026 +       {0x00016858, 0x0c51c92c},
2027 +       {0x0001685c, 0x3db7fffc},
2028 +       {0x00016860, 0xfffffffc},
2029 +       {0x00016864, 0x000f0278},
2030 +       {0x0001686c, 0x6db60000},
2031 +       {0x00016900, 0x3fffbe01},
2032 +       {0x00016904, 0xfff80000},
2033 +       {0x00016908, 0x00080010},
2034 +       {0x00016944, 0x02084080},
2035 +       {0x00016948, 0x00000000},
2036 +       {0x00016b80, 0x00000000},
2037 +       {0x00016b84, 0x00000000},
2038 +       {0x00016b88, 0x00800700},
2039 +       {0x00016b8c, 0x00800700},
2040 +       {0x00016b90, 0x00800700},
2041 +       {0x00016b94, 0x00000000},
2042 +       {0x00016b98, 0x00000000},
2043 +       {0x00016b9c, 0x00000000},
2044 +       {0x00016ba0, 0x00000001},
2045 +       {0x00016ba4, 0x00000001},
2046 +       {0x00016ba8, 0x00000000},
2047 +       {0x00016bac, 0x00000000},
2048 +       {0x00016bb0, 0x00000000},
2049 +       {0x00016bb4, 0x00000000},
2050 +       {0x00016bb8, 0x00000000},
2051 +       {0x00016bbc, 0x00000000},
2052 +       {0x00016bc0, 0x000000a0},
2053 +       {0x00016bc4, 0x000c0000},
2054 +       {0x00016bc8, 0x14021402},
2055 +       {0x00016bcc, 0x00001402},
2056 +       {0x00016bd0, 0x00000000},
2057 +       {0x00016bd4, 0x00000000},
2058 +};
2059 +
2060 +static const u32 ar9300Common_rx_gain_table_merlin_2p2[][2] = {
2061 +       /* Addr      allmodes  */
2062 +       {0x0000a000, 0x02000101},
2063 +       {0x0000a004, 0x02000102},
2064 +       {0x0000a008, 0x02000103},
2065 +       {0x0000a00c, 0x02000104},
2066 +       {0x0000a010, 0x02000200},
2067 +       {0x0000a014, 0x02000201},
2068 +       {0x0000a018, 0x02000202},
2069 +       {0x0000a01c, 0x02000203},
2070 +       {0x0000a020, 0x02000204},
2071 +       {0x0000a024, 0x02000205},
2072 +       {0x0000a028, 0x02000208},
2073 +       {0x0000a02c, 0x02000302},
2074 +       {0x0000a030, 0x02000303},
2075 +       {0x0000a034, 0x02000304},
2076 +       {0x0000a038, 0x02000400},
2077 +       {0x0000a03c, 0x02010300},
2078 +       {0x0000a040, 0x02010301},
2079 +       {0x0000a044, 0x02010302},
2080 +       {0x0000a048, 0x02000500},
2081 +       {0x0000a04c, 0x02010400},
2082 +       {0x0000a050, 0x02020300},
2083 +       {0x0000a054, 0x02020301},
2084 +       {0x0000a058, 0x02020302},
2085 +       {0x0000a05c, 0x02020303},
2086 +       {0x0000a060, 0x02020400},
2087 +       {0x0000a064, 0x02030300},
2088 +       {0x0000a068, 0x02030301},
2089 +       {0x0000a06c, 0x02030302},
2090 +       {0x0000a070, 0x02030303},
2091 +       {0x0000a074, 0x02030400},
2092 +       {0x0000a078, 0x02040300},
2093 +       {0x0000a07c, 0x02040301},
2094 +       {0x0000a080, 0x02040302},
2095 +       {0x0000a084, 0x02040303},
2096 +       {0x0000a088, 0x02030500},
2097 +       {0x0000a08c, 0x02040400},
2098 +       {0x0000a090, 0x02050203},
2099 +       {0x0000a094, 0x02050204},
2100 +       {0x0000a098, 0x02050205},
2101 +       {0x0000a09c, 0x02040500},
2102 +       {0x0000a0a0, 0x02050301},
2103 +       {0x0000a0a4, 0x02050302},
2104 +       {0x0000a0a8, 0x02050303},
2105 +       {0x0000a0ac, 0x02050400},
2106 +       {0x0000a0b0, 0x02050401},
2107 +       {0x0000a0b4, 0x02050402},
2108 +       {0x0000a0b8, 0x02050403},
2109 +       {0x0000a0bc, 0x02050500},
2110 +       {0x0000a0c0, 0x02050501},
2111 +       {0x0000a0c4, 0x02050502},
2112 +       {0x0000a0c8, 0x02050503},
2113 +       {0x0000a0cc, 0x02050504},
2114 +       {0x0000a0d0, 0x02050600},
2115 +       {0x0000a0d4, 0x02050601},
2116 +       {0x0000a0d8, 0x02050602},
2117 +       {0x0000a0dc, 0x02050603},
2118 +       {0x0000a0e0, 0x02050604},
2119 +       {0x0000a0e4, 0x02050700},
2120 +       {0x0000a0e8, 0x02050701},
2121 +       {0x0000a0ec, 0x02050702},
2122 +       {0x0000a0f0, 0x02050703},
2123 +       {0x0000a0f4, 0x02050704},
2124 +       {0x0000a0f8, 0x02050705},
2125 +       {0x0000a0fc, 0x02050708},
2126 +       {0x0000a100, 0x02050709},
2127 +       {0x0000a104, 0x0205070a},
2128 +       {0x0000a108, 0x0205070b},
2129 +       {0x0000a10c, 0x0205070c},
2130 +       {0x0000a110, 0x0205070d},
2131 +       {0x0000a114, 0x02050710},
2132 +       {0x0000a118, 0x02050711},
2133 +       {0x0000a11c, 0x02050712},
2134 +       {0x0000a120, 0x02050713},
2135 +       {0x0000a124, 0x02050714},
2136 +       {0x0000a128, 0x02050715},
2137 +       {0x0000a12c, 0x02050730},
2138 +       {0x0000a130, 0x02050731},
2139 +       {0x0000a134, 0x02050732},
2140 +       {0x0000a138, 0x02050733},
2141 +       {0x0000a13c, 0x02050734},
2142 +       {0x0000a140, 0x02050735},
2143 +       {0x0000a144, 0x02050750},
2144 +       {0x0000a148, 0x02050751},
2145 +       {0x0000a14c, 0x02050752},
2146 +       {0x0000a150, 0x02050753},
2147 +       {0x0000a154, 0x02050754},
2148 +       {0x0000a158, 0x02050755},
2149 +       {0x0000a15c, 0x02050770},
2150 +       {0x0000a160, 0x02050771},
2151 +       {0x0000a164, 0x02050772},
2152 +       {0x0000a168, 0x02050773},
2153 +       {0x0000a16c, 0x02050774},
2154 +       {0x0000a170, 0x02050775},
2155 +       {0x0000a174, 0x00000776},
2156 +       {0x0000a178, 0x00000776},
2157 +       {0x0000a17c, 0x00000776},
2158 +       {0x0000a180, 0x00000776},
2159 +       {0x0000a184, 0x00000776},
2160 +       {0x0000a188, 0x00000776},
2161 +       {0x0000a18c, 0x00000776},
2162 +       {0x0000a190, 0x00000776},
2163 +       {0x0000a194, 0x00000776},
2164 +       {0x0000a198, 0x00000776},
2165 +       {0x0000a19c, 0x00000776},
2166 +       {0x0000a1a0, 0x00000776},
2167 +       {0x0000a1a4, 0x00000776},
2168 +       {0x0000a1a8, 0x00000776},
2169 +       {0x0000a1ac, 0x00000776},
2170 +       {0x0000a1b0, 0x00000776},
2171 +       {0x0000a1b4, 0x00000776},
2172 +       {0x0000a1b8, 0x00000776},
2173 +       {0x0000a1bc, 0x00000776},
2174 +       {0x0000a1c0, 0x00000776},
2175 +       {0x0000a1c4, 0x00000776},
2176 +       {0x0000a1c8, 0x00000776},
2177 +       {0x0000a1cc, 0x00000776},
2178 +       {0x0000a1d0, 0x00000776},
2179 +       {0x0000a1d4, 0x00000776},
2180 +       {0x0000a1d8, 0x00000776},
2181 +       {0x0000a1dc, 0x00000776},
2182 +       {0x0000a1e0, 0x00000776},
2183 +       {0x0000a1e4, 0x00000776},
2184 +       {0x0000a1e8, 0x00000776},
2185 +       {0x0000a1ec, 0x00000776},
2186 +       {0x0000a1f0, 0x00000776},
2187 +       {0x0000a1f4, 0x00000776},
2188 +       {0x0000a1f8, 0x00000776},
2189 +       {0x0000a1fc, 0x00000776},
2190 +       {0x0000b000, 0x02000101},
2191 +       {0x0000b004, 0x02000102},
2192 +       {0x0000b008, 0x02000103},
2193 +       {0x0000b00c, 0x02000104},
2194 +       {0x0000b010, 0x02000200},
2195 +       {0x0000b014, 0x02000201},
2196 +       {0x0000b018, 0x02000202},
2197 +       {0x0000b01c, 0x02000203},
2198 +       {0x0000b020, 0x02000204},
2199 +       {0x0000b024, 0x02000205},
2200 +       {0x0000b028, 0x02000208},
2201 +       {0x0000b02c, 0x02000302},
2202 +       {0x0000b030, 0x02000303},
2203 +       {0x0000b034, 0x02000304},
2204 +       {0x0000b038, 0x02000400},
2205 +       {0x0000b03c, 0x02010300},
2206 +       {0x0000b040, 0x02010301},
2207 +       {0x0000b044, 0x02010302},
2208 +       {0x0000b048, 0x02000500},
2209 +       {0x0000b04c, 0x02010400},
2210 +       {0x0000b050, 0x02020300},
2211 +       {0x0000b054, 0x02020301},
2212 +       {0x0000b058, 0x02020302},
2213 +       {0x0000b05c, 0x02020303},
2214 +       {0x0000b060, 0x02020400},
2215 +       {0x0000b064, 0x02030300},
2216 +       {0x0000b068, 0x02030301},
2217 +       {0x0000b06c, 0x02030302},
2218 +       {0x0000b070, 0x02030303},
2219 +       {0x0000b074, 0x02030400},
2220 +       {0x0000b078, 0x02040300},
2221 +       {0x0000b07c, 0x02040301},
2222 +       {0x0000b080, 0x02040302},
2223 +       {0x0000b084, 0x02040303},
2224 +       {0x0000b088, 0x02030500},
2225 +       {0x0000b08c, 0x02040400},
2226 +       {0x0000b090, 0x02050203},
2227 +       {0x0000b094, 0x02050204},
2228 +       {0x0000b098, 0x02050205},
2229 +       {0x0000b09c, 0x02040500},
2230 +       {0x0000b0a0, 0x02050301},
2231 +       {0x0000b0a4, 0x02050302},
2232 +       {0x0000b0a8, 0x02050303},
2233 +       {0x0000b0ac, 0x02050400},
2234 +       {0x0000b0b0, 0x02050401},
2235 +       {0x0000b0b4, 0x02050402},
2236 +       {0x0000b0b8, 0x02050403},
2237 +       {0x0000b0bc, 0x02050500},
2238 +       {0x0000b0c0, 0x02050501},
2239 +       {0x0000b0c4, 0x02050502},
2240 +       {0x0000b0c8, 0x02050503},
2241 +       {0x0000b0cc, 0x02050504},
2242 +       {0x0000b0d0, 0x02050600},
2243 +       {0x0000b0d4, 0x02050601},
2244 +       {0x0000b0d8, 0x02050602},
2245 +       {0x0000b0dc, 0x02050603},
2246 +       {0x0000b0e0, 0x02050604},
2247 +       {0x0000b0e4, 0x02050700},
2248 +       {0x0000b0e8, 0x02050701},
2249 +       {0x0000b0ec, 0x02050702},
2250 +       {0x0000b0f0, 0x02050703},
2251 +       {0x0000b0f4, 0x02050704},
2252 +       {0x0000b0f8, 0x02050705},
2253 +       {0x0000b0fc, 0x02050708},
2254 +       {0x0000b100, 0x02050709},
2255 +       {0x0000b104, 0x0205070a},
2256 +       {0x0000b108, 0x0205070b},
2257 +       {0x0000b10c, 0x0205070c},
2258 +       {0x0000b110, 0x0205070d},
2259 +       {0x0000b114, 0x02050710},
2260 +       {0x0000b118, 0x02050711},
2261 +       {0x0000b11c, 0x02050712},
2262 +       {0x0000b120, 0x02050713},
2263 +       {0x0000b124, 0x02050714},
2264 +       {0x0000b128, 0x02050715},
2265 +       {0x0000b12c, 0x02050730},
2266 +       {0x0000b130, 0x02050731},
2267 +       {0x0000b134, 0x02050732},
2268 +       {0x0000b138, 0x02050733},
2269 +       {0x0000b13c, 0x02050734},
2270 +       {0x0000b140, 0x02050735},
2271 +       {0x0000b144, 0x02050750},
2272 +       {0x0000b148, 0x02050751},
2273 +       {0x0000b14c, 0x02050752},
2274 +       {0x0000b150, 0x02050753},
2275 +       {0x0000b154, 0x02050754},
2276 +       {0x0000b158, 0x02050755},
2277 +       {0x0000b15c, 0x02050770},
2278 +       {0x0000b160, 0x02050771},
2279 +       {0x0000b164, 0x02050772},
2280 +       {0x0000b168, 0x02050773},
2281 +       {0x0000b16c, 0x02050774},
2282 +       {0x0000b170, 0x02050775},
2283 +       {0x0000b174, 0x00000776},
2284 +       {0x0000b178, 0x00000776},
2285 +       {0x0000b17c, 0x00000776},
2286 +       {0x0000b180, 0x00000776},
2287 +       {0x0000b184, 0x00000776},
2288 +       {0x0000b188, 0x00000776},
2289 +       {0x0000b18c, 0x00000776},
2290 +       {0x0000b190, 0x00000776},
2291 +       {0x0000b194, 0x00000776},
2292 +       {0x0000b198, 0x00000776},
2293 +       {0x0000b19c, 0x00000776},
2294 +       {0x0000b1a0, 0x00000776},
2295 +       {0x0000b1a4, 0x00000776},
2296 +       {0x0000b1a8, 0x00000776},
2297 +       {0x0000b1ac, 0x00000776},
2298 +       {0x0000b1b0, 0x00000776},
2299 +       {0x0000b1b4, 0x00000776},
2300 +       {0x0000b1b8, 0x00000776},
2301 +       {0x0000b1bc, 0x00000776},
2302 +       {0x0000b1c0, 0x00000776},
2303 +       {0x0000b1c4, 0x00000776},
2304 +       {0x0000b1c8, 0x00000776},
2305 +       {0x0000b1cc, 0x00000776},
2306 +       {0x0000b1d0, 0x00000776},
2307 +       {0x0000b1d4, 0x00000776},
2308 +       {0x0000b1d8, 0x00000776},
2309 +       {0x0000b1dc, 0x00000776},
2310 +       {0x0000b1e0, 0x00000776},
2311 +       {0x0000b1e4, 0x00000776},
2312 +       {0x0000b1e8, 0x00000776},
2313 +       {0x0000b1ec, 0x00000776},
2314 +       {0x0000b1f0, 0x00000776},
2315 +       {0x0000b1f4, 0x00000776},
2316 +       {0x0000b1f8, 0x00000776},
2317 +       {0x0000b1fc, 0x00000776},
2318 +};
2319 +
2320 +static const u32 ar9300_2p2_mac_postamble[][5] = {
2321 +       /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */
2322 +       {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160},
2323 +       {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c},
2324 +       {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38},
2325 +       {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00},
2326 +       {0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b},
2327 +       {0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810},
2328 +       {0x000081d0, 0x00003210, 0x00003210, 0x0000320a, 0x0000320a},
2329 +       {0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440},
2330 +};
2331 +
2332 +static const u32 ar9300_2p2_soc_postamble[][5] = {
2333 +       /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */
2334 +       {0x00007010, 0x00000023, 0x00000023, 0x00000023, 0x00000023},
2335 +};
2336 +
2337 +static const u32 ar9200_merlin_2p2_radio_core[][2] = {
2338 +       /* Addr      allmodes  */
2339 +       {0x00007800, 0x00040000},
2340 +       {0x00007804, 0xdb005012},
2341 +       {0x00007808, 0x04924914},
2342 +       {0x0000780c, 0x21084210},
2343 +       {0x00007810, 0x6d801300},
2344 +       {0x00007814, 0x0019beff},
2345 +       {0x00007818, 0x07e41000},
2346 +       {0x0000781c, 0x00392000},
2347 +       {0x00007820, 0x92592480},
2348 +       {0x00007824, 0x00040000},
2349 +       {0x00007828, 0xdb005012},
2350 +       {0x0000782c, 0x04924914},
2351 +       {0x00007830, 0x21084210},
2352 +       {0x00007834, 0x6d801300},
2353 +       {0x00007838, 0x0019beff},
2354 +       {0x0000783c, 0x07e40000},
2355 +       {0x00007840, 0x00392000},
2356 +       {0x00007844, 0x92592480},
2357 +       {0x00007848, 0x00100000},
2358 +       {0x0000784c, 0x773f0567},
2359 +       {0x00007850, 0x54214514},
2360 +       {0x00007854, 0x12035828},
2361 +       {0x00007858, 0x92592692},
2362 +       {0x0000785c, 0x00000000},
2363 +       {0x00007860, 0x56400000},
2364 +       {0x00007864, 0x0a8e370e},
2365 +       {0x00007868, 0xc0102850},
2366 +       {0x0000786c, 0x812d4000},
2367 +       {0x00007870, 0x807ec400},
2368 +       {0x00007874, 0x001b6db0},
2369 +       {0x00007878, 0x00376b63},
2370 +       {0x0000787c, 0x06db6db6},
2371 +       {0x00007880, 0x006d8000},
2372 +       {0x00007884, 0xffeffffe},
2373 +       {0x00007888, 0xffeffffe},
2374 +       {0x0000788c, 0x00010000},
2375 +       {0x00007890, 0x02060aeb},
2376 +       {0x00007894, 0x5a108000},
2377 +};
2378 +
2379 +static const u32 ar9300_2p2_baseband_postamble[][5] = {
2380 +       /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */
2381 +       {0x00009810, 0xd00a8005, 0xd00a8005, 0xd00a8011, 0xd00a8011},
2382 +       {0x00009820, 0x206a022e, 0x206a022e, 0x206a012e, 0x206a012e},
2383 +       {0x00009824, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0},
2384 +       {0x00009828, 0x06903081, 0x06903081, 0x06903881, 0x06903881},
2385 +       {0x0000982c, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4},
2386 +       {0x00009830, 0x0000059c, 0x0000059c, 0x0000119c, 0x0000119c},
2387 +       {0x00009c00, 0x000000c4, 0x000000c4, 0x000000c4, 0x000000c4},
2388 +       {0x00009e00, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0},
2389 +       {0x00009e04, 0x00802020, 0x00802020, 0x00802020, 0x00802020},
2390 +       {0x00009e0c, 0x6c4000e2, 0x6d4000e2, 0x6d4000e2, 0x6c4000e2},
2391 +       {0x00009e10, 0x7ec88d2e, 0x7ec88d2e, 0x7ec84d2e, 0x7ec84d2e},
2392 +       {0x00009e14, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e},
2393 +       {0x00009e18, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
2394 +       {0x00009e1c, 0x0001cf9c, 0x0001cf9c, 0x00021f9c, 0x00021f9c},
2395 +       {0x00009e20, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce},
2396 +       {0x00009e2c, 0x0000001c, 0x0000001c, 0x00000021, 0x00000021},
2397 +       {0x00009e44, 0x02321e27, 0x02321e27, 0x02291e27, 0x02291e27},
2398 +       {0x00009e48, 0x5030201a, 0x5030201a, 0x50302012, 0x50302012},
2399 +       {0x00009fc8, 0x0003f000, 0x0003f000, 0x0001a000, 0x0001a000},
2400 +       {0x0000a204, 0x000037c0, 0x000037c4, 0x000037c4, 0x000037c0},
2401 +       {0x0000a208, 0x00000104, 0x00000104, 0x00000004, 0x00000004},
2402 +       {0x0000a230, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b},
2403 +       {0x0000a234, 0x00000fff, 0x10000fff, 0x10000fff, 0x00000fff},
2404 +       {0x0000a238, 0xffb81018, 0xffb81018, 0xffb81018, 0xffb81018},
2405 +       {0x0000a250, 0x00000000, 0x00000000, 0x00000210, 0x00000108},
2406 +       {0x0000a254, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898},
2407 +       {0x0000a258, 0x02020002, 0x02020002, 0x02020002, 0x02020002},
2408 +       {0x0000a25c, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e},
2409 +       {0x0000a260, 0x0a021501, 0x0a021501, 0x3a021501, 0x3a021501},
2410 +       {0x0000a264, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e},
2411 +       {0x0000a280, 0x00000007, 0x00000007, 0x0000000b, 0x0000000b},
2412 +       {0x0000a284, 0x00000000, 0x00000000, 0x00000150, 0x00000150},
2413 +       {0x0000a288, 0x00000110, 0x00000110, 0x00000110, 0x00000110},
2414 +       {0x0000a28c, 0x00022222, 0x00022222, 0x00022222, 0x00022222},
2415 +       {0x0000a2c4, 0x00158d18, 0x00158d18, 0x00158d18, 0x00158d18},
2416 +       {0x0000a2d0, 0x00071981, 0x00071981, 0x00071981, 0x00071982},
2417 +       {0x0000a2d8, 0xf999a83a, 0xf999a83a, 0xf999a83a, 0xf999a83a},
2418 +       {0x0000a358, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
2419 +       {0x0000a830, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c},
2420 +       {0x0000ae04, 0x00800000, 0x00800000, 0x00800000, 0x00800000},
2421 +       {0x0000ae18, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
2422 +       {0x0000ae1c, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c},
2423 +       {0x0000ae20, 0x000001b5, 0x000001b5, 0x000001ce, 0x000001ce},
2424 +       {0x0000b284, 0x00000000, 0x00000000, 0x00000150, 0x00000150},
2425 +       {0x0000b830, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c},
2426 +       {0x0000be04, 0x00800000, 0x00800000, 0x00800000, 0x00800000},
2427 +       {0x0000be18, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
2428 +       {0x0000be1c, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c},
2429 +       {0x0000be20, 0x000001b5, 0x000001b5, 0x000001ce, 0x000001ce},
2430 +       {0x0000c284, 0x00000000, 0x00000000, 0x00000150, 0x00000150},
2431 +};
2432 +
2433 +static const u32 ar9300_2p2_baseband_core[][2] = {
2434 +       /* Addr      allmodes  */
2435 +       {0x00009800, 0xafe68e30},
2436 +       {0x00009804, 0xfd14e000},
2437 +       {0x00009808, 0x9c0a9f6b},
2438 +       {0x0000980c, 0x04900000},
2439 +       {0x00009814, 0x9280c00a},
2440 +       {0x00009818, 0x00000000},
2441 +       {0x0000981c, 0x00020028},
2442 +       {0x00009834, 0x5f3ca3de},
2443 +       {0x00009838, 0x0108ecff},
2444 +       {0x0000983c, 0x14750600},
2445 +       {0x00009880, 0x201fff00},
2446 +       {0x00009884, 0x00001042},
2447 +       {0x000098a4, 0x00200400},
2448 +       {0x000098b0, 0x52440bbe},
2449 +       {0x000098d0, 0x004b6a8e},
2450 +       {0x000098d4, 0x00000820},
2451 +       {0x000098dc, 0x00000000},
2452 +       {0x000098f0, 0x00000000},
2453 +       {0x000098f4, 0x00000000},
2454 +       {0x00009c04, 0xff55ff55},
2455 +       {0x00009c08, 0x0320ff55},
2456 +       {0x00009c0c, 0x00000000},
2457 +       {0x00009c10, 0x00000000},
2458 +       {0x00009c14, 0x00046384},
2459 +       {0x00009c18, 0x05b6b440},
2460 +       {0x00009c1c, 0x00b6b440},
2461 +       {0x00009d00, 0xc080a333},
2462 +       {0x00009d04, 0x40206c10},
2463 +       {0x00009d08, 0x009c4060},
2464 +       {0x00009d0c, 0x9883800a},
2465 +       {0x00009d10, 0x01834061},
2466 +       {0x00009d14, 0x00c0040b},
2467 +       {0x00009d18, 0x00000000},
2468 +       {0x00009e08, 0x0038230c},
2469 +       {0x00009e24, 0x990bb515},
2470 +       {0x00009e28, 0x0c6f0000},
2471 +       {0x00009e30, 0x06336f77},
2472 +       {0x00009e34, 0x6af6532f},
2473 +       {0x00009e38, 0x0cc80c00},
2474 +       {0x00009e3c, 0xcf946222},
2475 +       {0x00009e40, 0x0d261820},
2476 +       {0x00009e4c, 0x00001004},
2477 +       {0x00009e50, 0x00ff03f1},
2478 +       {0x00009e54, 0x00000000},
2479 +       {0x00009fc0, 0x803e4788},
2480 +       {0x00009fc4, 0x0001efb5},
2481 +       {0x00009fcc, 0x40000014},
2482 +       {0x00009fd0, 0x01193b93},
2483 +       {0x0000a20c, 0x00000000},
2484 +       {0x0000a220, 0x00000000},
2485 +       {0x0000a224, 0x00000000},
2486 +       {0x0000a228, 0x10002310},
2487 +       {0x0000a22c, 0x01036a1e},
2488 +       {0x0000a23c, 0x00000000},
2489 +       {0x0000a244, 0x0c000000},
2490 +       {0x0000a2a0, 0x00000001},
2491 +       {0x0000a2c0, 0x00000001},
2492 +       {0x0000a2c8, 0x00000000},
2493 +       {0x0000a2cc, 0x18c43433},
2494 +       {0x0000a2d4, 0x00000000},
2495 +       {0x0000a2dc, 0x00000000},
2496 +       {0x0000a2e0, 0x00000000},
2497 +       {0x0000a2e4, 0x00000000},
2498 +       {0x0000a2e8, 0x00000000},
2499 +       {0x0000a2ec, 0x00000000},
2500 +       {0x0000a2f0, 0x00000000},
2501 +       {0x0000a2f4, 0x00000000},
2502 +       {0x0000a2f8, 0x00000000},
2503 +       {0x0000a344, 0x00000000},
2504 +       {0x0000a34c, 0x00000000},
2505 +       {0x0000a350, 0x0000a000},
2506 +       {0x0000a364, 0x00000000},
2507 +       {0x0000a370, 0x00000000},
2508 +       {0x0000a390, 0x00000001},
2509 +       {0x0000a394, 0x00000444},
2510 +       {0x0000a398, 0x001f0e0f},
2511 +       {0x0000a39c, 0x0075393f},
2512 +       {0x0000a3a0, 0xb79f6427},
2513 +       {0x0000a3a4, 0x00000000},
2514 +       {0x0000a3a8, 0xaaaaaaaa},
2515 +       {0x0000a3ac, 0x3c466478},
2516 +       {0x0000a3c0, 0x20202020},
2517 +       {0x0000a3c4, 0x22222220},
2518 +       {0x0000a3c8, 0x20200020},
2519 +       {0x0000a3cc, 0x20202020},
2520 +       {0x0000a3d0, 0x20202020},
2521 +       {0x0000a3d4, 0x20202020},
2522 +       {0x0000a3d8, 0x20202020},
2523 +       {0x0000a3dc, 0x20202020},
2524 +       {0x0000a3e0, 0x20202020},
2525 +       {0x0000a3e4, 0x20202020},
2526 +       {0x0000a3e8, 0x20202020},
2527 +       {0x0000a3ec, 0x20202020},
2528 +       {0x0000a3f0, 0x00000000},
2529 +       {0x0000a3f4, 0x00000246},
2530 +       {0x0000a3f8, 0x0cdbd380},
2531 +       {0x0000a3fc, 0x000f0f01},
2532 +       {0x0000a400, 0x8fa91f01},
2533 +       {0x0000a404, 0x00000000},
2534 +       {0x0000a408, 0x0e79e5c6},
2535 +       {0x0000a40c, 0x00820820},
2536 +       {0x0000a414, 0x1ce739ce},
2537 +       {0x0000a418, 0x2d001dce},
2538 +       {0x0000a41c, 0x1ce739ce},
2539 +       {0x0000a420, 0x000001ce},
2540 +       {0x0000a424, 0x1ce739ce},
2541 +       {0x0000a428, 0x000001ce},
2542 +       {0x0000a42c, 0x1ce739ce},
2543 +       {0x0000a430, 0x1ce739ce},
2544 +       {0x0000a434, 0x00000000},
2545 +       {0x0000a438, 0x00001801},
2546 +       {0x0000a43c, 0x00000000},
2547 +       {0x0000a440, 0x00000000},
2548 +       {0x0000a444, 0x00000000},
2549 +       {0x0000a448, 0x06000080},
2550 +       {0x0000a44c, 0x00000001},
2551 +       {0x0000a450, 0x00010000},
2552 +       {0x0000a458, 0x00000000},
2553 +       {0x0000a600, 0x00000000},
2554 +       {0x0000a604, 0x00000000},
2555 +       {0x0000a608, 0x00000000},
2556 +       {0x0000a60c, 0x00000000},
2557 +       {0x0000a610, 0x00000000},
2558 +       {0x0000a614, 0x00000000},
2559 +       {0x0000a618, 0x00000000},
2560 +       {0x0000a61c, 0x00000000},
2561 +       {0x0000a620, 0x00000000},
2562 +       {0x0000a624, 0x00000000},
2563 +       {0x0000a628, 0x00000000},
2564 +       {0x0000a62c, 0x00000000},
2565 +       {0x0000a630, 0x00000000},
2566 +       {0x0000a634, 0x00000000},
2567 +       {0x0000a638, 0x00000000},
2568 +       {0x0000a63c, 0x00000000},
2569 +       {0x0000a640, 0x00000000},
2570 +       {0x0000a644, 0x3fad9d74},
2571 +       {0x0000a648, 0x0048060a},
2572 +       {0x0000a64c, 0x00000637},
2573 +       {0x0000a670, 0x03020100},
2574 +       {0x0000a674, 0x09080504},
2575 +       {0x0000a678, 0x0d0c0b0a},
2576 +       {0x0000a67c, 0x13121110},
2577 +       {0x0000a680, 0x31301514},
2578 +       {0x0000a684, 0x35343332},
2579 +       {0x0000a688, 0x00000036},
2580 +       {0x0000a690, 0x00000838},
2581 +       {0x0000a7c0, 0x00000000},
2582 +       {0x0000a7c4, 0xfffffffc},
2583 +       {0x0000a7c8, 0x00000000},
2584 +       {0x0000a7cc, 0x00000000},
2585 +       {0x0000a7d0, 0x00000000},
2586 +       {0x0000a7d4, 0x00000004},
2587 +       {0x0000a7dc, 0x00000001},
2588 +       {0x0000a8d0, 0x004b6a8e},
2589 +       {0x0000a8d4, 0x00000820},
2590 +       {0x0000a8dc, 0x00000000},
2591 +       {0x0000a8f0, 0x00000000},
2592 +       {0x0000a8f4, 0x00000000},
2593 +       {0x0000b2d0, 0x00000080},
2594 +       {0x0000b2d4, 0x00000000},
2595 +       {0x0000b2dc, 0x00000000},
2596 +       {0x0000b2e0, 0x00000000},
2597 +       {0x0000b2e4, 0x00000000},
2598 +       {0x0000b2e8, 0x00000000},
2599 +       {0x0000b2ec, 0x00000000},
2600 +       {0x0000b2f0, 0x00000000},
2601 +       {0x0000b2f4, 0x00000000},
2602 +       {0x0000b2f8, 0x00000000},
2603 +       {0x0000b408, 0x0e79e5c0},
2604 +       {0x0000b40c, 0x00820820},
2605 +       {0x0000b420, 0x00000000},
2606 +       {0x0000b8d0, 0x004b6a8e},
2607 +       {0x0000b8d4, 0x00000820},
2608 +       {0x0000b8dc, 0x00000000},
2609 +       {0x0000b8f0, 0x00000000},
2610 +       {0x0000b8f4, 0x00000000},
2611 +       {0x0000c2d0, 0x00000080},
2612 +       {0x0000c2d4, 0x00000000},
2613 +       {0x0000c2dc, 0x00000000},
2614 +       {0x0000c2e0, 0x00000000},
2615 +       {0x0000c2e4, 0x00000000},
2616 +       {0x0000c2e8, 0x00000000},
2617 +       {0x0000c2ec, 0x00000000},
2618 +       {0x0000c2f0, 0x00000000},
2619 +       {0x0000c2f4, 0x00000000},
2620 +       {0x0000c2f8, 0x00000000},
2621 +       {0x0000c408, 0x0e79e5c0},
2622 +       {0x0000c40c, 0x00820820},
2623 +       {0x0000c420, 0x00000000},
2624 +};
2625 +
2626 +static const u32 ar9300Modes_high_power_tx_gain_table_2p2[][5] = {
2627 +       /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */
2628 +       {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9},
2629 +       {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000},
2630 +       {0x0000a504, 0x06002223, 0x06002223, 0x04000002, 0x04000002},
2631 +       {0x0000a508, 0x0a022220, 0x0a022220, 0x08000004, 0x08000004},
2632 +       {0x0000a50c, 0x0f022223, 0x0f022223, 0x0b000200, 0x0b000200},
2633 +       {0x0000a510, 0x14022620, 0x14022620, 0x0f000202, 0x0f000202},
2634 +       {0x0000a514, 0x18022622, 0x18022622, 0x11000400, 0x11000400},
2635 +       {0x0000a518, 0x1b022822, 0x1b022822, 0x15000402, 0x15000402},
2636 +       {0x0000a51c, 0x20022842, 0x20022842, 0x19000404, 0x19000404},
2637 +       {0x0000a520, 0x22022c41, 0x22022c41, 0x1b000603, 0x1b000603},
2638 +       {0x0000a524, 0x28023042, 0x28023042, 0x1f000a02, 0x1f000a02},
2639 +       {0x0000a528, 0x2c023044, 0x2c023044, 0x23000a04, 0x23000a04},
2640 +       {0x0000a52c, 0x2f023644, 0x2f023644, 0x26000a20, 0x26000a20},
2641 +       {0x0000a530, 0x34025643, 0x34025643, 0x2a000e20, 0x2a000e20},
2642 +       {0x0000a534, 0x38025a44, 0x38025a44, 0x2e000e22, 0x2e000e22},
2643 +       {0x0000a538, 0x3b025e45, 0x3b025e45, 0x31000e24, 0x31000e24},
2644 +       {0x0000a53c, 0x41025e4a, 0x41025e4a, 0x34001640, 0x34001640},
2645 +       {0x0000a540, 0x48025e6c, 0x48025e6c, 0x38001660, 0x38001660},
2646 +       {0x0000a544, 0x4e025e8e, 0x4e025e8e, 0x3b001861, 0x3b001861},
2647 +       {0x0000a548, 0x53025eb2, 0x53025eb2, 0x3e001a81, 0x3e001a81},
2648 +       {0x0000a54c, 0x59025eb5, 0x59025eb5, 0x42001a83, 0x42001a83},
2649 +       {0x0000a550, 0x5f025ef6, 0x5f025ef6, 0x44001c84, 0x44001c84},
2650 +       {0x0000a554, 0x62025f56, 0x62025f56, 0x48001ce3, 0x48001ce3},
2651 +       {0x0000a558, 0x66027f56, 0x66027f56, 0x4c001ce5, 0x4c001ce5},
2652 +       {0x0000a55c, 0x6a029f56, 0x6a029f56, 0x50001ce9, 0x50001ce9},
2653 +       {0x0000a560, 0x70049f56, 0x70049f56, 0x54001ceb, 0x54001ceb},
2654 +       {0x0000a564, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
2655 +       {0x0000a568, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
2656 +       {0x0000a56c, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
2657 +       {0x0000a570, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
2658 +       {0x0000a574, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
2659 +       {0x0000a578, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
2660 +       {0x0000a57c, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
2661 +       {0x0000a580, 0x00802220, 0x00802220, 0x00800000, 0x00800000},
2662 +       {0x0000a584, 0x06802223, 0x06802223, 0x04800002, 0x04800002},
2663 +       {0x0000a588, 0x0a822220, 0x0a822220, 0x08800004, 0x08800004},
2664 +       {0x0000a58c, 0x0f822223, 0x0f822223, 0x0b800200, 0x0b800200},
2665 +       {0x0000a590, 0x14822620, 0x14822620, 0x0f800202, 0x0f800202},
2666 +       {0x0000a594, 0x18822622, 0x18822622, 0x11800400, 0x11800400},
2667 +       {0x0000a598, 0x1b822822, 0x1b822822, 0x15800402, 0x15800402},
2668 +       {0x0000a59c, 0x20822842, 0x20822842, 0x19800404, 0x19800404},
2669 +       {0x0000a5a0, 0x22822c41, 0x22822c41, 0x1b800603, 0x1b800603},
2670 +       {0x0000a5a4, 0x28823042, 0x28823042, 0x1f800a02, 0x1f800a02},
2671 +       {0x0000a5a8, 0x2c823044, 0x2c823044, 0x23800a04, 0x23800a04},
2672 +       {0x0000a5ac, 0x2f823644, 0x2f823644, 0x26800a20, 0x26800a20},
2673 +       {0x0000a5b0, 0x34825643, 0x34825643, 0x2a800e20, 0x2a800e20},
2674 +       {0x0000a5b4, 0x38825a44, 0x38825a44, 0x2e800e22, 0x2e800e22},
2675 +       {0x0000a5b8, 0x3b825e45, 0x3b825e45, 0x31800e24, 0x31800e24},
2676 +       {0x0000a5bc, 0x41825e4a, 0x41825e4a, 0x34801640, 0x34801640},
2677 +       {0x0000a5c0, 0x48825e6c, 0x48825e6c, 0x38801660, 0x38801660},
2678 +       {0x0000a5c4, 0x4e825e8e, 0x4e825e8e, 0x3b801861, 0x3b801861},
2679 +       {0x0000a5c8, 0x53825eb2, 0x53825eb2, 0x3e801a81, 0x3e801a81},
2680 +       {0x0000a5cc, 0x59825eb5, 0x59825eb5, 0x42801a83, 0x42801a83},
2681 +       {0x0000a5d0, 0x5f825ef6, 0x5f825ef6, 0x44801c84, 0x44801c84},
2682 +       {0x0000a5d4, 0x62825f56, 0x62825f56, 0x48801ce3, 0x48801ce3},
2683 +       {0x0000a5d8, 0x66827f56, 0x66827f56, 0x4c801ce5, 0x4c801ce5},
2684 +       {0x0000a5dc, 0x6a829f56, 0x6a829f56, 0x50801ce9, 0x50801ce9},
2685 +       {0x0000a5e0, 0x70849f56, 0x70849f56, 0x54801ceb, 0x54801ceb},
2686 +       {0x0000a5e4, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
2687 +       {0x0000a5e8, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
2688 +       {0x0000a5ec, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
2689 +       {0x0000a5f0, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
2690 +       {0x0000a5f4, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
2691 +       {0x0000a5f8, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
2692 +       {0x0000a5fc, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
2693 +       {0x00016044, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6},
2694 +       {0x00016048, 0xae480001, 0xae480001, 0xae480001, 0xae480001},
2695 +       {0x00016068, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c},
2696 +       {0x00016444, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6},
2697 +       {0x00016448, 0xae480001, 0xae480001, 0xae480001, 0xae480001},
2698 +       {0x00016468, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c},
2699 +       {0x00016844, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6},
2700 +       {0x00016848, 0xae480001, 0xae480001, 0xae480001, 0xae480001},
2701 +       {0x00016868, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c},
2702 +};
2703 +
2704 +static const u32 ar9300Modes_high_ob_db_tx_gain_table_2p2[][5] = {
2705 +       /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */
2706 +       {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9},
2707 +       {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000},
2708 +       {0x0000a504, 0x06002223, 0x06002223, 0x04000002, 0x04000002},
2709 +       {0x0000a508, 0x0a022220, 0x0a022220, 0x08000004, 0x08000004},
2710 +       {0x0000a50c, 0x0f022223, 0x0f022223, 0x0b000200, 0x0b000200},
2711 +       {0x0000a510, 0x14022620, 0x14022620, 0x0f000202, 0x0f000202},
2712 +       {0x0000a514, 0x18022622, 0x18022622, 0x11000400, 0x11000400},
2713 +       {0x0000a518, 0x1b022822, 0x1b022822, 0x15000402, 0x15000402},
2714 +       {0x0000a51c, 0x20022842, 0x20022842, 0x19000404, 0x19000404},
2715 +       {0x0000a520, 0x22022c41, 0x22022c41, 0x1b000603, 0x1b000603},
2716 +       {0x0000a524, 0x28023042, 0x28023042, 0x1f000a02, 0x1f000a02},
2717 +       {0x0000a528, 0x2c023044, 0x2c023044, 0x23000a04, 0x23000a04},
2718 +       {0x0000a52c, 0x2f023644, 0x2f023644, 0x26000a20, 0x26000a20},
2719 +       {0x0000a530, 0x34025643, 0x34025643, 0x2a000e20, 0x2a000e20},
2720 +       {0x0000a534, 0x38025a44, 0x38025a44, 0x2e000e22, 0x2e000e22},
2721 +       {0x0000a538, 0x3b025e45, 0x3b025e45, 0x31000e24, 0x31000e24},
2722 +       {0x0000a53c, 0x41025e4a, 0x41025e4a, 0x34001640, 0x34001640},
2723 +       {0x0000a540, 0x48025e6c, 0x48025e6c, 0x38001660, 0x38001660},
2724 +       {0x0000a544, 0x4e025e8e, 0x4e025e8e, 0x3b001861, 0x3b001861},
2725 +       {0x0000a548, 0x53025eb2, 0x53025eb2, 0x3e001a81, 0x3e001a81},
2726 +       {0x0000a54c, 0x59025eb5, 0x59025eb5, 0x42001a83, 0x42001a83},
2727 +       {0x0000a550, 0x5f025ef6, 0x5f025ef6, 0x44001c84, 0x44001c84},
2728 +       {0x0000a554, 0x62025f56, 0x62025f56, 0x48001ce3, 0x48001ce3},
2729 +       {0x0000a558, 0x66027f56, 0x66027f56, 0x4c001ce5, 0x4c001ce5},
2730 +       {0x0000a55c, 0x6a029f56, 0x6a029f56, 0x50001ce9, 0x50001ce9},
2731 +       {0x0000a560, 0x70049f56, 0x70049f56, 0x54001ceb, 0x54001ceb},
2732 +       {0x0000a564, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
2733 +       {0x0000a568, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
2734 +       {0x0000a56c, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
2735 +       {0x0000a570, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
2736 +       {0x0000a574, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
2737 +       {0x0000a578, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
2738 +       {0x0000a57c, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
2739 +       {0x0000a580, 0x00802220, 0x00802220, 0x00800000, 0x00800000},
2740 +       {0x0000a584, 0x06802223, 0x06802223, 0x04800002, 0x04800002},
2741 +       {0x0000a588, 0x0a822220, 0x0a822220, 0x08800004, 0x08800004},
2742 +       {0x0000a58c, 0x0f822223, 0x0f822223, 0x0b800200, 0x0b800200},
2743 +       {0x0000a590, 0x14822620, 0x14822620, 0x0f800202, 0x0f800202},
2744 +       {0x0000a594, 0x18822622, 0x18822622, 0x11800400, 0x11800400},
2745 +       {0x0000a598, 0x1b822822, 0x1b822822, 0x15800402, 0x15800402},
2746 +       {0x0000a59c, 0x20822842, 0x20822842, 0x19800404, 0x19800404},
2747 +       {0x0000a5a0, 0x22822c41, 0x22822c41, 0x1b800603, 0x1b800603},
2748 +       {0x0000a5a4, 0x28823042, 0x28823042, 0x1f800a02, 0x1f800a02},
2749 +       {0x0000a5a8, 0x2c823044, 0x2c823044, 0x23800a04, 0x23800a04},
2750 +       {0x0000a5ac, 0x2f823644, 0x2f823644, 0x26800a20, 0x26800a20},
2751 +       {0x0000a5b0, 0x34825643, 0x34825643, 0x2a800e20, 0x2a800e20},
2752 +       {0x0000a5b4, 0x38825a44, 0x38825a44, 0x2e800e22, 0x2e800e22},
2753 +       {0x0000a5b8, 0x3b825e45, 0x3b825e45, 0x31800e24, 0x31800e24},
2754 +       {0x0000a5bc, 0x41825e4a, 0x41825e4a, 0x34801640, 0x34801640},
2755 +       {0x0000a5c0, 0x48825e6c, 0x48825e6c, 0x38801660, 0x38801660},
2756 +       {0x0000a5c4, 0x4e825e8e, 0x4e825e8e, 0x3b801861, 0x3b801861},
2757 +       {0x0000a5c8, 0x53825eb2, 0x53825eb2, 0x3e801a81, 0x3e801a81},
2758 +       {0x0000a5cc, 0x59825eb5, 0x59825eb5, 0x42801a83, 0x42801a83},
2759 +       {0x0000a5d0, 0x5f825ef6, 0x5f825ef6, 0x44801c84, 0x44801c84},
2760 +       {0x0000a5d4, 0x62825f56, 0x62825f56, 0x48801ce3, 0x48801ce3},
2761 +       {0x0000a5d8, 0x66827f56, 0x66827f56, 0x4c801ce5, 0x4c801ce5},
2762 +       {0x0000a5dc, 0x6a829f56, 0x6a829f56, 0x50801ce9, 0x50801ce9},
2763 +       {0x0000a5e0, 0x70849f56, 0x70849f56, 0x54801ceb, 0x54801ceb},
2764 +       {0x0000a5e4, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
2765 +       {0x0000a5e8, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
2766 +       {0x0000a5ec, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
2767 +       {0x0000a5f0, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
2768 +       {0x0000a5f4, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
2769 +       {0x0000a5f8, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
2770 +       {0x0000a5fc, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
2771 +       {0x00016044, 0x056db2e4, 0x056db2e4, 0x056db2e4, 0x056db2e4},
2772 +       {0x00016048, 0x8e480001, 0x8e480001, 0x8e480001, 0x8e480001},
2773 +       {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
2774 +       {0x00016444, 0x056db2e4, 0x056db2e4, 0x056db2e4, 0x056db2e4},
2775 +       {0x00016448, 0x8e480001, 0x8e480001, 0x8e480001, 0x8e480001},
2776 +       {0x00016468, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
2777 +       {0x00016844, 0x056db2e4, 0x056db2e4, 0x056db2e4, 0x056db2e4},
2778 +       {0x00016848, 0x8e480001, 0x8e480001, 0x8e480001, 0x8e480001},
2779 +       {0x00016868, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
2780 +};
2781 +
2782 +static const u32 ar9300Common_rx_gain_table_2p2[][2] = {
2783 +       /* Addr      allmodes  */
2784 +       {0x0000a000, 0x00010000},
2785 +       {0x0000a004, 0x00030002},
2786 +       {0x0000a008, 0x00050004},
2787 +       {0x0000a00c, 0x00810080},
2788 +       {0x0000a010, 0x00830082},
2789 +       {0x0000a014, 0x01810180},
2790 +       {0x0000a018, 0x01830182},
2791 +       {0x0000a01c, 0x01850184},
2792 +       {0x0000a020, 0x01890188},
2793 +       {0x0000a024, 0x018b018a},
2794 +       {0x0000a028, 0x018d018c},
2795 +       {0x0000a02c, 0x01910190},
2796 +       {0x0000a030, 0x01930192},
2797 +       {0x0000a034, 0x01950194},
2798 +       {0x0000a038, 0x038a0196},
2799 +       {0x0000a03c, 0x038c038b},
2800 +       {0x0000a040, 0x0390038d},
2801 +       {0x0000a044, 0x03920391},
2802 +       {0x0000a048, 0x03940393},
2803 +       {0x0000a04c, 0x03960395},
2804 +       {0x0000a050, 0x00000000},
2805 +       {0x0000a054, 0x00000000},
2806 +       {0x0000a058, 0x00000000},
2807 +       {0x0000a05c, 0x00000000},
2808 +       {0x0000a060, 0x00000000},
2809 +       {0x0000a064, 0x00000000},
2810 +       {0x0000a068, 0x00000000},
2811 +       {0x0000a06c, 0x00000000},
2812 +       {0x0000a070, 0x00000000},
2813 +       {0x0000a074, 0x00000000},
2814 +       {0x0000a078, 0x00000000},
2815 +       {0x0000a07c, 0x00000000},
2816 +       {0x0000a080, 0x22222229},
2817 +       {0x0000a084, 0x1d1d1d1d},
2818 +       {0x0000a088, 0x1d1d1d1d},
2819 +       {0x0000a08c, 0x1d1d1d1d},
2820 +       {0x0000a090, 0x171d1d1d},
2821 +       {0x0000a094, 0x11111717},
2822 +       {0x0000a098, 0x00030311},
2823 +       {0x0000a09c, 0x00000000},
2824 +       {0x0000a0a0, 0x00000000},
2825 +       {0x0000a0a4, 0x00000000},
2826 +       {0x0000a0a8, 0x00000000},
2827 +       {0x0000a0ac, 0x00000000},
2828 +       {0x0000a0b0, 0x00000000},
2829 +       {0x0000a0b4, 0x00000000},
2830 +       {0x0000a0b8, 0x00000000},
2831 +       {0x0000a0bc, 0x00000000},
2832 +       {0x0000a0c0, 0x001f0000},
2833 +       {0x0000a0c4, 0x01000101},
2834 +       {0x0000a0c8, 0x011e011f},
2835 +       {0x0000a0cc, 0x011c011d},
2836 +       {0x0000a0d0, 0x02030204},
2837 +       {0x0000a0d4, 0x02010202},
2838 +       {0x0000a0d8, 0x021f0200},
2839 +       {0x0000a0dc, 0x0302021e},
2840 +       {0x0000a0e0, 0x03000301},
2841 +       {0x0000a0e4, 0x031e031f},
2842 +       {0x0000a0e8, 0x0402031d},
2843 +       {0x0000a0ec, 0x04000401},
2844 +       {0x0000a0f0, 0x041e041f},
2845 +       {0x0000a0f4, 0x0502041d},
2846 +       {0x0000a0f8, 0x05000501},
2847 +       {0x0000a0fc, 0x051e051f},
2848 +       {0x0000a100, 0x06010602},
2849 +       {0x0000a104, 0x061f0600},
2850 +       {0x0000a108, 0x061d061e},
2851 +       {0x0000a10c, 0x07020703},
2852 +       {0x0000a110, 0x07000701},
2853 +       {0x0000a114, 0x00000000},
2854 +       {0x0000a118, 0x00000000},
2855 +       {0x0000a11c, 0x00000000},
2856 +       {0x0000a120, 0x00000000},
2857 +       {0x0000a124, 0x00000000},
2858 +       {0x0000a128, 0x00000000},
2859 +       {0x0000a12c, 0x00000000},
2860 +       {0x0000a130, 0x00000000},
2861 +       {0x0000a134, 0x00000000},
2862 +       {0x0000a138, 0x00000000},
2863 +       {0x0000a13c, 0x00000000},
2864 +       {0x0000a140, 0x001f0000},
2865 +       {0x0000a144, 0x01000101},
2866 +       {0x0000a148, 0x011e011f},
2867 +       {0x0000a14c, 0x011c011d},
2868 +       {0x0000a150, 0x02030204},
2869 +       {0x0000a154, 0x02010202},
2870 +       {0x0000a158, 0x021f0200},
2871 +       {0x0000a15c, 0x0302021e},
2872 +       {0x0000a160, 0x03000301},
2873 +       {0x0000a164, 0x031e031f},
2874 +       {0x0000a168, 0x0402031d},
2875 +       {0x0000a16c, 0x04000401},
2876 +       {0x0000a170, 0x041e041f},
2877 +       {0x0000a174, 0x0502041d},
2878 +       {0x0000a178, 0x05000501},
2879 +       {0x0000a17c, 0x051e051f},
2880 +       {0x0000a180, 0x06010602},
2881 +       {0x0000a184, 0x061f0600},
2882 +       {0x0000a188, 0x061d061e},
2883 +       {0x0000a18c, 0x07020703},
2884 +       {0x0000a190, 0x07000701},
2885 +       {0x0000a194, 0x00000000},
2886 +       {0x0000a198, 0x00000000},
2887 +       {0x0000a19c, 0x00000000},
2888 +       {0x0000a1a0, 0x00000000},
2889 +       {0x0000a1a4, 0x00000000},
2890 +       {0x0000a1a8, 0x00000000},
2891 +       {0x0000a1ac, 0x00000000},
2892 +       {0x0000a1b0, 0x00000000},
2893 +       {0x0000a1b4, 0x00000000},
2894 +       {0x0000a1b8, 0x00000000},
2895 +       {0x0000a1bc, 0x00000000},
2896 +       {0x0000a1c0, 0x00000000},
2897 +       {0x0000a1c4, 0x00000000},
2898 +       {0x0000a1c8, 0x00000000},
2899 +       {0x0000a1cc, 0x00000000},
2900 +       {0x0000a1d0, 0x00000000},
2901 +       {0x0000a1d4, 0x00000000},
2902 +       {0x0000a1d8, 0x00000000},
2903 +       {0x0000a1dc, 0x00000000},
2904 +       {0x0000a1e0, 0x00000000},
2905 +       {0x0000a1e4, 0x00000000},
2906 +       {0x0000a1e8, 0x00000000},
2907 +       {0x0000a1ec, 0x00000000},
2908 +       {0x0000a1f0, 0x00000396},
2909 +       {0x0000a1f4, 0x00000396},
2910 +       {0x0000a1f8, 0x00000396},
2911 +       {0x0000a1fc, 0x00000196},
2912 +       {0x0000b000, 0x00010000},
2913 +       {0x0000b004, 0x00030002},
2914 +       {0x0000b008, 0x00050004},
2915 +       {0x0000b00c, 0x00810080},
2916 +       {0x0000b010, 0x00830082},
2917 +       {0x0000b014, 0x01810180},
2918 +       {0x0000b018, 0x01830182},
2919 +       {0x0000b01c, 0x01850184},
2920 +       {0x0000b020, 0x02810280},
2921 +       {0x0000b024, 0x02830282},
2922 +       {0x0000b028, 0x02850284},
2923 +       {0x0000b02c, 0x02890288},
2924 +       {0x0000b030, 0x028b028a},
2925 +       {0x0000b034, 0x0388028c},
2926 +       {0x0000b038, 0x038a0389},
2927 +       {0x0000b03c, 0x038c038b},
2928 +       {0x0000b040, 0x0390038d},
2929 +       {0x0000b044, 0x03920391},
2930 +       {0x0000b048, 0x03940393},
2931 +       {0x0000b04c, 0x03960395},
2932 +       {0x0000b050, 0x00000000},
2933 +       {0x0000b054, 0x00000000},
2934 +       {0x0000b058, 0x00000000},
2935 +       {0x0000b05c, 0x00000000},
2936 +       {0x0000b060, 0x00000000},
2937 +       {0x0000b064, 0x00000000},
2938 +       {0x0000b068, 0x00000000},
2939 +       {0x0000b06c, 0x00000000},
2940 +       {0x0000b070, 0x00000000},
2941 +       {0x0000b074, 0x00000000},
2942 +       {0x0000b078, 0x00000000},
2943 +       {0x0000b07c, 0x00000000},
2944 +       {0x0000b080, 0x32323232},
2945 +       {0x0000b084, 0x2f2f3232},
2946 +       {0x0000b088, 0x23282a2d},
2947 +       {0x0000b08c, 0x1c1e2123},
2948 +       {0x0000b090, 0x14171919},
2949 +       {0x0000b094, 0x0e0e1214},
2950 +       {0x0000b098, 0x03050707},
2951 +       {0x0000b09c, 0x00030303},
2952 +       {0x0000b0a0, 0x00000000},
2953 +       {0x0000b0a4, 0x00000000},
2954 +       {0x0000b0a8, 0x00000000},
2955 +       {0x0000b0ac, 0x00000000},
2956 +       {0x0000b0b0, 0x00000000},
2957 +       {0x0000b0b4, 0x00000000},
2958 +       {0x0000b0b8, 0x00000000},
2959 +       {0x0000b0bc, 0x00000000},
2960 +       {0x0000b0c0, 0x003f0020},
2961 +       {0x0000b0c4, 0x00400041},
2962 +       {0x0000b0c8, 0x0140005f},
2963 +       {0x0000b0cc, 0x0160015f},
2964 +       {0x0000b0d0, 0x017e017f},
2965 +       {0x0000b0d4, 0x02410242},
2966 +       {0x0000b0d8, 0x025f0240},
2967 +       {0x0000b0dc, 0x027f0260},
2968 +       {0x0000b0e0, 0x0341027e},
2969 +       {0x0000b0e4, 0x035f0340},
2970 +       {0x0000b0e8, 0x037f0360},
2971 +       {0x0000b0ec, 0x04400441},
2972 +       {0x0000b0f0, 0x0460045f},
2973 +       {0x0000b0f4, 0x0541047f},
2974 +       {0x0000b0f8, 0x055f0540},
2975 +       {0x0000b0fc, 0x057f0560},
2976 +       {0x0000b100, 0x06400641},
2977 +       {0x0000b104, 0x0660065f},
2978 +       {0x0000b108, 0x067e067f},
2979 +       {0x0000b10c, 0x07410742},
2980 +       {0x0000b110, 0x075f0740},
2981 +       {0x0000b114, 0x077f0760},
2982 +       {0x0000b118, 0x07800781},
2983 +       {0x0000b11c, 0x07a0079f},
2984 +       {0x0000b120, 0x07c107bf},
2985 +       {0x0000b124, 0x000007c0},
2986 +       {0x0000b128, 0x00000000},
2987 +       {0x0000b12c, 0x00000000},
2988 +       {0x0000b130, 0x00000000},
2989 +       {0x0000b134, 0x00000000},
2990 +       {0x0000b138, 0x00000000},
2991 +       {0x0000b13c, 0x00000000},
2992 +       {0x0000b140, 0x003f0020},
2993 +       {0x0000b144, 0x00400041},
2994 +       {0x0000b148, 0x0140005f},
2995 +       {0x0000b14c, 0x0160015f},
2996 +       {0x0000b150, 0x017e017f},
2997 +       {0x0000b154, 0x02410242},
2998 +       {0x0000b158, 0x025f0240},
2999 +       {0x0000b15c, 0x027f0260},
3000 +       {0x0000b160, 0x0341027e},
3001 +       {0x0000b164, 0x035f0340},
3002 +       {0x0000b168, 0x037f0360},
3003 +       {0x0000b16c, 0x04400441},
3004 +       {0x0000b170, 0x0460045f},
3005 +       {0x0000b174, 0x0541047f},
3006 +       {0x0000b178, 0x055f0540},
3007 +       {0x0000b17c, 0x057f0560},
3008 +       {0x0000b180, 0x06400641},
3009 +       {0x0000b184, 0x0660065f},
3010 +       {0x0000b188, 0x067e067f},
3011 +       {0x0000b18c, 0x07410742},
3012 +       {0x0000b190, 0x075f0740},
3013 +       {0x0000b194, 0x077f0760},
3014 +       {0x0000b198, 0x07800781},
3015 +       {0x0000b19c, 0x07a0079f},
3016 +       {0x0000b1a0, 0x07c107bf},
3017 +       {0x0000b1a4, 0x000007c0},
3018 +       {0x0000b1a8, 0x00000000},
3019 +       {0x0000b1ac, 0x00000000},
3020 +       {0x0000b1b0, 0x00000000},
3021 +       {0x0000b1b4, 0x00000000},
3022 +       {0x0000b1b8, 0x00000000},
3023 +       {0x0000b1bc, 0x00000000},
3024 +       {0x0000b1c0, 0x00000000},
3025 +       {0x0000b1c4, 0x00000000},
3026 +       {0x0000b1c8, 0x00000000},
3027 +       {0x0000b1cc, 0x00000000},
3028 +       {0x0000b1d0, 0x00000000},
3029 +       {0x0000b1d4, 0x00000000},
3030 +       {0x0000b1d8, 0x00000000},
3031 +       {0x0000b1dc, 0x00000000},
3032 +       {0x0000b1e0, 0x00000000},
3033 +       {0x0000b1e4, 0x00000000},
3034 +       {0x0000b1e8, 0x00000000},
3035 +       {0x0000b1ec, 0x00000000},
3036 +       {0x0000b1f0, 0x00000396},
3037 +       {0x0000b1f4, 0x00000396},
3038 +       {0x0000b1f8, 0x00000396},
3039 +       {0x0000b1fc, 0x00000196},
3040 +};
3041 +
3042 +static const u32 ar9300Modes_low_ob_db_tx_gain_table_2p2[][5] = {
3043 +       /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */
3044 +       {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9},
3045 +       {0x0000a500, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
3046 +       {0x0000a504, 0x06000003, 0x06000003, 0x04000002, 0x04000002},
3047 +       {0x0000a508, 0x0a000020, 0x0a000020, 0x08000004, 0x08000004},
3048 +       {0x0000a50c, 0x10000023, 0x10000023, 0x0b000200, 0x0b000200},
3049 +       {0x0000a510, 0x16000220, 0x16000220, 0x0f000202, 0x0f000202},
3050 +       {0x0000a514, 0x1c000223, 0x1c000223, 0x12000400, 0x12000400},
3051 +       {0x0000a518, 0x21002220, 0x21002220, 0x16000402, 0x16000402},
3052 +       {0x0000a51c, 0x27002223, 0x27002223, 0x19000404, 0x19000404},
3053 +       {0x0000a520, 0x2b022220, 0x2b022220, 0x1c000603, 0x1c000603},
3054 +       {0x0000a524, 0x2f022222, 0x2f022222, 0x21000a02, 0x21000a02},
3055 +       {0x0000a528, 0x34022225, 0x34022225, 0x25000a04, 0x25000a04},
3056 +       {0x0000a52c, 0x3a02222a, 0x3a02222a, 0x28000a20, 0x28000a20},
3057 +       {0x0000a530, 0x3e02222c, 0x3e02222c, 0x2c000e20, 0x2c000e20},
3058 +       {0x0000a534, 0x4202242a, 0x4202242a, 0x30000e22, 0x30000e22},
3059 +       {0x0000a538, 0x4702244a, 0x4702244a, 0x34000e24, 0x34000e24},
3060 +       {0x0000a53c, 0x4b02244c, 0x4b02244c, 0x38001640, 0x38001640},
3061 +       {0x0000a540, 0x4e02246c, 0x4e02246c, 0x3c001660, 0x3c001660},
3062 +       {0x0000a544, 0x5302266c, 0x5302266c, 0x3f001861, 0x3f001861},
3063 +       {0x0000a548, 0x5702286c, 0x5702286c, 0x43001a81, 0x43001a81},
3064 +       {0x0000a54c, 0x5c02486b, 0x5c02486b, 0x47001a83, 0x47001a83},
3065 +       {0x0000a550, 0x61024a6c, 0x61024a6c, 0x4a001c84, 0x4a001c84},
3066 +       {0x0000a554, 0x66026a6c, 0x66026a6c, 0x4e001ce3, 0x4e001ce3},
3067 +       {0x0000a558, 0x6b026e6c, 0x6b026e6c, 0x52001ce5, 0x52001ce5},
3068 +       {0x0000a55c, 0x7002708c, 0x7002708c, 0x56001ce9, 0x56001ce9},
3069 +       {0x0000a560, 0x7302b08a, 0x7302b08a, 0x5a001ceb, 0x5a001ceb},
3070 +       {0x0000a564, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec},
3071 +       {0x0000a568, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec},
3072 +       {0x0000a56c, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec},
3073 +       {0x0000a570, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec},
3074 +       {0x0000a574, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec},
3075 +       {0x0000a578, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec},
3076 +       {0x0000a57c, 0x7702b08c, 0x7702b08c, 0x5d001eec, 0x5d001eec},
3077 +       {0x0000a580, 0x00800000, 0x00800000, 0x00800000, 0x00800000},
3078 +       {0x0000a584, 0x06800003, 0x06800003, 0x04800002, 0x04800002},
3079 +       {0x0000a588, 0x0a800020, 0x0a800020, 0x08800004, 0x08800004},
3080 +       {0x0000a58c, 0x10800023, 0x10800023, 0x0b800200, 0x0b800200},
3081 +       {0x0000a590, 0x16800220, 0x16800220, 0x0f800202, 0x0f800202},
3082 +       {0x0000a594, 0x1c800223, 0x1c800223, 0x12800400, 0x12800400},
3083 +       {0x0000a598, 0x21802220, 0x21802220, 0x16800402, 0x16800402},
3084 +       {0x0000a59c, 0x27802223, 0x27802223, 0x19800404, 0x19800404},
3085 +       {0x0000a5a0, 0x2b822220, 0x2b822220, 0x1c800603, 0x1c800603},
3086 +       {0x0000a5a4, 0x2f822222, 0x2f822222, 0x21800a02, 0x21800a02},
3087 +       {0x0000a5a8, 0x34822225, 0x34822225, 0x25800a04, 0x25800a04},
3088 +       {0x0000a5ac, 0x3a82222a, 0x3a82222a, 0x28800a20, 0x28800a20},
3089 +       {0x0000a5b0, 0x3e82222c, 0x3e82222c, 0x2c800e20, 0x2c800e20},
3090 +       {0x0000a5b4, 0x4282242a, 0x4282242a, 0x30800e22, 0x30800e22},
3091 +       {0x0000a5b8, 0x4782244a, 0x4782244a, 0x34800e24, 0x34800e24},
3092 +       {0x0000a5bc, 0x4b82244c, 0x4b82244c, 0x38801640, 0x38801640},
3093 +       {0x0000a5c0, 0x4e82246c, 0x4e82246c, 0x3c801660, 0x3c801660},
3094 +       {0x0000a5c4, 0x5382266c, 0x5382266c, 0x3f801861, 0x3f801861},
3095 +       {0x0000a5c8, 0x5782286c, 0x5782286c, 0x43801a81, 0x43801a81},
3096 +       {0x0000a5cc, 0x5c82486b, 0x5c82486b, 0x47801a83, 0x47801a83},
3097 +       {0x0000a5d0, 0x61824a6c, 0x61824a6c, 0x4a801c84, 0x4a801c84},
3098 +       {0x0000a5d4, 0x66826a6c, 0x66826a6c, 0x4e801ce3, 0x4e801ce3},
3099 +       {0x0000a5d8, 0x6b826e6c, 0x6b826e6c, 0x52801ce5, 0x52801ce5},
3100 +       {0x0000a5dc, 0x7082708c, 0x7082708c, 0x56801ce9, 0x56801ce9},
3101 +       {0x0000a5e0, 0x7382b08a, 0x7382b08a, 0x5a801ceb, 0x5a801ceb},
3102 +       {0x0000a5e4, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec},
3103 +       {0x0000a5e8, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec},
3104 +       {0x0000a5ec, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec},
3105 +       {0x0000a5f0, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec},
3106 +       {0x0000a5f4, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec},
3107 +       {0x0000a5f8, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec},
3108 +       {0x0000a5fc, 0x7782b08c, 0x7782b08c, 0x5d801eec, 0x5d801eec},
3109 +       {0x00016044, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4},
3110 +       {0x00016048, 0x66480001, 0x66480001, 0x66480001, 0x66480001},
3111 +       {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
3112 +       {0x00016444, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4},
3113 +       {0x00016448, 0x66480001, 0x66480001, 0x66480001, 0x66480001},
3114 +       {0x00016468, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
3115 +       {0x00016844, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4},
3116 +       {0x00016848, 0x66480001, 0x66480001, 0x66480001, 0x66480001},
3117 +       {0x00016868, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
3118 +};
3119 +
3120 +static const u32 ar9300_2p2_mac_core[][2] = {
3121 +       /* Addr      allmodes  */
3122 +       {0x00000008, 0x00000000},
3123 +       {0x00000030, 0x00020085},
3124 +       {0x00000034, 0x00000005},
3125 +       {0x00000040, 0x00000000},
3126 +       {0x00000044, 0x00000000},
3127 +       {0x00000048, 0x00000008},
3128 +       {0x0000004c, 0x00000010},
3129 +       {0x00000050, 0x00000000},
3130 +       {0x00001040, 0x002ffc0f},
3131 +       {0x00001044, 0x002ffc0f},
3132 +       {0x00001048, 0x002ffc0f},
3133 +       {0x0000104c, 0x002ffc0f},
3134 +       {0x00001050, 0x002ffc0f},
3135 +       {0x00001054, 0x002ffc0f},
3136 +       {0x00001058, 0x002ffc0f},
3137 +       {0x0000105c, 0x002ffc0f},
3138 +       {0x00001060, 0x002ffc0f},
3139 +       {0x00001064, 0x002ffc0f},
3140 +       {0x000010f0, 0x00000100},
3141 +       {0x00001270, 0x00000000},
3142 +       {0x000012b0, 0x00000000},
3143 +       {0x000012f0, 0x00000000},
3144 +       {0x0000143c, 0x00000000},
3145 +       {0x0000147c, 0x00000000},
3146 +       {0x00008000, 0x00000000},
3147 +       {0x00008004, 0x00000000},
3148 +       {0x00008008, 0x00000000},
3149 +       {0x0000800c, 0x00000000},
3150 +       {0x00008018, 0x00000000},
3151 +       {0x00008020, 0x00000000},
3152 +       {0x00008038, 0x00000000},
3153 +       {0x0000803c, 0x00000000},
3154 +       {0x00008040, 0x00000000},
3155 +       {0x00008044, 0x00000000},
3156 +       {0x00008048, 0x00000000},
3157 +       {0x0000804c, 0xffffffff},
3158 +       {0x00008054, 0x00000000},
3159 +       {0x00008058, 0x00000000},
3160 +       {0x0000805c, 0x000fc78f},
3161 +       {0x00008060, 0x0000000f},
3162 +       {0x00008064, 0x00000000},
3163 +       {0x00008070, 0x00000310},
3164 +       {0x00008074, 0x00000020},
3165 +       {0x00008078, 0x00000000},
3166 +       {0x0000809c, 0x0000000f},
3167 +       {0x000080a0, 0x00000000},
3168 +       {0x000080a4, 0x02ff0000},
3169 +       {0x000080a8, 0x0e070605},
3170 +       {0x000080ac, 0x0000000d},
3171 +       {0x000080b0, 0x00000000},
3172 +       {0x000080b4, 0x00000000},
3173 +       {0x000080b8, 0x00000000},
3174 +       {0x000080bc, 0x00000000},
3175 +       {0x000080c0, 0x2a800000},
3176 +       {0x000080c4, 0x06900168},
3177 +       {0x000080c8, 0x13881c20},
3178 +       {0x000080cc, 0x01f40000},
3179 +       {0x000080d0, 0x00252500},
3180 +       {0x000080d4, 0x00a00000},
3181 +       {0x000080d8, 0x00400000},
3182 +       {0x000080dc, 0x00000000},
3183 +       {0x000080e0, 0xffffffff},
3184 +       {0x000080e4, 0x0000ffff},
3185 +       {0x000080e8, 0x3f3f3f3f},
3186 +       {0x000080ec, 0x00000000},
3187 +       {0x000080f0, 0x00000000},
3188 +       {0x000080f4, 0x00000000},
3189 +       {0x000080fc, 0x00020000},
3190 +       {0x00008100, 0x00000000},
3191 +       {0x00008108, 0x00000052},
3192 +       {0x0000810c, 0x00000000},
3193 +       {0x00008110, 0x00000000},
3194 +       {0x00008114, 0x000007ff},
3195 +       {0x00008118, 0x000000aa},
3196 +       {0x0000811c, 0x00003210},
3197 +       {0x00008124, 0x00000000},
3198 +       {0x00008128, 0x00000000},
3199 +       {0x0000812c, 0x00000000},
3200 +       {0x00008130, 0x00000000},
3201 +       {0x00008134, 0x00000000},
3202 +       {0x00008138, 0x00000000},
3203 +       {0x0000813c, 0x0000ffff},
3204 +       {0x00008144, 0xffffffff},
3205 +       {0x00008168, 0x00000000},
3206 +       {0x0000816c, 0x00000000},
3207 +       {0x00008170, 0x18486200},
3208 +       {0x00008174, 0x33332210},
3209 +       {0x00008178, 0x00000000},
3210 +       {0x0000817c, 0x00020000},
3211 +       {0x000081c0, 0x00000000},
3212 +       {0x000081c4, 0x33332210},
3213 +       {0x000081c8, 0x00000000},
3214 +       {0x000081cc, 0x00000000},
3215 +       {0x000081d4, 0x00000000},
3216 +       {0x000081ec, 0x00000000},
3217 +       {0x000081f0, 0x00000000},
3218 +       {0x000081f4, 0x00000000},
3219 +       {0x000081f8, 0x00000000},
3220 +       {0x000081fc, 0x00000000},
3221 +       {0x00008240, 0x00100000},
3222 +       {0x00008244, 0x0010f424},
3223 +       {0x00008248, 0x00000800},
3224 +       {0x0000824c, 0x0001e848},
3225 +       {0x00008250, 0x00000000},
3226 +       {0x00008254, 0x00000000},
3227 +       {0x00008258, 0x00000000},
3228 +       {0x0000825c, 0x40000000},
3229 +       {0x00008260, 0x00080922},
3230 +       {0x00008264, 0x9bc00010},
3231 +       {0x00008268, 0xffffffff},
3232 +       {0x0000826c, 0x0000ffff},
3233 +       {0x00008270, 0x00000000},
3234 +       {0x00008274, 0x40000000},
3235 +       {0x00008278, 0x003e4180},
3236 +       {0x0000827c, 0x00000004},
3237 +       {0x00008284, 0x0000002c},
3238 +       {0x00008288, 0x0000002c},
3239 +       {0x0000828c, 0x000000ff},
3240 +       {0x00008294, 0x00000000},
3241 +       {0x00008298, 0x00000000},
3242 +       {0x0000829c, 0x00000000},
3243 +       {0x00008300, 0x00000140},
3244 +       {0x00008314, 0x00000000},
3245 +       {0x0000831c, 0x0000010d},
3246 +       {0x00008328, 0x00000000},
3247 +       {0x0000832c, 0x00000007},
3248 +       {0x00008330, 0x00000302},
3249 +       {0x00008334, 0x00000700},
3250 +       {0x00008338, 0x00ff0000},
3251 +       {0x0000833c, 0x02400000},
3252 +       {0x00008340, 0x000107ff},
3253 +       {0x00008344, 0xaa48105b},
3254 +       {0x00008348, 0x008f0000},
3255 +       {0x0000835c, 0x00000000},
3256 +       {0x00008360, 0xffffffff},
3257 +       {0x00008364, 0xffffffff},
3258 +       {0x00008368, 0x00000000},
3259 +       {0x00008370, 0x00000000},
3260 +       {0x00008374, 0x000000ff},
3261 +       {0x00008378, 0x00000000},
3262 +       {0x0000837c, 0x00000000},
3263 +       {0x00008380, 0xffffffff},
3264 +       {0x00008384, 0xffffffff},
3265 +       {0x00008390, 0xffffffff},
3266 +       {0x00008394, 0xffffffff},
3267 +       {0x00008398, 0x00000000},
3268 +       {0x0000839c, 0x00000000},
3269 +       {0x000083a0, 0x00000000},
3270 +       {0x000083a4, 0x0000fa14},
3271 +       {0x000083a8, 0x000f0c00},
3272 +       {0x000083ac, 0x33332210},
3273 +       {0x000083b0, 0x33332210},
3274 +       {0x000083b4, 0x33332210},
3275 +       {0x000083b8, 0x33332210},
3276 +       {0x000083bc, 0x00000000},
3277 +       {0x000083c0, 0x00000000},
3278 +       {0x000083c4, 0x00000000},
3279 +       {0x000083c8, 0x00000000},
3280 +       {0x000083cc, 0x00000200},
3281 +       {0x000083d0, 0x000301ff},
3282 +};
3283 +
3284 +static const u32 ar9300Common_wo_xlna_rx_gain_table_2p2[][2] = {
3285 +       /* Addr      allmodes  */
3286 +       {0x0000a000, 0x00010000},
3287 +       {0x0000a004, 0x00030002},
3288 +       {0x0000a008, 0x00050004},
3289 +       {0x0000a00c, 0x00810080},
3290 +       {0x0000a010, 0x00830082},
3291 +       {0x0000a014, 0x01810180},
3292 +       {0x0000a018, 0x01830182},
3293 +       {0x0000a01c, 0x01850184},
3294 +       {0x0000a020, 0x01890188},
3295 +       {0x0000a024, 0x018b018a},
3296 +       {0x0000a028, 0x018d018c},
3297 +       {0x0000a02c, 0x03820190},
3298 +       {0x0000a030, 0x03840383},
3299 +       {0x0000a034, 0x03880385},
3300 +       {0x0000a038, 0x038a0389},
3301 +       {0x0000a03c, 0x038c038b},
3302 +       {0x0000a040, 0x0390038d},
3303 +       {0x0000a044, 0x03920391},
3304 +       {0x0000a048, 0x03940393},
3305 +       {0x0000a04c, 0x03960395},
3306 +       {0x0000a050, 0x00000000},
3307 +       {0x0000a054, 0x00000000},
3308 +       {0x0000a058, 0x00000000},
3309 +       {0x0000a05c, 0x00000000},
3310 +       {0x0000a060, 0x00000000},
3311 +       {0x0000a064, 0x00000000},
3312 +       {0x0000a068, 0x00000000},
3313 +       {0x0000a06c, 0x00000000},
3314 +       {0x0000a070, 0x00000000},
3315 +       {0x0000a074, 0x00000000},
3316 +       {0x0000a078, 0x00000000},
3317 +       {0x0000a07c, 0x00000000},
3318 +       {0x0000a080, 0x29292929},
3319 +       {0x0000a084, 0x29292929},
3320 +       {0x0000a088, 0x29292929},
3321 +       {0x0000a08c, 0x29292929},
3322 +       {0x0000a090, 0x22292929},
3323 +       {0x0000a094, 0x1d1d2222},
3324 +       {0x0000a098, 0x0c111117},
3325 +       {0x0000a09c, 0x00030303},
3326 +       {0x0000a0a0, 0x00000000},
3327 +       {0x0000a0a4, 0x00000000},
3328 +       {0x0000a0a8, 0x00000000},
3329 +       {0x0000a0ac, 0x00000000},
3330 +       {0x0000a0b0, 0x00000000},
3331 +       {0x0000a0b4, 0x00000000},
3332 +       {0x0000a0b8, 0x00000000},
3333 +       {0x0000a0bc, 0x00000000},
3334 +       {0x0000a0c0, 0x001f0000},
3335 +       {0x0000a0c4, 0x01000101},
3336 +       {0x0000a0c8, 0x011e011f},
3337 +       {0x0000a0cc, 0x011c011d},
3338 +       {0x0000a0d0, 0x02030204},
3339 +       {0x0000a0d4, 0x02010202},
3340 +       {0x0000a0d8, 0x021f0200},
3341 +       {0x0000a0dc, 0x0302021e},
3342 +       {0x0000a0e0, 0x03000301},
3343 +       {0x0000a0e4, 0x031e031f},
3344 +       {0x0000a0e8, 0x0402031d},
3345 +       {0x0000a0ec, 0x04000401},
3346 +       {0x0000a0f0, 0x041e041f},
3347 +       {0x0000a0f4, 0x0502041d},
3348 +       {0x0000a0f8, 0x05000501},
3349 +       {0x0000a0fc, 0x051e051f},
3350 +       {0x0000a100, 0x06010602},
3351 +       {0x0000a104, 0x061f0600},
3352 +       {0x0000a108, 0x061d061e},
3353 +       {0x0000a10c, 0x07020703},
3354 +       {0x0000a110, 0x07000701},
3355 +       {0x0000a114, 0x00000000},
3356 +       {0x0000a118, 0x00000000},
3357 +       {0x0000a11c, 0x00000000},
3358 +       {0x0000a120, 0x00000000},
3359 +       {0x0000a124, 0x00000000},
3360 +       {0x0000a128, 0x00000000},
3361 +       {0x0000a12c, 0x00000000},
3362 +       {0x0000a130, 0x00000000},
3363 +       {0x0000a134, 0x00000000},
3364 +       {0x0000a138, 0x00000000},
3365 +       {0x0000a13c, 0x00000000},
3366 +       {0x0000a140, 0x001f0000},
3367 +       {0x0000a144, 0x01000101},
3368 +       {0x0000a148, 0x011e011f},
3369 +       {0x0000a14c, 0x011c011d},
3370 +       {0x0000a150, 0x02030204},
3371 +       {0x0000a154, 0x02010202},
3372 +       {0x0000a158, 0x021f0200},
3373 +       {0x0000a15c, 0x0302021e},
3374 +       {0x0000a160, 0x03000301},
3375 +       {0x0000a164, 0x031e031f},
3376 +       {0x0000a168, 0x0402031d},
3377 +       {0x0000a16c, 0x04000401},
3378 +       {0x0000a170, 0x041e041f},
3379 +       {0x0000a174, 0x0502041d},
3380 +       {0x0000a178, 0x05000501},
3381 +       {0x0000a17c, 0x051e051f},
3382 +       {0x0000a180, 0x06010602},
3383 +       {0x0000a184, 0x061f0600},
3384 +       {0x0000a188, 0x061d061e},
3385 +       {0x0000a18c, 0x07020703},
3386 +       {0x0000a190, 0x07000701},
3387 +       {0x0000a194, 0x00000000},
3388 +       {0x0000a198, 0x00000000},
3389 +       {0x0000a19c, 0x00000000},
3390 +       {0x0000a1a0, 0x00000000},
3391 +       {0x0000a1a4, 0x00000000},
3392 +       {0x0000a1a8, 0x00000000},
3393 +       {0x0000a1ac, 0x00000000},
3394 +       {0x0000a1b0, 0x00000000},
3395 +       {0x0000a1b4, 0x00000000},
3396 +       {0x0000a1b8, 0x00000000},
3397 +       {0x0000a1bc, 0x00000000},
3398 +       {0x0000a1c0, 0x00000000},
3399 +       {0x0000a1c4, 0x00000000},
3400 +       {0x0000a1c8, 0x00000000},
3401 +       {0x0000a1cc, 0x00000000},
3402 +       {0x0000a1d0, 0x00000000},
3403 +       {0x0000a1d4, 0x00000000},
3404 +       {0x0000a1d8, 0x00000000},
3405 +       {0x0000a1dc, 0x00000000},
3406 +       {0x0000a1e0, 0x00000000},
3407 +       {0x0000a1e4, 0x00000000},
3408 +       {0x0000a1e8, 0x00000000},
3409 +       {0x0000a1ec, 0x00000000},
3410 +       {0x0000a1f0, 0x00000396},
3411 +       {0x0000a1f4, 0x00000396},
3412 +       {0x0000a1f8, 0x00000396},
3413 +       {0x0000a1fc, 0x00000196},
3414 +       {0x0000b000, 0x00010000},
3415 +       {0x0000b004, 0x00030002},
3416 +       {0x0000b008, 0x00050004},
3417 +       {0x0000b00c, 0x00810080},
3418 +       {0x0000b010, 0x00830082},
3419 +       {0x0000b014, 0x01810180},
3420 +       {0x0000b018, 0x01830182},
3421 +       {0x0000b01c, 0x01850184},
3422 +       {0x0000b020, 0x02810280},
3423 +       {0x0000b024, 0x02830282},
3424 +       {0x0000b028, 0x02850284},
3425 +       {0x0000b02c, 0x02890288},
3426 +       {0x0000b030, 0x028b028a},
3427 +       {0x0000b034, 0x0388028c},
3428 +       {0x0000b038, 0x038a0389},
3429 +       {0x0000b03c, 0x038c038b},
3430 +       {0x0000b040, 0x0390038d},
3431 +       {0x0000b044, 0x03920391},
3432 +       {0x0000b048, 0x03940393},
3433 +       {0x0000b04c, 0x03960395},
3434 +       {0x0000b050, 0x00000000},
3435 +       {0x0000b054, 0x00000000},
3436 +       {0x0000b058, 0x00000000},
3437 +       {0x0000b05c, 0x00000000},
3438 +       {0x0000b060, 0x00000000},
3439 +       {0x0000b064, 0x00000000},
3440 +       {0x0000b068, 0x00000000},
3441 +       {0x0000b06c, 0x00000000},
3442 +       {0x0000b070, 0x00000000},
3443 +       {0x0000b074, 0x00000000},
3444 +       {0x0000b078, 0x00000000},
3445 +       {0x0000b07c, 0x00000000},
3446 +       {0x0000b080, 0x32323232},
3447 +       {0x0000b084, 0x2f2f3232},
3448 +       {0x0000b088, 0x23282a2d},
3449 +       {0x0000b08c, 0x1c1e2123},
3450 +       {0x0000b090, 0x14171919},
3451 +       {0x0000b094, 0x0e0e1214},
3452 +       {0x0000b098, 0x03050707},
3453 +       {0x0000b09c, 0x00030303},
3454 +       {0x0000b0a0, 0x00000000},
3455 +       {0x0000b0a4, 0x00000000},
3456 +       {0x0000b0a8, 0x00000000},
3457 +       {0x0000b0ac, 0x00000000},
3458 +       {0x0000b0b0, 0x00000000},
3459 +       {0x0000b0b4, 0x00000000},
3460 +       {0x0000b0b8, 0x00000000},
3461 +       {0x0000b0bc, 0x00000000},
3462 +       {0x0000b0c0, 0x003f0020},
3463 +       {0x0000b0c4, 0x00400041},
3464 +       {0x0000b0c8, 0x0140005f},
3465 +       {0x0000b0cc, 0x0160015f},
3466 +       {0x0000b0d0, 0x017e017f},
3467 +       {0x0000b0d4, 0x02410242},
3468 +       {0x0000b0d8, 0x025f0240},
3469 +       {0x0000b0dc, 0x027f0260},
3470 +       {0x0000b0e0, 0x0341027e},
3471 +       {0x0000b0e4, 0x035f0340},
3472 +       {0x0000b0e8, 0x037f0360},
3473 +       {0x0000b0ec, 0x04400441},
3474 +       {0x0000b0f0, 0x0460045f},
3475 +       {0x0000b0f4, 0x0541047f},
3476 +       {0x0000b0f8, 0x055f0540},
3477 +       {0x0000b0fc, 0x057f0560},
3478 +       {0x0000b100, 0x06400641},
3479 +       {0x0000b104, 0x0660065f},
3480 +       {0x0000b108, 0x067e067f},
3481 +       {0x0000b10c, 0x07410742},
3482 +       {0x0000b110, 0x075f0740},
3483 +       {0x0000b114, 0x077f0760},
3484 +       {0x0000b118, 0x07800781},
3485 +       {0x0000b11c, 0x07a0079f},
3486 +       {0x0000b120, 0x07c107bf},
3487 +       {0x0000b124, 0x000007c0},
3488 +       {0x0000b128, 0x00000000},
3489 +       {0x0000b12c, 0x00000000},
3490 +       {0x0000b130, 0x00000000},
3491 +       {0x0000b134, 0x00000000},
3492 +       {0x0000b138, 0x00000000},
3493 +       {0x0000b13c, 0x00000000},
3494 +       {0x0000b140, 0x003f0020},
3495 +       {0x0000b144, 0x00400041},
3496 +       {0x0000b148, 0x0140005f},
3497 +       {0x0000b14c, 0x0160015f},
3498 +       {0x0000b150, 0x017e017f},
3499 +       {0x0000b154, 0x02410242},
3500 +       {0x0000b158, 0x025f0240},
3501 +       {0x0000b15c, 0x027f0260},
3502 +       {0x0000b160, 0x0341027e},
3503 +       {0x0000b164, 0x035f0340},
3504 +       {0x0000b168, 0x037f0360},
3505 +       {0x0000b16c, 0x04400441},
3506 +       {0x0000b170, 0x0460045f},
3507 +       {0x0000b174, 0x0541047f},
3508 +       {0x0000b178, 0x055f0540},
3509 +       {0x0000b17c, 0x057f0560},
3510 +       {0x0000b180, 0x06400641},
3511 +       {0x0000b184, 0x0660065f},
3512 +       {0x0000b188, 0x067e067f},
3513 +       {0x0000b18c, 0x07410742},
3514 +       {0x0000b190, 0x075f0740},
3515 +       {0x0000b194, 0x077f0760},
3516 +       {0x0000b198, 0x07800781},
3517 +       {0x0000b19c, 0x07a0079f},
3518 +       {0x0000b1a0, 0x07c107bf},
3519 +       {0x0000b1a4, 0x000007c0},
3520 +       {0x0000b1a8, 0x00000000},
3521 +       {0x0000b1ac, 0x00000000},
3522 +       {0x0000b1b0, 0x00000000},
3523 +       {0x0000b1b4, 0x00000000},
3524 +       {0x0000b1b8, 0x00000000},
3525 +       {0x0000b1bc, 0x00000000},
3526 +       {0x0000b1c0, 0x00000000},
3527 +       {0x0000b1c4, 0x00000000},
3528 +       {0x0000b1c8, 0x00000000},
3529 +       {0x0000b1cc, 0x00000000},
3530 +       {0x0000b1d0, 0x00000000},
3531 +       {0x0000b1d4, 0x00000000},
3532 +       {0x0000b1d8, 0x00000000},
3533 +       {0x0000b1dc, 0x00000000},
3534 +       {0x0000b1e0, 0x00000000},
3535 +       {0x0000b1e4, 0x00000000},
3536 +       {0x0000b1e8, 0x00000000},
3537 +       {0x0000b1ec, 0x00000000},
3538 +       {0x0000b1f0, 0x00000396},
3539 +       {0x0000b1f4, 0x00000396},
3540 +       {0x0000b1f8, 0x00000396},
3541 +       {0x0000b1fc, 0x00000196},
3542 +};
3543 +
3544 +static const u32 ar9300_2p2_soc_preamble[][2] = {
3545 +       /* Addr      allmodes  */
3546 +       {0x000040a4, 0x00a0c1c9},
3547 +       {0x00007008, 0x00000000},
3548 +       {0x00007020, 0x00000000},
3549 +       {0x00007034, 0x00000002},
3550 +       {0x00007038, 0x000004c2},
3551 +       {0x00007048, 0x00000008},
3552 +};
3553 +
3554 +static const u32 ar9300PciePhy_pll_on_clkreq_disable_L1_2p2[][2] = {
3555 +       /* Addr      allmodes  */
3556 +       {0x00004040, 0x08212e5e},
3557 +       {0x00004040, 0x0008003b},
3558 +       {0x00004044, 0x00000000},
3559 +};
3560 +
3561 +static const u32 ar9300PciePhy_clkreq_enable_L1_2p2[][2] = {
3562 +       /* Addr      allmodes  */
3563 +       {0x00004040, 0x08253e5e},
3564 +       {0x00004040, 0x0008003b},
3565 +       {0x00004044, 0x00000000},
3566 +};
3567 +
3568 +static const u32 ar9300PciePhy_clkreq_disable_L1_2p2[][2] = {
3569 +       /* Addr      allmodes  */
3570 +       {0x00004040, 0x08213e5e},
3571 +       {0x00004040, 0x0008003b},
3572 +       {0x00004044, 0x00000000},
3573 +};
3574 +
3575 +#endif /* INITVALS_9003_2P2_H */
3576 --- a/drivers/net/wireless/ath/ath9k/ar9003_hw.c
3577 +++ b/drivers/net/wireless/ath/ath9k/ar9003_hw.c
3578 @@ -16,7 +16,8 @@
3579  
3580  #include "hw.h"
3581  #include "ar9003_mac.h"
3582 -#include "ar9003_initvals.h"
3583 +#include "ar9003_2p0_initvals.h"
3584 +#include "ar9003_2p2_initvals.h"
3585  
3586  /* General hardware code for the AR9003 hadware family */
3587  
3588 @@ -31,12 +32,8 @@ static bool ar9003_hw_macversion_support
3589         return false;
3590  }
3591  
3592 -/* AR9003 2.0 - new INI format (pre, core, post arrays per subsystem) */
3593 -/*
3594 - * XXX: move TX/RX gain INI to its own init_mode_gain_regs after
3595 - * ensuring it does not affect hardware bring up
3596 - */
3597 -static void ar9003_hw_init_mode_regs(struct ath_hw *ah)
3598 +/* AR9003 2.0 */
3599 +static void ar9003_2p0_hw_init_mode_regs(struct ath_hw *ah)
3600  {
3601         /* mac */
3602         INIT_INI_ARRAY(&ah->iniMac[ATH_INI_PRE], NULL, 0, 0);
3603 @@ -106,27 +103,128 @@ static void ar9003_hw_init_mode_regs(str
3604                        3);
3605  }
3606  
3607 +/* AR9003 2.2 */
3608 +static void ar9003_2p2_hw_init_mode_regs(struct ath_hw *ah)
3609 +{
3610 +       /* mac */
3611 +       INIT_INI_ARRAY(&ah->iniMac[ATH_INI_PRE], NULL, 0, 0);
3612 +       INIT_INI_ARRAY(&ah->iniMac[ATH_INI_CORE],
3613 +                      ar9300_2p2_mac_core,
3614 +                      ARRAY_SIZE(ar9300_2p2_mac_core), 2);
3615 +       INIT_INI_ARRAY(&ah->iniMac[ATH_INI_POST],
3616 +                      ar9300_2p2_mac_postamble,
3617 +                      ARRAY_SIZE(ar9300_2p2_mac_postamble), 5);
3618 +
3619 +       /* bb */
3620 +       INIT_INI_ARRAY(&ah->iniBB[ATH_INI_PRE], NULL, 0, 0);
3621 +       INIT_INI_ARRAY(&ah->iniBB[ATH_INI_CORE],
3622 +                      ar9300_2p2_baseband_core,
3623 +                      ARRAY_SIZE(ar9300_2p2_baseband_core), 2);
3624 +       INIT_INI_ARRAY(&ah->iniBB[ATH_INI_POST],
3625 +                      ar9300_2p2_baseband_postamble,
3626 +                      ARRAY_SIZE(ar9300_2p2_baseband_postamble), 5);
3627 +
3628 +       /* radio */
3629 +       INIT_INI_ARRAY(&ah->iniRadio[ATH_INI_PRE], NULL, 0, 0);
3630 +       INIT_INI_ARRAY(&ah->iniRadio[ATH_INI_CORE],
3631 +                      ar9300_2p2_radio_core,
3632 +                      ARRAY_SIZE(ar9300_2p2_radio_core), 2);
3633 +       INIT_INI_ARRAY(&ah->iniRadio[ATH_INI_POST],
3634 +                      ar9300_2p2_radio_postamble,
3635 +                      ARRAY_SIZE(ar9300_2p2_radio_postamble), 5);
3636 +
3637 +       /* soc */
3638 +       INIT_INI_ARRAY(&ah->iniSOC[ATH_INI_PRE],
3639 +                      ar9300_2p2_soc_preamble,
3640 +                      ARRAY_SIZE(ar9300_2p2_soc_preamble), 2);
3641 +       INIT_INI_ARRAY(&ah->iniSOC[ATH_INI_CORE], NULL, 0, 0);
3642 +       INIT_INI_ARRAY(&ah->iniSOC[ATH_INI_POST],
3643 +                      ar9300_2p2_soc_postamble,
3644 +                      ARRAY_SIZE(ar9300_2p2_soc_postamble), 5);
3645 +
3646 +       /* rx/tx gain */
3647 +       INIT_INI_ARRAY(&ah->iniModesRxGain,
3648 +                      ar9300Common_rx_gain_table_2p2,
3649 +                      ARRAY_SIZE(ar9300Common_rx_gain_table_2p2), 2);
3650 +       INIT_INI_ARRAY(&ah->iniModesTxGain,
3651 +                      ar9300Modes_lowest_ob_db_tx_gain_table_2p2,
3652 +                      ARRAY_SIZE(ar9300Modes_lowest_ob_db_tx_gain_table_2p2),
3653 +                      5);
3654 +
3655 +       /* Load PCIE SERDES settings from INI */
3656 +
3657 +       /* Awake Setting */
3658 +
3659 +       INIT_INI_ARRAY(&ah->iniPcieSerdes,
3660 +                      ar9300PciePhy_pll_on_clkreq_disable_L1_2p2,
3661 +                      ARRAY_SIZE(ar9300PciePhy_pll_on_clkreq_disable_L1_2p2),
3662 +                      2);
3663 +
3664 +       /* Sleep Setting */
3665 +
3666 +       INIT_INI_ARRAY(&ah->iniPcieSerdesLowPower,
3667 +                      ar9300PciePhy_clkreq_enable_L1_2p2,
3668 +                      ARRAY_SIZE(ar9300PciePhy_clkreq_enable_L1_2p2),
3669 +                      2);
3670 +
3671 +       /* Fast clock modal settings */
3672 +       INIT_INI_ARRAY(&ah->iniModesAdditional,
3673 +                      ar9300Modes_fast_clock_2p2,
3674 +                      ARRAY_SIZE(ar9300Modes_fast_clock_2p2),
3675 +                      3);
3676 +}
3677 +
3678 +/*
3679 + * The AR9003 family uses a new INI format (pre, core, post
3680 + * arrays per subsystem).
3681 + */
3682 +static void ar9003_hw_init_mode_regs(struct ath_hw *ah)
3683 +{
3684 +       if (AR_SREV_9300_20(ah))
3685 +               ar9003_2p0_hw_init_mode_regs(ah);
3686 +       else
3687 +               ar9003_2p2_hw_init_mode_regs(ah);
3688 +}
3689 +
3690  static void ar9003_tx_gain_table_apply(struct ath_hw *ah)
3691  {
3692         switch (ar9003_hw_get_tx_gain_idx(ah)) {
3693         case 0:
3694         default:
3695 -               INIT_INI_ARRAY(&ah->iniModesTxGain,
3696 -                              ar9300Modes_lowest_ob_db_tx_gain_table_2p0,
3697 -                              ARRAY_SIZE(ar9300Modes_lowest_ob_db_tx_gain_table_2p0),
3698 -                              5);
3699 +               if (AR_SREV_9300_20(ah))
3700 +                       INIT_INI_ARRAY(&ah->iniModesTxGain,
3701 +                                      ar9300Modes_lowest_ob_db_tx_gain_table_2p0,
3702 +                                      ARRAY_SIZE(ar9300Modes_lowest_ob_db_tx_gain_table_2p0),
3703 +                                      5);
3704 +               else
3705 +                       INIT_INI_ARRAY(&ah->iniModesTxGain,
3706 +                                      ar9300Modes_lowest_ob_db_tx_gain_table_2p2,
3707 +                                      ARRAY_SIZE(ar9300Modes_lowest_ob_db_tx_gain_table_2p2),
3708 +                                      5);
3709                 break;
3710         case 1:
3711 -               INIT_INI_ARRAY(&ah->iniModesTxGain,
3712 -                              ar9300Modes_high_ob_db_tx_gain_table_2p0,
3713 -                              ARRAY_SIZE(ar9300Modes_high_ob_db_tx_gain_table_2p0),
3714 -                              5);
3715 +               if (AR_SREV_9300_20(ah))
3716 +                       INIT_INI_ARRAY(&ah->iniModesTxGain,
3717 +                                      ar9300Modes_high_ob_db_tx_gain_table_2p0,
3718 +                                      ARRAY_SIZE(ar9300Modes_high_ob_db_tx_gain_table_2p0),
3719 +                                      5);
3720 +               else
3721 +                       INIT_INI_ARRAY(&ah->iniModesTxGain,
3722 +                                      ar9300Modes_high_ob_db_tx_gain_table_2p2,
3723 +                                      ARRAY_SIZE(ar9300Modes_high_ob_db_tx_gain_table_2p2),
3724 +                                      5);
3725                 break;
3726         case 2:
3727 -               INIT_INI_ARRAY(&ah->iniModesTxGain,
3728 -                              ar9300Modes_low_ob_db_tx_gain_table_2p0,
3729 -                              ARRAY_SIZE(ar9300Modes_low_ob_db_tx_gain_table_2p0),
3730 -                              5);
3731 +               if (AR_SREV_9300_20(ah))
3732 +                       INIT_INI_ARRAY(&ah->iniModesTxGain,
3733 +                                      ar9300Modes_low_ob_db_tx_gain_table_2p0,
3734 +                                      ARRAY_SIZE(ar9300Modes_low_ob_db_tx_gain_table_2p0),
3735 +                                      5);
3736 +               else
3737 +                       INIT_INI_ARRAY(&ah->iniModesTxGain,
3738 +                                      ar9300Modes_low_ob_db_tx_gain_table_2p2,
3739 +                                      ARRAY_SIZE(ar9300Modes_low_ob_db_tx_gain_table_2p2),
3740 +                                      5);
3741                 break;
3742         }
3743  }
3744 @@ -136,15 +234,28 @@ static void ar9003_rx_gain_table_apply(s
3745         switch (ar9003_hw_get_rx_gain_idx(ah)) {
3746         case 0:
3747         default:
3748 -               INIT_INI_ARRAY(&ah->iniModesRxGain, ar9300Common_rx_gain_table_2p0,
3749 -                              ARRAY_SIZE(ar9300Common_rx_gain_table_2p0),
3750 -                              2);
3751 +               if (AR_SREV_9300_20(ah))
3752 +                       INIT_INI_ARRAY(&ah->iniModesRxGain,
3753 +                                      ar9300Common_rx_gain_table_2p0,
3754 +                                      ARRAY_SIZE(ar9300Common_rx_gain_table_2p0),
3755 +                                      2);
3756 +               else
3757 +                       INIT_INI_ARRAY(&ah->iniModesRxGain,
3758 +                                      ar9300Common_rx_gain_table_2p2,
3759 +                                      ARRAY_SIZE(ar9300Common_rx_gain_table_2p2),
3760 +                                      2);
3761                 break;
3762         case 1:
3763 -               INIT_INI_ARRAY(&ah->iniModesRxGain,
3764 -                              ar9300Common_wo_xlna_rx_gain_table_2p0,
3765 -                              ARRAY_SIZE(ar9300Common_wo_xlna_rx_gain_table_2p0),
3766 -                              2);
3767 +               if (AR_SREV_9300_20(ah))
3768 +                       INIT_INI_ARRAY(&ah->iniModesRxGain,
3769 +                                      ar9300Common_wo_xlna_rx_gain_table_2p0,
3770 +                                      ARRAY_SIZE(ar9300Common_wo_xlna_rx_gain_table_2p0),
3771 +                                      2);
3772 +               else
3773 +                       INIT_INI_ARRAY(&ah->iniModesRxGain,
3774 +                                      ar9300Common_wo_xlna_rx_gain_table_2p2,
3775 +                                      ARRAY_SIZE(ar9300Common_wo_xlna_rx_gain_table_2p2),
3776 +                                      2);
3777                 break;
3778         }
3779  }
3780 --- a/drivers/net/wireless/ath/ath9k/ar9003_initvals.h
3781 +++ /dev/null
3782 @@ -1,1784 +0,0 @@
3783 -/*
3784 - * Copyright (c) 2010 Atheros Communications Inc.
3785 - *
3786 - * Permission to use, copy, modify, and/or distribute this software for any
3787 - * purpose with or without fee is hereby granted, provided that the above
3788 - * copyright notice and this permission notice appear in all copies.
3789 - *
3790 - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
3791 - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
3792 - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
3793 - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
3794 - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
3795 - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
3796 - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
3797 - */
3798 -
3799 -#ifndef INITVALS_9003_H
3800 -#define INITVALS_9003_H
3801 -
3802 -/* AR9003 2.0 */
3803 -
3804 -static const u32 ar9300_2p0_radio_postamble[][5] = {
3805 -       /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */
3806 -       {0x0001609c, 0x0dd08f29, 0x0dd08f29, 0x0b283f31, 0x0b283f31},
3807 -       {0x000160ac, 0xa4653c00, 0xa4653c00, 0x24652800, 0x24652800},
3808 -       {0x000160b0, 0x03284f3e, 0x03284f3e, 0x05d08f20, 0x05d08f20},
3809 -       {0x0001610c, 0x08000000, 0x00000000, 0x00000000, 0x00000000},
3810 -       {0x00016140, 0x10804008, 0x10804008, 0x50804008, 0x50804008},
3811 -       {0x0001650c, 0x08000000, 0x00000000, 0x00000000, 0x00000000},
3812 -       {0x00016540, 0x10804008, 0x10804008, 0x50804008, 0x50804008},
3813 -       {0x0001690c, 0x08000000, 0x00000000, 0x00000000, 0x00000000},
3814 -       {0x00016940, 0x10804008, 0x10804008, 0x50804008, 0x50804008},
3815 -};
3816 -
3817 -static const u32 ar9300Modes_lowest_ob_db_tx_gain_table_2p0[][5] = {
3818 -       /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */
3819 -       {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9},
3820 -       {0x0000a500, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
3821 -       {0x0000a504, 0x06000003, 0x06000003, 0x04000002, 0x04000002},
3822 -       {0x0000a508, 0x0a000020, 0x0a000020, 0x08000004, 0x08000004},
3823 -       {0x0000a50c, 0x10000023, 0x10000023, 0x0b000200, 0x0b000200},
3824 -       {0x0000a510, 0x16000220, 0x16000220, 0x0f000202, 0x0f000202},
3825 -       {0x0000a514, 0x1c000223, 0x1c000223, 0x12000400, 0x12000400},
3826 -       {0x0000a518, 0x21020220, 0x21020220, 0x16000402, 0x16000402},
3827 -       {0x0000a51c, 0x27020223, 0x27020223, 0x19000404, 0x19000404},
3828 -       {0x0000a520, 0x2b022220, 0x2b022220, 0x1c000603, 0x1c000603},
3829 -       {0x0000a524, 0x2f022222, 0x2f022222, 0x21000a02, 0x21000a02},
3830 -       {0x0000a528, 0x34022225, 0x34022225, 0x25000a04, 0x25000a04},
3831 -       {0x0000a52c, 0x3a02222a, 0x3a02222a, 0x28000a20, 0x28000a20},
3832 -       {0x0000a530, 0x3e02222c, 0x3e02222c, 0x2c000e20, 0x2c000e20},
3833 -       {0x0000a534, 0x4202242a, 0x4202242a, 0x30000e22, 0x30000e22},
3834 -       {0x0000a538, 0x4702244a, 0x4702244a, 0x34000e24, 0x34000e24},
3835 -       {0x0000a53c, 0x4b02244c, 0x4b02244c, 0x38001640, 0x38001640},
3836 -       {0x0000a540, 0x4e02246c, 0x4e02246c, 0x3c001660, 0x3c001660},
3837 -       {0x0000a544, 0x5302266c, 0x5302266c, 0x3f001861, 0x3f001861},
3838 -       {0x0000a548, 0x5702286c, 0x5702286c, 0x43001a81, 0x43001a81},
3839 -       {0x0000a54c, 0x5c04286b, 0x5c04286b, 0x47001a83, 0x47001a83},
3840 -       {0x0000a550, 0x61042a6c, 0x61042a6c, 0x4a001c84, 0x4a001c84},
3841 -       {0x0000a554, 0x66062a6c, 0x66062a6c, 0x4e001ce3, 0x4e001ce3},
3842 -       {0x0000a558, 0x6b062e6c, 0x6b062e6c, 0x52001ce5, 0x52001ce5},
3843 -       {0x0000a55c, 0x7006308c, 0x7006308c, 0x56001ce9, 0x56001ce9},
3844 -       {0x0000a560, 0x730a308a, 0x730a308a, 0x5a001ceb, 0x5a001ceb},
3845 -       {0x0000a564, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
3846 -       {0x0000a568, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
3847 -       {0x0000a56c, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
3848 -       {0x0000a570, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
3849 -       {0x0000a574, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
3850 -       {0x0000a578, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
3851 -       {0x0000a57c, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
3852 -       {0x0000a580, 0x00800000, 0x00800000, 0x00800000, 0x00800000},
3853 -       {0x0000a584, 0x06800003, 0x06800003, 0x04800002, 0x04800002},
3854 -       {0x0000a588, 0x0a800020, 0x0a800020, 0x08800004, 0x08800004},
3855 -       {0x0000a58c, 0x10800023, 0x10800023, 0x0b800200, 0x0b800200},
3856 -       {0x0000a590, 0x16800220, 0x16800220, 0x0f800202, 0x0f800202},
3857 -       {0x0000a594, 0x1c800223, 0x1c800223, 0x12800400, 0x12800400},
3858 -       {0x0000a598, 0x21820220, 0x21820220, 0x16800402, 0x16800402},
3859 -       {0x0000a59c, 0x27820223, 0x27820223, 0x19800404, 0x19800404},
3860 -       {0x0000a5a0, 0x2b822220, 0x2b822220, 0x1c800603, 0x1c800603},
3861 -       {0x0000a5a4, 0x2f822222, 0x2f822222, 0x21800a02, 0x21800a02},
3862 -       {0x0000a5a8, 0x34822225, 0x34822225, 0x25800a04, 0x25800a04},
3863 -       {0x0000a5ac, 0x3a82222a, 0x3a82222a, 0x28800a20, 0x28800a20},
3864 -       {0x0000a5b0, 0x3e82222c, 0x3e82222c, 0x2c800e20, 0x2c800e20},
3865 -       {0x0000a5b4, 0x4282242a, 0x4282242a, 0x30800e22, 0x30800e22},
3866 -       {0x0000a5b8, 0x4782244a, 0x4782244a, 0x34800e24, 0x34800e24},
3867 -       {0x0000a5bc, 0x4b82244c, 0x4b82244c, 0x38801640, 0x38801640},
3868 -       {0x0000a5c0, 0x4e82246c, 0x4e82246c, 0x3c801660, 0x3c801660},
3869 -       {0x0000a5c4, 0x5382266c, 0x5382266c, 0x3f801861, 0x3f801861},
3870 -       {0x0000a5c8, 0x5782286c, 0x5782286c, 0x43801a81, 0x43801a81},
3871 -       {0x0000a5cc, 0x5c84286b, 0x5c84286b, 0x47801a83, 0x47801a83},
3872 -       {0x0000a5d0, 0x61842a6c, 0x61842a6c, 0x4a801c84, 0x4a801c84},
3873 -       {0x0000a5d4, 0x66862a6c, 0x66862a6c, 0x4e801ce3, 0x4e801ce3},
3874 -       {0x0000a5d8, 0x6b862e6c, 0x6b862e6c, 0x52801ce5, 0x52801ce5},
3875 -       {0x0000a5dc, 0x7086308c, 0x7086308c, 0x56801ce9, 0x56801ce9},
3876 -       {0x0000a5e0, 0x738a308a, 0x738a308a, 0x5a801ceb, 0x5a801ceb},
3877 -       {0x0000a5e4, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
3878 -       {0x0000a5e8, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
3879 -       {0x0000a5ec, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
3880 -       {0x0000a5f0, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
3881 -       {0x0000a5f4, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
3882 -       {0x0000a5f8, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
3883 -       {0x0000a5fc, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
3884 -       {0x00016044, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4},
3885 -       {0x00016048, 0x62480001, 0x62480001, 0x62480001, 0x62480001},
3886 -       {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
3887 -       {0x00016444, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4},
3888 -       {0x00016448, 0x62480001, 0x62480001, 0x62480001, 0x62480001},
3889 -       {0x00016468, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
3890 -       {0x00016844, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4},
3891 -       {0x00016848, 0x62480001, 0x62480001, 0x62480001, 0x62480001},
3892 -       {0x00016868, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
3893 -};
3894 -
3895 -static const u32 ar9300Modes_fast_clock_2p0[][3] = {
3896 -       /* Addr      5G_HT20     5G_HT40   */
3897 -       {0x00001030, 0x00000268, 0x000004d0},
3898 -       {0x00001070, 0x0000018c, 0x00000318},
3899 -       {0x000010b0, 0x00000fd0, 0x00001fa0},
3900 -       {0x00008014, 0x044c044c, 0x08980898},
3901 -       {0x0000801c, 0x148ec02b, 0x148ec057},
3902 -       {0x00008318, 0x000044c0, 0x00008980},
3903 -       {0x00009e00, 0x03721821, 0x03721821},
3904 -       {0x0000a230, 0x0000000b, 0x00000016},
3905 -       {0x0000a254, 0x00000898, 0x00001130},
3906 -};
3907 -
3908 -static const u32 ar9300_2p0_radio_core[][2] = {
3909 -       /* Addr      allmodes  */
3910 -       {0x00016000, 0x36db6db6},
3911 -       {0x00016004, 0x6db6db40},
3912 -       {0x00016008, 0x73f00000},
3913 -       {0x0001600c, 0x00000000},
3914 -       {0x00016040, 0x7f80fff8},
3915 -       {0x0001604c, 0x76d005b5},
3916 -       {0x00016050, 0x556cf031},
3917 -       {0x00016054, 0x13449440},
3918 -       {0x00016058, 0x0c51c92c},
3919 -       {0x0001605c, 0x3db7fffc},
3920 -       {0x00016060, 0xfffffffc},
3921 -       {0x00016064, 0x000f0278},
3922 -       {0x0001606c, 0x6db60000},
3923 -       {0x00016080, 0x00000000},
3924 -       {0x00016084, 0x0e48048c},
3925 -       {0x00016088, 0x54214514},
3926 -       {0x0001608c, 0x119f481e},
3927 -       {0x00016090, 0x24926490},
3928 -       {0x00016098, 0xd2888888},
3929 -       {0x000160a0, 0x0a108ffe},
3930 -       {0x000160a4, 0x812fc370},
3931 -       {0x000160a8, 0x423c8000},
3932 -       {0x000160b4, 0x92480080},
3933 -       {0x000160c0, 0x00adb6d0},
3934 -       {0x000160c4, 0x6db6db60},
3935 -       {0x000160c8, 0x6db6db6c},
3936 -       {0x000160cc, 0x01e6c000},
3937 -       {0x00016100, 0x3fffbe01},
3938 -       {0x00016104, 0xfff80000},
3939 -       {0x00016108, 0x00080010},
3940 -       {0x00016144, 0x02084080},
3941 -       {0x00016148, 0x00000000},
3942 -       {0x00016280, 0x058a0001},
3943 -       {0x00016284, 0x3d840208},
3944 -       {0x00016288, 0x05a20408},
3945 -       {0x0001628c, 0x00038c07},
3946 -       {0x00016290, 0x40000004},
3947 -       {0x00016294, 0x458aa14f},
3948 -       {0x00016380, 0x00000000},
3949 -       {0x00016384, 0x00000000},
3950 -       {0x00016388, 0x00800700},
3951 -       {0x0001638c, 0x00800700},
3952 -       {0x00016390, 0x00800700},
3953 -       {0x00016394, 0x00000000},
3954 -       {0x00016398, 0x00000000},
3955 -       {0x0001639c, 0x00000000},
3956 -       {0x000163a0, 0x00000001},
3957 -       {0x000163a4, 0x00000001},
3958 -       {0x000163a8, 0x00000000},
3959 -       {0x000163ac, 0x00000000},
3960 -       {0x000163b0, 0x00000000},
3961 -       {0x000163b4, 0x00000000},
3962 -       {0x000163b8, 0x00000000},
3963 -       {0x000163bc, 0x00000000},
3964 -       {0x000163c0, 0x000000a0},
3965 -       {0x000163c4, 0x000c0000},
3966 -       {0x000163c8, 0x14021402},
3967 -       {0x000163cc, 0x00001402},
3968 -       {0x000163d0, 0x00000000},
3969 -       {0x000163d4, 0x00000000},
3970 -       {0x00016400, 0x36db6db6},
3971 -       {0x00016404, 0x6db6db40},
3972 -       {0x00016408, 0x73f00000},
3973 -       {0x0001640c, 0x00000000},
3974 -       {0x00016440, 0x7f80fff8},
3975 -       {0x0001644c, 0x76d005b5},
3976 -       {0x00016450, 0x556cf031},
3977 -       {0x00016454, 0x13449440},
3978 -       {0x00016458, 0x0c51c92c},
3979 -       {0x0001645c, 0x3db7fffc},
3980 -       {0x00016460, 0xfffffffc},
3981 -       {0x00016464, 0x000f0278},
3982 -       {0x0001646c, 0x6db60000},
3983 -       {0x00016500, 0x3fffbe01},
3984 -       {0x00016504, 0xfff80000},
3985 -       {0x00016508, 0x00080010},
3986 -       {0x00016544, 0x02084080},
3987 -       {0x00016548, 0x00000000},
3988 -       {0x00016780, 0x00000000},
3989 -       {0x00016784, 0x00000000},
3990 -       {0x00016788, 0x00800700},
3991 -       {0x0001678c, 0x00800700},
3992 -       {0x00016790, 0x00800700},
3993 -       {0x00016794, 0x00000000},
3994 -       {0x00016798, 0x00000000},
3995 -       {0x0001679c, 0x00000000},
3996 -       {0x000167a0, 0x00000001},
3997 -       {0x000167a4, 0x00000001},
3998 -       {0x000167a8, 0x00000000},
3999 -       {0x000167ac, 0x00000000},
4000 -       {0x000167b0, 0x00000000},
4001 -       {0x000167b4, 0x00000000},
4002 -       {0x000167b8, 0x00000000},
4003 -       {0x000167bc, 0x00000000},
4004 -       {0x000167c0, 0x000000a0},
4005 -       {0x000167c4, 0x000c0000},
4006 -       {0x000167c8, 0x14021402},
4007 -       {0x000167cc, 0x00001402},
4008 -       {0x000167d0, 0x00000000},
4009 -       {0x000167d4, 0x00000000},
4010 -       {0x00016800, 0x36db6db6},
4011 -       {0x00016804, 0x6db6db40},
4012 -       {0x00016808, 0x73f00000},
4013 -       {0x0001680c, 0x00000000},
4014 -       {0x00016840, 0x7f80fff8},
4015 -       {0x0001684c, 0x76d005b5},
4016 -       {0x00016850, 0x556cf031},
4017 -       {0x00016854, 0x13449440},
4018 -       {0x00016858, 0x0c51c92c},
4019 -       {0x0001685c, 0x3db7fffc},
4020 -       {0x00016860, 0xfffffffc},
4021 -       {0x00016864, 0x000f0278},
4022 -       {0x0001686c, 0x6db60000},
4023 -       {0x00016900, 0x3fffbe01},
4024 -       {0x00016904, 0xfff80000},
4025 -       {0x00016908, 0x00080010},
4026 -       {0x00016944, 0x02084080},
4027 -       {0x00016948, 0x00000000},
4028 -       {0x00016b80, 0x00000000},
4029 -       {0x00016b84, 0x00000000},
4030 -       {0x00016b88, 0x00800700},
4031 -       {0x00016b8c, 0x00800700},
4032 -       {0x00016b90, 0x00800700},
4033 -       {0x00016b94, 0x00000000},
4034 -       {0x00016b98, 0x00000000},
4035 -       {0x00016b9c, 0x00000000},
4036 -       {0x00016ba0, 0x00000001},
4037 -       {0x00016ba4, 0x00000001},
4038 -       {0x00016ba8, 0x00000000},
4039 -       {0x00016bac, 0x00000000},
4040 -       {0x00016bb0, 0x00000000},
4041 -       {0x00016bb4, 0x00000000},
4042 -       {0x00016bb8, 0x00000000},
4043 -       {0x00016bbc, 0x00000000},
4044 -       {0x00016bc0, 0x000000a0},
4045 -       {0x00016bc4, 0x000c0000},
4046 -       {0x00016bc8, 0x14021402},
4047 -       {0x00016bcc, 0x00001402},
4048 -       {0x00016bd0, 0x00000000},
4049 -       {0x00016bd4, 0x00000000},
4050 -};
4051 -
4052 -static const u32 ar9300Common_rx_gain_table_merlin_2p0[][2] = {
4053 -       /* Addr      allmodes  */
4054 -       {0x0000a000, 0x02000101},
4055 -       {0x0000a004, 0x02000102},
4056 -       {0x0000a008, 0x02000103},
4057 -       {0x0000a00c, 0x02000104},
4058 -       {0x0000a010, 0x02000200},
4059 -       {0x0000a014, 0x02000201},
4060 -       {0x0000a018, 0x02000202},
4061 -       {0x0000a01c, 0x02000203},
4062 -       {0x0000a020, 0x02000204},
4063 -       {0x0000a024, 0x02000205},
4064 -       {0x0000a028, 0x02000208},
4065 -       {0x0000a02c, 0x02000302},
4066 -       {0x0000a030, 0x02000303},
4067 -       {0x0000a034, 0x02000304},
4068 -       {0x0000a038, 0x02000400},
4069 -       {0x0000a03c, 0x02010300},
4070 -       {0x0000a040, 0x02010301},
4071 -       {0x0000a044, 0x02010302},
4072 -       {0x0000a048, 0x02000500},
4073 -       {0x0000a04c, 0x02010400},
4074 -       {0x0000a050, 0x02020300},
4075 -       {0x0000a054, 0x02020301},
4076 -       {0x0000a058, 0x02020302},
4077 -       {0x0000a05c, 0x02020303},
4078 -       {0x0000a060, 0x02020400},
4079 -       {0x0000a064, 0x02030300},
4080 -       {0x0000a068, 0x02030301},
4081 -       {0x0000a06c, 0x02030302},
4082 -       {0x0000a070, 0x02030303},
4083 -       {0x0000a074, 0x02030400},
4084 -       {0x0000a078, 0x02040300},
4085 -       {0x0000a07c, 0x02040301},
4086 -       {0x0000a080, 0x02040302},
4087 -       {0x0000a084, 0x02040303},
4088 -       {0x0000a088, 0x02030500},
4089 -       {0x0000a08c, 0x02040400},
4090 -       {0x0000a090, 0x02050203},
4091 -       {0x0000a094, 0x02050204},
4092 -       {0x0000a098, 0x02050205},
4093 -       {0x0000a09c, 0x02040500},
4094 -       {0x0000a0a0, 0x02050301},
4095 -       {0x0000a0a4, 0x02050302},
4096 -       {0x0000a0a8, 0x02050303},
4097 -       {0x0000a0ac, 0x02050400},
4098 -       {0x0000a0b0, 0x02050401},
4099 -       {0x0000a0b4, 0x02050402},
4100 -       {0x0000a0b8, 0x02050403},
4101 -       {0x0000a0bc, 0x02050500},
4102 -       {0x0000a0c0, 0x02050501},
4103 -       {0x0000a0c4, 0x02050502},
4104 -       {0x0000a0c8, 0x02050503},
4105 -       {0x0000a0cc, 0x02050504},
4106 -       {0x0000a0d0, 0x02050600},
4107 -       {0x0000a0d4, 0x02050601},
4108 -       {0x0000a0d8, 0x02050602},
4109 -       {0x0000a0dc, 0x02050603},
4110 -       {0x0000a0e0, 0x02050604},
4111 -       {0x0000a0e4, 0x02050700},
4112 -       {0x0000a0e8, 0x02050701},
4113 -       {0x0000a0ec, 0x02050702},
4114 -       {0x0000a0f0, 0x02050703},
4115 -       {0x0000a0f4, 0x02050704},
4116 -       {0x0000a0f8, 0x02050705},
4117 -       {0x0000a0fc, 0x02050708},
4118 -       {0x0000a100, 0x02050709},
4119 -       {0x0000a104, 0x0205070a},
4120 -       {0x0000a108, 0x0205070b},
4121 -       {0x0000a10c, 0x0205070c},
4122 -       {0x0000a110, 0x0205070d},
4123 -       {0x0000a114, 0x02050710},
4124 -       {0x0000a118, 0x02050711},
4125 -       {0x0000a11c, 0x02050712},
4126 -       {0x0000a120, 0x02050713},
4127 -       {0x0000a124, 0x02050714},
4128 -       {0x0000a128, 0x02050715},
4129 -       {0x0000a12c, 0x02050730},
4130 -       {0x0000a130, 0x02050731},
4131 -       {0x0000a134, 0x02050732},
4132 -       {0x0000a138, 0x02050733},
4133 -       {0x0000a13c, 0x02050734},
4134 -       {0x0000a140, 0x02050735},
4135 -       {0x0000a144, 0x02050750},
4136 -       {0x0000a148, 0x02050751},
4137 -       {0x0000a14c, 0x02050752},
4138 -       {0x0000a150, 0x02050753},
4139 -       {0x0000a154, 0x02050754},
4140 -       {0x0000a158, 0x02050755},
4141 -       {0x0000a15c, 0x02050770},
4142 -       {0x0000a160, 0x02050771},
4143 -       {0x0000a164, 0x02050772},
4144 -       {0x0000a168, 0x02050773},
4145 -       {0x0000a16c, 0x02050774},
4146 -       {0x0000a170, 0x02050775},
4147 -       {0x0000a174, 0x00000776},
4148 -       {0x0000a178, 0x00000776},
4149 -       {0x0000a17c, 0x00000776},
4150 -       {0x0000a180, 0x00000776},
4151 -       {0x0000a184, 0x00000776},
4152 -       {0x0000a188, 0x00000776},
4153 -       {0x0000a18c, 0x00000776},
4154 -       {0x0000a190, 0x00000776},
4155 -       {0x0000a194, 0x00000776},
4156 -       {0x0000a198, 0x00000776},
4157 -       {0x0000a19c, 0x00000776},
4158 -       {0x0000a1a0, 0x00000776},
4159 -       {0x0000a1a4, 0x00000776},
4160 -       {0x0000a1a8, 0x00000776},
4161 -       {0x0000a1ac, 0x00000776},
4162 -       {0x0000a1b0, 0x00000776},
4163 -       {0x0000a1b4, 0x00000776},
4164 -       {0x0000a1b8, 0x00000776},
4165 -       {0x0000a1bc, 0x00000776},
4166 -       {0x0000a1c0, 0x00000776},
4167 -       {0x0000a1c4, 0x00000776},
4168 -       {0x0000a1c8, 0x00000776},
4169 -       {0x0000a1cc, 0x00000776},
4170 -       {0x0000a1d0, 0x00000776},
4171 -       {0x0000a1d4, 0x00000776},
4172 -       {0x0000a1d8, 0x00000776},
4173 -       {0x0000a1dc, 0x00000776},
4174 -       {0x0000a1e0, 0x00000776},
4175 -       {0x0000a1e4, 0x00000776},
4176 -       {0x0000a1e8, 0x00000776},
4177 -       {0x0000a1ec, 0x00000776},
4178 -       {0x0000a1f0, 0x00000776},
4179 -       {0x0000a1f4, 0x00000776},
4180 -       {0x0000a1f8, 0x00000776},
4181 -       {0x0000a1fc, 0x00000776},
4182 -       {0x0000b000, 0x02000101},
4183 -       {0x0000b004, 0x02000102},
4184 -       {0x0000b008, 0x02000103},
4185 -       {0x0000b00c, 0x02000104},
4186 -       {0x0000b010, 0x02000200},
4187 -       {0x0000b014, 0x02000201},
4188 -       {0x0000b018, 0x02000202},
4189 -       {0x0000b01c, 0x02000203},
4190 -       {0x0000b020, 0x02000204},
4191 -       {0x0000b024, 0x02000205},
4192 -       {0x0000b028, 0x02000208},
4193 -       {0x0000b02c, 0x02000302},
4194 -       {0x0000b030, 0x02000303},
4195 -       {0x0000b034, 0x02000304},
4196 -       {0x0000b038, 0x02000400},
4197 -       {0x0000b03c, 0x02010300},
4198 -       {0x0000b040, 0x02010301},
4199 -       {0x0000b044, 0x02010302},
4200 -       {0x0000b048, 0x02000500},
4201 -       {0x0000b04c, 0x02010400},
4202 -       {0x0000b050, 0x02020300},
4203 -       {0x0000b054, 0x02020301},
4204 -       {0x0000b058, 0x02020302},
4205 -       {0x0000b05c, 0x02020303},
4206 -       {0x0000b060, 0x02020400},
4207 -       {0x0000b064, 0x02030300},
4208 -       {0x0000b068, 0x02030301},
4209 -       {0x0000b06c, 0x02030302},
4210 -       {0x0000b070, 0x02030303},
4211 -       {0x0000b074, 0x02030400},
4212 -       {0x0000b078, 0x02040300},
4213 -       {0x0000b07c, 0x02040301},
4214 -       {0x0000b080, 0x02040302},
4215 -       {0x0000b084, 0x02040303},
4216 -       {0x0000b088, 0x02030500},
4217 -       {0x0000b08c, 0x02040400},
4218 -       {0x0000b090, 0x02050203},
4219 -       {0x0000b094, 0x02050204},
4220 -       {0x0000b098, 0x02050205},
4221 -       {0x0000b09c, 0x02040500},
4222 -       {0x0000b0a0, 0x02050301},
4223 -       {0x0000b0a4, 0x02050302},
4224 -       {0x0000b0a8, 0x02050303},
4225 -       {0x0000b0ac, 0x02050400},
4226 -       {0x0000b0b0, 0x02050401},
4227 -       {0x0000b0b4, 0x02050402},
4228 -       {0x0000b0b8, 0x02050403},
4229 -       {0x0000b0bc, 0x02050500},
4230 -       {0x0000b0c0, 0x02050501},
4231 -       {0x0000b0c4, 0x02050502},
4232 -       {0x0000b0c8, 0x02050503},
4233 -       {0x0000b0cc, 0x02050504},
4234 -       {0x0000b0d0, 0x02050600},
4235 -       {0x0000b0d4, 0x02050601},
4236 -       {0x0000b0d8, 0x02050602},
4237 -       {0x0000b0dc, 0x02050603},
4238 -       {0x0000b0e0, 0x02050604},
4239 -       {0x0000b0e4, 0x02050700},
4240 -       {0x0000b0e8, 0x02050701},
4241 -       {0x0000b0ec, 0x02050702},
4242 -       {0x0000b0f0, 0x02050703},
4243 -       {0x0000b0f4, 0x02050704},
4244 -       {0x0000b0f8, 0x02050705},
4245 -       {0x0000b0fc, 0x02050708},
4246 -       {0x0000b100, 0x02050709},
4247 -       {0x0000b104, 0x0205070a},
4248 -       {0x0000b108, 0x0205070b},
4249 -       {0x0000b10c, 0x0205070c},
4250 -       {0x0000b110, 0x0205070d},
4251 -       {0x0000b114, 0x02050710},
4252 -       {0x0000b118, 0x02050711},
4253 -       {0x0000b11c, 0x02050712},
4254 -       {0x0000b120, 0x02050713},
4255 -       {0x0000b124, 0x02050714},
4256 -       {0x0000b128, 0x02050715},
4257 -       {0x0000b12c, 0x02050730},
4258 -       {0x0000b130, 0x02050731},
4259 -       {0x0000b134, 0x02050732},
4260 -       {0x0000b138, 0x02050733},
4261 -       {0x0000b13c, 0x02050734},
4262 -       {0x0000b140, 0x02050735},
4263 -       {0x0000b144, 0x02050750},
4264 -       {0x0000b148, 0x02050751},
4265 -       {0x0000b14c, 0x02050752},
4266 -       {0x0000b150, 0x02050753},
4267 -       {0x0000b154, 0x02050754},
4268 -       {0x0000b158, 0x02050755},
4269 -       {0x0000b15c, 0x02050770},
4270 -       {0x0000b160, 0x02050771},
4271 -       {0x0000b164, 0x02050772},
4272 -       {0x0000b168, 0x02050773},
4273 -       {0x0000b16c, 0x02050774},
4274 -       {0x0000b170, 0x02050775},
4275 -       {0x0000b174, 0x00000776},
4276 -       {0x0000b178, 0x00000776},
4277 -       {0x0000b17c, 0x00000776},
4278 -       {0x0000b180, 0x00000776},
4279 -       {0x0000b184, 0x00000776},
4280 -       {0x0000b188, 0x00000776},
4281 -       {0x0000b18c, 0x00000776},
4282 -       {0x0000b190, 0x00000776},
4283 -       {0x0000b194, 0x00000776},
4284 -       {0x0000b198, 0x00000776},
4285 -       {0x0000b19c, 0x00000776},
4286 -       {0x0000b1a0, 0x00000776},
4287 -       {0x0000b1a4, 0x00000776},
4288 -       {0x0000b1a8, 0x00000776},
4289 -       {0x0000b1ac, 0x00000776},
4290 -       {0x0000b1b0, 0x00000776},
4291 -       {0x0000b1b4, 0x00000776},
4292 -       {0x0000b1b8, 0x00000776},
4293 -       {0x0000b1bc, 0x00000776},
4294 -       {0x0000b1c0, 0x00000776},
4295 -       {0x0000b1c4, 0x00000776},
4296 -       {0x0000b1c8, 0x00000776},
4297 -       {0x0000b1cc, 0x00000776},
4298 -       {0x0000b1d0, 0x00000776},
4299 -       {0x0000b1d4, 0x00000776},
4300 -       {0x0000b1d8, 0x00000776},
4301 -       {0x0000b1dc, 0x00000776},
4302 -       {0x0000b1e0, 0x00000776},
4303 -       {0x0000b1e4, 0x00000776},
4304 -       {0x0000b1e8, 0x00000776},
4305 -       {0x0000b1ec, 0x00000776},
4306 -       {0x0000b1f0, 0x00000776},
4307 -       {0x0000b1f4, 0x00000776},
4308 -       {0x0000b1f8, 0x00000776},
4309 -       {0x0000b1fc, 0x00000776},
4310 -};
4311 -
4312 -static const u32 ar9300_2p0_mac_postamble[][5] = {
4313 -       /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */
4314 -       {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160},
4315 -       {0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c},
4316 -       {0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38},
4317 -       {0x00008014, 0x03e803e8, 0x07d007d0, 0x10801600, 0x08400b00},
4318 -       {0x0000801c, 0x128d8027, 0x128d804f, 0x12e00057, 0x12e0002b},
4319 -       {0x00008120, 0x08f04800, 0x08f04800, 0x08f04810, 0x08f04810},
4320 -       {0x000081d0, 0x00003210, 0x00003210, 0x0000320a, 0x0000320a},
4321 -       {0x00008318, 0x00003e80, 0x00007d00, 0x00006880, 0x00003440},
4322 -};
4323 -
4324 -static const u32 ar9300_2p0_soc_postamble[][5] = {
4325 -       /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */
4326 -       {0x00007010, 0x00000023, 0x00000023, 0x00000023, 0x00000023},
4327 -};
4328 -
4329 -static const u32 ar9200_merlin_2p0_radio_core[][2] = {
4330 -       /* Addr      allmodes  */
4331 -       {0x00007800, 0x00040000},
4332 -       {0x00007804, 0xdb005012},
4333 -       {0x00007808, 0x04924914},
4334 -       {0x0000780c, 0x21084210},
4335 -       {0x00007810, 0x6d801300},
4336 -       {0x00007814, 0x0019beff},
4337 -       {0x00007818, 0x07e41000},
4338 -       {0x0000781c, 0x00392000},
4339 -       {0x00007820, 0x92592480},
4340 -       {0x00007824, 0x00040000},
4341 -       {0x00007828, 0xdb005012},
4342 -       {0x0000782c, 0x04924914},
4343 -       {0x00007830, 0x21084210},
4344 -       {0x00007834, 0x6d801300},
4345 -       {0x00007838, 0x0019beff},
4346 -       {0x0000783c, 0x07e40000},
4347 -       {0x00007840, 0x00392000},
4348 -       {0x00007844, 0x92592480},
4349 -       {0x00007848, 0x00100000},
4350 -       {0x0000784c, 0x773f0567},
4351 -       {0x00007850, 0x54214514},
4352 -       {0x00007854, 0x12035828},
4353 -       {0x00007858, 0x92592692},
4354 -       {0x0000785c, 0x00000000},
4355 -       {0x00007860, 0x56400000},
4356 -       {0x00007864, 0x0a8e370e},
4357 -       {0x00007868, 0xc0102850},
4358 -       {0x0000786c, 0x812d4000},
4359 -       {0x00007870, 0x807ec400},
4360 -       {0x00007874, 0x001b6db0},
4361 -       {0x00007878, 0x00376b63},
4362 -       {0x0000787c, 0x06db6db6},
4363 -       {0x00007880, 0x006d8000},
4364 -       {0x00007884, 0xffeffffe},
4365 -       {0x00007888, 0xffeffffe},
4366 -       {0x0000788c, 0x00010000},
4367 -       {0x00007890, 0x02060aeb},
4368 -       {0x00007894, 0x5a108000},
4369 -};
4370 -
4371 -static const u32 ar9300_2p0_baseband_postamble[][5] = {
4372 -       /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */
4373 -       {0x00009810, 0xd00a8005, 0xd00a8005, 0xd00a8011, 0xd00a8011},
4374 -       {0x00009820, 0x206a022e, 0x206a022e, 0x206a012e, 0x206a012e},
4375 -       {0x00009824, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0},
4376 -       {0x00009828, 0x06903081, 0x06903081, 0x06903881, 0x06903881},
4377 -       {0x0000982c, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4, 0x05eea6d4},
4378 -       {0x00009830, 0x0000059c, 0x0000059c, 0x0000119c, 0x0000119c},
4379 -       {0x00009c00, 0x00000044, 0x000000c4, 0x000000c4, 0x00000044},
4380 -       {0x00009e00, 0x0372161e, 0x0372161e, 0x037216a0, 0x037216a0},
4381 -       {0x00009e04, 0x00802020, 0x00802020, 0x00802020, 0x00802020},
4382 -       {0x00009e0c, 0x6c4000e2, 0x6d4000e2, 0x6d4000e2, 0x6c4000e2},
4383 -       {0x00009e10, 0x7ec88d2e, 0x7ec88d2e, 0x7ec84d2e, 0x7ec84d2e},
4384 -       {0x00009e14, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e},
4385 -       {0x00009e18, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
4386 -       {0x00009e1c, 0x0001cf9c, 0x0001cf9c, 0x00021f9c, 0x00021f9c},
4387 -       {0x00009e20, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce},
4388 -       {0x00009e2c, 0x0000001c, 0x0000001c, 0x00000021, 0x00000021},
4389 -       {0x00009e44, 0x02321e27, 0x02321e27, 0x02291e27, 0x02291e27},
4390 -       {0x00009e48, 0x5030201a, 0x5030201a, 0x50302012, 0x50302012},
4391 -       {0x00009fc8, 0x0003f000, 0x0003f000, 0x0001a000, 0x0001a000},
4392 -       {0x0000a204, 0x000037c0, 0x000037c4, 0x000037c4, 0x000037c0},
4393 -       {0x0000a208, 0x00000104, 0x00000104, 0x00000004, 0x00000004},
4394 -       {0x0000a230, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b},
4395 -       {0x0000a238, 0xffb81018, 0xffb81018, 0xffb81018, 0xffb81018},
4396 -       {0x0000a250, 0x00000000, 0x00000000, 0x00000210, 0x00000108},
4397 -       {0x0000a254, 0x000007d0, 0x00000fa0, 0x00001130, 0x00000898},
4398 -       {0x0000a258, 0x02020002, 0x02020002, 0x02020002, 0x02020002},
4399 -       {0x0000a25c, 0x01000e0e, 0x01000e0e, 0x01000e0e, 0x01000e0e},
4400 -       {0x0000a260, 0x0a021501, 0x0a021501, 0x3a021501, 0x3a021501},
4401 -       {0x0000a264, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e},
4402 -       {0x0000a280, 0x00000007, 0x00000007, 0x0000000b, 0x0000000b},
4403 -       {0x0000a284, 0x00000000, 0x00000000, 0x00000150, 0x00000150},
4404 -       {0x0000a288, 0x00000110, 0x00000110, 0x00000110, 0x00000110},
4405 -       {0x0000a28c, 0x00022222, 0x00022222, 0x00022222, 0x00022222},
4406 -       {0x0000a2c4, 0x00158d18, 0x00158d18, 0x00158d18, 0x00158d18},
4407 -       {0x0000a2d0, 0x00071981, 0x00071981, 0x00071981, 0x00071982},
4408 -       {0x0000a2d8, 0xf999a83a, 0xf999a83a, 0xf999a83a, 0xf999a83a},
4409 -       {0x0000a358, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
4410 -       {0x0000a830, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c},
4411 -       {0x0000ae04, 0x00800000, 0x00800000, 0x00800000, 0x00800000},
4412 -       {0x0000ae18, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
4413 -       {0x0000ae1c, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c},
4414 -       {0x0000ae20, 0x000001b5, 0x000001b5, 0x000001ce, 0x000001ce},
4415 -       {0x0000b284, 0x00000000, 0x00000000, 0x00000150, 0x00000150},
4416 -       {0x0000b830, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c},
4417 -       {0x0000be04, 0x00800000, 0x00800000, 0x00800000, 0x00800000},
4418 -       {0x0000be18, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
4419 -       {0x0000be1c, 0x0000019c, 0x0000019c, 0x0000019c, 0x0000019c},
4420 -       {0x0000be20, 0x000001b5, 0x000001b5, 0x000001ce, 0x000001ce},
4421 -       {0x0000c284, 0x00000000, 0x00000000, 0x00000150, 0x00000150},
4422 -};
4423 -
4424 -static const u32 ar9300_2p0_baseband_core[][2] = {
4425 -       /* Addr      allmodes  */
4426 -       {0x00009800, 0xafe68e30},
4427 -       {0x00009804, 0xfd14e000},
4428 -       {0x00009808, 0x9c0a9f6b},
4429 -       {0x0000980c, 0x04900000},
4430 -       {0x00009814, 0x9280c00a},
4431 -       {0x00009818, 0x00000000},
4432 -       {0x0000981c, 0x00020028},
4433 -       {0x00009834, 0x5f3ca3de},
4434 -       {0x00009838, 0x0108ecff},
4435 -       {0x0000983c, 0x14750600},
4436 -       {0x00009880, 0x201fff00},
4437 -       {0x00009884, 0x00001042},
4438 -       {0x000098a4, 0x00200400},
4439 -       {0x000098b0, 0x52440bbe},
4440 -       {0x000098d0, 0x004b6a8e},
4441 -       {0x000098d4, 0x00000820},
4442 -       {0x000098dc, 0x00000000},
4443 -       {0x000098f0, 0x00000000},
4444 -       {0x000098f4, 0x00000000},
4445 -       {0x00009c04, 0xff55ff55},
4446 -       {0x00009c08, 0x0320ff55},
4447 -       {0x00009c0c, 0x00000000},
4448 -       {0x00009c10, 0x00000000},
4449 -       {0x00009c14, 0x00046384},
4450 -       {0x00009c18, 0x05b6b440},
4451 -       {0x00009c1c, 0x00b6b440},
4452 -       {0x00009d00, 0xc080a333},
4453 -       {0x00009d04, 0x40206c10},
4454 -       {0x00009d08, 0x009c4060},
4455 -       {0x00009d0c, 0x9883800a},
4456 -       {0x00009d10, 0x01834061},
4457 -       {0x00009d14, 0x00c0040b},
4458 -       {0x00009d18, 0x00000000},
4459 -       {0x00009e08, 0x0038230c},
4460 -       {0x00009e24, 0x990bb515},
4461 -       {0x00009e28, 0x0c6f0000},
4462 -       {0x00009e30, 0x06336f77},
4463 -       {0x00009e34, 0x6af6532f},
4464 -       {0x00009e38, 0x0cc80c00},
4465 -       {0x00009e3c, 0xcf946222},
4466 -       {0x00009e40, 0x0d261820},
4467 -       {0x00009e4c, 0x00001004},
4468 -       {0x00009e50, 0x00ff03f1},
4469 -       {0x00009e54, 0x00000000},
4470 -       {0x00009fc0, 0x803e4788},
4471 -       {0x00009fc4, 0x0001efb5},
4472 -       {0x00009fcc, 0x40000014},
4473 -       {0x00009fd0, 0x01193b93},
4474 -       {0x0000a20c, 0x00000000},
4475 -       {0x0000a220, 0x00000000},
4476 -       {0x0000a224, 0x00000000},
4477 -       {0x0000a228, 0x10002310},
4478 -       {0x0000a22c, 0x01036a1e},
4479 -       {0x0000a234, 0x10000fff},
4480 -       {0x0000a23c, 0x00000000},
4481 -       {0x0000a244, 0x0c000000},
4482 -       {0x0000a2a0, 0x00000001},
4483 -       {0x0000a2c0, 0x00000001},
4484 -       {0x0000a2c8, 0x00000000},
4485 -       {0x0000a2cc, 0x18c43433},
4486 -       {0x0000a2d4, 0x00000000},
4487 -       {0x0000a2dc, 0x00000000},
4488 -       {0x0000a2e0, 0x00000000},
4489 -       {0x0000a2e4, 0x00000000},
4490 -       {0x0000a2e8, 0x00000000},
4491 -       {0x0000a2ec, 0x00000000},
4492 -       {0x0000a2f0, 0x00000000},
4493 -       {0x0000a2f4, 0x00000000},
4494 -       {0x0000a2f8, 0x00000000},
4495 -       {0x0000a344, 0x00000000},
4496 -       {0x0000a34c, 0x00000000},
4497 -       {0x0000a350, 0x0000a000},
4498 -       {0x0000a364, 0x00000000},
4499 -       {0x0000a370, 0x00000000},
4500 -       {0x0000a390, 0x00000001},
4501 -       {0x0000a394, 0x00000444},
4502 -       {0x0000a398, 0x001f0e0f},
4503 -       {0x0000a39c, 0x0075393f},
4504 -       {0x0000a3a0, 0xb79f6427},
4505 -       {0x0000a3a4, 0x00000000},
4506 -       {0x0000a3a8, 0xaaaaaaaa},
4507 -       {0x0000a3ac, 0x3c466478},
4508 -       {0x0000a3c0, 0x20202020},
4509 -       {0x0000a3c4, 0x22222220},
4510 -       {0x0000a3c8, 0x20200020},
4511 -       {0x0000a3cc, 0x20202020},
4512 -       {0x0000a3d0, 0x20202020},
4513 -       {0x0000a3d4, 0x20202020},
4514 -       {0x0000a3d8, 0x20202020},
4515 -       {0x0000a3dc, 0x20202020},
4516 -       {0x0000a3e0, 0x20202020},
4517 -       {0x0000a3e4, 0x20202020},
4518 -       {0x0000a3e8, 0x20202020},
4519 -       {0x0000a3ec, 0x20202020},
4520 -       {0x0000a3f0, 0x00000000},
4521 -       {0x0000a3f4, 0x00000246},
4522 -       {0x0000a3f8, 0x0cdbd380},
4523 -       {0x0000a3fc, 0x000f0f01},
4524 -       {0x0000a400, 0x8fa91f01},
4525 -       {0x0000a404, 0x00000000},
4526 -       {0x0000a408, 0x0e79e5c6},
4527 -       {0x0000a40c, 0x00820820},
4528 -       {0x0000a414, 0x1ce739ce},
4529 -       {0x0000a418, 0x2d001dce},
4530 -       {0x0000a41c, 0x1ce739ce},
4531 -       {0x0000a420, 0x000001ce},
4532 -       {0x0000a424, 0x1ce739ce},
4533 -       {0x0000a428, 0x000001ce},
4534 -       {0x0000a42c, 0x1ce739ce},
4535 -       {0x0000a430, 0x1ce739ce},
4536 -       {0x0000a434, 0x00000000},
4537 -       {0x0000a438, 0x00001801},
4538 -       {0x0000a43c, 0x00000000},
4539 -       {0x0000a440, 0x00000000},
4540 -       {0x0000a444, 0x00000000},
4541 -       {0x0000a448, 0x04000080},
4542 -       {0x0000a44c, 0x00000001},
4543 -       {0x0000a450, 0x00010000},
4544 -       {0x0000a458, 0x00000000},
4545 -       {0x0000a600, 0x00000000},
4546 -       {0x0000a604, 0x00000000},
4547 -       {0x0000a608, 0x00000000},
4548 -       {0x0000a60c, 0x00000000},
4549 -       {0x0000a610, 0x00000000},
4550 -       {0x0000a614, 0x00000000},
4551 -       {0x0000a618, 0x00000000},
4552 -       {0x0000a61c, 0x00000000},
4553 -       {0x0000a620, 0x00000000},
4554 -       {0x0000a624, 0x00000000},
4555 -       {0x0000a628, 0x00000000},
4556 -       {0x0000a62c, 0x00000000},
4557 -       {0x0000a630, 0x00000000},
4558 -       {0x0000a634, 0x00000000},
4559 -       {0x0000a638, 0x00000000},
4560 -       {0x0000a63c, 0x00000000},
4561 -       {0x0000a640, 0x00000000},
4562 -       {0x0000a644, 0x3fad9d74},
4563 -       {0x0000a648, 0x0048060a},
4564 -       {0x0000a64c, 0x00000637},
4565 -       {0x0000a670, 0x03020100},
4566 -       {0x0000a674, 0x09080504},
4567 -       {0x0000a678, 0x0d0c0b0a},
4568 -       {0x0000a67c, 0x13121110},
4569 -       {0x0000a680, 0x31301514},
4570 -       {0x0000a684, 0x35343332},
4571 -       {0x0000a688, 0x00000036},
4572 -       {0x0000a690, 0x00000838},
4573 -       {0x0000a7c0, 0x00000000},
4574 -       {0x0000a7c4, 0xfffffffc},
4575 -       {0x0000a7c8, 0x00000000},
4576 -       {0x0000a7cc, 0x00000000},
4577 -       {0x0000a7d0, 0x00000000},
4578 -       {0x0000a7d4, 0x00000004},
4579 -       {0x0000a7dc, 0x00000001},
4580 -       {0x0000a8d0, 0x004b6a8e},
4581 -       {0x0000a8d4, 0x00000820},
4582 -       {0x0000a8dc, 0x00000000},
4583 -       {0x0000a8f0, 0x00000000},
4584 -       {0x0000a8f4, 0x00000000},
4585 -       {0x0000b2d0, 0x00000080},
4586 -       {0x0000b2d4, 0x00000000},
4587 -       {0x0000b2dc, 0x00000000},
4588 -       {0x0000b2e0, 0x00000000},
4589 -       {0x0000b2e4, 0x00000000},
4590 -       {0x0000b2e8, 0x00000000},
4591 -       {0x0000b2ec, 0x00000000},
4592 -       {0x0000b2f0, 0x00000000},
4593 -       {0x0000b2f4, 0x00000000},
4594 -       {0x0000b2f8, 0x00000000},
4595 -       {0x0000b408, 0x0e79e5c0},
4596 -       {0x0000b40c, 0x00820820},
4597 -       {0x0000b420, 0x00000000},
4598 -       {0x0000b8d0, 0x004b6a8e},
4599 -       {0x0000b8d4, 0x00000820},
4600 -       {0x0000b8dc, 0x00000000},
4601 -       {0x0000b8f0, 0x00000000},
4602 -       {0x0000b8f4, 0x00000000},
4603 -       {0x0000c2d0, 0x00000080},
4604 -       {0x0000c2d4, 0x00000000},
4605 -       {0x0000c2dc, 0x00000000},
4606 -       {0x0000c2e0, 0x00000000},
4607 -       {0x0000c2e4, 0x00000000},
4608 -       {0x0000c2e8, 0x00000000},
4609 -       {0x0000c2ec, 0x00000000},
4610 -       {0x0000c2f0, 0x00000000},
4611 -       {0x0000c2f4, 0x00000000},
4612 -       {0x0000c2f8, 0x00000000},
4613 -       {0x0000c408, 0x0e79e5c0},
4614 -       {0x0000c40c, 0x00820820},
4615 -       {0x0000c420, 0x00000000},
4616 -};
4617 -
4618 -static const u32 ar9300Modes_high_power_tx_gain_table_2p0[][5] = {
4619 -       /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */
4620 -       {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9},
4621 -       {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000},
4622 -       {0x0000a504, 0x06002223, 0x06002223, 0x04000002, 0x04000002},
4623 -       {0x0000a508, 0x0a022220, 0x0a022220, 0x08000004, 0x08000004},
4624 -       {0x0000a50c, 0x0f022223, 0x0f022223, 0x0b000200, 0x0b000200},
4625 -       {0x0000a510, 0x14022620, 0x14022620, 0x0f000202, 0x0f000202},
4626 -       {0x0000a514, 0x18022622, 0x18022622, 0x11000400, 0x11000400},
4627 -       {0x0000a518, 0x1b022822, 0x1b022822, 0x15000402, 0x15000402},
4628 -       {0x0000a51c, 0x20022842, 0x20022842, 0x19000404, 0x19000404},
4629 -       {0x0000a520, 0x22022c41, 0x22022c41, 0x1b000603, 0x1b000603},
4630 -       {0x0000a524, 0x28023042, 0x28023042, 0x1f000a02, 0x1f000a02},
4631 -       {0x0000a528, 0x2c023044, 0x2c023044, 0x23000a04, 0x23000a04},
4632 -       {0x0000a52c, 0x2f023644, 0x2f023644, 0x26000a20, 0x26000a20},
4633 -       {0x0000a530, 0x34025643, 0x34025643, 0x2a000e20, 0x2a000e20},
4634 -       {0x0000a534, 0x38025a44, 0x38025a44, 0x2e000e22, 0x2e000e22},
4635 -       {0x0000a538, 0x3b025e45, 0x3b025e45, 0x31000e24, 0x31000e24},
4636 -       {0x0000a53c, 0x41025e4a, 0x41025e4a, 0x34001640, 0x34001640},
4637 -       {0x0000a540, 0x48025e6c, 0x48025e6c, 0x38001660, 0x38001660},
4638 -       {0x0000a544, 0x4e025e8e, 0x4e025e8e, 0x3b001861, 0x3b001861},
4639 -       {0x0000a548, 0x53025eb2, 0x53025eb2, 0x3e001a81, 0x3e001a81},
4640 -       {0x0000a54c, 0x59025eb5, 0x59025eb5, 0x42001a83, 0x42001a83},
4641 -       {0x0000a550, 0x5f025ef6, 0x5f025ef6, 0x44001c84, 0x44001c84},
4642 -       {0x0000a554, 0x62025f56, 0x62025f56, 0x48001ce3, 0x48001ce3},
4643 -       {0x0000a558, 0x66027f56, 0x66027f56, 0x4c001ce5, 0x4c001ce5},
4644 -       {0x0000a55c, 0x6a029f56, 0x6a029f56, 0x50001ce9, 0x50001ce9},
4645 -       {0x0000a560, 0x70049f56, 0x70049f56, 0x54001ceb, 0x54001ceb},
4646 -       {0x0000a564, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
4647 -       {0x0000a568, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
4648 -       {0x0000a56c, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
4649 -       {0x0000a570, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
4650 -       {0x0000a574, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
4651 -       {0x0000a578, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
4652 -       {0x0000a57c, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
4653 -       {0x0000a580, 0x00802220, 0x00802220, 0x00800000, 0x00800000},
4654 -       {0x0000a584, 0x06802223, 0x06802223, 0x04800002, 0x04800002},
4655 -       {0x0000a588, 0x0a822220, 0x0a822220, 0x08800004, 0x08800004},
4656 -       {0x0000a58c, 0x0f822223, 0x0f822223, 0x0b800200, 0x0b800200},
4657 -       {0x0000a590, 0x14822620, 0x14822620, 0x0f800202, 0x0f800202},
4658 -       {0x0000a594, 0x18822622, 0x18822622, 0x11800400, 0x11800400},
4659 -       {0x0000a598, 0x1b822822, 0x1b822822, 0x15800402, 0x15800402},
4660 -       {0x0000a59c, 0x20822842, 0x20822842, 0x19800404, 0x19800404},
4661 -       {0x0000a5a0, 0x22822c41, 0x22822c41, 0x1b800603, 0x1b800603},
4662 -       {0x0000a5a4, 0x28823042, 0x28823042, 0x1f800a02, 0x1f800a02},
4663 -       {0x0000a5a8, 0x2c823044, 0x2c823044, 0x23800a04, 0x23800a04},
4664 -       {0x0000a5ac, 0x2f823644, 0x2f823644, 0x26800a20, 0x26800a20},
4665 -       {0x0000a5b0, 0x34825643, 0x34825643, 0x2a800e20, 0x2a800e20},
4666 -       {0x0000a5b4, 0x38825a44, 0x38825a44, 0x2e800e22, 0x2e800e22},
4667 -       {0x0000a5b8, 0x3b825e45, 0x3b825e45, 0x31800e24, 0x31800e24},
4668 -       {0x0000a5bc, 0x41825e4a, 0x41825e4a, 0x34801640, 0x34801640},
4669 -       {0x0000a5c0, 0x48825e6c, 0x48825e6c, 0x38801660, 0x38801660},
4670 -       {0x0000a5c4, 0x4e825e8e, 0x4e825e8e, 0x3b801861, 0x3b801861},
4671 -       {0x0000a5c8, 0x53825eb2, 0x53825eb2, 0x3e801a81, 0x3e801a81},
4672 -       {0x0000a5cc, 0x59825eb5, 0x59825eb5, 0x42801a83, 0x42801a83},
4673 -       {0x0000a5d0, 0x5f825ef6, 0x5f825ef6, 0x44801c84, 0x44801c84},
4674 -       {0x0000a5d4, 0x62825f56, 0x62825f56, 0x48801ce3, 0x48801ce3},
4675 -       {0x0000a5d8, 0x66827f56, 0x66827f56, 0x4c801ce5, 0x4c801ce5},
4676 -       {0x0000a5dc, 0x6a829f56, 0x6a829f56, 0x50801ce9, 0x50801ce9},
4677 -       {0x0000a5e0, 0x70849f56, 0x70849f56, 0x54801ceb, 0x54801ceb},
4678 -       {0x0000a5e4, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
4679 -       {0x0000a5e8, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
4680 -       {0x0000a5ec, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
4681 -       {0x0000a5f0, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
4682 -       {0x0000a5f4, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
4683 -       {0x0000a5f8, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
4684 -       {0x0000a5fc, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
4685 -       {0x00016044, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6},
4686 -       {0x00016048, 0xae480001, 0xae480001, 0xae480001, 0xae480001},
4687 -       {0x00016068, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c},
4688 -       {0x00016444, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6},
4689 -       {0x00016448, 0xae480001, 0xae480001, 0xae480001, 0xae480001},
4690 -       {0x00016468, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c},
4691 -       {0x00016844, 0x056db2e6, 0x056db2e6, 0x056db2e6, 0x056db2e6},
4692 -       {0x00016848, 0xae480001, 0xae480001, 0xae480001, 0xae480001},
4693 -       {0x00016868, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c, 0x6eb6db6c},
4694 -};
4695 -
4696 -static const u32 ar9300Modes_high_ob_db_tx_gain_table_2p0[][5] = {
4697 -       /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */
4698 -       {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9},
4699 -       {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000},
4700 -       {0x0000a504, 0x06002223, 0x06002223, 0x04000002, 0x04000002},
4701 -       {0x0000a508, 0x0a022220, 0x0a022220, 0x08000004, 0x08000004},
4702 -       {0x0000a50c, 0x0f022223, 0x0f022223, 0x0b000200, 0x0b000200},
4703 -       {0x0000a510, 0x14022620, 0x14022620, 0x0f000202, 0x0f000202},
4704 -       {0x0000a514, 0x18022622, 0x18022622, 0x11000400, 0x11000400},
4705 -       {0x0000a518, 0x1b022822, 0x1b022822, 0x15000402, 0x15000402},
4706 -       {0x0000a51c, 0x20022842, 0x20022842, 0x19000404, 0x19000404},
4707 -       {0x0000a520, 0x22022c41, 0x22022c41, 0x1b000603, 0x1b000603},
4708 -       {0x0000a524, 0x28023042, 0x28023042, 0x1f000a02, 0x1f000a02},
4709 -       {0x0000a528, 0x2c023044, 0x2c023044, 0x23000a04, 0x23000a04},
4710 -       {0x0000a52c, 0x2f023644, 0x2f023644, 0x26000a20, 0x26000a20},
4711 -       {0x0000a530, 0x34025643, 0x34025643, 0x2a000e20, 0x2a000e20},
4712 -       {0x0000a534, 0x38025a44, 0x38025a44, 0x2e000e22, 0x2e000e22},
4713 -       {0x0000a538, 0x3b025e45, 0x3b025e45, 0x31000e24, 0x31000e24},
4714 -       {0x0000a53c, 0x41025e4a, 0x41025e4a, 0x34001640, 0x34001640},
4715 -       {0x0000a540, 0x48025e6c, 0x48025e6c, 0x38001660, 0x38001660},
4716 -       {0x0000a544, 0x4e025e8e, 0x4e025e8e, 0x3b001861, 0x3b001861},
4717 -       {0x0000a548, 0x53025eb2, 0x53025eb2, 0x3e001a81, 0x3e001a81},
4718 -       {0x0000a54c, 0x59025eb5, 0x59025eb5, 0x42001a83, 0x42001a83},
4719 -       {0x0000a550, 0x5f025ef6, 0x5f025ef6, 0x44001c84, 0x44001c84},
4720 -       {0x0000a554, 0x62025f56, 0x62025f56, 0x48001ce3, 0x48001ce3},
4721 -       {0x0000a558, 0x66027f56, 0x66027f56, 0x4c001ce5, 0x4c001ce5},
4722 -       {0x0000a55c, 0x6a029f56, 0x6a029f56, 0x50001ce9, 0x50001ce9},
4723 -       {0x0000a560, 0x70049f56, 0x70049f56, 0x54001ceb, 0x54001ceb},
4724 -       {0x0000a564, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
4725 -       {0x0000a568, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
4726 -       {0x0000a56c, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
4727 -       {0x0000a570, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
4728 -       {0x0000a574, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
4729 -       {0x0000a578, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
4730 -       {0x0000a57c, 0x7504ff56, 0x7504ff56, 0x56001eec, 0x56001eec},
4731 -       {0x0000a580, 0x00802220, 0x00802220, 0x00800000, 0x00800000},
4732 -       {0x0000a584, 0x06802223, 0x06802223, 0x04800002, 0x04800002},
4733 -       {0x0000a588, 0x0a822220, 0x0a822220, 0x08800004, 0x08800004},
4734 -       {0x0000a58c, 0x0f822223, 0x0f822223, 0x0b800200, 0x0b800200},
4735 -       {0x0000a590, 0x14822620, 0x14822620, 0x0f800202, 0x0f800202},
4736 -       {0x0000a594, 0x18822622, 0x18822622, 0x11800400, 0x11800400},
4737 -       {0x0000a598, 0x1b822822, 0x1b822822, 0x15800402, 0x15800402},
4738 -       {0x0000a59c, 0x20822842, 0x20822842, 0x19800404, 0x19800404},
4739 -       {0x0000a5a0, 0x22822c41, 0x22822c41, 0x1b800603, 0x1b800603},
4740 -       {0x0000a5a4, 0x28823042, 0x28823042, 0x1f800a02, 0x1f800a02},
4741 -       {0x0000a5a8, 0x2c823044, 0x2c823044, 0x23800a04, 0x23800a04},
4742 -       {0x0000a5ac, 0x2f823644, 0x2f823644, 0x26800a20, 0x26800a20},
4743 -       {0x0000a5b0, 0x34825643, 0x34825643, 0x2a800e20, 0x2a800e20},
4744 -       {0x0000a5b4, 0x38825a44, 0x38825a44, 0x2e800e22, 0x2e800e22},
4745 -       {0x0000a5b8, 0x3b825e45, 0x3b825e45, 0x31800e24, 0x31800e24},
4746 -       {0x0000a5bc, 0x41825e4a, 0x41825e4a, 0x34801640, 0x34801640},
4747 -       {0x0000a5c0, 0x48825e6c, 0x48825e6c, 0x38801660, 0x38801660},
4748 -       {0x0000a5c4, 0x4e825e8e, 0x4e825e8e, 0x3b801861, 0x3b801861},
4749 -       {0x0000a5c8, 0x53825eb2, 0x53825eb2, 0x3e801a81, 0x3e801a81},
4750 -       {0x0000a5cc, 0x59825eb5, 0x59825eb5, 0x42801a83, 0x42801a83},
4751 -       {0x0000a5d0, 0x5f825ef6, 0x5f825ef6, 0x44801c84, 0x44801c84},
4752 -       {0x0000a5d4, 0x62825f56, 0x62825f56, 0x48801ce3, 0x48801ce3},
4753 -       {0x0000a5d8, 0x66827f56, 0x66827f56, 0x4c801ce5, 0x4c801ce5},
4754 -       {0x0000a5dc, 0x6a829f56, 0x6a829f56, 0x50801ce9, 0x50801ce9},
4755 -       {0x0000a5e0, 0x70849f56, 0x70849f56, 0x54801ceb, 0x54801ceb},
4756 -       {0x0000a5e4, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
4757 -       {0x0000a5e8, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
4758 -       {0x0000a5ec, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
4759 -       {0x0000a5f0, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
4760 -       {0x0000a5f4, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
4761 -       {0x0000a5f8, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
4762 -       {0x0000a5fc, 0x7584ff56, 0x7584ff56, 0x56801eec, 0x56801eec},
4763 -       {0x00016044, 0x056db2e4, 0x056db2e4, 0x056db2e4, 0x056db2e4},
4764 -       {0x00016048, 0x8e480001, 0x8e480001, 0x8e480001, 0x8e480001},
4765 -       {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
4766 -       {0x00016444, 0x056db2e4, 0x056db2e4, 0x056db2e4, 0x056db2e4},
4767 -       {0x00016448, 0x8e480001, 0x8e480001, 0x8e480001, 0x8e480001},
4768 -       {0x00016468, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
4769 -       {0x00016844, 0x056db2e4, 0x056db2e4, 0x056db2e4, 0x056db2e4},
4770 -       {0x00016848, 0x8e480001, 0x8e480001, 0x8e480001, 0x8e480001},
4771 -       {0x00016868, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
4772 -};
4773 -
4774 -static const u32 ar9300Common_rx_gain_table_2p0[][2] = {
4775 -       /* Addr      allmodes  */
4776 -       {0x0000a000, 0x00010000},
4777 -       {0x0000a004, 0x00030002},
4778 -       {0x0000a008, 0x00050004},
4779 -       {0x0000a00c, 0x00810080},
4780 -       {0x0000a010, 0x00830082},
4781 -       {0x0000a014, 0x01810180},
4782 -       {0x0000a018, 0x01830182},
4783 -       {0x0000a01c, 0x01850184},
4784 -       {0x0000a020, 0x01890188},
4785 -       {0x0000a024, 0x018b018a},
4786 -       {0x0000a028, 0x018d018c},
4787 -       {0x0000a02c, 0x01910190},
4788 -       {0x0000a030, 0x01930192},
4789 -       {0x0000a034, 0x01950194},
4790 -       {0x0000a038, 0x038a0196},
4791 -       {0x0000a03c, 0x038c038b},
4792 -       {0x0000a040, 0x0390038d},
4793 -       {0x0000a044, 0x03920391},
4794 -       {0x0000a048, 0x03940393},
4795 -       {0x0000a04c, 0x03960395},
4796 -       {0x0000a050, 0x00000000},
4797 -       {0x0000a054, 0x00000000},
4798 -       {0x0000a058, 0x00000000},
4799 -       {0x0000a05c, 0x00000000},
4800 -       {0x0000a060, 0x00000000},
4801 -       {0x0000a064, 0x00000000},
4802 -       {0x0000a068, 0x00000000},
4803 -       {0x0000a06c, 0x00000000},
4804 -       {0x0000a070, 0x00000000},
4805 -       {0x0000a074, 0x00000000},
4806 -       {0x0000a078, 0x00000000},
4807 -       {0x0000a07c, 0x00000000},
4808 -       {0x0000a080, 0x22222229},
4809 -       {0x0000a084, 0x1d1d1d1d},
4810 -       {0x0000a088, 0x1d1d1d1d},
4811 -       {0x0000a08c, 0x1d1d1d1d},
4812 -       {0x0000a090, 0x171d1d1d},
4813 -       {0x0000a094, 0x11111717},
4814 -       {0x0000a098, 0x00030311},
4815 -       {0x0000a09c, 0x00000000},
4816 -       {0x0000a0a0, 0x00000000},
4817 -       {0x0000a0a4, 0x00000000},
4818 -       {0x0000a0a8, 0x00000000},
4819 -       {0x0000a0ac, 0x00000000},
4820 -       {0x0000a0b0, 0x00000000},
4821 -       {0x0000a0b4, 0x00000000},
4822 -       {0x0000a0b8, 0x00000000},
4823 -       {0x0000a0bc, 0x00000000},
4824 -       {0x0000a0c0, 0x001f0000},
4825 -       {0x0000a0c4, 0x01000101},
4826 -       {0x0000a0c8, 0x011e011f},
4827 -       {0x0000a0cc, 0x011c011d},
4828 -       {0x0000a0d0, 0x02030204},
4829 -       {0x0000a0d4, 0x02010202},
4830 -       {0x0000a0d8, 0x021f0200},
4831 -       {0x0000a0dc, 0x0302021e},
4832 -       {0x0000a0e0, 0x03000301},
4833 -       {0x0000a0e4, 0x031e031f},
4834 -       {0x0000a0e8, 0x0402031d},
4835 -       {0x0000a0ec, 0x04000401},
4836 -       {0x0000a0f0, 0x041e041f},
4837 -       {0x0000a0f4, 0x0502041d},
4838 -       {0x0000a0f8, 0x05000501},
4839 -       {0x0000a0fc, 0x051e051f},
4840 -       {0x0000a100, 0x06010602},
4841 -       {0x0000a104, 0x061f0600},
4842 -       {0x0000a108, 0x061d061e},
4843 -       {0x0000a10c, 0x07020703},
4844 -       {0x0000a110, 0x07000701},
4845 -       {0x0000a114, 0x00000000},
4846 -       {0x0000a118, 0x00000000},
4847 -       {0x0000a11c, 0x00000000},
4848 -       {0x0000a120, 0x00000000},
4849 -       {0x0000a124, 0x00000000},
4850 -       {0x0000a128, 0x00000000},
4851 -       {0x0000a12c, 0x00000000},
4852 -       {0x0000a130, 0x00000000},
4853 -       {0x0000a134, 0x00000000},
4854 -       {0x0000a138, 0x00000000},
4855 -       {0x0000a13c, 0x00000000},
4856 -       {0x0000a140, 0x001f0000},
4857 -       {0x0000a144, 0x01000101},
4858 -       {0x0000a148, 0x011e011f},
4859 -       {0x0000a14c, 0x011c011d},
4860 -       {0x0000a150, 0x02030204},
4861 -       {0x0000a154, 0x02010202},
4862 -       {0x0000a158, 0x021f0200},
4863 -       {0x0000a15c, 0x0302021e},
4864 -       {0x0000a160, 0x03000301},
4865 -       {0x0000a164, 0x031e031f},
4866 -       {0x0000a168, 0x0402031d},
4867 -       {0x0000a16c, 0x04000401},
4868 -       {0x0000a170, 0x041e041f},
4869 -       {0x0000a174, 0x0502041d},
4870 -       {0x0000a178, 0x05000501},
4871 -       {0x0000a17c, 0x051e051f},
4872 -       {0x0000a180, 0x06010602},
4873 -       {0x0000a184, 0x061f0600},
4874 -       {0x0000a188, 0x061d061e},
4875 -       {0x0000a18c, 0x07020703},
4876 -       {0x0000a190, 0x07000701},
4877 -       {0x0000a194, 0x00000000},
4878 -       {0x0000a198, 0x00000000},
4879 -       {0x0000a19c, 0x00000000},
4880 -       {0x0000a1a0, 0x00000000},
4881 -       {0x0000a1a4, 0x00000000},
4882 -       {0x0000a1a8, 0x00000000},
4883 -       {0x0000a1ac, 0x00000000},
4884 -       {0x0000a1b0, 0x00000000},
4885 -       {0x0000a1b4, 0x00000000},
4886 -       {0x0000a1b8, 0x00000000},
4887 -       {0x0000a1bc, 0x00000000},
4888 -       {0x0000a1c0, 0x00000000},
4889 -       {0x0000a1c4, 0x00000000},
4890 -       {0x0000a1c8, 0x00000000},
4891 -       {0x0000a1cc, 0x00000000},
4892 -       {0x0000a1d0, 0x00000000},
4893 -       {0x0000a1d4, 0x00000000},
4894 -       {0x0000a1d8, 0x00000000},
4895 -       {0x0000a1dc, 0x00000000},
4896 -       {0x0000a1e0, 0x00000000},
4897 -       {0x0000a1e4, 0x00000000},
4898 -       {0x0000a1e8, 0x00000000},
4899 -       {0x0000a1ec, 0x00000000},
4900 -       {0x0000a1f0, 0x00000396},
4901 -       {0x0000a1f4, 0x00000396},
4902 -       {0x0000a1f8, 0x00000396},
4903 -       {0x0000a1fc, 0x00000196},
4904 -       {0x0000b000, 0x00010000},
4905 -       {0x0000b004, 0x00030002},
4906 -       {0x0000b008, 0x00050004},
4907 -       {0x0000b00c, 0x00810080},
4908 -       {0x0000b010, 0x00830082},
4909 -       {0x0000b014, 0x01810180},
4910 -       {0x0000b018, 0x01830182},
4911 -       {0x0000b01c, 0x01850184},
4912 -       {0x0000b020, 0x02810280},
4913 -       {0x0000b024, 0x02830282},
4914 -       {0x0000b028, 0x02850284},
4915 -       {0x0000b02c, 0x02890288},
4916 -       {0x0000b030, 0x028b028a},
4917 -       {0x0000b034, 0x0388028c},
4918 -       {0x0000b038, 0x038a0389},
4919 -       {0x0000b03c, 0x038c038b},
4920 -       {0x0000b040, 0x0390038d},
4921 -       {0x0000b044, 0x03920391},
4922 -       {0x0000b048, 0x03940393},
4923 -       {0x0000b04c, 0x03960395},
4924 -       {0x0000b050, 0x00000000},
4925 -       {0x0000b054, 0x00000000},
4926 -       {0x0000b058, 0x00000000},
4927 -       {0x0000b05c, 0x00000000},
4928 -       {0x0000b060, 0x00000000},
4929 -       {0x0000b064, 0x00000000},
4930 -       {0x0000b068, 0x00000000},
4931 -       {0x0000b06c, 0x00000000},
4932 -       {0x0000b070, 0x00000000},
4933 -       {0x0000b074, 0x00000000},
4934 -       {0x0000b078, 0x00000000},
4935 -       {0x0000b07c, 0x00000000},
4936 -       {0x0000b080, 0x32323232},
4937 -       {0x0000b084, 0x2f2f3232},
4938 -       {0x0000b088, 0x23282a2d},
4939 -       {0x0000b08c, 0x1c1e2123},
4940 -       {0x0000b090, 0x14171919},
4941 -       {0x0000b094, 0x0e0e1214},
4942 -       {0x0000b098, 0x03050707},
4943 -       {0x0000b09c, 0x00030303},
4944 -       {0x0000b0a0, 0x00000000},
4945 -       {0x0000b0a4, 0x00000000},
4946 -       {0x0000b0a8, 0x00000000},
4947 -       {0x0000b0ac, 0x00000000},
4948 -       {0x0000b0b0, 0x00000000},
4949 -       {0x0000b0b4, 0x00000000},
4950 -       {0x0000b0b8, 0x00000000},
4951 -       {0x0000b0bc, 0x00000000},
4952 -       {0x0000b0c0, 0x003f0020},
4953 -       {0x0000b0c4, 0x00400041},
4954 -       {0x0000b0c8, 0x0140005f},
4955 -       {0x0000b0cc, 0x0160015f},
4956 -       {0x0000b0d0, 0x017e017f},
4957 -       {0x0000b0d4, 0x02410242},
4958 -       {0x0000b0d8, 0x025f0240},
4959 -       {0x0000b0dc, 0x027f0260},
4960 -       {0x0000b0e0, 0x0341027e},
4961 -       {0x0000b0e4, 0x035f0340},
4962 -       {0x0000b0e8, 0x037f0360},
4963 -       {0x0000b0ec, 0x04400441},
4964 -       {0x0000b0f0, 0x0460045f},
4965 -       {0x0000b0f4, 0x0541047f},
4966 -       {0x0000b0f8, 0x055f0540},
4967 -       {0x0000b0fc, 0x057f0560},
4968 -       {0x0000b100, 0x06400641},
4969 -       {0x0000b104, 0x0660065f},
4970 -       {0x0000b108, 0x067e067f},
4971 -       {0x0000b10c, 0x07410742},
4972 -       {0x0000b110, 0x075f0740},
4973 -       {0x0000b114, 0x077f0760},
4974 -       {0x0000b118, 0x07800781},
4975 -       {0x0000b11c, 0x07a0079f},
4976 -       {0x0000b120, 0x07c107bf},
4977 -       {0x0000b124, 0x000007c0},
4978 -       {0x0000b128, 0x00000000},
4979 -       {0x0000b12c, 0x00000000},
4980 -       {0x0000b130, 0x00000000},
4981 -       {0x0000b134, 0x00000000},
4982 -       {0x0000b138, 0x00000000},
4983 -       {0x0000b13c, 0x00000000},
4984 -       {0x0000b140, 0x003f0020},
4985 -       {0x0000b144, 0x00400041},
4986 -       {0x0000b148, 0x0140005f},
4987 -       {0x0000b14c, 0x0160015f},
4988 -       {0x0000b150, 0x017e017f},
4989 -       {0x0000b154, 0x02410242},
4990 -       {0x0000b158, 0x025f0240},
4991 -       {0x0000b15c, 0x027f0260},
4992 -       {0x0000b160, 0x0341027e},
4993 -       {0x0000b164, 0x035f0340},
4994 -       {0x0000b168, 0x037f0360},
4995 -       {0x0000b16c, 0x04400441},
4996 -       {0x0000b170, 0x0460045f},
4997 -       {0x0000b174, 0x0541047f},
4998 -       {0x0000b178, 0x055f0540},
4999 -       {0x0000b17c, 0x057f0560},
5000 -       {0x0000b180, 0x06400641},
5001 -       {0x0000b184, 0x0660065f},
5002 -       {0x0000b188, 0x067e067f},
5003 -       {0x0000b18c, 0x07410742},
5004 -       {0x0000b190, 0x075f0740},
5005 -       {0x0000b194, 0x077f0760},
5006 -       {0x0000b198, 0x07800781},
5007 -       {0x0000b19c, 0x07a0079f},
5008 -       {0x0000b1a0, 0x07c107bf},
5009 -       {0x0000b1a4, 0x000007c0},
5010 -       {0x0000b1a8, 0x00000000},
5011 -       {0x0000b1ac, 0x00000000},
5012 -       {0x0000b1b0, 0x00000000},
5013 -       {0x0000b1b4, 0x00000000},
5014 -       {0x0000b1b8, 0x00000000},
5015 -       {0x0000b1bc, 0x00000000},
5016 -       {0x0000b1c0, 0x00000000},
5017 -       {0x0000b1c4, 0x00000000},
5018 -       {0x0000b1c8, 0x00000000},
5019 -       {0x0000b1cc, 0x00000000},
5020 -       {0x0000b1d0, 0x00000000},
5021 -       {0x0000b1d4, 0x00000000},
5022 -       {0x0000b1d8, 0x00000000},
5023 -       {0x0000b1dc, 0x00000000},
5024 -       {0x0000b1e0, 0x00000000},
5025 -       {0x0000b1e4, 0x00000000},
5026 -       {0x0000b1e8, 0x00000000},
5027 -       {0x0000b1ec, 0x00000000},
5028 -       {0x0000b1f0, 0x00000396},
5029 -       {0x0000b1f4, 0x00000396},
5030 -       {0x0000b1f8, 0x00000396},
5031 -       {0x0000b1fc, 0x00000196},
5032 -};
5033 -
5034 -static const u32 ar9300Modes_low_ob_db_tx_gain_table_2p0[][5] = {
5035 -       /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */
5036 -       {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9},
5037 -       {0x0000a500, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
5038 -       {0x0000a504, 0x06000003, 0x06000003, 0x04000002, 0x04000002},
5039 -       {0x0000a508, 0x0a000020, 0x0a000020, 0x08000004, 0x08000004},
5040 -       {0x0000a50c, 0x10000023, 0x10000023, 0x0b000200, 0x0b000200},
5041 -       {0x0000a510, 0x16000220, 0x16000220, 0x0f000202, 0x0f000202},
5042 -       {0x0000a514, 0x1c000223, 0x1c000223, 0x12000400, 0x12000400},
5043 -       {0x0000a518, 0x21020220, 0x21020220, 0x16000402, 0x16000402},
5044 -       {0x0000a51c, 0x27020223, 0x27020223, 0x19000404, 0x19000404},
5045 -       {0x0000a520, 0x2b022220, 0x2b022220, 0x1c000603, 0x1c000603},
5046 -       {0x0000a524, 0x2f022222, 0x2f022222, 0x21000a02, 0x21000a02},
5047 -       {0x0000a528, 0x34022225, 0x34022225, 0x25000a04, 0x25000a04},
5048 -       {0x0000a52c, 0x3a02222a, 0x3a02222a, 0x28000a20, 0x28000a20},
5049 -       {0x0000a530, 0x3e02222c, 0x3e02222c, 0x2c000e20, 0x2c000e20},
5050 -       {0x0000a534, 0x4202242a, 0x4202242a, 0x30000e22, 0x30000e22},
5051 -       {0x0000a538, 0x4702244a, 0x4702244a, 0x34000e24, 0x34000e24},
5052 -       {0x0000a53c, 0x4b02244c, 0x4b02244c, 0x38001640, 0x38001640},
5053 -       {0x0000a540, 0x4e02246c, 0x4e02246c, 0x3c001660, 0x3c001660},
5054 -       {0x0000a544, 0x5302266c, 0x5302266c, 0x3f001861, 0x3f001861},
5055 -       {0x0000a548, 0x5702286c, 0x5702286c, 0x43001a81, 0x43001a81},
5056 -       {0x0000a54c, 0x5c04286b, 0x5c04286b, 0x47001a83, 0x47001a83},
5057 -       {0x0000a550, 0x61042a6c, 0x61042a6c, 0x4a001c84, 0x4a001c84},
5058 -       {0x0000a554, 0x66062a6c, 0x66062a6c, 0x4e001ce3, 0x4e001ce3},
5059 -       {0x0000a558, 0x6b062e6c, 0x6b062e6c, 0x52001ce5, 0x52001ce5},
5060 -       {0x0000a55c, 0x7006308c, 0x7006308c, 0x56001ce9, 0x56001ce9},
5061 -       {0x0000a560, 0x730a308a, 0x730a308a, 0x5a001ceb, 0x5a001ceb},
5062 -       {0x0000a564, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
5063 -       {0x0000a568, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
5064 -       {0x0000a56c, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
5065 -       {0x0000a570, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
5066 -       {0x0000a574, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
5067 -       {0x0000a578, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
5068 -       {0x0000a57c, 0x770a308c, 0x770a308c, 0x5d001eec, 0x5d001eec},
5069 -       {0x0000a580, 0x00800000, 0x00800000, 0x00800000, 0x00800000},
5070 -       {0x0000a584, 0x06800003, 0x06800003, 0x04800002, 0x04800002},
5071 -       {0x0000a588, 0x0a800020, 0x0a800020, 0x08800004, 0x08800004},
5072 -       {0x0000a58c, 0x10800023, 0x10800023, 0x0b800200, 0x0b800200},
5073 -       {0x0000a590, 0x16800220, 0x16800220, 0x0f800202, 0x0f800202},
5074 -       {0x0000a594, 0x1c800223, 0x1c800223, 0x12800400, 0x12800400},
5075 -       {0x0000a598, 0x21820220, 0x21820220, 0x16800402, 0x16800402},
5076 -       {0x0000a59c, 0x27820223, 0x27820223, 0x19800404, 0x19800404},
5077 -       {0x0000a5a0, 0x2b822220, 0x2b822220, 0x1c800603, 0x1c800603},
5078 -       {0x0000a5a4, 0x2f822222, 0x2f822222, 0x21800a02, 0x21800a02},
5079 -       {0x0000a5a8, 0x34822225, 0x34822225, 0x25800a04, 0x25800a04},
5080 -       {0x0000a5ac, 0x3a82222a, 0x3a82222a, 0x28800a20, 0x28800a20},
5081 -       {0x0000a5b0, 0x3e82222c, 0x3e82222c, 0x2c800e20, 0x2c800e20},
5082 -       {0x0000a5b4, 0x4282242a, 0x4282242a, 0x30800e22, 0x30800e22},
5083 -       {0x0000a5b8, 0x4782244a, 0x4782244a, 0x34800e24, 0x34800e24},
5084 -       {0x0000a5bc, 0x4b82244c, 0x4b82244c, 0x38801640, 0x38801640},
5085 -       {0x0000a5c0, 0x4e82246c, 0x4e82246c, 0x3c801660, 0x3c801660},
5086 -       {0x0000a5c4, 0x5382266c, 0x5382266c, 0x3f801861, 0x3f801861},
5087 -       {0x0000a5c8, 0x5782286c, 0x5782286c, 0x43801a81, 0x43801a81},
5088 -       {0x0000a5cc, 0x5c84286b, 0x5c84286b, 0x47801a83, 0x47801a83},
5089 -       {0x0000a5d0, 0x61842a6c, 0x61842a6c, 0x4a801c84, 0x4a801c84},
5090 -       {0x0000a5d4, 0x66862a6c, 0x66862a6c, 0x4e801ce3, 0x4e801ce3},
5091 -       {0x0000a5d8, 0x6b862e6c, 0x6b862e6c, 0x52801ce5, 0x52801ce5},
5092 -       {0x0000a5dc, 0x7086308c, 0x7086308c, 0x56801ce9, 0x56801ce9},
5093 -       {0x0000a5e0, 0x738a308a, 0x738a308a, 0x5a801ceb, 0x5a801ceb},
5094 -       {0x0000a5e4, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
5095 -       {0x0000a5e8, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
5096 -       {0x0000a5ec, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
5097 -       {0x0000a5f0, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
5098 -       {0x0000a5f4, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
5099 -       {0x0000a5f8, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
5100 -       {0x0000a5fc, 0x778a308c, 0x778a308c, 0x5d801eec, 0x5d801eec},
5101 -       {0x00016044, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4},
5102 -       {0x00016048, 0x64000001, 0x64000001, 0x64000001, 0x64000001},
5103 -       {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
5104 -       {0x00016444, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4},
5105 -       {0x00016448, 0x64000001, 0x64000001, 0x64000001, 0x64000001},
5106 -       {0x00016468, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
5107 -       {0x00016844, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4},
5108 -       {0x00016848, 0x64000001, 0x64000001, 0x64000001, 0x64000001},
5109 -       {0x00016868, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c},
5110 -};
5111 -
5112 -static const u32 ar9300_2p0_mac_core[][2] = {
5113 -       /* Addr      allmodes  */
5114 -       {0x00000008, 0x00000000},
5115 -       {0x00000030, 0x00020085},
5116 -       {0x00000034, 0x00000005},
5117 -       {0x00000040, 0x00000000},
5118 -       {0x00000044, 0x00000000},
5119 -       {0x00000048, 0x00000008},
5120 -       {0x0000004c, 0x00000010},
5121 -       {0x00000050, 0x00000000},
5122 -       {0x00001040, 0x002ffc0f},
5123 -       {0x00001044, 0x002ffc0f},
5124 -       {0x00001048, 0x002ffc0f},
5125 -       {0x0000104c, 0x002ffc0f},
5126 -       {0x00001050, 0x002ffc0f},
5127 -       {0x00001054, 0x002ffc0f},
5128 -       {0x00001058, 0x002ffc0f},
5129 -       {0x0000105c, 0x002ffc0f},
5130 -       {0x00001060, 0x002ffc0f},
5131 -       {0x00001064, 0x002ffc0f},
5132 -       {0x000010f0, 0x00000100},
5133 -       {0x00001270, 0x00000000},
5134 -       {0x000012b0, 0x00000000},
5135 -       {0x000012f0, 0x00000000},
5136 -       {0x0000143c, 0x00000000},
5137 -       {0x0000147c, 0x00000000},
5138 -       {0x00008000, 0x00000000},
5139 -       {0x00008004, 0x00000000},
5140 -       {0x00008008, 0x00000000},
5141 -       {0x0000800c, 0x00000000},
5142 -       {0x00008018, 0x00000000},
5143 -       {0x00008020, 0x00000000},
5144 -       {0x00008038, 0x00000000},
5145 -       {0x0000803c, 0x00000000},
5146 -       {0x00008040, 0x00000000},
5147 -       {0x00008044, 0x00000000},
5148 -       {0x00008048, 0x00000000},
5149 -       {0x0000804c, 0xffffffff},
5150 -       {0x00008054, 0x00000000},
5151 -       {0x00008058, 0x00000000},
5152 -       {0x0000805c, 0x000fc78f},
5153 -       {0x00008060, 0x0000000f},
5154 -       {0x00008064, 0x00000000},
5155 -       {0x00008070, 0x00000310},
5156 -       {0x00008074, 0x00000020},
5157 -       {0x00008078, 0x00000000},
5158 -       {0x0000809c, 0x0000000f},
5159 -       {0x000080a0, 0x00000000},
5160 -       {0x000080a4, 0x02ff0000},
5161 -       {0x000080a8, 0x0e070605},
5162 -       {0x000080ac, 0x0000000d},
5163 -       {0x000080b0, 0x00000000},
5164 -       {0x000080b4, 0x00000000},
5165 -       {0x000080b8, 0x00000000},
5166 -       {0x000080bc, 0x00000000},
5167 -       {0x000080c0, 0x2a800000},
5168 -       {0x000080c4, 0x06900168},
5169 -       {0x000080c8, 0x13881c20},
5170 -       {0x000080cc, 0x01f40000},
5171 -       {0x000080d0, 0x00252500},
5172 -       {0x000080d4, 0x00a00000},
5173 -       {0x000080d8, 0x00400000},
5174 -       {0x000080dc, 0x00000000},
5175 -       {0x000080e0, 0xffffffff},
5176 -       {0x000080e4, 0x0000ffff},
5177 -       {0x000080e8, 0x3f3f3f3f},
5178 -       {0x000080ec, 0x00000000},
5179 -       {0x000080f0, 0x00000000},
5180 -       {0x000080f4, 0x00000000},
5181 -       {0x000080fc, 0x00020000},
5182 -       {0x00008100, 0x00000000},
5183 -       {0x00008108, 0x00000052},
5184 -       {0x0000810c, 0x00000000},
5185 -       {0x00008110, 0x00000000},
5186 -       {0x00008114, 0x000007ff},
5187 -       {0x00008118, 0x000000aa},
5188 -       {0x0000811c, 0x00003210},
5189 -       {0x00008124, 0x00000000},
5190 -       {0x00008128, 0x00000000},
5191 -       {0x0000812c, 0x00000000},
5192 -       {0x00008130, 0x00000000},
5193 -       {0x00008134, 0x00000000},
5194 -       {0x00008138, 0x00000000},
5195 -       {0x0000813c, 0x0000ffff},
5196 -       {0x00008144, 0xffffffff},
5197 -       {0x00008168, 0x00000000},
5198 -       {0x0000816c, 0x00000000},
5199 -       {0x00008170, 0x18486200},
5200 -       {0x00008174, 0x33332210},
5201 -       {0x00008178, 0x00000000},
5202 -       {0x0000817c, 0x00020000},
5203 -       {0x000081c0, 0x00000000},
5204 -       {0x000081c4, 0x33332210},
5205 -       {0x000081c8, 0x00000000},
5206 -       {0x000081cc, 0x00000000},
5207 -       {0x000081d4, 0x00000000},
5208 -       {0x000081ec, 0x00000000},
5209 -       {0x000081f0, 0x00000000},
5210 -       {0x000081f4, 0x00000000},
5211 -       {0x000081f8, 0x00000000},
5212 -       {0x000081fc, 0x00000000},
5213 -       {0x00008240, 0x00100000},
5214 -       {0x00008244, 0x0010f424},
5215 -       {0x00008248, 0x00000800},
5216 -       {0x0000824c, 0x0001e848},
5217 -       {0x00008250, 0x00000000},
5218 -       {0x00008254, 0x00000000},
5219 -       {0x00008258, 0x00000000},
5220 -       {0x0000825c, 0x40000000},
5221 -       {0x00008260, 0x00080922},
5222 -       {0x00008264, 0x98a00010},
5223 -       {0x00008268, 0xffffffff},
5224 -       {0x0000826c, 0x0000ffff},
5225 -       {0x00008270, 0x00000000},
5226 -       {0x00008274, 0x40000000},
5227 -       {0x00008278, 0x003e4180},
5228 -       {0x0000827c, 0x00000004},
5229 -       {0x00008284, 0x0000002c},
5230 -       {0x00008288, 0x0000002c},
5231 -       {0x0000828c, 0x000000ff},
5232 -       {0x00008294, 0x00000000},
5233 -       {0x00008298, 0x00000000},
5234 -       {0x0000829c, 0x00000000},
5235 -       {0x00008300, 0x00000140},
5236 -       {0x00008314, 0x00000000},
5237 -       {0x0000831c, 0x0000010d},
5238 -       {0x00008328, 0x00000000},
5239 -       {0x0000832c, 0x00000007},
5240 -       {0x00008330, 0x00000302},
5241 -       {0x00008334, 0x00000700},
5242 -       {0x00008338, 0x00ff0000},
5243 -       {0x0000833c, 0x02400000},
5244 -       {0x00008340, 0x000107ff},
5245 -       {0x00008344, 0xaa48105b},
5246 -       {0x00008348, 0x008f0000},
5247 -       {0x0000835c, 0x00000000},
5248 -       {0x00008360, 0xffffffff},
5249 -       {0x00008364, 0xffffffff},
5250 -       {0x00008368, 0x00000000},
5251 -       {0x00008370, 0x00000000},
5252 -       {0x00008374, 0x000000ff},
5253 -       {0x00008378, 0x00000000},
5254 -       {0x0000837c, 0x00000000},
5255 -       {0x00008380, 0xffffffff},
5256 -       {0x00008384, 0xffffffff},
5257 -       {0x00008390, 0xffffffff},
5258 -       {0x00008394, 0xffffffff},
5259 -       {0x00008398, 0x00000000},
5260 -       {0x0000839c, 0x00000000},
5261 -       {0x000083a0, 0x00000000},
5262 -       {0x000083a4, 0x0000fa14},
5263 -       {0x000083a8, 0x000f0c00},
5264 -       {0x000083ac, 0x33332210},
5265 -       {0x000083b0, 0x33332210},
5266 -       {0x000083b4, 0x33332210},
5267 -       {0x000083b8, 0x33332210},
5268 -       {0x000083bc, 0x00000000},
5269 -       {0x000083c0, 0x00000000},
5270 -       {0x000083c4, 0x00000000},
5271 -       {0x000083c8, 0x00000000},
5272 -       {0x000083cc, 0x00000200},
5273 -       {0x000083d0, 0x000301ff},
5274 -};
5275 -
5276 -static const u32 ar9300Common_wo_xlna_rx_gain_table_2p0[][2] = {
5277 -       /* Addr      allmodes  */
5278 -       {0x0000a000, 0x00010000},
5279 -       {0x0000a004, 0x00030002},
5280 -       {0x0000a008, 0x00050004},
5281 -       {0x0000a00c, 0x00810080},
5282 -       {0x0000a010, 0x00830082},
5283 -       {0x0000a014, 0x01810180},
5284 -       {0x0000a018, 0x01830182},
5285 -       {0x0000a01c, 0x01850184},
5286 -       {0x0000a020, 0x01890188},
5287 -       {0x0000a024, 0x018b018a},
5288 -       {0x0000a028, 0x018d018c},
5289 -       {0x0000a02c, 0x03820190},
5290 -       {0x0000a030, 0x03840383},
5291 -       {0x0000a034, 0x03880385},
5292 -       {0x0000a038, 0x038a0389},
5293 -       {0x0000a03c, 0x038c038b},
5294 -       {0x0000a040, 0x0390038d},
5295 -       {0x0000a044, 0x03920391},
5296 -       {0x0000a048, 0x03940393},
5297 -       {0x0000a04c, 0x03960395},
5298 -       {0x0000a050, 0x00000000},
5299 -       {0x0000a054, 0x00000000},
5300 -       {0x0000a058, 0x00000000},
5301 -       {0x0000a05c, 0x00000000},
5302 -       {0x0000a060, 0x00000000},
5303 -       {0x0000a064, 0x00000000},
5304 -       {0x0000a068, 0x00000000},
5305 -       {0x0000a06c, 0x00000000},
5306 -       {0x0000a070, 0x00000000},
5307 -       {0x0000a074, 0x00000000},
5308 -       {0x0000a078, 0x00000000},
5309 -       {0x0000a07c, 0x00000000},
5310 -       {0x0000a080, 0x29292929},
5311 -       {0x0000a084, 0x29292929},
5312 -       {0x0000a088, 0x29292929},
5313 -       {0x0000a08c, 0x29292929},
5314 -       {0x0000a090, 0x22292929},
5315 -       {0x0000a094, 0x1d1d2222},
5316 -       {0x0000a098, 0x0c111117},
5317 -       {0x0000a09c, 0x00030303},
5318 -       {0x0000a0a0, 0x00000000},
5319 -       {0x0000a0a4, 0x00000000},
5320 -       {0x0000a0a8, 0x00000000},
5321 -       {0x0000a0ac, 0x00000000},
5322 -       {0x0000a0b0, 0x00000000},
5323 -       {0x0000a0b4, 0x00000000},
5324 -       {0x0000a0b8, 0x00000000},
5325 -       {0x0000a0bc, 0x00000000},
5326 -       {0x0000a0c0, 0x001f0000},
5327 -       {0x0000a0c4, 0x01000101},
5328 -       {0x0000a0c8, 0x011e011f},
5329 -       {0x0000a0cc, 0x011c011d},
5330 -       {0x0000a0d0, 0x02030204},
5331 -       {0x0000a0d4, 0x02010202},
5332 -       {0x0000a0d8, 0x021f0200},
5333 -       {0x0000a0dc, 0x0302021e},
5334 -       {0x0000a0e0, 0x03000301},
5335 -       {0x0000a0e4, 0x031e031f},
5336 -       {0x0000a0e8, 0x0402031d},
5337 -       {0x0000a0ec, 0x04000401},
5338 -       {0x0000a0f0, 0x041e041f},
5339 -       {0x0000a0f4, 0x0502041d},
5340 -       {0x0000a0f8, 0x05000501},
5341 -       {0x0000a0fc, 0x051e051f},
5342 -       {0x0000a100, 0x06010602},
5343 -       {0x0000a104, 0x061f0600},
5344 -       {0x0000a108, 0x061d061e},
5345 -       {0x0000a10c, 0x07020703},
5346 -       {0x0000a110, 0x07000701},
5347 -       {0x0000a114, 0x00000000},
5348 -       {0x0000a118, 0x00000000},
5349 -       {0x0000a11c, 0x00000000},
5350 -       {0x0000a120, 0x00000000},
5351 -       {0x0000a124, 0x00000000},
5352 -       {0x0000a128, 0x00000000},
5353 -       {0x0000a12c, 0x00000000},
5354 -       {0x0000a130, 0x00000000},
5355 -       {0x0000a134, 0x00000000},
5356 -       {0x0000a138, 0x00000000},
5357 -       {0x0000a13c, 0x00000000},
5358 -       {0x0000a140, 0x001f0000},
5359 -       {0x0000a144, 0x01000101},
5360 -       {0x0000a148, 0x011e011f},
5361 -       {0x0000a14c, 0x011c011d},
5362 -       {0x0000a150, 0x02030204},
5363 -       {0x0000a154, 0x02010202},
5364 -       {0x0000a158, 0x021f0200},
5365 -       {0x0000a15c, 0x0302021e},
5366 -       {0x0000a160, 0x03000301},
5367 -       {0x0000a164, 0x031e031f},
5368 -       {0x0000a168, 0x0402031d},
5369 -       {0x0000a16c, 0x04000401},
5370 -       {0x0000a170, 0x041e041f},
5371 -       {0x0000a174, 0x0502041d},
5372 -       {0x0000a178, 0x05000501},
5373 -       {0x0000a17c, 0x051e051f},
5374 -       {0x0000a180, 0x06010602},
5375 -       {0x0000a184, 0x061f0600},
5376 -       {0x0000a188, 0x061d061e},
5377 -       {0x0000a18c, 0x07020703},
5378 -       {0x0000a190, 0x07000701},
5379 -       {0x0000a194, 0x00000000},
5380 -       {0x0000a198, 0x00000000},
5381 -       {0x0000a19c, 0x00000000},
5382 -       {0x0000a1a0, 0x00000000},
5383 -       {0x0000a1a4, 0x00000000},
5384 -       {0x0000a1a8, 0x00000000},
5385 -       {0x0000a1ac, 0x00000000},
5386 -       {0x0000a1b0, 0x00000000},
5387 -       {0x0000a1b4, 0x00000000},
5388 -       {0x0000a1b8, 0x00000000},
5389 -       {0x0000a1bc, 0x00000000},
5390 -       {0x0000a1c0, 0x00000000},
5391 -       {0x0000a1c4, 0x00000000},
5392 -       {0x0000a1c8, 0x00000000},
5393 -       {0x0000a1cc, 0x00000000},
5394 -       {0x0000a1d0, 0x00000000},
5395 -       {0x0000a1d4, 0x00000000},
5396 -       {0x0000a1d8, 0x00000000},
5397 -       {0x0000a1dc, 0x00000000},
5398 -       {0x0000a1e0, 0x00000000},
5399 -       {0x0000a1e4, 0x00000000},
5400 -       {0x0000a1e8, 0x00000000},
5401 -       {0x0000a1ec, 0x00000000},
5402 -       {0x0000a1f0, 0x00000396},
5403 -       {0x0000a1f4, 0x00000396},
5404 -       {0x0000a1f8, 0x00000396},
5405 -       {0x0000a1fc, 0x00000196},
5406 -       {0x0000b000, 0x00010000},
5407 -       {0x0000b004, 0x00030002},
5408 -       {0x0000b008, 0x00050004},
5409 -       {0x0000b00c, 0x00810080},
5410 -       {0x0000b010, 0x00830082},
5411 -       {0x0000b014, 0x01810180},
5412 -       {0x0000b018, 0x01830182},
5413 -       {0x0000b01c, 0x01850184},
5414 -       {0x0000b020, 0x02810280},
5415 -       {0x0000b024, 0x02830282},
5416 -       {0x0000b028, 0x02850284},
5417 -       {0x0000b02c, 0x02890288},
5418 -       {0x0000b030, 0x028b028a},
5419 -       {0x0000b034, 0x0388028c},
5420 -       {0x0000b038, 0x038a0389},
5421 -       {0x0000b03c, 0x038c038b},
5422 -       {0x0000b040, 0x0390038d},
5423 -       {0x0000b044, 0x03920391},
5424 -       {0x0000b048, 0x03940393},
5425 -       {0x0000b04c, 0x03960395},
5426 -       {0x0000b050, 0x00000000},
5427 -       {0x0000b054, 0x00000000},
5428 -       {0x0000b058, 0x00000000},
5429 -       {0x0000b05c, 0x00000000},
5430 -       {0x0000b060, 0x00000000},
5431 -       {0x0000b064, 0x00000000},
5432 -       {0x0000b068, 0x00000000},
5433 -       {0x0000b06c, 0x00000000},
5434 -       {0x0000b070, 0x00000000},
5435 -       {0x0000b074, 0x00000000},
5436 -       {0x0000b078, 0x00000000},
5437 -       {0x0000b07c, 0x00000000},
5438 -       {0x0000b080, 0x32323232},
5439 -       {0x0000b084, 0x2f2f3232},
5440 -       {0x0000b088, 0x23282a2d},
5441 -       {0x0000b08c, 0x1c1e2123},
5442 -       {0x0000b090, 0x14171919},
5443 -       {0x0000b094, 0x0e0e1214},
5444 -       {0x0000b098, 0x03050707},
5445 -       {0x0000b09c, 0x00030303},
5446 -       {0x0000b0a0, 0x00000000},
5447 -       {0x0000b0a4, 0x00000000},
5448 -       {0x0000b0a8, 0x00000000},
5449 -       {0x0000b0ac, 0x00000000},
5450 -       {0x0000b0b0, 0x00000000},
5451 -       {0x0000b0b4, 0x00000000},
5452 -       {0x0000b0b8, 0x00000000},
5453 -       {0x0000b0bc, 0x00000000},
5454 -       {0x0000b0c0, 0x003f0020},
5455 -       {0x0000b0c4, 0x00400041},
5456 -       {0x0000b0c8, 0x0140005f},
5457 -       {0x0000b0cc, 0x0160015f},
5458 -       {0x0000b0d0, 0x017e017f},
5459 -       {0x0000b0d4, 0x02410242},
5460 -       {0x0000b0d8, 0x025f0240},
5461 -       {0x0000b0dc, 0x027f0260},
5462 -       {0x0000b0e0, 0x0341027e},
5463 -       {0x0000b0e4, 0x035f0340},
5464 -       {0x0000b0e8, 0x037f0360},
5465 -       {0x0000b0ec, 0x04400441},
5466 -       {0x0000b0f0, 0x0460045f},
5467 -       {0x0000b0f4, 0x0541047f},
5468 -       {0x0000b0f8, 0x055f0540},
5469 -       {0x0000b0fc, 0x057f0560},
5470 -       {0x0000b100, 0x06400641},
5471 -       {0x0000b104, 0x0660065f},
5472 -       {0x0000b108, 0x067e067f},
5473 -       {0x0000b10c, 0x07410742},
5474 -       {0x0000b110, 0x075f0740},
5475 -       {0x0000b114, 0x077f0760},
5476 -       {0x0000b118, 0x07800781},
5477 -       {0x0000b11c, 0x07a0079f},
5478 -       {0x0000b120, 0x07c107bf},
5479 -       {0x0000b124, 0x000007c0},
5480 -       {0x0000b128, 0x00000000},
5481 -       {0x0000b12c, 0x00000000},
5482 -       {0x0000b130, 0x00000000},
5483 -       {0x0000b134, 0x00000000},
5484 -       {0x0000b138, 0x00000000},
5485 -       {0x0000b13c, 0x00000000},
5486 -       {0x0000b140, 0x003f0020},
5487 -       {0x0000b144, 0x00400041},
5488 -       {0x0000b148, 0x0140005f},
5489 -       {0x0000b14c, 0x0160015f},
5490 -       {0x0000b150, 0x017e017f},
5491 -       {0x0000b154, 0x02410242},
5492 -       {0x0000b158, 0x025f0240},
5493 -       {0x0000b15c, 0x027f0260},
5494 -       {0x0000b160, 0x0341027e},
5495 -       {0x0000b164, 0x035f0340},
5496 -       {0x0000b168, 0x037f0360},
5497 -       {0x0000b16c, 0x04400441},
5498 -       {0x0000b170, 0x0460045f},
5499 -       {0x0000b174, 0x0541047f},
5500 -       {0x0000b178, 0x055f0540},
5501 -       {0x0000b17c, 0x057f0560},
5502 -       {0x0000b180, 0x06400641},
5503 -       {0x0000b184, 0x0660065f},
5504 -       {0x0000b188, 0x067e067f},
5505 -       {0x0000b18c, 0x07410742},
5506 -       {0x0000b190, 0x075f0740},
5507 -       {0x0000b194, 0x077f0760},
5508 -       {0x0000b198, 0x07800781},
5509 -       {0x0000b19c, 0x07a0079f},
5510 -       {0x0000b1a0, 0x07c107bf},
5511 -       {0x0000b1a4, 0x000007c0},
5512 -       {0x0000b1a8, 0x00000000},
5513 -       {0x0000b1ac, 0x00000000},
5514 -       {0x0000b1b0, 0x00000000},
5515 -       {0x0000b1b4, 0x00000000},
5516 -       {0x0000b1b8, 0x00000000},
5517 -       {0x0000b1bc, 0x00000000},
5518 -       {0x0000b1c0, 0x00000000},
5519 -       {0x0000b1c4, 0x00000000},
5520 -       {0x0000b1c8, 0x00000000},
5521 -       {0x0000b1cc, 0x00000000},
5522 -       {0x0000b1d0, 0x00000000},
5523 -       {0x0000b1d4, 0x00000000},
5524 -       {0x0000b1d8, 0x00000000},
5525 -       {0x0000b1dc, 0x00000000},
5526 -       {0x0000b1e0, 0x00000000},
5527 -       {0x0000b1e4, 0x00000000},
5528 -       {0x0000b1e8, 0x00000000},
5529 -       {0x0000b1ec, 0x00000000},
5530 -       {0x0000b1f0, 0x00000396},
5531 -       {0x0000b1f4, 0x00000396},
5532 -       {0x0000b1f8, 0x00000396},
5533 -       {0x0000b1fc, 0x00000196},
5534 -};
5535 -
5536 -static const u32 ar9300_2p0_soc_preamble[][2] = {
5537 -       /* Addr      allmodes  */
5538 -       {0x000040a4, 0x00a0c1c9},
5539 -       {0x00007008, 0x00000000},
5540 -       {0x00007020, 0x00000000},
5541 -       {0x00007034, 0x00000002},
5542 -       {0x00007038, 0x000004c2},
5543 -};
5544 -
5545 -static const u32 ar9300PciePhy_pll_on_clkreq_disable_L1_2p0[][2] = {
5546 -       /* Addr      allmodes  */
5547 -       {0x00004040, 0x08212e5e},
5548 -       {0x00004040, 0x0008003b},
5549 -       {0x00004044, 0x00000000},
5550 -};
5551 -
5552 -static const u32 ar9300PciePhy_clkreq_enable_L1_2p0[][2] = {
5553 -       /* Addr      allmodes  */
5554 -       {0x00004040, 0x08253e5e},
5555 -       {0x00004040, 0x0008003b},
5556 -       {0x00004044, 0x00000000},
5557 -};
5558 -
5559 -static const u32 ar9300PciePhy_clkreq_disable_L1_2p0[][2] = {
5560 -       /* Addr      allmodes  */
5561 -       {0x00004040, 0x08213e5e},
5562 -       {0x00004040, 0x0008003b},
5563 -       {0x00004044, 0x00000000},
5564 -};
5565 -
5566 -#endif /* INITVALS_9003_H */
5567 --- a/drivers/net/wireless/ath/ath9k/beacon.c
5568 +++ b/drivers/net/wireless/ath/ath9k/beacon.c
5569 @@ -76,22 +76,13 @@ static void ath_beacon_setup(struct ath_
5570         ds = bf->bf_desc;
5571         flags = ATH9K_TXDESC_NOACK;
5572  
5573 -       if (((sc->sc_ah->opmode == NL80211_IFTYPE_ADHOC) ||
5574 -            (sc->sc_ah->opmode == NL80211_IFTYPE_MESH_POINT)) &&
5575 -           (ah->caps.hw_caps & ATH9K_HW_CAP_VEOL)) {
5576 -               ds->ds_link = bf->bf_daddr; /* self-linked */
5577 -               flags |= ATH9K_TXDESC_VEOL;
5578 -               /* Let hardware handle antenna switching. */
5579 -               antenna = 0;
5580 -       } else {
5581 -               ds->ds_link = 0;
5582 -               /*
5583 -                * Switch antenna every beacon.
5584 -                * Should only switch every beacon period, not for every SWBA
5585 -                * XXX assumes two antennae
5586 -                */
5587 -               antenna = ((sc->beacon.ast_be_xmit / sc->nbcnvifs) & 1 ? 2 : 1);
5588 -       }
5589 +       ds->ds_link = 0;
5590 +       /*
5591 +        * Switch antenna every beacon.
5592 +        * Should only switch every beacon period, not for every SWBA
5593 +        * XXX assumes two antennae
5594 +        */
5595 +       antenna = ((sc->beacon.ast_be_xmit / sc->nbcnvifs) & 1 ? 2 : 1);
5596  
5597         sband = &sc->sbands[common->hw->conf.channel->band];
5598         rate = sband->bitrates[rateidx].hw_value;
5599 @@ -215,36 +206,6 @@ static struct ath_buf *ath_beacon_genera
5600         return bf;
5601  }
5602  
5603 -/*
5604 - * Startup beacon transmission for adhoc mode when they are sent entirely
5605 - * by the hardware using the self-linked descriptor + veol trick.
5606 -*/
5607 -static void ath_beacon_start_adhoc(struct ath_softc *sc,
5608 -                                  struct ieee80211_vif *vif)
5609 -{
5610 -       struct ath_hw *ah = sc->sc_ah;
5611 -       struct ath_common *common = ath9k_hw_common(ah);
5612 -       struct ath_buf *bf;
5613 -       struct ath_vif *avp;
5614 -       struct sk_buff *skb;
5615 -
5616 -       avp = (void *)vif->drv_priv;
5617 -
5618 -       if (avp->av_bcbuf == NULL)
5619 -               return;
5620 -
5621 -       bf = avp->av_bcbuf;
5622 -       skb = bf->bf_mpdu;
5623 -
5624 -       ath_beacon_setup(sc, avp, bf, 0);
5625 -
5626 -       /* NB: caller is known to have already stopped tx dma */
5627 -       ath9k_hw_puttxbuf(ah, sc->beacon.beaconq, bf->bf_daddr);
5628 -       ath9k_hw_txstart(ah, sc->beacon.beaconq);
5629 -       ath_print(common, ATH_DBG_BEACON, "TXDP%u = %llx (%p)\n",
5630 -                 sc->beacon.beaconq, ito64(bf->bf_daddr), bf->bf_desc);
5631 -}
5632 -
5633  int ath_beacon_alloc(struct ath_wiphy *aphy, struct ieee80211_vif *vif)
5634  {
5635         struct ath_softc *sc = aphy->sc;
5636 @@ -265,7 +226,8 @@ int ath_beacon_alloc(struct ath_wiphy *a
5637                 list_del(&avp->av_bcbuf->list);
5638  
5639                 if (sc->sc_ah->opmode == NL80211_IFTYPE_AP ||
5640 -                   !(sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_VEOL)) {
5641 +                   sc->sc_ah->opmode == NL80211_IFTYPE_ADHOC ||
5642 +                   sc->sc_ah->opmode == NL80211_IFTYPE_MESH_POINT) {
5643                         int slot;
5644                         /*
5645                          * Assign the vif to a beacon xmit slot. As
5646 @@ -274,17 +236,11 @@ int ath_beacon_alloc(struct ath_wiphy *a
5647                         avp->av_bslot = 0;
5648                         for (slot = 0; slot < ATH_BCBUF; slot++)
5649                                 if (sc->beacon.bslot[slot] == NULL) {
5650 -                                       /*
5651 -                                        * XXX hack, space out slots to better
5652 -                                        * deal with misses
5653 -                                        */
5654 -                                       if (slot+1 < ATH_BCBUF &&
5655 -                                           sc->beacon.bslot[slot+1] == NULL) {
5656 -                                               avp->av_bslot = slot+1;
5657 -                                               break;
5658 -                                       }
5659                                         avp->av_bslot = slot;
5660 +
5661                                         /* NB: keep looking for a double slot */
5662 +                                       if (slot == 0 || !sc->beacon.bslot[slot-1])
5663 +                                               break;
5664                                 }
5665                         BUG_ON(sc->beacon.bslot[avp->av_bslot] != NULL);
5666                         sc->beacon.bslot[avp->av_bslot] = vif;
5667 @@ -721,8 +677,7 @@ static void ath_beacon_config_adhoc(stru
5668          * self-linked tx descriptor and let the hardware deal with things.
5669          */
5670         intval |= ATH9K_BEACON_ENA;
5671 -       if (!(ah->caps.hw_caps & ATH9K_HW_CAP_VEOL))
5672 -               ah->imask |= ATH9K_INT_SWBA;
5673 +       ah->imask |= ATH9K_INT_SWBA;
5674  
5675         ath_beaconq_config(sc);
5676  
5677 @@ -732,10 +687,6 @@ static void ath_beacon_config_adhoc(stru
5678         ath9k_beacon_init(sc, nexttbtt, intval);
5679         sc->beacon.bmisscnt = 0;
5680         ath9k_hw_set_interrupts(ah, ah->imask);
5681 -
5682 -       /* FIXME: Handle properly when vif is NULL */
5683 -       if (vif && ah->caps.hw_caps & ATH9K_HW_CAP_VEOL)
5684 -               ath_beacon_start_adhoc(sc, vif);
5685  }
5686  
5687  void ath_beacon_config(struct ath_softc *sc, struct ieee80211_vif *vif)
5688 --- a/net/mac80211/Kconfig
5689 +++ b/net/mac80211/Kconfig
5690 @@ -33,6 +33,13 @@ config MAC80211_RC_MINSTREL
5691         ---help---
5692           This option enables the 'minstrel' TX rate control algorithm
5693  
5694 +config MAC80211_RC_MINSTREL_HT
5695 +       bool "Minstrel 802.11n support" if EMBEDDED
5696 +       depends on MAC80211_RC_MINSTREL
5697 +       default y
5698 +       ---help---
5699 +         This option enables the 'minstrel_ht' TX rate control algorithm
5700 +
5701  choice
5702         prompt "Default rate control algorithm"
5703         depends on MAC80211_HAS_RC
5704 --- a/net/mac80211/Makefile
5705 +++ b/net/mac80211/Makefile
5706 @@ -51,7 +51,11 @@ rc80211_pid-$(CONFIG_MAC80211_DEBUGFS) +
5707  rc80211_minstrel-y := rc80211_minstrel.o
5708  rc80211_minstrel-$(CONFIG_MAC80211_DEBUGFS) += rc80211_minstrel_debugfs.o
5709  
5710 +rc80211_minstrel_ht-y := rc80211_minstrel_ht.o
5711 +rc80211_minstrel_ht-$(CONFIG_MAC80211_DEBUGFS) += rc80211_minstrel_ht_debugfs.o
5712 +
5713  mac80211-$(CONFIG_MAC80211_RC_PID) += $(rc80211_pid-y)
5714  mac80211-$(CONFIG_MAC80211_RC_MINSTREL) += $(rc80211_minstrel-y)
5715 +mac80211-$(CONFIG_MAC80211_RC_MINSTREL_HT) += $(rc80211_minstrel_ht-y)
5716  
5717  ccflags-y += -D__CHECK_ENDIAN__
5718 --- a/net/mac80211/main.c
5719 +++ b/net/mac80211/main.c
5720 @@ -701,6 +701,10 @@ static int __init ieee80211_init(void)
5721         if (ret)
5722                 return ret;
5723  
5724 +       ret = rc80211_minstrel_ht_init();
5725 +       if (ret)
5726 +               goto err_minstrel;
5727 +
5728         ret = rc80211_pid_init();
5729         if (ret)
5730                 goto err_pid;
5731 @@ -713,6 +717,8 @@ static int __init ieee80211_init(void)
5732   err_netdev:
5733         rc80211_pid_exit();
5734   err_pid:
5735 +       rc80211_minstrel_ht_exit();
5736 + err_minstrel:
5737         rc80211_minstrel_exit();
5738  
5739         return ret;
5740 @@ -721,6 +727,7 @@ static int __init ieee80211_init(void)
5741  static void __exit ieee80211_exit(void)
5742  {
5743         rc80211_pid_exit();
5744 +       rc80211_minstrel_ht_exit();
5745         rc80211_minstrel_exit();
5746  
5747         /*
5748 --- a/net/mac80211/rate.h
5749 +++ b/net/mac80211/rate.h
5750 @@ -147,5 +147,18 @@ static inline void rc80211_minstrel_exit
5751  }
5752  #endif
5753  
5754 +#ifdef CONFIG_MAC80211_RC_MINSTREL_HT
5755 +extern int rc80211_minstrel_ht_init(void);
5756 +extern void rc80211_minstrel_ht_exit(void);
5757 +#else
5758 +static inline int rc80211_minstrel_ht_init(void)
5759 +{
5760 +       return 0;
5761 +}
5762 +static inline void rc80211_minstrel_ht_exit(void)
5763 +{
5764 +}
5765 +#endif
5766 +
5767  
5768  #endif /* IEEE80211_RATE_H */
5769 --- /dev/null
5770 +++ b/net/mac80211/rc80211_minstrel_ht.c
5771 @@ -0,0 +1,824 @@
5772 +/*
5773 + * Copyright (C) 2010 Felix Fietkau <nbd@openwrt.org>
5774 + *
5775 + * This program is free software; you can redistribute it and/or modify
5776 + * it under the terms of the GNU General Public License version 2 as
5777 + * published by the Free Software Foundation.
5778 + */
5779 +#include <linux/netdevice.h>
5780 +#include <linux/types.h>
5781 +#include <linux/skbuff.h>
5782 +#include <linux/debugfs.h>
5783 +#include <linux/random.h>
5784 +#include <linux/ieee80211.h>
5785 +#include <net/mac80211.h>
5786 +#include "rate.h"
5787 +#include "rc80211_minstrel.h"
5788 +#include "rc80211_minstrel_ht.h"
5789 +
5790 +#define AVG_PKT_SIZE   1200
5791 +#define SAMPLE_COLUMNS 10
5792 +#define EWMA_LEVEL             75
5793 +
5794 +/* Number of bits for an average sized packet */
5795 +#define MCS_NBITS (AVG_PKT_SIZE << 3)
5796 +
5797 +/* Number of symbols for a packet with (bps) bits per symbol */
5798 +#define MCS_NSYMS(bps) ((MCS_NBITS + (bps) - 1) / (bps))
5799 +
5800 +/* Transmission time for a packet containing (syms) symbols */
5801 +#define MCS_SYMBOL_TIME(sgi, syms)                                     \
5802 +       (sgi ?                                                          \
5803 +         ((syms) * 18 + 4) / 5 :       /* syms * 3.6 us */             \
5804 +         (syms) << 2                   /* syms * 4 us */               \
5805 +       )
5806 +
5807 +/* Transmit duration for the raw data part of an average sized packet */
5808 +#define MCS_DURATION(streams, sgi, bps) MCS_SYMBOL_TIME(sgi, MCS_NSYMS((streams) * (bps)))
5809 +
5810 +/* MCS rate information for an MCS group */
5811 +#define MCS_GROUP(_streams, _sgi, _ht40) {                             \
5812 +       .streams = _streams,                                            \
5813 +       .flags =                                                        \
5814 +               (_sgi ? IEEE80211_TX_RC_SHORT_GI : 0) |                 \
5815 +               (_ht40 ? IEEE80211_TX_RC_40_MHZ_WIDTH : 0),             \
5816 +       .duration = {                                                   \
5817 +               MCS_DURATION(_streams, _sgi, _ht40 ? 54 : 26),          \
5818 +               MCS_DURATION(_streams, _sgi, _ht40 ? 108 : 52),         \
5819 +               MCS_DURATION(_streams, _sgi, _ht40 ? 162 : 78),         \
5820 +               MCS_DURATION(_streams, _sgi, _ht40 ? 216 : 104),        \
5821 +               MCS_DURATION(_streams, _sgi, _ht40 ? 324 : 156),        \
5822 +               MCS_DURATION(_streams, _sgi, _ht40 ? 432 : 208),        \
5823 +               MCS_DURATION(_streams, _sgi, _ht40 ? 486 : 234),        \
5824 +               MCS_DURATION(_streams, _sgi, _ht40 ? 540 : 260)         \
5825 +       }                                                               \
5826 +}
5827 +
5828 +/*
5829 + * To enable sufficiently targeted rate sampling, MCS rates are divided into
5830 + * groups, based on the number of streams and flags (HT40, SGI) that they
5831 + * use.
5832 + */
5833 +const struct mcs_group minstrel_mcs_groups[] = {
5834 +       MCS_GROUP(1, 0, 0),
5835 +       MCS_GROUP(2, 0, 0),
5836 +#if MINSTREL_MAX_STREAMS >= 3
5837 +       MCS_GROUP(3, 0, 0),
5838 +#endif
5839 +
5840 +       MCS_GROUP(1, 1, 0),
5841 +       MCS_GROUP(2, 1, 0),
5842 +#if MINSTREL_MAX_STREAMS >= 3
5843 +       MCS_GROUP(3, 1, 0),
5844 +#endif
5845 +
5846 +       MCS_GROUP(1, 0, 1),
5847 +       MCS_GROUP(2, 0, 1),
5848 +#if MINSTREL_MAX_STREAMS >= 3
5849 +       MCS_GROUP(3, 0, 1),
5850 +#endif
5851 +
5852 +       MCS_GROUP(1, 1, 1),
5853 +       MCS_GROUP(2, 1, 1),
5854 +#if MINSTREL_MAX_STREAMS >= 3
5855 +       MCS_GROUP(3, 1, 1),
5856 +#endif
5857 +};
5858 +
5859 +static u8 sample_table[SAMPLE_COLUMNS][MCS_GROUP_RATES];
5860 +
5861 +/*
5862 + * Perform EWMA (Exponentially Weighted Moving Average) calculation
5863 + */
5864 +static int
5865 +minstrel_ewma(int old, int new, int weight)
5866 +{
5867 +       return (new * (100 - weight) + old * weight) / 100;
5868 +}
5869 +
5870 +/*
5871 + * Look up an MCS group index based on mac80211 rate information
5872 + */
5873 +static int
5874 +minstrel_ht_get_group_idx(struct ieee80211_tx_rate *rate)
5875 +{
5876 +       int streams = (rate->idx / MCS_GROUP_RATES) + 1;
5877 +       u32 flags = IEEE80211_TX_RC_SHORT_GI | IEEE80211_TX_RC_40_MHZ_WIDTH;
5878 +       int i;
5879 +
5880 +       for (i = 0; i < ARRAY_SIZE(minstrel_mcs_groups); i++) {
5881 +               if (minstrel_mcs_groups[i].streams != streams)
5882 +                       continue;
5883 +               if (minstrel_mcs_groups[i].flags != (rate->flags & flags))
5884 +                       continue;
5885 +
5886 +               return i;
5887 +       }
5888 +
5889 +       WARN_ON(1);
5890 +       return 0;
5891 +}
5892 +
5893 +static inline struct minstrel_rate_stats *
5894 +minstrel_get_ratestats(struct minstrel_ht_sta *mi, int index)
5895 +{
5896 +       return &mi->groups[index / MCS_GROUP_RATES].rates[index % MCS_GROUP_RATES];
5897 +}
5898 +
5899 +
5900 +/*
5901 + * Recalculate success probabilities and counters for a rate using EWMA
5902 + */
5903 +static void
5904 +minstrel_calc_rate_ewma(struct minstrel_priv *mp, struct minstrel_rate_stats *mr)
5905 +{
5906 +       if (unlikely(mr->attempts > 0)) {
5907 +               mr->sample_skipped = 0;
5908 +               mr->cur_prob = MINSTREL_FRAC(mr->success, mr->attempts);
5909 +               if (!mr->att_hist)
5910 +                       mr->probability = mr->cur_prob;
5911 +               else
5912 +                       mr->probability = minstrel_ewma(mr->probability,
5913 +                               mr->cur_prob, EWMA_LEVEL);
5914 +               mr->att_hist += mr->attempts;
5915 +               mr->succ_hist += mr->success;
5916 +       } else {
5917 +               mr->sample_skipped++;
5918 +       }
5919 +       mr->last_success = mr->success;
5920 +       mr->last_attempts = mr->attempts;
5921 +       mr->success = 0;
5922 +       mr->attempts = 0;
5923 +}
5924 +
5925 +/*
5926 + * Calculate throughput based on the average A-MPDU length, taking into account
5927 + * the expected number of retransmissions and their expected length
5928 + */
5929 +static void
5930 +minstrel_ht_calc_tp(struct minstrel_priv *mp, struct minstrel_ht_sta *mi,
5931 +                    int group, int rate)
5932 +{
5933 +       struct minstrel_rate_stats *mr;
5934 +       unsigned int usecs;
5935 +
5936 +       mr = &mi->groups[group].rates[rate];
5937 +
5938 +       if (mr->probability < MINSTREL_FRAC(1, 10)) {
5939 +               mr->cur_tp = 0;
5940 +               return;
5941 +       }
5942 +
5943 +       usecs = mi->overhead / MINSTREL_TRUNC(mi->avg_ampdu_len);
5944 +       usecs += minstrel_mcs_groups[group].duration[rate];
5945 +       mr->cur_tp = MINSTREL_TRUNC((1000000 / usecs) * mr->probability);
5946 +}
5947 +
5948 +/*
5949 + * Update rate statistics and select new primary rates
5950 + *
5951 + * Rules for rate selection:
5952 + *  - max_prob_rate must use only one stream, as a tradeoff between delivery
5953 + *    probability and throughput during strong fluctuations
5954 + *  - as long as the max prob rate has a probability of more than 3/4, pick
5955 + *    higher throughput rates, even if the probablity is a bit lower
5956 + */
5957 +static void
5958 +minstrel_ht_update_stats(struct minstrel_priv *mp, struct minstrel_ht_sta *mi)
5959 +{
5960 +       struct minstrel_mcs_group_data *mg;
5961 +       struct minstrel_rate_stats *mr;
5962 +       int cur_prob, cur_prob_tp, cur_tp, cur_tp2;
5963 +       int group, i, index;
5964 +
5965 +       if (mi->ampdu_packets > 0) {
5966 +               mi->avg_ampdu_len = minstrel_ewma(mi->avg_ampdu_len,
5967 +                       MINSTREL_FRAC(mi->ampdu_len, mi->ampdu_packets), EWMA_LEVEL);
5968 +               mi->ampdu_len = 0;
5969 +               mi->ampdu_packets = 0;
5970 +       }
5971 +
5972 +       mi->sample_slow = 0;
5973 +       mi->sample_count = 0;
5974 +       mi->max_tp_rate = 0;
5975 +       mi->max_tp_rate2 = 0;
5976 +       mi->max_prob_rate = 0;
5977 +
5978 +       for (group = 0; group < ARRAY_SIZE(minstrel_mcs_groups); group++) {
5979 +               cur_prob = 0;
5980 +               cur_prob_tp = 0;
5981 +               cur_tp = 0;
5982 +               cur_tp2 = 0;
5983 +
5984 +               mg = &mi->groups[group];
5985 +               if (!mg->supported)
5986 +                       continue;
5987 +
5988 +               mg->max_tp_rate = 0;
5989 +               mg->max_tp_rate2 = 0;
5990 +               mg->max_prob_rate = 0;
5991 +               mi->sample_count++;
5992 +
5993 +               for (i = 0; i < MCS_GROUP_RATES; i++) {
5994 +                       if (!(mg->supported & BIT(i)))
5995 +                               continue;
5996 +
5997 +                       mr = &mg->rates[i];
5998 +                       mr->retry_updated = false;
5999 +                       index = MCS_GROUP_RATES * group + i;
6000 +                       minstrel_calc_rate_ewma(mp, mr);
6001 +                       minstrel_ht_calc_tp(mp, mi, group, i);
6002 +
6003 +                       if (!mr->cur_tp)
6004 +                               continue;
6005 +
6006 +                       /* ignore the lowest rate of each single-stream group */
6007 +                       if (!i && minstrel_mcs_groups[group].streams == 1)
6008 +                               continue;
6009 +
6010 +                       if ((mr->cur_tp > cur_prob_tp && mr->probability >
6011 +                            MINSTREL_FRAC(3, 4)) || mr->probability > cur_prob) {
6012 +                               mg->max_prob_rate = index;
6013 +                               cur_prob = mr->probability;
6014 +                       }
6015 +
6016 +                       if (mr->cur_tp > cur_tp) {
6017 +                               swap(index, mg->max_tp_rate);
6018 +                               cur_tp = mr->cur_tp;
6019 +                               mr = minstrel_get_ratestats(mi, index);
6020 +                       }
6021 +
6022 +                       if (index >= mg->max_tp_rate)
6023 +                               continue;
6024 +
6025 +                       if (mr->cur_tp > cur_tp2) {
6026 +                               mg->max_tp_rate2 = index;
6027 +                               cur_tp2 = mr->cur_tp;
6028 +                       }
6029 +               }
6030 +       }
6031 +
6032 +       /* try to sample up to half of the availble rates during each interval */
6033 +       mi->sample_count *= 4;
6034 +
6035 +       cur_prob = 0;
6036 +       cur_prob_tp = 0;
6037 +       cur_tp = 0;
6038 +       cur_tp2 = 0;
6039 +       for (group = 0; group < ARRAY_SIZE(minstrel_mcs_groups); group++) {
6040 +               mg = &mi->groups[group];
6041 +               if (!mg->supported)
6042 +                       continue;
6043 +
6044 +               mr = minstrel_get_ratestats(mi, mg->max_prob_rate);
6045 +               if (cur_prob_tp < mr->cur_tp &&
6046 +                   minstrel_mcs_groups[group].streams == 1) {
6047 +                       mi->max_prob_rate = mg->max_prob_rate;
6048 +                       cur_prob = mr->cur_prob;
6049 +               }
6050 +
6051 +               mr = minstrel_get_ratestats(mi, mg->max_tp_rate);
6052 +               if (cur_tp < mr->cur_tp) {
6053 +                       mi->max_tp_rate = mg->max_tp_rate;
6054 +                       cur_tp = mr->cur_tp;
6055 +               }
6056 +
6057 +               mr = minstrel_get_ratestats(mi, mg->max_tp_rate2);
6058 +               if (cur_tp2 < mr->cur_tp) {
6059 +                       mi->max_tp_rate2 = mg->max_tp_rate2;
6060 +                       cur_tp2 = mr->cur_tp;
6061 +               }
6062 +       }
6063 +
6064 +       mi->stats_update = jiffies;
6065 +}
6066 +
6067 +static bool
6068 +minstrel_ht_txstat_valid(struct ieee80211_tx_rate *rate)
6069 +{
6070 +       if (!rate->count)
6071 +               return false;
6072 +
6073 +       if (rate->idx < 0)
6074 +               return false;
6075 +
6076 +       return !!(rate->flags & IEEE80211_TX_RC_MCS);
6077 +}
6078 +
6079 +static void
6080 +minstrel_next_sample_idx(struct minstrel_ht_sta *mi)
6081 +{
6082 +       struct minstrel_mcs_group_data *mg;
6083 +
6084 +       for (;;) {
6085 +               mi->sample_group++;
6086 +               mi->sample_group %= ARRAY_SIZE(minstrel_mcs_groups);
6087 +               mg = &mi->groups[mi->sample_group];
6088 +
6089 +               if (!mg->supported)
6090 +                       continue;
6091 +
6092 +               if (++mg->index >= MCS_GROUP_RATES) {
6093 +                       mg->index = 0;
6094 +                       if (++mg->column >= ARRAY_SIZE(sample_table))
6095 +                               mg->column = 0;
6096 +               }
6097 +               break;
6098 +       }
6099 +}
6100 +
6101 +static void
6102 +minstrel_downgrade_rate(struct minstrel_ht_sta *mi, int *idx, bool primary)
6103 +{
6104 +       int group, orig_group;
6105 +
6106 +       orig_group = group = *idx / MCS_GROUP_RATES;
6107 +       while (group > 0) {
6108 +               group--;
6109 +
6110 +               if (!mi->groups[group].supported)
6111 +                       continue;
6112 +
6113 +               if (minstrel_mcs_groups[group].streams >
6114 +                   minstrel_mcs_groups[orig_group].streams)
6115 +                       continue;
6116 +
6117 +               if (primary)
6118 +                       *idx = mi->groups[group].max_tp_rate;
6119 +               else
6120 +                       *idx = mi->groups[group].max_tp_rate2;
6121 +               break;
6122 +       }
6123 +}
6124 +
6125 +static void
6126 +minstrel_aggr_check(struct minstrel_priv *mp, struct ieee80211_sta *pubsta, struct sk_buff *skb)
6127 +{
6128 +       struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
6129 +       struct sta_info *sta = container_of(pubsta, struct sta_info, sta);
6130 +       u16 tid;
6131 +
6132 +       if (unlikely(!ieee80211_is_data_qos(hdr->frame_control)))
6133 +               return;
6134 +
6135 +       if (unlikely(skb->protocol == cpu_to_be16(ETH_P_PAE)))
6136 +               return;
6137 +
6138 +       tid = *ieee80211_get_qos_ctl(hdr) & IEEE80211_QOS_CTL_TID_MASK;
6139 +       if (likely(sta->ampdu_mlme.tid_state_tx[tid] != HT_AGG_STATE_IDLE))
6140 +               return;
6141 +
6142 +       ieee80211_start_tx_ba_session(pubsta, tid);
6143 +}
6144 +
6145 +static void
6146 +minstrel_ht_tx_status(void *priv, struct ieee80211_supported_band *sband,
6147 +                      struct ieee80211_sta *sta, void *priv_sta,
6148 +                      struct sk_buff *skb)
6149 +{
6150 +       struct minstrel_ht_sta_priv *msp = priv_sta;
6151 +       struct minstrel_ht_sta *mi = &msp->ht;
6152 +       struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
6153 +       struct ieee80211_tx_rate *ar = info->status.rates;
6154 +       struct minstrel_rate_stats *rate, *rate2;
6155 +       struct minstrel_priv *mp = priv;
6156 +       bool last = false;
6157 +       int group;
6158 +       int i = 0;
6159 +
6160 +       if (!msp->is_ht)
6161 +               return mac80211_minstrel.tx_status(priv, sband, sta, &msp->legacy, skb);
6162 +
6163 +       /* This packet was aggregated but doesn't carry status info */
6164 +       if ((info->flags & IEEE80211_TX_CTL_AMPDU) &&
6165 +           !(info->flags & IEEE80211_TX_STAT_AMPDU))
6166 +               return;
6167 +
6168 +       if (!info->status.ampdu_len) {
6169 +               info->status.ampdu_ack_len = 1;
6170 +               info->status.ampdu_len = 1;
6171 +       }
6172 +
6173 +       mi->ampdu_packets++;
6174 +       mi->ampdu_len += info->status.ampdu_len;
6175 +
6176 +       if (!mi->sample_wait && !mi->sample_tries && mi->sample_count > 0) {
6177 +               mi->sample_wait = 4 + 2 * MINSTREL_TRUNC(mi->avg_ampdu_len);
6178 +               mi->sample_tries = 3;
6179 +               mi->sample_count--;
6180 +       }
6181 +
6182 +       if (info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE) {
6183 +               mi->sample_packets += info->status.ampdu_len;
6184 +               minstrel_next_sample_idx(mi);
6185 +       }
6186 +
6187 +       for (i = 0; !last; i++) {
6188 +               last = (i == IEEE80211_TX_MAX_RATES - 1) ||
6189 +                      !minstrel_ht_txstat_valid(&ar[i + 1]);
6190 +
6191 +               if (!minstrel_ht_txstat_valid(&ar[i]))
6192 +                       break;
6193 +
6194 +               group = minstrel_ht_get_group_idx(&ar[i]);
6195 +               rate = &mi->groups[group].rates[ar[i].idx % 8];
6196 +
6197 +               if (last && (info->flags & IEEE80211_TX_STAT_ACK))
6198 +                       rate->success += info->status.ampdu_ack_len;
6199 +
6200 +               rate->attempts += ar[i].count * info->status.ampdu_len;
6201 +       }
6202 +
6203 +       /*
6204 +        * check for sudden death of spatial multiplexing,
6205 +        * downgrade to a lower number of streams if necessary.
6206 +        */
6207 +       rate = minstrel_get_ratestats(mi, mi->max_tp_rate);
6208 +       if (rate->attempts > 30 &&
6209 +           MINSTREL_FRAC(rate->success, rate->attempts) <
6210 +           MINSTREL_FRAC(20, 100))
6211 +               minstrel_downgrade_rate(mi, &mi->max_tp_rate, true);
6212 +
6213 +       rate2 = minstrel_get_ratestats(mi, mi->max_tp_rate2);
6214 +       if (rate->attempts > 30 &&
6215 +           MINSTREL_FRAC(rate->success, rate->attempts) <
6216 +           MINSTREL_FRAC(20, 100))
6217 +               minstrel_downgrade_rate(mi, &mi->max_tp_rate2, false);
6218 +
6219 +       if (time_after(jiffies, mi->stats_update + (mp->update_interval / 2 * HZ) / 1000)) {
6220 +               minstrel_ht_update_stats(mp, mi);
6221 +               minstrel_aggr_check(mp, sta, skb);
6222 +       }
6223 +}
6224 +
6225 +static void
6226 +minstrel_calc_retransmit(struct minstrel_priv *mp, struct minstrel_ht_sta *mi,
6227 +                         int index)
6228 +{
6229 +       struct minstrel_rate_stats *mr;
6230 +       const struct mcs_group *group;
6231 +       unsigned int tx_time, tx_time_rtscts, tx_time_data;
6232 +       unsigned int cw = mp->cw_min;
6233 +       unsigned int t_slot = 9; /* FIXME */
6234 +       unsigned int ampdu_len = MINSTREL_TRUNC(mi->avg_ampdu_len);
6235 +
6236 +       mr = minstrel_get_ratestats(mi, index);
6237 +       if (mr->probability < MINSTREL_FRAC(1, 10)) {
6238 +               mr->retry_count = 1;
6239 +               mr->retry_count_rtscts = 1;
6240 +               return;
6241 +       }
6242 +
6243 +       mr->retry_count = 2;
6244 +       mr->retry_count_rtscts = 2;
6245 +       mr->retry_updated = true;
6246 +
6247 +       group = &minstrel_mcs_groups[index / MCS_GROUP_RATES];
6248 +       tx_time_data = group->duration[index % MCS_GROUP_RATES] * ampdu_len;
6249 +       tx_time = 2 * (t_slot + mi->overhead + tx_time_data);
6250 +       tx_time_rtscts = 2 * (t_slot + mi->overhead_rtscts + tx_time_data);
6251 +       do {
6252 +               cw = (cw << 1) | 1;
6253 +               cw = min(cw, mp->cw_max);
6254 +               tx_time += cw + t_slot + mi->overhead;
6255 +               tx_time_rtscts += cw + t_slot + mi->overhead_rtscts;
6256 +               if (tx_time_rtscts < mp->segment_size)
6257 +                       mr->retry_count_rtscts++;
6258 +       } while ((tx_time < mp->segment_size) &&
6259 +                (++mr->retry_count < mp->max_retry));
6260 +}
6261 +
6262 +
6263 +static void
6264 +minstrel_ht_set_rate(struct minstrel_priv *mp, struct minstrel_ht_sta *mi,
6265 +                     struct ieee80211_tx_rate *rate, int index,
6266 +                     struct ieee80211_tx_rate_control *txrc,
6267 +                     bool sample, bool rtscts)
6268 +{
6269 +       const struct mcs_group *group = &minstrel_mcs_groups[index / MCS_GROUP_RATES];
6270 +       struct minstrel_rate_stats *mr;
6271 +
6272 +       mr = minstrel_get_ratestats(mi, index);
6273 +       if (!mr->retry_updated)
6274 +               minstrel_calc_retransmit(mp, mi, index);
6275 +
6276 +       if (mr->probability < MINSTREL_FRAC(20, 100))
6277 +               rate->count = 2;
6278 +       else if (rtscts)
6279 +               rate->count = mr->retry_count_rtscts;
6280 +       else
6281 +               rate->count = mr->retry_count;
6282 +
6283 +       rate->flags = IEEE80211_TX_RC_MCS | group->flags;
6284 +       if (txrc->short_preamble)
6285 +               rate->flags |= IEEE80211_TX_RC_USE_SHORT_PREAMBLE;
6286 +       if (txrc->rts || rtscts)
6287 +               rate->flags |= IEEE80211_TX_RC_USE_RTS_CTS;
6288 +       rate->idx = index % MCS_GROUP_RATES + (group->streams - 1) * MCS_GROUP_RATES;
6289 +}
6290 +
6291 +static inline int
6292 +minstrel_get_duration(int index)
6293 +{
6294 +       const struct mcs_group *group = &minstrel_mcs_groups[index / MCS_GROUP_RATES];
6295 +       return group->duration[index % MCS_GROUP_RATES];
6296 +}
6297 +
6298 +static int
6299 +minstrel_get_sample_rate(struct minstrel_priv *mp, struct minstrel_ht_sta *mi)
6300 +{
6301 +       struct minstrel_rate_stats *mr;
6302 +       struct minstrel_mcs_group_data *mg;
6303 +       int sample_idx = 0;
6304 +
6305 +       if (mi->sample_wait > 0) {
6306 +               mi->sample_wait--;
6307 +               return -1;
6308 +       }
6309 +
6310 +       if (!mi->sample_tries)
6311 +               return -1;
6312 +
6313 +       mi->sample_tries--;
6314 +       mg = &mi->groups[mi->sample_group];
6315 +       sample_idx = sample_table[mg->column][mg->index];
6316 +       mr = &mg->rates[sample_idx];
6317 +       sample_idx += mi->sample_group * MCS_GROUP_RATES;
6318 +
6319 +       /*
6320 +        * When not using MRR, do not sample if the probability is already
6321 +        * higher than 95% to avoid wasting airtime
6322 +        */
6323 +       if (!mp->has_mrr && (mr->probability > MINSTREL_FRAC(95, 100)))
6324 +               goto next;
6325 +
6326 +       /*
6327 +        * Make sure that lower rates get sampled only occasionally,
6328 +        * if the link is working perfectly.
6329 +        */
6330 +       if (minstrel_get_duration(sample_idx) >
6331 +           minstrel_get_duration(mi->max_tp_rate)) {
6332 +               if (mr->sample_skipped < 10)
6333 +                       goto next;
6334 +
6335 +               if (mi->sample_slow++ > 2)
6336 +                       goto next;
6337 +       }
6338 +
6339 +       return sample_idx;
6340 +
6341 +next:
6342 +       minstrel_next_sample_idx(mi);
6343 +       return -1;
6344 +}
6345 +
6346 +static void
6347 +minstrel_ht_get_rate(void *priv, struct ieee80211_sta *sta, void *priv_sta,
6348 +                     struct ieee80211_tx_rate_control *txrc)
6349 +{
6350 +       struct ieee80211_tx_info *info = IEEE80211_SKB_CB(txrc->skb);
6351 +       struct ieee80211_tx_rate *ar = info->status.rates;
6352 +       struct minstrel_ht_sta_priv *msp = priv_sta;
6353 +       struct minstrel_ht_sta *mi = &msp->ht;
6354 +       struct minstrel_priv *mp = priv;
6355 +       int sample_idx;
6356 +
6357 +       if (rate_control_send_low(sta, priv_sta, txrc))
6358 +               return;
6359 +
6360 +       if (!msp->is_ht)
6361 +               return mac80211_minstrel.get_rate(priv, sta, &msp->legacy, txrc);
6362 +
6363 +       info->flags |= mi->tx_flags;
6364 +       sample_idx = minstrel_get_sample_rate(mp, mi);
6365 +       if (sample_idx >= 0) {
6366 +               minstrel_ht_set_rate(mp, mi, &ar[0], sample_idx,
6367 +                       txrc, true, false);
6368 +               minstrel_ht_set_rate(mp, mi, &ar[1], mi->max_tp_rate,
6369 +                       txrc, false, true);
6370 +               info->flags |= IEEE80211_TX_CTL_RATE_CTRL_PROBE;
6371 +       } else {
6372 +               minstrel_ht_set_rate(mp, mi, &ar[0], mi->max_tp_rate,
6373 +                       txrc, false, false);
6374 +               minstrel_ht_set_rate(mp, mi, &ar[1], mi->max_tp_rate2,
6375 +                       txrc, false, true);
6376 +       }
6377 +       minstrel_ht_set_rate(mp, mi, &ar[2], mi->max_prob_rate, txrc, false, true);
6378 +
6379 +       ar[3].count = 0;
6380 +       ar[3].idx = -1;
6381 +
6382 +       mi->total_packets++;
6383 +
6384 +       /* wraparound */
6385 +       if (mi->total_packets == ~0) {
6386 +               mi->total_packets = 0;
6387 +               mi->sample_packets = 0;
6388 +       }
6389 +}
6390 +
6391 +static void
6392 +minstrel_ht_update_caps(void *priv, struct ieee80211_supported_band *sband,
6393 +                        struct ieee80211_sta *sta, void *priv_sta,
6394 +                       enum nl80211_channel_type oper_chan_type)
6395 +{
6396 +       struct minstrel_priv *mp = priv;
6397 +       struct minstrel_ht_sta_priv *msp = priv_sta;
6398 +       struct minstrel_ht_sta *mi = &msp->ht;
6399 +       struct ieee80211_mcs_info *mcs = &sta->ht_cap.mcs;
6400 +       struct ieee80211_local *local = hw_to_local(mp->hw);
6401 +       u16 sta_cap = sta->ht_cap.cap;
6402 +       int ack_dur;
6403 +       int stbc;
6404 +       int i;
6405 +
6406 +       /* fall back to the old minstrel for legacy stations */
6407 +       if (sta && !sta->ht_cap.ht_supported) {
6408 +               msp->is_ht = false;
6409 +               memset(&msp->legacy, 0, sizeof(msp->legacy));
6410 +               msp->legacy.r = msp->ratelist;
6411 +               msp->legacy.sample_table = msp->sample_table;
6412 +               return mac80211_minstrel.rate_init(priv, sband, sta, &msp->legacy);
6413 +       }
6414 +
6415 +       BUILD_BUG_ON(ARRAY_SIZE(minstrel_mcs_groups) !=
6416 +               MINSTREL_MAX_STREAMS * MINSTREL_STREAM_GROUPS);
6417 +
6418 +       msp->is_ht = true;
6419 +       memset(mi, 0, sizeof(*mi));
6420 +       mi->stats_update = jiffies;
6421 +
6422 +       ack_dur = ieee80211_frame_duration(local, 10, 60, 1, 1);
6423 +       mi->overhead = ieee80211_frame_duration(local, 0, 60, 1, 1) + ack_dur;
6424 +       mi->overhead_rtscts = mi->overhead + 2 * ack_dur;
6425 +
6426 +       mi->avg_ampdu_len = MINSTREL_FRAC(1, 1);
6427 +
6428 +       /* When using MRR, sample more on the first attempt, without delay */
6429 +       if (mp->has_mrr) {
6430 +               mi->sample_count = 16;
6431 +               mi->sample_wait = 0;
6432 +       } else {
6433 +               mi->sample_count = 8;
6434 +               mi->sample_wait = 8;
6435 +       }
6436 +       mi->sample_tries = 4;
6437 +
6438 +       stbc = (sta_cap & IEEE80211_HT_CAP_RX_STBC) >>
6439 +               IEEE80211_HT_CAP_RX_STBC_SHIFT;
6440 +       mi->tx_flags |= stbc << IEEE80211_TX_CTL_STBC_SHIFT;
6441 +
6442 +       if (sta_cap & IEEE80211_HT_CAP_LDPC_CODING)
6443 +               mi->tx_flags |= IEEE80211_TX_CTL_LDPC;
6444 +
6445 +       if (oper_chan_type != NL80211_CHAN_HT40MINUS &&
6446 +           oper_chan_type != NL80211_CHAN_HT40PLUS)
6447 +               sta_cap &= ~IEEE80211_HT_CAP_SUP_WIDTH_20_40;
6448 +
6449 +       for (i = 0; i < ARRAY_SIZE(mi->groups); i++) {
6450 +               u16 req = 0;
6451 +
6452 +               mi->groups[i].supported = 0;
6453 +               if (minstrel_mcs_groups[i].flags & IEEE80211_TX_RC_SHORT_GI) {
6454 +                       if (minstrel_mcs_groups[i].flags & IEEE80211_TX_RC_40_MHZ_WIDTH)
6455 +                               req |= IEEE80211_HT_CAP_SGI_40;
6456 +                       else
6457 +                               req |= IEEE80211_HT_CAP_SGI_20;
6458 +               }
6459 +
6460 +               if (minstrel_mcs_groups[i].flags & IEEE80211_TX_RC_40_MHZ_WIDTH)
6461 +                       req |= IEEE80211_HT_CAP_SUP_WIDTH_20_40;
6462 +
6463 +               if ((sta_cap & req) != req)
6464 +                       continue;
6465 +
6466 +               mi->groups[i].supported =
6467 +                       mcs->rx_mask[minstrel_mcs_groups[i].streams - 1];
6468 +       }
6469 +}
6470 +
6471 +static void
6472 +minstrel_ht_rate_init(void *priv, struct ieee80211_supported_band *sband,
6473 +                      struct ieee80211_sta *sta, void *priv_sta)
6474 +{
6475 +       struct minstrel_priv *mp = priv;
6476 +
6477 +       minstrel_ht_update_caps(priv, sband, sta, priv_sta, mp->hw->conf.channel_type);
6478 +}
6479 +
6480 +static void
6481 +minstrel_ht_rate_update(void *priv, struct ieee80211_supported_band *sband,
6482 +                        struct ieee80211_sta *sta, void *priv_sta,
6483 +                        u32 changed, enum nl80211_channel_type oper_chan_type)
6484 +{
6485 +       minstrel_ht_update_caps(priv, sband, sta, priv_sta, oper_chan_type);
6486 +}
6487 +
6488 +static void *
6489 +minstrel_ht_alloc_sta(void *priv, struct ieee80211_sta *sta, gfp_t gfp)
6490 +{
6491 +       struct ieee80211_supported_band *sband;
6492 +       struct minstrel_ht_sta_priv *msp;
6493 +       struct minstrel_priv *mp = priv;
6494 +       struct ieee80211_hw *hw = mp->hw;
6495 +       int max_rates = 0;
6496 +       int i;
6497 +
6498 +       for (i = 0; i < IEEE80211_NUM_BANDS; i++) {
6499 +               sband = hw->wiphy->bands[i];
6500 +               if (sband && sband->n_bitrates > max_rates)
6501 +                       max_rates = sband->n_bitrates;
6502 +       }
6503 +
6504 +       msp = kzalloc(sizeof(struct minstrel_ht_sta), gfp);
6505 +       if (!msp)
6506 +               return NULL;
6507 +
6508 +       msp->ratelist = kzalloc(sizeof(struct minstrel_rate) * max_rates, gfp);
6509 +       if (!msp->ratelist)
6510 +               goto error;
6511 +
6512 +       msp->sample_table = kmalloc(SAMPLE_COLUMNS * max_rates, gfp);
6513 +       if (!msp->sample_table)
6514 +               goto error1;
6515 +
6516 +       return msp;
6517 +
6518 +error1:
6519 +       kfree(msp->sample_table);
6520 +error:
6521 +       kfree(msp);
6522 +       return NULL;
6523 +}
6524 +
6525 +static void
6526 +minstrel_ht_free_sta(void *priv, struct ieee80211_sta *sta, void *priv_sta)
6527 +{
6528 +       struct minstrel_ht_sta_priv *msp = priv_sta;
6529 +
6530 +       kfree(msp->sample_table);
6531 +       kfree(msp->ratelist);
6532 +       kfree(msp);
6533 +}
6534 +
6535 +static void *
6536 +minstrel_ht_alloc(struct ieee80211_hw *hw, struct dentry *debugfsdir)
6537 +{
6538 +       return mac80211_minstrel.alloc(hw, debugfsdir);
6539 +}
6540 +
6541 +static void
6542 +minstrel_ht_free(void *priv)
6543 +{
6544 +       mac80211_minstrel.free(priv);
6545 +}
6546 +
6547 +static struct rate_control_ops mac80211_minstrel_ht = {
6548 +       .name = "minstrel_ht",
6549 +       .tx_status = minstrel_ht_tx_status,
6550 +       .get_rate = minstrel_ht_get_rate,
6551 +       .rate_init = minstrel_ht_rate_init,
6552 +       .rate_update = minstrel_ht_rate_update,
6553 +       .alloc_sta = minstrel_ht_alloc_sta,
6554 +       .free_sta = minstrel_ht_free_sta,
6555 +       .alloc = minstrel_ht_alloc,
6556 +       .free = minstrel_ht_free,
6557 +#ifdef CONFIG_MAC80211_DEBUGFS
6558 +       .add_sta_debugfs = minstrel_ht_add_sta_debugfs,
6559 +       .remove_sta_debugfs = minstrel_ht_remove_sta_debugfs,
6560 +#endif
6561 +};
6562 +
6563 +
6564 +static void
6565 +init_sample_table(void)
6566 +{
6567 +       int col, i, new_idx;
6568 +       u8 rnd[MCS_GROUP_RATES];
6569 +
6570 +       memset(sample_table, 0xff, sizeof(sample_table));
6571 +       for (col = 0; col < SAMPLE_COLUMNS; col++) {
6572 +               for (i = 0; i < MCS_GROUP_RATES; i++) {
6573 +                       get_random_bytes(rnd, sizeof(rnd));
6574 +                       new_idx = (i + rnd[i]) % MCS_GROUP_RATES;
6575 +
6576 +                       while (sample_table[col][new_idx] != 0xff)
6577 +                               new_idx = (new_idx + 1) % MCS_GROUP_RATES;
6578 +
6579 +                       sample_table[col][new_idx] = i;
6580 +               }
6581 +       }
6582 +}
6583 +
6584 +int __init
6585 +rc80211_minstrel_ht_init(void)
6586 +{
6587 +       init_sample_table();
6588 +       return ieee80211_rate_control_register(&mac80211_minstrel_ht);
6589 +}
6590 +
6591 +void
6592 +rc80211_minstrel_ht_exit(void)
6593 +{
6594 +       ieee80211_rate_control_unregister(&mac80211_minstrel_ht);
6595 +}
6596 --- /dev/null
6597 +++ b/net/mac80211/rc80211_minstrel_ht.h
6598 @@ -0,0 +1,128 @@
6599 +/*
6600 + * Copyright (C) 2010 Felix Fietkau <nbd@openwrt.org>
6601 + *
6602 + * This program is free software; you can redistribute it and/or modify
6603 + * it under the terms of the GNU General Public License version 2 as
6604 + * published by the Free Software Foundation.
6605 + */
6606 +
6607 +#ifndef __RC_MINSTREL_HT_H
6608 +#define __RC_MINSTREL_HT_H
6609 +
6610 +/*
6611 + * The number of streams can be changed to 2 to reduce code
6612 + * size and memory footprint.
6613 + */
6614 +#define MINSTREL_MAX_STREAMS   3
6615 +#define MINSTREL_STREAM_GROUPS 4
6616 +
6617 +/* scaled fraction values */
6618 +#define MINSTREL_SCALE 16
6619 +#define MINSTREL_FRAC(val, div) (((val) << MINSTREL_SCALE) / div)
6620 +#define MINSTREL_TRUNC(val) ((val) >> MINSTREL_SCALE)
6621 +
6622 +#define MCS_GROUP_RATES        8
6623 +
6624 +struct mcs_group {
6625 +       u32 flags;
6626 +       unsigned int streams;
6627 +       unsigned int duration[MCS_GROUP_RATES];
6628 +};
6629 +
6630 +struct minstrel_rate_stats {
6631 +       /* current / last sampling period attempts/success counters */
6632 +       unsigned int attempts, last_attempts;
6633 +       unsigned int success, last_success;
6634 +
6635 +       /* total attempts/success counters */
6636 +       u64 att_hist, succ_hist;
6637 +
6638 +       /* current throughput */
6639 +       unsigned int cur_tp;
6640 +
6641 +       /* packet delivery probabilities */
6642 +       unsigned int cur_prob, probability;
6643 +
6644 +       /* maximum retry counts */
6645 +       unsigned int retry_count;
6646 +       unsigned int retry_count_rtscts;
6647 +
6648 +       bool retry_updated;
6649 +       u8 sample_skipped;
6650 +};
6651 +
6652 +struct minstrel_mcs_group_data {
6653 +       u8 index;
6654 +       u8 column;
6655 +
6656 +       /* bitfield of supported MCS rates of this group */
6657 +       u8 supported;
6658 +
6659 +       /* selected primary rates */
6660 +       unsigned int max_tp_rate;
6661 +       unsigned int max_tp_rate2;
6662 +       unsigned int max_prob_rate;
6663 +
6664 +       /* MCS rate statistics */
6665 +       struct minstrel_rate_stats rates[MCS_GROUP_RATES];
6666 +};
6667 +
6668 +struct minstrel_ht_sta {
6669 +       /* ampdu length (average, per sampling interval) */
6670 +       unsigned int ampdu_len;
6671 +       unsigned int ampdu_packets;
6672 +
6673 +       /* ampdu length (EWMA) */
6674 +       unsigned int avg_ampdu_len;
6675 +
6676 +       /* best throughput rate */
6677 +       unsigned int max_tp_rate;
6678 +
6679 +       /* second best throughput rate */
6680 +       unsigned int max_tp_rate2;
6681 +
6682 +       /* best probability rate */
6683 +       unsigned int max_prob_rate;
6684 +
6685 +       /* time of last status update */
6686 +       unsigned long stats_update;
6687 +
6688 +       /* overhead time in usec for each frame */
6689 +       unsigned int overhead;
6690 +       unsigned int overhead_rtscts;
6691 +
6692 +       unsigned int total_packets;
6693 +       unsigned int sample_packets;
6694 +
6695 +       /* tx flags to add for frames for this sta */
6696 +       u32 tx_flags;
6697 +
6698 +       u8 sample_wait;
6699 +       u8 sample_tries;
6700 +       u8 sample_count;
6701 +       u8 sample_slow;
6702 +
6703 +       /* current MCS group to be sampled */
6704 +       u8 sample_group;
6705 +
6706 +       /* MCS rate group info and statistics */
6707 +       struct minstrel_mcs_group_data groups[MINSTREL_MAX_STREAMS * MINSTREL_STREAM_GROUPS];
6708 +};
6709 +
6710 +struct minstrel_ht_sta_priv {
6711 +       union {
6712 +               struct minstrel_ht_sta ht;
6713 +               struct minstrel_sta_info legacy;
6714 +       };
6715 +#ifdef CONFIG_MAC80211_DEBUGFS
6716 +       struct dentry *dbg_stats;
6717 +#endif
6718 +       void *ratelist;
6719 +       void *sample_table;
6720 +       bool is_ht;
6721 +};
6722 +
6723 +void minstrel_ht_add_sta_debugfs(void *priv, void *priv_sta, struct dentry *dir);
6724 +void minstrel_ht_remove_sta_debugfs(void *priv, void *priv_sta);
6725 +
6726 +#endif
6727 --- /dev/null
6728 +++ b/net/mac80211/rc80211_minstrel_ht_debugfs.c
6729 @@ -0,0 +1,120 @@
6730 +/*
6731 + * Copyright (C) 2010 Felix Fietkau <nbd@openwrt.org>
6732 + *
6733 + * This program is free software; you can redistribute it and/or modify
6734 + * it under the terms of the GNU General Public License version 2 as
6735 + * published by the Free Software Foundation.
6736 + */
6737 +#include <linux/netdevice.h>
6738 +#include <linux/types.h>
6739 +#include <linux/skbuff.h>
6740 +#include <linux/debugfs.h>
6741 +#include <linux/ieee80211.h>
6742 +#include <net/mac80211.h>
6743 +#include "rc80211_minstrel.h"
6744 +#include "rc80211_minstrel_ht.h"
6745 +
6746 +extern const struct mcs_group minstrel_mcs_groups[];
6747 +
6748 +static int
6749 +minstrel_ht_stats_open(struct inode *inode, struct file *file)
6750 +{
6751 +       struct minstrel_ht_sta_priv *msp = inode->i_private;
6752 +       struct minstrel_ht_sta *mi = &msp->ht;
6753 +       struct minstrel_debugfs_info *ms;
6754 +       unsigned int i, j, tp, prob, eprob;
6755 +       char *p;
6756 +       int ret;
6757 +
6758 +       if (!msp->is_ht) {
6759 +               inode->i_private = &msp->legacy;
6760 +               ret = minstrel_stats_open(inode, file);
6761 +               inode->i_private = msp;
6762 +               return ret;
6763 +       }
6764 +
6765 +       ms = kmalloc(sizeof(*ms) + 8192, GFP_KERNEL);
6766 +       if (!ms)
6767 +               return -ENOMEM;
6768 +
6769 +       file->private_data = ms;
6770 +       p = ms->buf;
6771 +       p += sprintf(p, "type      rate     throughput  ewma prob   this prob  "
6772 +                       "this succ/attempt   success    attempts\n");
6773 +       for (i = 0; i < MINSTREL_MAX_STREAMS * MINSTREL_STREAM_GROUPS; i++) {
6774 +               char htmode = '2';
6775 +               char gimode = 'L';
6776 +
6777 +               if (!mi->groups[i].supported)
6778 +                       continue;
6779 +
6780 +               if (minstrel_mcs_groups[i].flags & IEEE80211_TX_RC_40_MHZ_WIDTH)
6781 +                       htmode = '4';
6782 +               if (minstrel_mcs_groups[i].flags & IEEE80211_TX_RC_SHORT_GI)
6783 +                       gimode = 'S';
6784 +
6785 +               for (j = 0; j < MCS_GROUP_RATES; j++) {
6786 +                       struct minstrel_rate_stats *mr = &mi->groups[i].rates[j];
6787 +                       int idx = i * MCS_GROUP_RATES + j;
6788 +
6789 +                       if (!(mi->groups[i].supported & BIT(j)))
6790 +                               continue;
6791 +
6792 +                       p += sprintf(p, "HT%c0/%cGI ", htmode, gimode);
6793 +
6794 +                       *(p++) = (idx == mi->max_tp_rate) ? 'T' : ' ';
6795 +                       *(p++) = (idx == mi->max_tp_rate2) ? 't' : ' ';
6796 +                       *(p++) = (idx == mi->max_prob_rate) ? 'P' : ' ';
6797 +                       p += sprintf(p, "MCS%-2u", (minstrel_mcs_groups[i].streams - 1) *
6798 +                                       MCS_GROUP_RATES + j);
6799 +
6800 +                       tp = mr->cur_tp / 10;
6801 +                       prob = MINSTREL_TRUNC(mr->cur_prob * 1000);
6802 +                       eprob = MINSTREL_TRUNC(mr->probability * 1000);
6803 +
6804 +                       p += sprintf(p, "  %6u.%1u   %6u.%1u   %6u.%1u        "
6805 +                                       "%3u(%3u)   %8llu    %8llu\n",
6806 +                                       tp / 10, tp % 10,
6807 +                                       eprob / 10, eprob % 10,
6808 +                                       prob / 10, prob % 10,
6809 +                                       mr->last_success,
6810 +                                       mr->last_attempts,
6811 +                                       (unsigned long long)mr->succ_hist,
6812 +                                       (unsigned long long)mr->att_hist);
6813 +               }
6814 +       }
6815 +       p += sprintf(p, "\nTotal packet count::    ideal %d      "
6816 +                       "lookaround %d\n",
6817 +                       max(0, (int) mi->total_packets - (int) mi->sample_packets),
6818 +                       mi->sample_packets);
6819 +       p += sprintf(p, "Average A-MPDU length: %d.%d\n",
6820 +               MINSTREL_TRUNC(mi->avg_ampdu_len),
6821 +               MINSTREL_TRUNC(mi->avg_ampdu_len * 10) % 10);
6822 +       ms->len = p - ms->buf;
6823 +
6824 +       return 0;
6825 +}
6826 +
6827 +static const struct file_operations minstrel_ht_stat_fops = {
6828 +       .owner = THIS_MODULE,
6829 +       .open = minstrel_ht_stats_open,
6830 +       .read = minstrel_stats_read,
6831 +       .release = minstrel_stats_release,
6832 +};
6833 +
6834 +void
6835 +minstrel_ht_add_sta_debugfs(void *priv, void *priv_sta, struct dentry *dir)
6836 +{
6837 +       struct minstrel_ht_sta_priv *msp = priv_sta;
6838 +
6839 +       msp->dbg_stats = debugfs_create_file("rc_stats", S_IRUGO, dir, msp,
6840 +                       &minstrel_ht_stat_fops);
6841 +}
6842 +
6843 +void
6844 +minstrel_ht_remove_sta_debugfs(void *priv, void *priv_sta)
6845 +{
6846 +       struct minstrel_ht_sta_priv *msp = priv_sta;
6847 +
6848 +       debugfs_remove(msp->dbg_stats);
6849 +}
6850 --- a/net/wireless/scan.c
6851 +++ b/net/wireless/scan.c
6852 @@ -525,7 +525,7 @@ cfg80211_inform_bss(struct wiphy *wiphy,
6853  
6854         privsz = wiphy->bss_priv_size;
6855  
6856 -       if (WARN_ON(wiphy->signal_type == NL80211_BSS_SIGNAL_UNSPEC &&
6857 +       if (WARN_ON(wiphy->signal_type == CFG80211_SIGNAL_TYPE_UNSPEC &&
6858                         (signal < 0 || signal > 100)))
6859                 return NULL;
6860  
6861 @@ -581,7 +581,7 @@ cfg80211_inform_bss_frame(struct wiphy *
6862                                       u.probe_resp.variable);
6863         size_t privsz = wiphy->bss_priv_size;
6864  
6865 -       if (WARN_ON(wiphy->signal_type == NL80211_BSS_SIGNAL_UNSPEC &&
6866 +       if (WARN_ON(wiphy->signal_type == CFG80211_SIGNAL_TYPE_UNSPEC &&
6867                     (signal < 0 || signal > 100)))
6868                 return NULL;
6869  
6870 --- a/net/wireless/chan.c
6871 +++ b/net/wireless/chan.c
6872 @@ -50,7 +50,7 @@ int cfg80211_set_freq(struct cfg80211_re
6873         struct ieee80211_channel *chan;
6874         int result;
6875  
6876 -       if (wdev->iftype == NL80211_IFTYPE_MONITOR)
6877 +       if (wdev && wdev->iftype == NL80211_IFTYPE_MONITOR)
6878                 wdev = NULL;
6879  
6880         if (wdev) {