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