xref: /openbsd/sys/dev/ic/ar9280reg.h (revision 9d1f2812)
1 /*	$OpenBSD: ar9280reg.h,v 1.8 2019/02/01 16:15:07 stsp Exp $	*/
2 
3 /*-
4  * Copyright (c) 2009 Damien Bergamini <damien.bergamini@free.fr>
5  * Copyright (c) 2008-2009 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 #define AR9280_MAX_CHAINS	2
21 
22 #define AR9280_PD_GAIN_BOUNDARY_DEFAULT	56
23 
24 #define AR9280_PHY_CCA_MIN_GOOD_VAL_2GHZ	(-127)
25 #define AR9280_PHY_CCA_MIN_GOOD_VAL_5GHZ	(-122)
26 #define AR9280_PHY_CCA_MAX_GOOD_VAL_2GHZ	(-97)
27 #define AR9280_PHY_CCA_MAX_GOOD_VAL_5GHZ	(-102)
28 
29 #define AR9280_PHY_SYNTH_CONTROL	0x9874
30 
31 /* Bits for AR9280_PHY_SYNTH_CONTROL. */
32 #define AR9280_BMODE		0x20000000
33 #define AR9280_FRACMODE		0x10000000
34 #define AR9280_AMODE_REFSEL_M	0x0c000000
35 #define AR9280_AMODE_REFSEL_S	26
36 
37 /*
38  * NB: The AR9280 uses the same ROM layout than the AR5416.
39  */
40 
41 /* Macro to "pack" registers to 16-bit to save some .rodata space. */
42 #define P(x)	(x)
43 
44 /*
45  * AR9280 2.0 initialization values.
46  */
47 static const uint16_t ar9280_2_0_regs[] = {
48 	P(0x01030), P(0x01070), P(0x010b0), P(0x010f0), P(0x08014),
49 	P(0x0801c), P(0x08120), P(0x081d0), P(0x08318), P(0x09804),
50 	P(0x09820), P(0x09824), P(0x09828), P(0x09834), P(0x09838),
51 	P(0x09840), P(0x09844), P(0x09850), P(0x09858), P(0x0985c),
52 	P(0x09860), P(0x09864), P(0x09868), P(0x0986c), P(0x09914),
53 	P(0x09918), P(0x09924), P(0x09944), P(0x09960), P(0x0a960),
54 	P(0x09964), P(0x0c968), P(0x099b8), P(0x099bc), P(0x099c0),
55 	P(0x0a204), P(0x0a20c), P(0x0b20c), P(0x0a21c), P(0x0a230),
56 	P(0x0a23c), P(0x0a250), P(0x0a358), P(0x0a388), P(0x0a3d8),
57 	P(0x07894)
58 };
59 
60 static const uint32_t ar9280_2_0_vals_5g20[] = {
61 	0x00000230, 0x00000168, 0x00000e60, 0x00000000, 0x03e803e8,
62 	0x128d8027, 0x08f04800, 0x00003210, 0x00003e80, 0x00000300,
63 	0x02020200, 0x01000e0e, 0x0a020001, 0x00000e0e, 0x00000007,
64 	0x206a022e, 0x0372161e, 0x6c4000e2, 0x7ec88d2e, 0x31395d5e,
65 	0x00048d18, 0x0001ce00, 0x5ac640d0, 0x06903081, 0x000007d0,
66 	0x0000000a, 0xd00a8a0b, 0xffbc1010, 0x00000010, 0x00000010,
67 	0x00000210, 0x000003b5, 0x0000001c, 0x00000a00, 0x05eea6d4,
68 	0x00000444, 0x00000014, 0x00000014, 0x1883800a, 0x00000000,
69 	0x13c88000, 0x001ff000, 0x7999aa02, 0x0c000000, 0x00000000,
70 	0x5a508000
71 };
72 
73 static const uint32_t ar9280_2_0_vals_5g40[] = {
74 	0x00000460, 0x000002d0, 0x00001cc0, 0x00000000, 0x07d007d0,
75 	0x128d804f, 0x08f04800, 0x00003210, 0x00007d00, 0x000003c4,
76 	0x02020200, 0x01000e0e, 0x0a020001, 0x00000e0e, 0x00000007,
77 	0x206a022e, 0x0372161e, 0x6d4000e2, 0x7ec88d2e, 0x3139605e,
78 	0x00048d18, 0x0001ce00, 0x5ac640d0, 0x06903081, 0x00000fa0,
79 	0x00000014, 0xd00a8a0b, 0xffbc1010, 0x00000010, 0x00000010,
80 	0x00000210, 0x000003b5, 0x0000001c, 0x00000a00, 0x05eea6d4,
81 	0x00000444, 0x00000014, 0x00000014, 0x1883800a, 0x00000000,
82 	0x13c88000, 0x001ff000, 0x7999aa02, 0x0c000000, 0x00000000,
83 	0x5a508000
84 };
85 
86 static const uint32_t ar9280_2_0_vals_2g40[] = {
87 	0x000002c0, 0x00000318, 0x00007c70, 0x00000000, 0x10801600,
88 	0x12e00057, 0x08f04810, 0x0000320a, 0x00006880, 0x000003c4,
89 	0x02020200, 0x01000e0e, 0x0a020001, 0x00000e0e, 0x00000007,
90 	0x206a012e, 0x037216a0, 0x6d4000e2, 0x7ec84d2e, 0x3139605e,
91 	0x00048d20, 0x0001ce00, 0x5ac640d0, 0x06903881, 0x00001130,
92 	0x00000268, 0xd00a8a0d, 0xffbc1010, 0x00000010, 0x00000010,
93 	0x00000210, 0x000003ce, 0x0000001c, 0x00000c00, 0x05eea6d4,
94 	0x00000444, 0x0001f019, 0x0001f019, 0x1883800a, 0x00000210,
95 	0x13c88001, 0x0004a000, 0x7999aa0e, 0x08000000, 0x00000000,
96 	0x5a508000
97 };
98 
99 static const uint32_t ar9280_2_0_vals_2g20[] = {
100 	0x00000160, 0x0000018c, 0x00003e38, 0x00000000, 0x08400b00,
101 	0x12e0002b, 0x08f04810, 0x0000320a, 0x00003440, 0x00000300,
102 	0x02020200, 0x01000e0e, 0x0a020001, 0x00000e0e, 0x00000007,
103 	0x206a012e, 0x037216a0, 0x6c4000e2, 0x7ec84d2e, 0x31395d5e,
104 	0x00048d20, 0x0001ce00, 0x5ac640d0, 0x06903881, 0x00000898,
105 	0x0000000b, 0xd00a8a0d, 0xffbc1010, 0x00000010, 0x00000010,
106 	0x00000210, 0x000003ce, 0x0000001c, 0x00000c00, 0x05eea6d4,
107 	0x00000444, 0x0001f019, 0x0001f019, 0x1883800a, 0x00000108,
108 	0x13c88000, 0x0004a000, 0x7999aa0e, 0x0c000000, 0x00000000,
109 	0x5a508000
110 };
111 
112 static const uint16_t ar9280_2_0_cm_regs[] = {
113 	P(0x0000c), P(0x00030), P(0x00034), P(0x00040), P(0x00044),
114 	P(0x00048), P(0x0004c), P(0x00050), P(0x00054), P(0x00800),
115 	P(0x00804), P(0x00808), P(0x0080c), P(0x00810), P(0x00814),
116 	P(0x00818), P(0x0081c), P(0x00820), P(0x00824), P(0x01040),
117 	P(0x01044), P(0x01048), P(0x0104c), P(0x01050), P(0x01054),
118 	P(0x01058), P(0x0105c), P(0x01060), P(0x01064), P(0x01230),
119 	P(0x01270), P(0x01038), P(0x01078), P(0x010b8), P(0x010f8),
120 	P(0x01138), P(0x01178), P(0x011b8), P(0x011f8), P(0x01238),
121 	P(0x01278), P(0x012b8), P(0x012f8), P(0x01338), P(0x01378),
122 	P(0x013b8), P(0x013f8), P(0x01438), P(0x01478), P(0x014b8),
123 	P(0x014f8), P(0x01538), P(0x01578), P(0x015b8), P(0x015f8),
124 	P(0x01638), P(0x01678), P(0x016b8), P(0x016f8), P(0x01738),
125 	P(0x01778), P(0x017b8), P(0x017f8), P(0x0103c), P(0x0107c),
126 	P(0x010bc), P(0x010fc), P(0x0113c), P(0x0117c), P(0x011bc),
127 	P(0x011fc), P(0x0123c), P(0x0127c), P(0x012bc), P(0x012fc),
128 	P(0x0133c), P(0x0137c), P(0x013bc), P(0x013fc), P(0x0143c),
129 	P(0x0147c), P(0x04030), P(0x0403c), P(0x04024), P(0x04060),
130 	P(0x04064), P(0x07010), P(0x07034), P(0x07038), P(0x08004),
131 	P(0x08008), P(0x0800c), P(0x08018), P(0x08020), P(0x08038),
132 	P(0x0803c), P(0x08048), P(0x08054), P(0x08058), P(0x0805c),
133 	P(0x08060), P(0x08064), P(0x08070), P(0x080c0), P(0x080c4),
134 	P(0x080c8), P(0x080cc), P(0x080d0), P(0x080d4), P(0x080d8),
135 	P(0x080e0), P(0x080e4), P(0x080e8), P(0x080ec), P(0x080f0),
136 	P(0x080f4), P(0x080f8), P(0x080fc), P(0x08100), P(0x08104),
137 	P(0x08108), P(0x0810c), P(0x08110), P(0x08118), P(0x0811c),
138 	P(0x08124), P(0x08128), P(0x0812c), P(0x08130), P(0x08134),
139 	P(0x08138), P(0x0813c), P(0x08144), P(0x08168), P(0x0816c),
140 	P(0x08170), P(0x08174), P(0x08178), P(0x0817c), P(0x081c0),
141 	P(0x081ec), P(0x081f0), P(0x081f4), P(0x081f8), P(0x081fc),
142 	P(0x08200), P(0x08204), P(0x08208), P(0x0820c), P(0x08210),
143 	P(0x08214), P(0x08218), P(0x0821c), P(0x08220), P(0x08224),
144 	P(0x08228), P(0x0822c), P(0x08230), P(0x08234), P(0x08238),
145 	P(0x0823c), P(0x08240), P(0x08244), P(0x08248), P(0x0824c),
146 	P(0x08250), P(0x08254), P(0x08258), P(0x0825c), P(0x08260),
147 	P(0x08264), P(0x08270), P(0x08274), P(0x08278), P(0x0827c),
148 	P(0x08284), P(0x08288), P(0x0828c), P(0x08294), P(0x08298),
149 	P(0x0829c), P(0x08300), P(0x08314), P(0x08328), P(0x0832c),
150 	P(0x08330), P(0x08334), P(0x08338), P(0x0833c), P(0x08340),
151 	P(0x08344), P(0x09808), P(0x0980c), P(0x09810), P(0x09814),
152 	P(0x0981c), P(0x0982c), P(0x09830), P(0x0983c), P(0x0984c),
153 	P(0x0a84c), P(0x09854), P(0x09900), P(0x09904), P(0x09908),
154 	P(0x0990c), P(0x09910), P(0x0991c), P(0x09920), P(0x0a920),
155 	P(0x09928), P(0x0992c), P(0x09934), P(0x09938), P(0x0993c),
156 	P(0x09948), P(0x0994c), P(0x09954), P(0x09958), P(0x09940),
157 	P(0x0c95c), P(0x09970), P(0x09974), P(0x09978), P(0x0997c),
158 	P(0x09980), P(0x09984), P(0x09988), P(0x0998c), P(0x09990),
159 	P(0x09994), P(0x09998), P(0x0999c), P(0x099a0), P(0x099a4),
160 	P(0x099a8), P(0x099ac), P(0x099b0), P(0x099b4), P(0x099c4),
161 	P(0x099c8), P(0x099cc), P(0x099d0), P(0x099d4), P(0x099d8),
162 	P(0x099dc), P(0x099e0), P(0x099e4), P(0x099e8), P(0x099ec),
163 	P(0x099f0), P(0x099fc), P(0x0a208), P(0x0a210), P(0x0a214),
164 	P(0x0a218), P(0x0a220), P(0x0a224), P(0x0a228), P(0x0a22c),
165 	P(0x0a234), P(0x0a238), P(0x0a240), P(0x0a244), P(0x0a248),
166 	P(0x0a24c), P(0x0a254), P(0x0a258), P(0x0a25c), P(0x0a260),
167 	P(0x0a268), P(0x0a26c), P(0x0b26c), P(0x0d270), P(0x0a278),
168 	P(0x0d35c), P(0x0d360), P(0x0d364), P(0x0d368), P(0x0d36c),
169 	P(0x0d370), P(0x0d374), P(0x0d378), P(0x0d37c), P(0x0d380),
170 	P(0x0d384), P(0x0a38c), P(0x0a390), P(0x0a394), P(0x0a398),
171 	P(0x0a39c), P(0x0a3a0), P(0x0a3a4), P(0x0a3a8), P(0x0a3ac),
172 	P(0x0a3b0), P(0x0a3b4), P(0x0a3b8), P(0x0a3bc), P(0x0a3c0),
173 	P(0x0a3c4), P(0x0a3c8), P(0x0a3cc), P(0x0a3d0), P(0x0a3d4),
174 	P(0x0a3dc), P(0x0a3e0), P(0x0a3e4), P(0x0a3e8), P(0x07800),
175 	P(0x07804), P(0x07808), P(0x0780c), P(0x07810), P(0x07818),
176 	P(0x07824), P(0x07828), P(0x0782c), P(0x07830), P(0x07834),
177 	P(0x0783c), P(0x07848), P(0x0784c), P(0x07850), P(0x07854),
178 	P(0x07858), P(0x07860), P(0x07864), P(0x07868), P(0x0786c),
179 	P(0x07870), P(0x07874), P(0x07878), P(0x0787c), P(0x07880),
180 	P(0x07884), P(0x07888), P(0x0788c), P(0x07890), P(0x07898)
181 };
182 
183 static const uint32_t ar9280_2_0_cm_vals[] = {
184 	0x00000000, 0x00020015, 0x00000005, 0x00000000, 0x00000008,
185 	0x00000008, 0x00000010, 0x00000000, 0x0000001f, 0x00000000,
186 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
187 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002ffc0f,
188 	0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f,
189 	0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x00000000,
190 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
191 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
192 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
193 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
194 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
195 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
196 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
197 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
198 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
199 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
200 	0x00000000, 0x00000002, 0x00000002, 0x0000001f, 0x00000000,
201 	0x00000000, 0x00000033, 0x00000002, 0x000004c2, 0x00000000,
202 	0x00000000, 0x00000000, 0x00000700, 0x00000000, 0x00000000,
203 	0x00000000, 0x40000000, 0x00000000, 0x00000000, 0x000fc78f,
204 	0x0000000f, 0x00000000, 0x00000000, 0x2a80001a, 0x05dc01e0,
205 	0x1f402710, 0x01f40000, 0x00001e00, 0x00000000, 0x00400000,
206 	0xffffffff, 0x0000ffff, 0x003f3f3f, 0x00000000, 0x00000000,
207 	0x00000000, 0x00000000, 0x00020000, 0x00020000, 0x00000001,
208 	0x00000052, 0x00000000, 0x00000168, 0x000100aa, 0x00003210,
209 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
210 	0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000000,
211 	0x32143320, 0xfaa4fa50, 0x00000100, 0x00000000, 0x00000000,
212 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
213 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
214 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
215 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
216 	0x00000000, 0x00100000, 0x0010f400, 0x00000100, 0x0001e800,
217 	0x00000000, 0x00000000, 0x00000000, 0x400000ff, 0x00080922,
218 	0x88a00010, 0x00000000, 0x40000000, 0x003e4180, 0x00000000,
219 	0x0000002c, 0x0000002c, 0x00000000, 0x00000000, 0x00000000,
220 	0x00000000, 0x00000040, 0x00000000, 0x00000000, 0x00000007,
221 	0x00000302, 0x00000e00, 0x00ff0000, 0x00000000, 0x000107ff,
222 	0x00481043, 0x00000000, 0xafa68e30, 0xfd14e000, 0x9c0a9f6b,
223 	0x00000000, 0x0000a000, 0x00000000, 0x00200400, 0x0040233c,
224 	0x0040233c, 0x00000044, 0x00000000, 0x00000000, 0x00000000,
225 	0x00000000, 0x01002310, 0x10000fff, 0x04900000, 0x04900000,
226 	0x00000001, 0x00000004, 0x1e1f2022, 0x0a0b0c0d, 0x00000000,
227 	0x9280c00a, 0x00020028, 0x5f3ca3de, 0x2108ecff, 0x14750604,
228 	0x004b6a8e, 0x190fb514, 0x00000000, 0x00000001, 0x00000000,
229 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
230 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001,
231 	0x201fff00, 0x006f0000, 0x03051000, 0x00000820, 0x06336f77,
232 	0x6af6532f, 0x08f186c8, 0x00046384, 0x00000000, 0x00000000,
233 	0x00000000, 0x00000000, 0xaaaaaaaa, 0x3c466478, 0x0cc80caa,
234 	0x00000000, 0x00001042, 0x803e4788, 0x4080a333, 0x40206c10,
235 	0x009c4060, 0x01834061, 0x00000400, 0x000003b5, 0x233f7180,
236 	0x20202020, 0x20202020, 0x38490a20, 0x00007bb6, 0x0fff3ffc,
237 	0x00000000, 0x00000000, 0x0cdbd380, 0x0f0f0f01, 0xdfa91f01,
238 	0x00000000, 0x0e79e5c6, 0x0e79e5c6, 0x00820820, 0x1ce739ce,
239 	0x07ffffef, 0x0fffffe7, 0x17ffffe5, 0x1fffffe4, 0x37ffffe3,
240 	0x3fffffe3, 0x57ffffe3, 0x5fffffe2, 0x7fffffe2, 0x7f3c7bba,
241 	0xf3307ff0, 0x20202020, 0x20202020, 0x1ce739ce, 0x000001ce,
242 	0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
243 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
244 	0x00000000, 0x00000246, 0x20202020, 0x20202020, 0x20202020,
245 	0x1ce739ce, 0x000001ce, 0x00000000, 0x18c43433, 0x00040000,
246 	0xdb005012, 0x04924914, 0x21084210, 0x6d801300, 0x07e41000,
247 	0x00040000, 0xdb005012, 0x04924914, 0x21084210, 0x6d801300,
248 	0x07e40000, 0x00100000, 0x773f0567, 0x54214514, 0x12035828,
249 	0x9259269a, 0x52802000, 0x0a8e370e, 0xc0102850, 0x812d4000,
250 	0x807ec400, 0x001b6db0, 0x00376b63, 0x06db6db6, 0x006d8000,
251 	0xffeffffe, 0xffeffffe, 0x00010000, 0x02060aeb, 0x2a850160
252 };
253 
254 static const uint16_t ar9280_2_0_fast_clock_regs[] = {
255 	P(0x01030), P(0x01070), P(0x010b0), P(0x08014), P(0x0801c),
256 	P(0x08318), P(0x09820), P(0x09824), P(0x09828), P(0x09834),
257 	P(0x09844), P(0x09914), P(0x09918)
258 };
259 
260 static const uint32_t ar9280_2_0_fast_clock_vals_5g20[] = {
261 	0x00000268, 0x0000018c, 0x00000fd0, 0x044c044c, 0x148ec02b,
262 	0x000044c0, 0x02020200, 0x01000f0f, 0x0b020001, 0x00000f0f,
263 	0x03721821, 0x00000898, 0x0000000b
264 };
265 
266 static const uint32_t ar9280_2_0_fast_clock_vals_5g40[] = {
267 	0x000004d0, 0x00000318, 0x00001fa0, 0x08980898, 0x148ec057,
268 	0x00008980, 0x02020200, 0x01000f0f, 0x0b020001, 0x00000f0f,
269 	0x03721821, 0x00001130, 0x00000016
270 };
271 
272 static const struct athn_ini ar9280_2_0_ini = {
273 	nitems(ar9280_2_0_regs),
274 	ar9280_2_0_regs,
275 	ar9280_2_0_vals_5g20,
276 	ar9280_2_0_vals_5g40,
277 	ar9280_2_0_vals_2g40,
278 	ar9280_2_0_vals_2g20,
279 	nitems(ar9280_2_0_cm_regs),
280 	ar9280_2_0_cm_regs,
281 	ar9280_2_0_cm_vals,
282 	nitems(ar9280_2_0_fast_clock_regs),
283 	ar9280_2_0_fast_clock_regs,
284 	ar9280_2_0_fast_clock_vals_5g20,
285 	ar9280_2_0_fast_clock_vals_5g40
286 };
287 
288 /*
289  * AR9280 2.0 Tx gains.
290  */
291 static const uint16_t ar9280_2_0_tx_gain_regs[] = {
292 	P(0x0a274), P(0x0a27c), P(0x0a300), P(0x0a304), P(0x0a308),
293 	P(0x0a30c), P(0x0a310), P(0x0a314), P(0x0a318), P(0x0a31c),
294 	P(0x0a320), P(0x0a324), P(0x0a328), P(0x0a32c), P(0x0a330),
295 	P(0x0a334), P(0x0a338), P(0x0a33c), P(0x0a340), P(0x0a344),
296 	P(0x0a348), P(0x0a34c), P(0x0a350), P(0x0a354), P(0x0a3ec),
297 	P(0x07814), P(0x07838), P(0x0781c), P(0x07840), P(0x07820),
298 	P(0x07844)
299 };
300 
301 static const uint32_t ar9280_2_0_tx_gain_vals_5g[] = {
302 	0x0a19c652, 0x050701ce, 0x00000000, 0x00003002, 0x00006004,
303 	0x0000a006, 0x0000e012, 0x00011014, 0x0001504a, 0x0001904c,
304 	0x0001c04e, 0x00020092, 0x0002410a, 0x0002710c, 0x0002b18b,
305 	0x0002e1cc, 0x000321ec, 0x000321ec, 0x000321ec, 0x000321ec,
306 	0x000321ec, 0x000321ec, 0x000321ec, 0x000321ec, 0x00f70081,
307 	0x0019beff, 0x0019beff, 0x00392000, 0x00392000, 0x92592480,
308 	0x92592480
309 };
310 
311 static const uint32_t ar9280_2_0_tx_gain_vals_2g[] = {
312 	0x0a1aa652, 0x050701ce, 0x00000000, 0x00003002, 0x00008009,
313 	0x0000b00b, 0x0000e012, 0x00012048, 0x0001604a, 0x0001a211,
314 	0x0001e213, 0x0002121b, 0x00024412, 0x00028414, 0x0002b44a,
315 	0x00030649, 0x0003364b, 0x00038a49, 0x0003be48, 0x0003ee4a,
316 	0x00042e88, 0x00046e8a, 0x00049ec9, 0x0004bf42, 0x00f70081,
317 	0x0019beff, 0x0019beff, 0x00392000, 0x00392000, 0x92592480,
318 	0x92592480
319 };
320 
321 static const struct athn_gain ar9280_2_0_tx_gain = {
322 	nitems(ar9280_2_0_tx_gain_regs),
323 	ar9280_2_0_tx_gain_regs,
324 	ar9280_2_0_tx_gain_vals_5g,
325 	ar9280_2_0_tx_gain_vals_2g
326 };
327 
328 static const uint32_t ar9280_2_0_tx_gain_high_power_vals_5g[] = {
329 	0x0a19e652, 0x050739ce, 0x00000000, 0x00003002, 0x00006004,
330 	0x0000a006, 0x0000e012, 0x00011014, 0x0001504a, 0x0001904c,
331 	0x0001c04e, 0x00021092, 0x0002510a, 0x0002910c, 0x0002c18b,
332 	0x0002f1cc, 0x000321eb, 0x000341ec, 0x000341ec, 0x000341ec,
333 	0x000341ec, 0x000341ec, 0x000341ec, 0x000341ec, 0x00f70081,
334 	0x00198eff, 0x00198eff, 0x00172000, 0x00172000, 0xf258a480,
335 	0xf258a480
336 };
337 
338 static const uint32_t ar9280_2_0_tx_gain_high_power_vals_2g[] = {
339 	0x0a1aa652, 0x050739ce, 0x00000000, 0x00004002, 0x00007008,
340 	0x0000c010, 0x00010012, 0x00013014, 0x0001820a, 0x0001b211,
341 	0x0001e213, 0x00022411, 0x00025413, 0x00029811, 0x0002c813,
342 	0x00030a14, 0x00035a50, 0x00039c4c, 0x0003de8a, 0x00042e92,
343 	0x00046ed2, 0x0004bed5, 0x0004ff54, 0x00055fd5, 0x00f70081,
344 	0x00198eff, 0x00198eff, 0x00172000, 0x00172000, 0xf258a480,
345 	0xf258a480
346 };
347 
348 static const struct athn_gain ar9280_2_0_tx_gain_high_power = {
349 	nitems(ar9280_2_0_tx_gain_regs),
350 	ar9280_2_0_tx_gain_regs,
351 	ar9280_2_0_tx_gain_high_power_vals_5g,
352 	ar9280_2_0_tx_gain_high_power_vals_2g
353 };
354 
355 /*
356  * AR9280 2.0 Rx gains.
357  */
358 static const uint16_t ar9280_2_0_rx_gain_regs[] = {
359 	P(0x09a00), P(0x09a04), P(0x09a08), P(0x09a0c), P(0x09a10),
360 	P(0x09a14), P(0x09a18), P(0x09a1c), P(0x09a20), P(0x09a24),
361 	P(0x09a28), P(0x09a2c), P(0x09a30), P(0x09a34), P(0x09a38),
362 	P(0x09a3c), P(0x09a40), P(0x09a44), P(0x09a48), P(0x09a4c),
363 	P(0x09a50), P(0x09a54), P(0x09a58), P(0x09a5c), P(0x09a60),
364 	P(0x09a64), P(0x09a68), P(0x09a6c), P(0x09a70), P(0x09a74),
365 	P(0x09a78), P(0x09a7c), P(0x09a80), P(0x09a84), P(0x09a88),
366 	P(0x09a8c), P(0x09a90), P(0x09a94), P(0x09a98), P(0x09a9c),
367 	P(0x09aa0), P(0x09aa4), P(0x09aa8), P(0x09aac), P(0x09ab0),
368 	P(0x09ab4), P(0x09ab8), P(0x09abc), P(0x09ac0), P(0x09ac4),
369 	P(0x09ac8), P(0x09acc), P(0x09ad0), P(0x09ad4), P(0x09ad8),
370 	P(0x09adc), P(0x09ae0), P(0x09ae4), P(0x09ae8), P(0x09aec),
371 	P(0x09af0), P(0x09af4), P(0x09af8), P(0x09afc), P(0x09b00),
372 	P(0x09b04), P(0x09b08), P(0x09b0c), P(0x09b10), P(0x09b14),
373 	P(0x09b18), P(0x09b1c), P(0x09b20), P(0x09b24), P(0x09b28),
374 	P(0x09b2c), P(0x09b30), P(0x09b34), P(0x09b38), P(0x09b3c),
375 	P(0x09b40), P(0x09b44), P(0x09b48), P(0x09b4c), P(0x09b50),
376 	P(0x09b54), P(0x09b58), P(0x09b5c), P(0x09b60), P(0x09b64),
377 	P(0x09b68), P(0x09b6c), P(0x09b70), P(0x09b74), P(0x09b78),
378 	P(0x09b7c), P(0x09b80), P(0x09b84), P(0x09b88), P(0x09b8c),
379 	P(0x09b90), P(0x09b94), P(0x09b98), P(0x09b9c), P(0x09ba0),
380 	P(0x09ba4), P(0x09ba8), P(0x09bac), P(0x09bb0), P(0x09bb4),
381 	P(0x09bb8), P(0x09bbc), P(0x09bc0), P(0x09bc4), P(0x09bc8),
382 	P(0x09bcc), P(0x09bd0), P(0x09bd4), P(0x09bd8), P(0x09bdc),
383 	P(0x09be0), P(0x09be4), P(0x09be8), P(0x09bec), P(0x09bf0),
384 	P(0x09bf4), P(0x09bf8), P(0x09bfc), P(0x09848), P(0x0a848)
385 };
386 
387 static const uint32_t ar9280_2_0_rx_gain_vals_5g[] = {
388 	0x00008184, 0x00008188, 0x0000818c, 0x00008190, 0x00008194,
389 	0x00008200, 0x00008204, 0x00008208, 0x0000820c, 0x00008210,
390 	0x00008214, 0x00008280, 0x00008284, 0x00008288, 0x0000828c,
391 	0x00008290, 0x00008300, 0x00008304, 0x00008308, 0x0000830c,
392 	0x00008310, 0x00008314, 0x00008380, 0x00008384, 0x00008388,
393 	0x0000838c, 0x00008390, 0x00008394, 0x0000a380, 0x0000a384,
394 	0x0000a388, 0x0000a38c, 0x0000a390, 0x0000a394, 0x0000a780,
395 	0x0000a784, 0x0000a788, 0x0000a78c, 0x0000a790, 0x0000a794,
396 	0x0000ab84, 0x0000ab88, 0x0000ab8c, 0x0000ab90, 0x0000ab94,
397 	0x0000af80, 0x0000af84, 0x0000af88, 0x0000af8c, 0x0000af90,
398 	0x0000af94, 0x0000b380, 0x0000b384, 0x0000b388, 0x0000b38c,
399 	0x0000b390, 0x0000b394, 0x0000b398, 0x0000b780, 0x0000b784,
400 	0x0000b788, 0x0000b78c, 0x0000b790, 0x0000b794, 0x0000b798,
401 	0x0000d784, 0x0000d788, 0x0000d78c, 0x0000d790, 0x0000f780,
402 	0x0000f784, 0x0000f788, 0x0000f78c, 0x0000f790, 0x0000f794,
403 	0x0000f7a4, 0x0000f7a8, 0x0000f7ac, 0x0000f7b0, 0x0000f7b4,
404 	0x0000f7a1, 0x0000f7a5, 0x0000f7a9, 0x0000f7ad, 0x0000f7b1,
405 	0x0000f7b5, 0x0000f7c5, 0x0000f7c9, 0x0000f7cd, 0x0000f7d1,
406 	0x0000f7d5, 0x0000f7c2, 0x0000f7c6, 0x0000f7ca, 0x0000f7ce,
407 	0x0000f7d2, 0x0000f7d6, 0x0000f7c3, 0x0000f7c7, 0x0000f7cb,
408 	0x0000f7d3, 0x0000f7d7, 0x0000f7db, 0x0000f7db, 0x0000f7db,
409 	0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db,
410 	0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db,
411 	0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db,
412 	0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db,
413 	0x0000f7db, 0x0000f7db, 0x0000f7db, 0x00001066, 0x00001066
414 };
415 
416 static const uint32_t ar9280_2_0_rx_gain_vals_2g[] = {
417 	0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00008000,
418 	0x00008000, 0x00008004, 0x00008008, 0x0000800c, 0x00008080,
419 	0x00008084, 0x00008088, 0x0000808c, 0x00008100, 0x00008104,
420 	0x00008108, 0x0000810c, 0x00008110, 0x00008114, 0x00008180,
421 	0x00008184, 0x00008188, 0x0000818c, 0x00008190, 0x00008194,
422 	0x000081a0, 0x0000820c, 0x000081a8, 0x00008284, 0x00008288,
423 	0x00008224, 0x00008290, 0x00008300, 0x00008304, 0x00008308,
424 	0x0000830c, 0x00008380, 0x00008384, 0x00008700, 0x00008704,
425 	0x00008708, 0x0000870c, 0x00008780, 0x00008784, 0x00008b00,
426 	0x00008b04, 0x00008b08, 0x00008b0c, 0x00008b80, 0x00008b84,
427 	0x00008b88, 0x00008b8c, 0x00008b90, 0x00008f80, 0x00008f84,
428 	0x00008f88, 0x00008f8c, 0x00008f90, 0x0000930c, 0x00009310,
429 	0x00009384, 0x00009388, 0x00009324, 0x00009704, 0x000096a4,
430 	0x000096a8, 0x00009710, 0x00009714, 0x00009720, 0x00009724,
431 	0x00009728, 0x0000972c, 0x000097a0, 0x000097a4, 0x000097a8,
432 	0x000097b0, 0x000097b4, 0x000097b8, 0x000097a5, 0x000097a9,
433 	0x000097ad, 0x000097b1, 0x000097b5, 0x000097b9, 0x000097c5,
434 	0x000097c9, 0x000097d1, 0x000097d5, 0x000097d9, 0x000097c6,
435 	0x000097ca, 0x000097ce, 0x000097d2, 0x000097d6, 0x000097c3,
436 	0x000097c7, 0x000097cb, 0x000097cf, 0x000097d7, 0x000097db,
437 	0x000097db, 0x000097db, 0x000097db, 0x000097db, 0x000097db,
438 	0x000097db, 0x000097db, 0x000097db, 0x000097db, 0x000097db,
439 	0x000097db, 0x000097db, 0x000097db, 0x000097db, 0x000097db,
440 	0x000097db, 0x000097db, 0x000097db, 0x000097db, 0x000097db,
441 	0x000097db, 0x000097db, 0x000097db, 0x000097db, 0x000097db,
442 	0x000097db, 0x000097db, 0x000097db, 0x00001063, 0x00001063
443 };
444 
445 static const struct athn_gain ar9280_2_0_rx_gain = {
446 	nitems(ar9280_2_0_rx_gain_regs),
447 	ar9280_2_0_rx_gain_regs,
448 	ar9280_2_0_rx_gain_vals_5g,
449 	ar9280_2_0_rx_gain_vals_2g
450 };
451 
452 static const uint32_t ar9280_2_0_rx_gain_13db_backoff_vals_5g[] = {
453 	0x00008184, 0x00008188, 0x0000818c, 0x00008190, 0x00008194,
454 	0x00008200, 0x00008204, 0x00008208, 0x0000820c, 0x00008210,
455 	0x00008214, 0x00008280, 0x00008284, 0x00008288, 0x0000828c,
456 	0x00008290, 0x00008300, 0x00008304, 0x00008308, 0x0000830c,
457 	0x00008310, 0x00008314, 0x00008380, 0x00008384, 0x00008388,
458 	0x0000838c, 0x00008390, 0x00008394, 0x0000a380, 0x0000a384,
459 	0x0000a388, 0x0000a38c, 0x0000a390, 0x0000a394, 0x0000a780,
460 	0x0000a784, 0x0000a788, 0x0000a78c, 0x0000a790, 0x0000a794,
461 	0x0000ab84, 0x0000ab88, 0x0000ab8c, 0x0000ab90, 0x0000ab94,
462 	0x0000af80, 0x0000af84, 0x0000af88, 0x0000af8c, 0x0000af90,
463 	0x0000af94, 0x0000b380, 0x0000b384, 0x0000b388, 0x0000b38c,
464 	0x0000b390, 0x0000b394, 0x0000b398, 0x0000b780, 0x0000b784,
465 	0x0000b788, 0x0000b78c, 0x0000b790, 0x0000b794, 0x0000b798,
466 	0x0000d784, 0x0000d788, 0x0000d78c, 0x0000d790, 0x0000f780,
467 	0x0000f784, 0x0000f788, 0x0000f78c, 0x0000f790, 0x0000f794,
468 	0x0000f7a4, 0x0000f7a8, 0x0000f7ac, 0x0000f7b0, 0x0000f7b4,
469 	0x0000f7a1, 0x0000f7a5, 0x0000f7a9, 0x0000f7ad, 0x0000f7b1,
470 	0x0000f7b5, 0x0000f7c5, 0x0000f7c9, 0x0000f7cd, 0x0000f7d1,
471 	0x0000f7d5, 0x0000f7c2, 0x0000f7c6, 0x0000f7ca, 0x0000f7ce,
472 	0x0000f7d2, 0x0000f7d6, 0x0000f7c3, 0x0000f7c7, 0x0000f7cb,
473 	0x0000f7d3, 0x0000f7d7, 0x0000f7db, 0x0000f7db, 0x0000f7db,
474 	0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db,
475 	0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db,
476 	0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db,
477 	0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db,
478 	0x0000f7db, 0x0000f7db, 0x0000f7db, 0x00001066, 0x00001066
479 };
480 
481 static const uint32_t ar9280_2_0_rx_gain_13db_backoff_vals_2g[] = {
482 	0x00000290, 0x00000300, 0x00000304, 0x00000308, 0x0000030c,
483 	0x00008000, 0x00008004, 0x00008008, 0x0000800c, 0x00008080,
484 	0x00008084, 0x00008088, 0x0000808c, 0x00008100, 0x00008104,
485 	0x00008108, 0x0000810c, 0x00008110, 0x00008114, 0x00008180,
486 	0x00008184, 0x00008188, 0x0000818c, 0x00008190, 0x00008194,
487 	0x000081a0, 0x0000820c, 0x000081a8, 0x00008284, 0x00008288,
488 	0x00008224, 0x00008290, 0x00008300, 0x00008304, 0x00008308,
489 	0x0000830c, 0x00008380, 0x00008384, 0x00008700, 0x00008704,
490 	0x00008708, 0x0000870c, 0x00008780, 0x00008784, 0x00008b00,
491 	0x00008b04, 0x00008b08, 0x00008b0c, 0x00008b80, 0x00008b84,
492 	0x00008b88, 0x00008b8c, 0x00008b90, 0x00008f80, 0x00008f84,
493 	0x00008f88, 0x00008f8c, 0x00008f90, 0x00009310, 0x00009314,
494 	0x00009320, 0x00009324, 0x00009328, 0x0000932c, 0x00009330,
495 	0x00009334, 0x00009321, 0x00009325, 0x00009329, 0x0000932d,
496 	0x00009331, 0x00009335, 0x00009322, 0x00009326, 0x0000932a,
497 	0x0000932e, 0x00009332, 0x00009336, 0x00009323, 0x00009327,
498 	0x0000932b, 0x0000932f, 0x00009333, 0x00009337, 0x00009343,
499 	0x00009347, 0x0000934b, 0x0000934f, 0x00009353, 0x00009357,
500 	0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b,
501 	0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b,
502 	0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b,
503 	0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b,
504 	0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b,
505 	0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b,
506 	0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b,
507 	0x0000935b, 0x0000935b, 0x0000935b, 0x0000105a, 0x0000105a
508 };
509 
510 static const struct athn_gain ar9280_2_0_rx_gain_13db_backoff = {
511 	nitems(ar9280_2_0_rx_gain_regs),
512 	ar9280_2_0_rx_gain_regs,
513 	ar9280_2_0_rx_gain_13db_backoff_vals_5g,
514 	ar9280_2_0_rx_gain_13db_backoff_vals_2g
515 };
516 
517 static const uint32_t ar9280_2_0_rx_gain_23db_backoff_vals_5g[] = {
518 	0x00008184, 0x00008188, 0x0000818c, 0x00008190, 0x00008194,
519 	0x00008200, 0x00008204, 0x00008208, 0x0000820c, 0x00008210,
520 	0x00008214, 0x00008280, 0x00008284, 0x00008288, 0x0000828c,
521 	0x00008290, 0x00008300, 0x00008304, 0x00008308, 0x0000830c,
522 	0x00008310, 0x00008314, 0x00008380, 0x00008384, 0x00008388,
523 	0x0000838c, 0x00008390, 0x00008394, 0x0000a380, 0x0000a384,
524 	0x0000a388, 0x0000a38c, 0x0000a390, 0x0000a394, 0x0000a780,
525 	0x0000a784, 0x0000a788, 0x0000a78c, 0x0000a790, 0x0000a794,
526 	0x0000ab84, 0x0000ab88, 0x0000ab8c, 0x0000ab90, 0x0000ab94,
527 	0x0000af80, 0x0000af84, 0x0000af88, 0x0000af8c, 0x0000af90,
528 	0x0000af94, 0x0000b380, 0x0000b384, 0x0000b388, 0x0000b38c,
529 	0x0000b390, 0x0000b394, 0x0000b398, 0x0000b780, 0x0000b784,
530 	0x0000b788, 0x0000b78c, 0x0000b790, 0x0000b794, 0x0000b798,
531 	0x0000d784, 0x0000d788, 0x0000d78c, 0x0000d790, 0x0000f780,
532 	0x0000f784, 0x0000f788, 0x0000f78c, 0x0000f790, 0x0000f794,
533 	0x0000f7a4, 0x0000f7a8, 0x0000f7ac, 0x0000f7b0, 0x0000f7b4,
534 	0x0000f7a1, 0x0000f7a5, 0x0000f7a9, 0x0000f7ad, 0x0000f7b1,
535 	0x0000f7b5, 0x0000f7c5, 0x0000f7c9, 0x0000f7cd, 0x0000f7d1,
536 	0x0000f7d5, 0x0000f7c2, 0x0000f7c6, 0x0000f7ca, 0x0000f7ce,
537 	0x0000f7d2, 0x0000f7d6, 0x0000f7c3, 0x0000f7c7, 0x0000f7cb,
538 	0x0000f7d3, 0x0000f7d7, 0x0000f7db, 0x0000f7db, 0x0000f7db,
539 	0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db,
540 	0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db,
541 	0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db,
542 	0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db,
543 	0x0000f7db, 0x0000f7db, 0x0000f7db, 0x00001066, 0x00001066
544 };
545 
546 static const uint32_t ar9280_2_0_rx_gain_23db_backoff_vals_2g[] = {
547 	0x00000290, 0x00000300, 0x00000304, 0x00000308, 0x0000030c,
548 	0x00008000, 0x00008004, 0x00008008, 0x0000800c, 0x00008080,
549 	0x00008084, 0x00008088, 0x0000808c, 0x00008100, 0x00008104,
550 	0x00008108, 0x0000810c, 0x00008110, 0x00008114, 0x00008180,
551 	0x00008184, 0x00008188, 0x0000818c, 0x00008190, 0x00008194,
552 	0x000081a0, 0x0000820c, 0x000081a8, 0x00008284, 0x00008288,
553 	0x00008224, 0x00008290, 0x00008300, 0x00008304, 0x00008308,
554 	0x0000830c, 0x00008380, 0x00008384, 0x00008700, 0x00008704,
555 	0x00008708, 0x0000870c, 0x00008780, 0x00008784, 0x00008b00,
556 	0x00008b04, 0x00008b08, 0x00008b0c, 0x00008b10, 0x00008b80,
557 	0x00008b84, 0x00008b88, 0x00008b8c, 0x00008b90, 0x00008b94,
558 	0x00008b98, 0x00008ba4, 0x00008ba8, 0x00008bac, 0x00008bb0,
559 	0x00008bb4, 0x00008ba1, 0x00008ba5, 0x00008ba9, 0x00008bad,
560 	0x00008bb1, 0x00008bb5, 0x00008ba2, 0x00008ba6, 0x00008baa,
561 	0x00008bae, 0x00008bb2, 0x00008bb6, 0x00008ba3, 0x00008ba7,
562 	0x00008bab, 0x00008baf, 0x00008bb3, 0x00008bb7, 0x00008bc3,
563 	0x00008bc7, 0x00008bcb, 0x00008bcf, 0x00008bd3, 0x00008bd7,
564 	0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb,
565 	0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb,
566 	0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb,
567 	0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb,
568 	0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb,
569 	0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb,
570 	0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb,
571 	0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb,
572 	0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00001055, 0x00001055
573 };
574 
575 static const struct athn_gain ar9280_2_0_rx_gain_23db_backoff = {
576 	nitems(ar9280_2_0_rx_gain_regs),
577 	ar9280_2_0_rx_gain_regs,
578 	ar9280_2_0_rx_gain_23db_backoff_vals_5g,
579 	ar9280_2_0_rx_gain_23db_backoff_vals_2g
580 };
581 
582 /*
583  * Serializer/Deserializer programming.
584  */
585 
586 static const uint32_t ar9280_2_0_serdes_regs[] = {
587 	AR_PCIE_SERDES,
588 	AR_PCIE_SERDES,
589 	AR_PCIE_SERDES,
590 	AR_PCIE_SERDES,
591 	AR_PCIE_SERDES,
592 	AR_PCIE_SERDES,
593 	AR_PCIE_SERDES,
594 	AR_PCIE_SERDES,
595 	AR_PCIE_SERDES,
596 	AR_PCIE_SERDES2,
597 };
598 
599 static const uint32_t ar9280_2_0_serdes_vals[] = {
600 	0x9248fd00,
601 	0x24924924,
602 	0xa8000019,
603 	0x13160820,
604 	0xe5980560,
605 #ifdef ATHN_PCIE_CLKREQ
606 	0xc01dcffc,
607 #else
608 	0xc01dcffd,
609 #endif
610 	0x1aaabe41,
611 	0xbe105554,
612 	0x00043007,
613 	0x00000000
614 };
615 
616 static const struct athn_serdes ar9280_2_0_serdes = {
617 	nitems(ar9280_2_0_serdes_vals),
618 	ar9280_2_0_serdes_regs,
619 	ar9280_2_0_serdes_vals
620 };
621