mac80211: update to wireless-testing 2010-05-12 plus some pending patches
[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) {
This page took 0.418714 seconds and 5 git commands to generate.