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