1/*	$OpenBSD: ar9285reg.h,v 1.9 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 AR9285_MAX_CHAINS	1
21
22#define AR9285_PHY_CCA_MIN_GOOD_VAL_2GHZ	(-127)
23#define AR9285_PHY_CCA_MAX_GOOD_VAL_2GHZ	(-108)
24#define AR9271_PHY_CCA_MIN_GOOD_VAL_2GHZ	(-127)
25#define AR9271_PHY_CCA_MAX_GOOD_VAL_2GHZ	(-116)
26
27#define AR9285_CL_CAL_REDO_THRESH	1
28
29/*
30 * Analog registers.
31 */
32#define AR9285_AN_RF2G1			0x7820
33#define AR9285_AN_RF2G2			0x7824
34#define AR9285_AN_RF2G3			0x7828
35#define AR9285_AN_RF2G4			0x782c
36#define AR9285_AN_RF2G5			0x7830
37#define AR9285_AN_RF2G6			0x7834
38#define AR9285_AN_RF2G7			0x7838
39#define AR9285_AN_RF2G8			0x783c
40#define AR9285_AN_RF2G9			0x7840
41#define AR9285_AN_RXTXBB1		0x7854
42#define AR9285_AN_TOP2			0x7868
43#define AR9285_AN_TOP3			0x786c
44#define AR9285_AN_TOP4			0x7870
45
46/* Bits for AR9285_AN_RF2G1. */
47#define AR9285_AN_RF2G1_ENPACAL		0x00000800
48#define AR9285_AN_RF2G1_PDPAOUT		0x00800000
49#define AR9285_AN_RF2G1_PDPADRV2	0x01000000
50#define AR9285_AN_RF2G1_PDPADRV1	0x02000000
51
52/* Bits for AR9285_AN_RF2G2. */
53#define AR9285_AN_RF2G2_OFFCAL	0x00001000
54
55/* Bits for AR9285_AN_RF2G3. */
56#define AR9285_AN_RF2G3_DB1_2_M		0x00000007
57#define AR9285_AN_RF2G3_DB1_2_S		0
58#define AR9285_AN_RF2G3_DB1_1_M		0x00000038
59#define AR9285_AN_RF2G3_DB1_1_S		3
60#define AR9285_AN_RF2G3_DB1_0_M		0x000001c0
61#define AR9285_AN_RF2G3_DB1_0_S		6
62#define AR9285_AN_RF2G3_OB_4_M		0x00000e00
63#define AR9285_AN_RF2G3_OB_4_S		9
64#define AR9285_AN_RF2G3_OB_3_M		0x00007000
65#define AR9285_AN_RF2G3_OB_3_S		12
66#define AR9285_AN_RF2G3_OB_2_M		0x00038000
67#define AR9285_AN_RF2G3_OB_2_S		15
68#define AR9285_AN_RF2G3_OB_1_M		0x001c0000
69#define AR9285_AN_RF2G3_OB_1_S		18
70#define AR9285_AN_RF2G3_OB_0_M		0x00e00000
71#define AR9285_AN_RF2G3_OB_0_S		21
72#define AR9285_AN_RF2G3_PDVCCOMP	0x02000000
73#define AR9271_AN_RF2G3_CCOMP_M		0x00000fff
74#define AR9271_AN_RF2G3_CCOMP_S		0
75#define AR9271_AN_RF2G3_OB_QAM_M	0x00007000
76#define AR9271_AN_RF2G3_OB_QAM_S	12
77#define AR9271_AN_RF2G3_OB_PSK_M	0x00038000
78#define AR9271_AN_RF2G3_OB_PSK_S	15
79#define AR9271_AN_RF2G3_OB_CCK_M	0x001c0000
80#define AR9271_AN_RF2G3_OB_CCK_S	18
81#define AR9271_AN_RF2G3_DB1_M		0x00e00000
82#define AR9271_AN_RF2G3_DB1_S		21
83
84/* Bits for AR9285_AN_RF2G4. */
85#define AR9285_AN_RF2G4_DB2_4_M		0x00003800
86#define AR9285_AN_RF2G4_DB2_4_S		11
87#define AR9285_AN_RF2G4_DB2_3_M		0x0001c000
88#define AR9285_AN_RF2G4_DB2_3_S		14
89#define AR9285_AN_RF2G4_DB2_2_M		0x000e0000
90#define AR9285_AN_RF2G4_DB2_2_S		17
91#define AR9285_AN_RF2G4_DB2_1_M		0x00700000
92#define AR9285_AN_RF2G4_DB2_1_S		20
93#define AR9285_AN_RF2G4_DB2_0_M		0x03800000
94#define AR9285_AN_RF2G4_DB2_0_S		23
95#define AR9285_AN_RF2G4_DB1_4_M		0x1c000000
96#define AR9285_AN_RF2G4_DB1_4_S		26
97#define AR9285_AN_RF2G4_DB1_3_M		0xe0000000
98#define AR9285_AN_RF2G4_DB1_3_S		29
99#define AR9271_AN_RF2G4_DB2_M		0xe0000000
100#define AR9271_AN_RF2G4_DB2_S		29
101
102/* Bits for AR9285_AN_RF2G5. */
103#define AR9285_AN_RF2G5_IC50TX_M	0x00000700
104#define AR9285_AN_RF2G5_IC50TX_S	8
105
106/* Bits for AR9285_AN_RF2G6. */
107#define AR9285_AN_RF2G6_CCOMP_M		0x00007800
108#define AR9285_AN_RF2G6_CCOMP_S		11
109#define AR9285_AN_RF2G6_OFFS_6_1	0x03f00000
110#define AR9285_AN_RF2G6_OFFS(i)		(1 << (19 + (i)))
111#define AR9271_AN_RF2G6_OFFS_6_0	0x07f00000
112#define AR9271_AN_RF2G6_OFFS(i)		(1 << (20 + (i)))
113
114/* Bits for AR9285_AN_RF2G7. */
115#define AR9285_AN_RF2G7_PWDDB		0x00000002
116#define AR9285_AN_RF2G7_PADRVGN2TAB0_M	0xe0000000
117#define AR9285_AN_RF2G7_PADRVGN2TAB0_S	29
118
119/* Bits for AR9285_AN_RF2G8. */
120#define AR9285_AN_RF2G8_PADRVGN2TAB0_M	0x0001c000
121#define AR9285_AN_RF2G8_PADRVGN2TAB0_S	14
122
123/* Bits for AR9285_AN_RXTXBB1. */
124#define AR9285_AN_RXTXBB1_SPARE9	0x00000001
125#define AR9285_AN_RXTXBB1_PDRXTXBB1	0x00000020
126#define AR9285_AN_RXTXBB1_PDV2I		0x00000080
127#define AR9285_AN_RXTXBB1_PDDACIF	0x00000100
128
129/* Bits for AR9285_AN_TOP2. */
130#define AR9285_AN_TOP2_DEFAULT		0xca0358a0	/* XXX magic */
131
132/* Bits for AR9285_AN_TOP3. */
133#define AR9285_AN_TOP3_XPABIAS_LVL_M	0x0000000c
134#define AR9285_AN_TOP3_XPABIAS_LVL_S	2
135#define AR9285_AN_TOP3_PWDDAC		0x00800000
136
137/* Bits for AR9285_AN_TOP4. */
138#define AR9285_AN_TOP4_DEFAULT		0x10142c00	/* XXX magic */
139#define AR9285_AN_TOP4_UNLOCKED		0x10142c14	/* XXX magic */
140
141/* Bits for AR_PHY_MULTICHAIN_GAIN_CTL. */
142#define AR9285_PHY_ANT_DIV_CTL_ALL_M		0x7f000000
143#define AR9285_PHY_ANT_DIV_CTL_ALL_S		24
144#define AR9285_PHY_ANT_DIV_CTL_M		0x01000000
145#define AR9285_PHY_ANT_DIV_CTL_S		24
146#define AR9285_PHY_ANT_DIV_ALT_LNACONF_M	0x06000000
147#define AR9285_PHY_ANT_DIV_ALT_LNACONF_S	25
148#define AR9285_PHY_ANT_DIV_MAIN_LNACONF_M	0x18000000
149#define AR9285_PHY_ANT_DIV_MAIN_LNACONF_S	27
150#define AR9285_PHY_ANT_DIV_ALT_GAINTB_M		0x20000000
151#define AR9285_PHY_ANT_DIV_ALT_GAINTB_S		29
152#define AR9285_PHY_ANT_DIV_MAIN_GAINTB_M	0x40000000
153#define AR9285_PHY_ANT_DIV_MAIN_GAINTB_S	30
154
155/*
156 * ROM layout used by AR9285 (single-stream, 2GHz only).
157 */
158#define AR9285_EEP_START_LOC		64
159#define AR9285_NUM_2G_CAL_PIERS		3
160#define AR9285_NUM_2G_CCK_TARGET_POWERS	3
161#define AR9285_NUM_2G_20_TARGET_POWERS	3
162#define AR9285_NUM_2G_40_TARGET_POWERS	3
163#define AR9285_NUM_CTLS			12
164#define AR9285_NUM_BAND_EDGES		4
165#define AR9285_NUM_PD_GAINS		2
166#define AR9285_PD_GAINS_IN_MASK		4
167#define AR9285_PD_GAIN_ICEPTS		5
168
169struct ar9285_base_eep_header {
170	uint16_t	length;
171	uint16_t	checksum;
172	uint16_t	version;
173	uint8_t		opCapFlags;
174	uint8_t		eepMisc;
175	uint16_t	regDmn[2];
176	uint8_t		macAddr[6];
177	uint8_t		rxMask;
178	uint8_t		txMask;
179	uint16_t	rfSilent;
180	uint16_t	blueToothOptions;
181	uint16_t	deviceCap;
182	uint32_t	binBuildNumber;
183	uint8_t		deviceType;
184	/* End of common header. */
185	uint8_t		txGainType;
186} __packed;
187
188struct ar9285_modal_eep_header {
189	uint32_t	antCtrlChain;
190	uint32_t	antCtrlCommon;
191	uint8_t		antennaGain;
192	uint8_t		switchSettling;
193	uint8_t		txRxAtten;
194	uint8_t		rxTxMargin;
195	uint8_t		adcDesiredSize;
196	uint8_t		pgaDesiredSize;
197	uint8_t		xlnaGain;
198	uint8_t		txEndToXpaOff;
199	uint8_t		txEndToRxOn;
200	uint8_t		txFrameToXpaOn;
201	uint8_t		thresh62;
202	uint8_t		noiseFloorThresh;
203	uint8_t		xpdGain;
204	uint8_t		xpd;
205	uint8_t		iqCalI;
206	uint8_t		iqCalQ;
207	uint8_t		pdGainOverlap;
208	uint8_t		ob_01;
209	uint8_t		db1_01;
210	uint8_t		xpaBiasLvl;
211	uint8_t		txFrameToDataStart;
212	uint8_t		txFrameToPaOn;
213	uint8_t		ht40PowerIncForPdadc;
214	uint8_t		bswAtten;
215	uint8_t		bswMargin;
216	uint8_t		swSettleHt40;
217	uint8_t		xatten2Db;
218	uint8_t		xatten2Margin;
219	uint8_t		db2_01;
220	uint8_t		version;
221	uint16_t	ob_234;
222	uint16_t	db1_234;
223	uint16_t	db2_234;
224	uint8_t		futureModal[4];
225	struct		ar_spur_chan spurChans[AR_EEPROM_MODAL_SPURS];
226} __packed;
227
228struct ar9285_cal_data_per_freq {
229	uint8_t	pwrPdg[AR9285_NUM_PD_GAINS][AR9285_PD_GAIN_ICEPTS];
230	uint8_t	vpdPdg[AR9285_NUM_PD_GAINS][AR9285_PD_GAIN_ICEPTS];
231} __packed;
232
233struct ar9285_cal_ctl_data {
234	struct ar_cal_ctl_edges	ctlEdges[AR9285_NUM_BAND_EDGES];
235} __packed;
236
237struct ar9285_eeprom {
238	struct	ar9285_base_eep_header baseEepHeader;
239	uint8_t	custData[20];
240	struct	ar9285_modal_eep_header modalHeader;
241	uint8_t	calFreqPier2G[AR9285_NUM_2G_CAL_PIERS];
242	struct	ar9285_cal_data_per_freq
243	    calPierData2G[AR9285_NUM_2G_CAL_PIERS];
244	struct	ar_cal_target_power_leg
245	    calTargetPowerCck[AR9285_NUM_2G_CCK_TARGET_POWERS];
246	struct	ar_cal_target_power_leg
247	    calTargetPower2G[AR9285_NUM_2G_20_TARGET_POWERS];
248	struct	ar_cal_target_power_ht
249	    calTargetPower2GHT20[AR9285_NUM_2G_20_TARGET_POWERS];
250	struct	ar_cal_target_power_ht
251	    calTargetPower2GHT40[AR9285_NUM_2G_40_TARGET_POWERS];
252	uint8_t	ctlIndex[AR9285_NUM_CTLS];
253	struct	ar9285_cal_ctl_data ctlData[AR9285_NUM_CTLS];
254	uint8_t	padding;
255} __packed;
256
257/* Macro to "pack" registers to 16-bit to save some .rodata space. */
258#define P(x)	(x)
259
260/*
261 * AR9285 1.2 initialization values.
262 */
263static const uint16_t ar9285_1_2_regs[] = {
264	P(0x01030), P(0x01070), P(0x010b0), P(0x010f0), P(0x08014),
265	P(0x0801c), P(0x08318), P(0x09804), P(0x09820), P(0x09824),
266	P(0x09828), P(0x09834), P(0x09838), P(0x09840), P(0x09844),
267	P(0x09848), P(0x0a848), P(0x09850), P(0x09858), P(0x0985c),
268	P(0x09860), P(0x09864), P(0x09868), P(0x0986c), P(0x09914),
269	P(0x09918), P(0x09924), P(0x09944), P(0x09960), P(0x09964),
270	P(0x099b8), P(0x099bc), P(0x099c0), P(0x099c4), P(0x099c8),
271	P(0x099cc), P(0x099d0), P(0x099d4), P(0x099d8), P(0x09a00),
272	P(0x09a04), P(0x09a08), P(0x09a0c), P(0x09a10), P(0x09a14),
273	P(0x09a18), P(0x09a1c), P(0x09a20), P(0x09a24), P(0x09a28),
274	P(0x09a2c), P(0x09a30), P(0x09a34), P(0x09a38), P(0x09a3c),
275	P(0x09a40), P(0x09a44), P(0x09a48), P(0x09a4c), P(0x09a50),
276	P(0x09a54), P(0x09a58), P(0x09a5c), P(0x09a60), P(0x09a64),
277	P(0x09a68), P(0x09a6c), P(0x09a70), P(0x09a74), P(0x09a78),
278	P(0x09a7c), P(0x09a80), P(0x09a84), P(0x09a88), P(0x09a8c),
279	P(0x09a90), P(0x09a94), P(0x09a98), P(0x09a9c), P(0x09aa0),
280	P(0x09aa4), P(0x09aa8), P(0x09aac), P(0x09ab0), P(0x09ab4),
281	P(0x09ab8), P(0x09abc), P(0x09ac0), P(0x09ac4), P(0x09ac8),
282	P(0x09acc), P(0x09ad0), P(0x09ad4), P(0x09ad8), P(0x09adc),
283	P(0x09ae0), P(0x09ae4), P(0x09ae8), P(0x09aec), P(0x09af0),
284	P(0x09af4), P(0x09af8), P(0x09afc), P(0x09b00), P(0x09b04),
285	P(0x09b08), P(0x09b0c), P(0x09b10), P(0x09b14), P(0x09b18),
286	P(0x09b1c), P(0x09b20), P(0x09b24), P(0x09b28), P(0x09b2c),
287	P(0x09b30), P(0x09b34), P(0x09b38), P(0x09b3c), P(0x09b40),
288	P(0x09b44), P(0x09b48), P(0x09b4c), P(0x09b50), P(0x09b54),
289	P(0x09b58), P(0x09b5c), P(0x09b60), P(0x09b64), P(0x09b68),
290	P(0x09b6c), P(0x09b70), P(0x09b74), P(0x09b78), P(0x09b7c),
291	P(0x09b80), P(0x09b84), P(0x09b88), P(0x09b8c), P(0x09b90),
292	P(0x09b94), P(0x09b98), P(0x09b9c), P(0x09ba0), P(0x09ba4),
293	P(0x09ba8), P(0x09bac), P(0x09bb0), P(0x09bb4), P(0x09bb8),
294	P(0x09bbc), P(0x09bc0), P(0x09bc4), P(0x09bc8), P(0x09bcc),
295	P(0x09bd0), P(0x09bd4), P(0x09bd8), P(0x09bdc), P(0x09be0),
296	P(0x09be4), P(0x09be8), P(0x09bec), P(0x09bf0), P(0x09bf4),
297	P(0x09bf8), P(0x09bfc), P(0x0aa00), P(0x0aa04), P(0x0aa08),
298	P(0x0aa0c), P(0x0aa10), P(0x0aa14), P(0x0aa18), P(0x0aa1c),
299	P(0x0aa20), P(0x0aa24), P(0x0aa28), P(0x0aa2c), P(0x0aa30),
300	P(0x0aa34), P(0x0aa38), P(0x0aa3c), P(0x0aa40), P(0x0aa44),
301	P(0x0aa48), P(0x0aa4c), P(0x0aa50), P(0x0aa54), P(0x0aa58),
302	P(0x0aa5c), P(0x0aa60), P(0x0aa64), P(0x0aa68), P(0x0aa6c),
303	P(0x0aa70), P(0x0aa74), P(0x0aa78), P(0x0aa7c), P(0x0aa80),
304	P(0x0aa84), P(0x0aa88), P(0x0aa8c), P(0x0aa90), P(0x0aa94),
305	P(0x0aa98), P(0x0aa9c), P(0x0aaa0), P(0x0aaa4), P(0x0aaa8),
306	P(0x0aaac), P(0x0aab0), P(0x0aab4), P(0x0aab8), P(0x0aabc),
307	P(0x0aac0), P(0x0aac4), P(0x0aac8), P(0x0aacc), P(0x0aad0),
308	P(0x0aad4), P(0x0aad8), P(0x0aadc), P(0x0aae0), P(0x0aae4),
309	P(0x0aae8), P(0x0aaec), P(0x0aaf0), P(0x0aaf4), P(0x0aaf8),
310	P(0x0aafc), P(0x0ab00), P(0x0ab04), P(0x0ab08), P(0x0ab0c),
311	P(0x0ab10), P(0x0ab14), P(0x0ab18), P(0x0ab1c), P(0x0ab20),
312	P(0x0ab24), P(0x0ab28), P(0x0ab2c), P(0x0ab30), P(0x0ab34),
313	P(0x0ab38), P(0x0ab3c), P(0x0ab40), P(0x0ab44), P(0x0ab48),
314	P(0x0ab4c), P(0x0ab50), P(0x0ab54), P(0x0ab58), P(0x0ab5c),
315	P(0x0ab60), P(0x0ab64), P(0x0ab68), P(0x0ab6c), P(0x0ab70),
316	P(0x0ab74), P(0x0ab78), P(0x0ab7c), P(0x0ab80), P(0x0ab84),
317	P(0x0ab88), P(0x0ab8c), P(0x0ab90), P(0x0ab94), P(0x0ab98),
318	P(0x0ab9c), P(0x0aba0), P(0x0aba4), P(0x0aba8), P(0x0abac),
319	P(0x0abb0), P(0x0abb4), P(0x0abb8), P(0x0abbc), P(0x0abc0),
320	P(0x0abc4), P(0x0abc8), P(0x0abcc), P(0x0abd0), P(0x0abd4),
321	P(0x0abd8), P(0x0abdc), P(0x0abe0), P(0x0abe4), P(0x0abe8),
322	P(0x0abec), P(0x0abf0), P(0x0abf4), P(0x0abf8), P(0x0abfc),
323	P(0x0a204), P(0x0a20c), P(0x0b20c), P(0x0a21c), P(0x0a230),
324	P(0x0a250), P(0x0a358)
325};
326
327static const uint32_t ar9285_1_2_vals_2g40[] = {
328	0x000002c0, 0x00000318, 0x00007c70, 0x00000000, 0x10801600,
329	0x12e00057, 0x00006880, 0x000003c4, 0x02020200, 0x01000e0e,
330	0x0a020001, 0x00000e0e, 0x00000007, 0x206a012e, 0x03721620,
331	0x00001053, 0x00001053, 0x6d4000e2, 0x7ec84d2e, 0x3137605e,
332	0x00058d20, 0x0001ce00, 0x5ac640d0, 0x06903881, 0x00001130,
333	0x00000016, 0xd00a800d, 0xffbc1020, 0x00000000, 0x00000000,
334	0x0000421c, 0x00000c00, 0x05eea6d4, 0x06336f77, 0x6af6532f,
335	0x08f186c8, 0x00046384, 0x00000000, 0x00000000, 0x00058084,
336	0x00058088, 0x0005808c, 0x00058100, 0x00058104, 0x00058108,
337	0x0005810c, 0x00058110, 0x00058114, 0x00058180, 0x00058184,
338	0x00058188, 0x0005818c, 0x00058190, 0x00058194, 0x000581a0,
339	0x0005820c, 0x000581a8, 0x00058284, 0x00058288, 0x00058224,
340	0x00058290, 0x00058300, 0x00058304, 0x00058308, 0x0005830c,
341	0x00058380, 0x00058384, 0x00068700, 0x00068704, 0x00068708,
342	0x0006870c, 0x00068780, 0x00068784, 0x00078b00, 0x00078b04,
343	0x00078b08, 0x00078b0c, 0x00078b80, 0x00078b84, 0x00078b88,
344	0x00078b8c, 0x00078b90, 0x000caf80, 0x000caf84, 0x000caf88,
345	0x000caf8c, 0x000caf90, 0x000db30c, 0x000db310, 0x000db384,
346	0x000db388, 0x000db324, 0x000eb704, 0x000eb6a4, 0x000eb6a8,
347	0x000eb710, 0x000eb714, 0x000eb720, 0x000eb724, 0x000eb728,
348	0x000eb72c, 0x000eb7a0, 0x000eb7a4, 0x000eb7a8, 0x000eb7b0,
349	0x000eb7b4, 0x000eb7b8, 0x000eb7a5, 0x000eb7a9, 0x000eb7ad,
350	0x000eb7b1, 0x000eb7b5, 0x000eb7b9, 0x000eb7c5, 0x000eb7c9,
351	0x000eb7d1, 0x000eb7d5, 0x000eb7d9, 0x000eb7c6, 0x000eb7ca,
352	0x000eb7ce, 0x000eb7d2, 0x000eb7d6, 0x000eb7c3, 0x000eb7c7,
353	0x000eb7cb, 0x000eb7cf, 0x000eb7d7, 0x000eb7db, 0x000eb7db,
354	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
355	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
356	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
357	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
358	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
359	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
360	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
361	0x000eb7db, 0x000eb7db, 0x00058084, 0x00058088, 0x0005808c,
362	0x00058100, 0x00058104, 0x00058108, 0x0005810c, 0x00058110,
363	0x00058114, 0x00058180, 0x00058184, 0x00058188, 0x0005818c,
364	0x00058190, 0x00058194, 0x000581a0, 0x0005820c, 0x000581a8,
365	0x00058284, 0x00058288, 0x00058224, 0x00058290, 0x00058300,
366	0x00058304, 0x00058308, 0x0005830c, 0x00058380, 0x00058384,
367	0x00068700, 0x00068704, 0x00068708, 0x0006870c, 0x00068780,
368	0x00068784, 0x00078b00, 0x00078b04, 0x00078b08, 0x00078b0c,
369	0x00078b80, 0x00078b84, 0x00078b88, 0x00078b8c, 0x00078b90,
370	0x000caf80, 0x000caf84, 0x000caf88, 0x000caf8c, 0x000caf90,
371	0x000db30c, 0x000db310, 0x000db384, 0x000db388, 0x000db324,
372	0x000eb704, 0x000eb6a4, 0x000eb6a8, 0x000eb710, 0x000eb714,
373	0x000eb720, 0x000eb724, 0x000eb728, 0x000eb72c, 0x000eb7a0,
374	0x000eb7a4, 0x000eb7a8, 0x000eb7b0, 0x000eb7b4, 0x000eb7b8,
375	0x000eb7a5, 0x000eb7a9, 0x000eb7ad, 0x000eb7b1, 0x000eb7b5,
376	0x000eb7b9, 0x000eb7c5, 0x000eb7c9, 0x000eb7d1, 0x000eb7d5,
377	0x000eb7d9, 0x000eb7c6, 0x000eb7ca, 0x000eb7ce, 0x000eb7d2,
378	0x000eb7d6, 0x000eb7c3, 0x000eb7c7, 0x000eb7cb, 0x000eb7cf,
379	0x000eb7d7, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
380	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
381	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
382	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
383	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
384	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
385	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
386	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
387	0x00000004, 0x0001f000, 0x0001f000, 0x1883800a, 0x00000210,
388	0x0004a000, 0x7999aa0e
389};
390
391static const uint32_t ar9285_1_2_vals_2g20[] = {
392	0x00000160, 0x0000018c, 0x00003e38, 0x00000000, 0x08400b00,
393	0x12e0002b, 0x00003440, 0x00000300, 0x02020200, 0x01000e0e,
394	0x0a020001, 0x00000e0e, 0x00000007, 0x206a012e, 0x03721620,
395	0x00001053, 0x00001053, 0x6d4000e2, 0x7ec84d2e, 0x3137605e,
396	0x00058d20, 0x0001ce00, 0x5ac640d0, 0x06903881, 0x00000898,
397	0x0000000b, 0xd00a800d, 0xffbc1020, 0x00000000, 0x00000000,
398	0x0000421c, 0x00000c00, 0x05eea6d4, 0x06336f77, 0x6af6532f,
399	0x08f186c8, 0x00046384, 0x00000000, 0x00000000, 0x00058084,
400	0x00058088, 0x0005808c, 0x00058100, 0x00058104, 0x00058108,
401	0x0005810c, 0x00058110, 0x00058114, 0x00058180, 0x00058184,
402	0x00058188, 0x0005818c, 0x00058190, 0x00058194, 0x000581a0,
403	0x0005820c, 0x000581a8, 0x00058284, 0x00058288, 0x00058224,
404	0x00058290, 0x00058300, 0x00058304, 0x00058308, 0x0005830c,
405	0x00058380, 0x00058384, 0x00068700, 0x00068704, 0x00068708,
406	0x0006870c, 0x00068780, 0x00068784, 0x00078b00, 0x00078b04,
407	0x00078b08, 0x00078b0c, 0x00078b80, 0x00078b84, 0x00078b88,
408	0x00078b8c, 0x00078b90, 0x000caf80, 0x000caf84, 0x000caf88,
409	0x000caf8c, 0x000caf90, 0x000db30c, 0x000db310, 0x000db384,
410	0x000db388, 0x000db324, 0x000eb704, 0x000eb6a4, 0x000eb6a8,
411	0x000eb710, 0x000eb714, 0x000eb720, 0x000eb724, 0x000eb728,
412	0x000eb72c, 0x000eb7a0, 0x000eb7a4, 0x000eb7a8, 0x000eb7b0,
413	0x000eb7b4, 0x000eb7b8, 0x000eb7a5, 0x000eb7a9, 0x000eb7ad,
414	0x000eb7b1, 0x000eb7b5, 0x000eb7b9, 0x000eb7c5, 0x000eb7c9,
415	0x000eb7d1, 0x000eb7d5, 0x000eb7d9, 0x000eb7c6, 0x000eb7ca,
416	0x000eb7ce, 0x000eb7d2, 0x000eb7d6, 0x000eb7c3, 0x000eb7c7,
417	0x000eb7cb, 0x000eb7cf, 0x000eb7d7, 0x000eb7db, 0x000eb7db,
418	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
419	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
420	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
421	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
422	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
423	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
424	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
425	0x000eb7db, 0x000eb7db, 0x00058084, 0x00058088, 0x0005808c,
426	0x00058100, 0x00058104, 0x00058108, 0x0005810c, 0x00058110,
427	0x00058114, 0x00058180, 0x00058184, 0x00058188, 0x0005818c,
428	0x00058190, 0x00058194, 0x000581a0, 0x0005820c, 0x000581a8,
429	0x00058284, 0x00058288, 0x00058224, 0x00058290, 0x00058300,
430	0x00058304, 0x00058308, 0x0005830c, 0x00058380, 0x00058384,
431	0x00068700, 0x00068704, 0x00068708, 0x0006870c, 0x00068780,
432	0x00068784, 0x00078b00, 0x00078b04, 0x00078b08, 0x00078b0c,
433	0x00078b80, 0x00078b84, 0x00078b88, 0x00078b8c, 0x00078b90,
434	0x000caf80, 0x000caf84, 0x000caf88, 0x000caf8c, 0x000caf90,
435	0x000db30c, 0x000db310, 0x000db384, 0x000db388, 0x000db324,
436	0x000eb704, 0x000eb6a4, 0x000eb6a8, 0x000eb710, 0x000eb714,
437	0x000eb720, 0x000eb724, 0x000eb728, 0x000eb72c, 0x000eb7a0,
438	0x000eb7a4, 0x000eb7a8, 0x000eb7b0, 0x000eb7b4, 0x000eb7b8,
439	0x000eb7a5, 0x000eb7a9, 0x000eb7ad, 0x000eb7b1, 0x000eb7b5,
440	0x000eb7b9, 0x000eb7c5, 0x000eb7c9, 0x000eb7d1, 0x000eb7d5,
441	0x000eb7d9, 0x000eb7c6, 0x000eb7ca, 0x000eb7ce, 0x000eb7d2,
442	0x000eb7d6, 0x000eb7c3, 0x000eb7c7, 0x000eb7cb, 0x000eb7cf,
443	0x000eb7d7, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
444	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
445	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
446	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
447	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
448	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
449	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
450	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
451	0x00000004, 0x0001f000, 0x0001f000, 0x1883800a, 0x00000108,
452	0x0004a000, 0x7999aa0e
453};
454
455static const uint16_t ar9285_1_2_cm_regs[] = {
456	P(0x0000c), P(0x00030), P(0x00034), P(0x00040), P(0x00044),
457	P(0x00048), P(0x0004c), P(0x00050), P(0x00054), P(0x00800),
458	P(0x00804), P(0x00808), P(0x0080c), P(0x00810), P(0x00814),
459	P(0x00818), P(0x0081c), P(0x00820), P(0x00824), P(0x01040),
460	P(0x01044), P(0x01048), P(0x0104c), P(0x01050), P(0x01054),
461	P(0x01058), P(0x0105c), P(0x01060), P(0x01064), P(0x01230),
462	P(0x01270), P(0x01038), P(0x01078), P(0x010b8), P(0x010f8),
463	P(0x01138), P(0x01178), P(0x011b8), P(0x011f8), P(0x01238),
464	P(0x01278), P(0x012b8), P(0x012f8), P(0x01338), P(0x01378),
465	P(0x013b8), P(0x013f8), P(0x01438), P(0x01478), P(0x014b8),
466	P(0x014f8), P(0x01538), P(0x01578), P(0x015b8), P(0x015f8),
467	P(0x01638), P(0x01678), P(0x016b8), P(0x016f8), P(0x01738),
468	P(0x01778), P(0x017b8), P(0x017f8), P(0x0103c), P(0x0107c),
469	P(0x010bc), P(0x010fc), P(0x0113c), P(0x0117c), P(0x011bc),
470	P(0x011fc), P(0x0123c), P(0x0127c), P(0x012bc), P(0x012fc),
471	P(0x0133c), P(0x0137c), P(0x013bc), P(0x013fc), P(0x0143c),
472	P(0x0147c), P(0x04030), P(0x0403c), P(0x04024), P(0x04060),
473	P(0x04064), P(0x07010), P(0x07034), P(0x07038), P(0x08004),
474	P(0x08008), P(0x0800c), P(0x08018), P(0x08020), P(0x08038),
475	P(0x0803c), P(0x08048), P(0x08054), P(0x08058), P(0x0805c),
476	P(0x08060), P(0x08064), P(0x08070), P(0x080c0), P(0x080c4),
477	P(0x080c8), P(0x080cc), P(0x080d0), P(0x080d4), P(0x080d8),
478	P(0x080e0), P(0x080e4), P(0x080e8), P(0x080ec), P(0x080f0),
479	P(0x080f4), P(0x080f8), P(0x080fc), P(0x08100), P(0x08104),
480	P(0x08108), P(0x0810c), P(0x08110), P(0x08118), P(0x0811c),
481	P(0x08120), P(0x08124), P(0x08128), P(0x0812c), P(0x08130),
482	P(0x08134), P(0x08138), P(0x0813c), P(0x08144), P(0x08168),
483	P(0x0816c), P(0x08170), P(0x08174), P(0x08178), P(0x0817c),
484	P(0x081c0), P(0x081d0), P(0x081ec), P(0x081f0), P(0x081f4),
485	P(0x081f8), P(0x081fc), P(0x08200), P(0x08204), P(0x08208),
486	P(0x0820c), P(0x08210), P(0x08214), P(0x08218), P(0x0821c),
487	P(0x08220), P(0x08224), P(0x08228), P(0x0822c), P(0x08230),
488	P(0x08234), P(0x08238), P(0x0823c), P(0x08240), P(0x08244),
489	P(0x08248), P(0x0824c), P(0x08250), P(0x08254), P(0x08258),
490	P(0x0825c), P(0x08260), P(0x08264), P(0x08270), P(0x08274),
491	P(0x08278), P(0x0827c), P(0x08284), P(0x08288), P(0x0828c),
492	P(0x08294), P(0x08298), P(0x0829c), P(0x08300), P(0x08314),
493	P(0x08328), P(0x0832c), P(0x08330), P(0x08334), P(0x08338),
494	P(0x0833c), P(0x08340), P(0x08344), P(0x09808), P(0x0980c),
495	P(0x09810), P(0x09814), P(0x0981c), P(0x0982c), P(0x09830),
496	P(0x0983c), P(0x0984c), P(0x09854), P(0x09900), P(0x09904),
497	P(0x09908), P(0x0990c), P(0x09910), P(0x0991c), P(0x09920),
498	P(0x09928), P(0x0992c), P(0x09934), P(0x09938), P(0x0993c),
499	P(0x09940), P(0x09948), P(0x0994c), P(0x09954), P(0x09958),
500	P(0x09968), P(0x09970), P(0x09974), P(0x09978), P(0x0997c),
501	P(0x09980), P(0x09984), P(0x09988), P(0x0998c), P(0x09990),
502	P(0x09994), P(0x09998), P(0x0999c), P(0x099a0), P(0x099a4),
503	P(0x099a8), P(0x099ac), P(0x099b0), P(0x099b4), P(0x099dc),
504	P(0x099e0), P(0x099e4), P(0x099e8), P(0x099ec), P(0x099f0),
505	P(0x0a208), P(0x0a210), P(0x0a214), P(0x0a218), P(0x0a220),
506	P(0x0a224), P(0x0a228), P(0x0a22c), P(0x0a234), P(0x0a238),
507	P(0x0a244), P(0x0a248), P(0x0a24c), P(0x0a254), P(0x0a258),
508	P(0x0a25c), P(0x0a260), P(0x0a268), P(0x0a26c), P(0x0d270),
509	P(0x0d35c), P(0x0d360), P(0x0d364), P(0x0d368), P(0x0d36c),
510	P(0x0d370), P(0x0d374), P(0x0d378), P(0x0d37c), P(0x0d380),
511	P(0x0d384), P(0x0a388), P(0x0a38c), P(0x0a390), P(0x0a39c),
512	P(0x0a3a0), P(0x0a3a4), P(0x0a3a8), P(0x0a3ac), P(0x0a3b0),
513	P(0x0a3b4), P(0x0a3b8), P(0x0a3bc), P(0x0a3c0), P(0x0a3c4),
514	P(0x0a3cc), P(0x0a3d0), P(0x0a3d4), P(0x0a3e4), P(0x0a3e8),
515	P(0x0a3ec), P(0x07800), P(0x07804), P(0x07808), P(0x0780c),
516	P(0x07810), P(0x0781c), P(0x07824), P(0x0782c), P(0x07834),
517	P(0x07844), P(0x07848), P(0x0784c), P(0x07850), P(0x07854),
518	P(0x07858), P(0x0785c), P(0x07860), P(0x07864), P(0x07868),
519	P(0x07870)
520};
521
522static const uint32_t ar9285_1_2_cm_vals[] = {
523	0x00000000, 0x00020045, 0x00000005, 0x00000000, 0x00000008,
524	0x00000008, 0x00000010, 0x00000000, 0x0000001f, 0x00000000,
525	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
526	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002ffc0f,
527	0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f,
528	0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x00000000,
529	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
530	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
531	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
532	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
533	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
534	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
535	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
536	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
537	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
538	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
539	0x00000000, 0x00000002, 0x00000002, 0x0000001f, 0x00000000,
540	0x00000000, 0x00000031, 0x00000002, 0x000004c2, 0x00000000,
541	0x00000000, 0x00000000, 0x00000700, 0x00000000, 0x00000000,
542	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000fc78f,
543	0x0000000f, 0x00000000, 0x00000000, 0x2a80001a, 0x05dc01e0,
544	0x1f402710, 0x01f40000, 0x00001e00, 0x00000000, 0x00400000,
545	0xffffffff, 0x0000ffff, 0x003f3f3f, 0x00000000, 0x00000000,
546	0x00000000, 0x00000000, 0x00020000, 0x00020000, 0x00000001,
547	0x00000052, 0x00000000, 0x00000168, 0x000100aa, 0x00003210,
548	0x08f04810, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
549	0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000,
550	0x00000000, 0x32143320, 0xfaa4fa50, 0x00000100, 0x00000000,
551	0x00000000, 0x0000320a, 0x00000000, 0x00000000, 0x00000000,
552	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
553	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
554	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
555	0x00000000, 0x00000000, 0x00000000, 0x00100000, 0x0010f400,
556	0x00000100, 0x0001e800, 0x00000000, 0x00000000, 0x00000000,
557	0x400000ff, 0x00080922, 0x88a00010, 0x00000000, 0x40000000,
558	0x003e4180, 0x00000000, 0x0000002c, 0x0000002c, 0x00000000,
559	0x00000000, 0x00000000, 0x00000000, 0x00000040, 0x00000000,
560	0x00000000, 0x00000001, 0x00000302, 0x00000e00, 0x00ff0000,
561	0x00000000, 0x00010380, 0x00481043, 0x00000000, 0xafe68e30,
562	0xfd14e000, 0x9c0a9f6b, 0x00000000, 0x0000a000, 0x00000000,
563	0x00200400, 0x0040233c, 0x00000044, 0x00000000, 0x00000000,
564	0x00000000, 0x00000000, 0x01002310, 0x10000fff, 0x04900000,
565	0x00000001, 0x00000004, 0x1e1f2022, 0x0a0b0c0d, 0x00000000,
566	0x14750604, 0x9280c00a, 0x00020028, 0x5f3ca3de, 0x2108ecff,
567	0x000003ce, 0x192bb514, 0x00000000, 0x00000001, 0x00000000,
568	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
569	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001,
570	0x201fff00, 0x2def0400, 0x03051000, 0x00000820, 0x00000000,
571	0x00000000, 0xaaaaaaaa, 0x3c466478, 0x0cc80caa, 0x00000000,
572	0x803e68c8, 0x4080a333, 0x00206c10, 0x009c4060, 0x01834061,
573	0x00000400, 0x000003b5, 0x00000000, 0x20202020, 0x20202020,
574	0x00000000, 0xfffffffc, 0x00000000, 0x00000000, 0x0ccb5380,
575	0x15151501, 0xdfa90f01, 0x00000000, 0x0ebae9e6, 0x0d820820,
576	0x07ffffef, 0x0fffffe7, 0x17ffffe5, 0x1fffffe4, 0x37ffffe3,
577	0x3fffffe3, 0x57ffffe3, 0x5fffffe2, 0x7fffffe2, 0x7f3c7bba,
578	0xf3307ff0, 0x0c000000, 0x20202020, 0x20202020, 0x00000001,
579	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
580	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
581	0x20202020, 0x20202020, 0x20202020, 0x00000000, 0x18c43433,
582	0x00f70081, 0x00140000, 0x0e4548d8, 0x54214514, 0x02025830,
583	0x71c0d388, 0x00000000, 0x00d86fff, 0x6e36d97b, 0x71400087,
584	0x000c0db6, 0x6db6246f, 0x6d9b66db, 0x6d8c6dba, 0x00040000,
585	0xdb003012, 0x04924914, 0x21084210, 0xf7d7ffde, 0xc2034080,
586	0x10142c00
587};
588
589static const struct athn_ini ar9285_1_2_ini = {
590	nitems(ar9285_1_2_regs),
591	ar9285_1_2_regs,
592	NULL,	/* 2GHz only. */
593	NULL,	/* 2GHz only. */
594	ar9285_1_2_vals_2g40,
595	ar9285_1_2_vals_2g20,
596	nitems(ar9285_1_2_cm_regs),
597	ar9285_1_2_cm_regs,
598	ar9285_1_2_cm_vals
599};
600
601#if NATHN_USB > 0
602/*
603 * AR9271 programming.
604 */
605static const uint16_t ar9271_regs[] = {
606	P(0x01030), P(0x01070), P(0x010b0), P(0x010f0), P(0x08014),
607	P(0x0801c), P(0x08318), P(0x09804), P(0x09820), P(0x09824),
608	P(0x09828), P(0x09834), P(0x09838), P(0x09840), P(0x09844),
609	P(0x09848), P(0x0a848), P(0x09850), P(0x09858), P(0x0985c),
610	P(0x09860), P(0x09864), P(0x09868), P(0x0986c), P(0x09910),
611	P(0x09914), P(0x09918), P(0x09924), P(0x09944), P(0x09960),
612	P(0x09964), P(0x099b8), P(0x099bc), P(0x099c0), P(0x099c4),
613	P(0x099c8), P(0x099cc), P(0x099d0), P(0x099d4), P(0x099d8),
614	P(0x09a00), P(0x09a04), P(0x09a08), P(0x09a0c), P(0x09a10),
615	P(0x09a14), P(0x09a18), P(0x09a1c), P(0x09a20), P(0x09a24),
616	P(0x09a28), P(0x09a2c), P(0x09a30), P(0x09a34), P(0x09a38),
617	P(0x09a3c), P(0x09a40), P(0x09a44), P(0x09a48), P(0x09a4c),
618	P(0x09a50), P(0x09a54), P(0x09a58), P(0x09a5c), P(0x09a60),
619	P(0x09a64), P(0x09a68), P(0x09a6c), P(0x09a70), P(0x09a74),
620	P(0x09a78), P(0x09a7c), P(0x09a80), P(0x09a84), P(0x09a88),
621	P(0x09a8c), P(0x09a90), P(0x09a94), P(0x09a98), P(0x09a9c),
622	P(0x09aa0), P(0x09aa4), P(0x09aa8), P(0x09aac), P(0x09ab0),
623	P(0x09ab4), P(0x09ab8), P(0x09abc), P(0x09ac0), P(0x09ac4),
624	P(0x09ac8), P(0x09acc), P(0x09ad0), P(0x09ad4), P(0x09ad8),
625	P(0x09adc), P(0x09ae0), P(0x09ae4), P(0x09ae8), P(0x09aec),
626	P(0x09af0), P(0x09af4), P(0x09af8), P(0x09afc), P(0x09b00),
627	P(0x09b04), P(0x09b08), P(0x09b0c), P(0x09b10), P(0x09b14),
628	P(0x09b18), P(0x09b1c), P(0x09b20), P(0x09b24), P(0x09b28),
629	P(0x09b2c), P(0x09b30), P(0x09b34), P(0x09b38), P(0x09b3c),
630	P(0x09b40), P(0x09b44), P(0x09b48), P(0x09b4c), P(0x09b50),
631	P(0x09b54), P(0x09b58), P(0x09b5c), P(0x09b60), P(0x09b64),
632	P(0x09b68), P(0x09b6c), P(0x09b70), P(0x09b74), P(0x09b78),
633	P(0x09b7c), P(0x09b80), P(0x09b84), P(0x09b88), P(0x09b8c),
634	P(0x09b90), P(0x09b94), P(0x09b98), P(0x09b9c), P(0x09ba0),
635	P(0x09ba4), P(0x09ba8), P(0x09bac), P(0x09bb0), P(0x09bb4),
636	P(0x09bb8), P(0x09bbc), P(0x09bc0), P(0x09bc4), P(0x09bc8),
637	P(0x09bcc), P(0x09bd0), P(0x09bd4), P(0x09bd8), P(0x09bdc),
638	P(0x09be0), P(0x09be4), P(0x09be8), P(0x09bec), P(0x09bf0),
639	P(0x09bf4), P(0x09bf8), P(0x09bfc), P(0x0aa00), P(0x0aa04),
640	P(0x0aa08), P(0x0aa0c), P(0x0aa10), P(0x0aa14), P(0x0aa18),
641	P(0x0aa1c), P(0x0aa20), P(0x0aa24), P(0x0aa28), P(0x0aa2c),
642	P(0x0aa30), P(0x0aa34), P(0x0aa38), P(0x0aa3c), P(0x0aa40),
643	P(0x0aa44), P(0x0aa48), P(0x0aa4c), P(0x0aa50), P(0x0aa54),
644	P(0x0aa58), P(0x0aa5c), P(0x0aa60), P(0x0aa64), P(0x0aa68),
645	P(0x0aa6c), P(0x0aa70), P(0x0aa74), P(0x0aa78), P(0x0aa7c),
646	P(0x0aa80), P(0x0aa84), P(0x0aa88), P(0x0aa8c), P(0x0aa90),
647	P(0x0aa94), P(0x0aa98), P(0x0aa9c), P(0x0aaa0), P(0x0aaa4),
648	P(0x0aaa8), P(0x0aaac), P(0x0aab0), P(0x0aab4), P(0x0aab8),
649	P(0x0aabc), P(0x0aac0), P(0x0aac4), P(0x0aac8), P(0x0aacc),
650	P(0x0aad0), P(0x0aad4), P(0x0aad8), P(0x0aadc), P(0x0aae0),
651	P(0x0aae4), P(0x0aae8), P(0x0aaec), P(0x0aaf0), P(0x0aaf4),
652	P(0x0aaf8), P(0x0aafc), P(0x0ab00), P(0x0ab04), P(0x0ab08),
653	P(0x0ab0c), P(0x0ab10), P(0x0ab14), P(0x0ab18), P(0x0ab1c),
654	P(0x0ab20), P(0x0ab24), P(0x0ab28), P(0x0ab2c), P(0x0ab30),
655	P(0x0ab34), P(0x0ab38), P(0x0ab3c), P(0x0ab40), P(0x0ab44),
656	P(0x0ab48), P(0x0ab4c), P(0x0ab50), P(0x0ab54), P(0x0ab58),
657	P(0x0ab5c), P(0x0ab60), P(0x0ab64), P(0x0ab68), P(0x0ab6c),
658	P(0x0ab70), P(0x0ab74), P(0x0ab78), P(0x0ab7c), P(0x0ab80),
659	P(0x0ab84), P(0x0ab88), P(0x0ab8c), P(0x0ab90), P(0x0ab94),
660	P(0x0ab98), P(0x0ab9c), P(0x0aba0), P(0x0aba4), P(0x0aba8),
661	P(0x0abac), P(0x0abb0), P(0x0abb4), P(0x0abb8), P(0x0abbc),
662	P(0x0abc0), P(0x0abc4), P(0x0abc8), P(0x0abcc), P(0x0abd0),
663	P(0x0abd4), P(0x0abd8), P(0x0abdc), P(0x0abe0), P(0x0abe4),
664	P(0x0abe8), P(0x0abec), P(0x0abf0), P(0x0abf4), P(0x0abf8),
665	P(0x0abfc), P(0x0a204), P(0x0a20c), P(0x0b20c), P(0x0a21c),
666	P(0x0a230), P(0x0a250), P(0x0a358)
667};
668
669static const uint32_t ar9271_vals_2g40[] = {
670	0x000002c0, 0x00000318, 0x00007c70, 0x00000000, 0x10801600,
671	0x12e00057, 0x00006880, 0x000003c4, 0x02020200, 0x01000e0e,
672	0x3a020001, 0x00000e0e, 0x00000007, 0x206a012e, 0x03721620,
673	0x00001053, 0x00001053, 0x6d4000e2, 0x7ec84d2e, 0x3137605e,
674	0x00058d18, 0x0001ce00, 0x5ac640d0, 0x06903881, 0x30002310,
675	0x00001130, 0x00000016, 0xd00a800d, 0xffbc1020, 0x00000000,
676	0x00000000, 0x0000421c, 0x00000c00, 0x05eea6d4, 0x06336f77,
677	0x6af6532f, 0x08f186c8, 0x00046384, 0x00000000, 0x00000000,
678	0x00058084, 0x00058088, 0x0005808c, 0x00058100, 0x00058104,
679	0x00058108, 0x0005810c, 0x00058110, 0x00058114, 0x00058180,
680	0x00058184, 0x00058188, 0x0005818c, 0x00058190, 0x00058194,
681	0x000581a0, 0x0005820c, 0x000581a8, 0x00058284, 0x00058288,
682	0x00058224, 0x00058290, 0x00058300, 0x00058304, 0x00058308,
683	0x0005830c, 0x00058380, 0x00058384, 0x00068700, 0x00068704,
684	0x00068708, 0x0006870c, 0x00068780, 0x00068784, 0x00078b00,
685	0x00078b04, 0x00078b08, 0x00078b0c, 0x00078b80, 0x00078b84,
686	0x00078b88, 0x00078b8c, 0x00078b90, 0x000caf80, 0x000caf84,
687	0x000caf88, 0x000caf8c, 0x000caf90, 0x000db30c, 0x000db310,
688	0x000db384, 0x000db388, 0x000db324, 0x000eb704, 0x000eb6a4,
689	0x000eb6a8, 0x000eb710, 0x000eb714, 0x000eb720, 0x000eb724,
690	0x000eb728, 0x000eb72c, 0x000eb7a0, 0x000eb7a4, 0x000eb7a8,
691	0x000eb7b0, 0x000eb7b4, 0x000eb7b8, 0x000eb7a5, 0x000eb7a9,
692	0x000eb7ad, 0x000eb7b1, 0x000eb7b5, 0x000eb7b9, 0x000eb7c5,
693	0x000eb7c9, 0x000eb7d1, 0x000eb7d5, 0x000eb7d9, 0x000eb7c6,
694	0x000eb7ca, 0x000eb7ce, 0x000eb7d2, 0x000eb7d6, 0x000eb7c3,
695	0x000eb7c7, 0x000eb7cb, 0x000eb7cf, 0x000eb7d7, 0x000eb7db,
696	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
697	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
698	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
699	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
700	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
701	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
702	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
703	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x00058084, 0x00058088,
704	0x0005808c, 0x00058100, 0x00058104, 0x00058108, 0x0005810c,
705	0x00058110, 0x00058114, 0x00058180, 0x00058184, 0x00058188,
706	0x0005818c, 0x00058190, 0x00058194, 0x000581a0, 0x0005820c,
707	0x000581a8, 0x00058284, 0x00058288, 0x00058224, 0x00058290,
708	0x00058300, 0x00058304, 0x00058308, 0x0005830c, 0x00058380,
709	0x00058384, 0x00068700, 0x00068704, 0x00068708, 0x0006870c,
710	0x00068780, 0x00068784, 0x00078b00, 0x00078b04, 0x00078b08,
711	0x00078b0c, 0x00078b80, 0x00078b84, 0x00078b88, 0x00078b8c,
712	0x00078b90, 0x000caf80, 0x000caf84, 0x000caf88, 0x000caf8c,
713	0x000caf90, 0x000db30c, 0x000db310, 0x000db384, 0x000db388,
714	0x000db324, 0x000eb704, 0x000eb6a4, 0x000eb6a8, 0x000eb710,
715	0x000eb714, 0x000eb720, 0x000eb724, 0x000eb728, 0x000eb72c,
716	0x000eb7a0, 0x000eb7a4, 0x000eb7a8, 0x000eb7b0, 0x000eb7b4,
717	0x000eb7b8, 0x000eb7a5, 0x000eb7a9, 0x000eb7ad, 0x000eb7b1,
718	0x000eb7b5, 0x000eb7b9, 0x000eb7c5, 0x000eb7c9, 0x000eb7d1,
719	0x000eb7d5, 0x000eb7d9, 0x000eb7c6, 0x000eb7ca, 0x000eb7ce,
720	0x000eb7d2, 0x000eb7d6, 0x000eb7c3, 0x000eb7c7, 0x000eb7cb,
721	0x000eb7cf, 0x000eb7d7, 0x000eb7db, 0x000eb7db, 0x000eb7db,
722	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
723	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
724	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
725	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
726	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
727	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
728	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
729	0x000eb7db, 0x00000004, 0x0001f000, 0x0001f000, 0x1883800a,
730	0x00000210, 0x0004a000, 0x7999aa0e
731};
732
733static const uint32_t ar9271_vals_2g20[] = {
734	0x00000160, 0x0000018c, 0x00003e38, 0x00000000, 0x08400b00,
735	0x12e0002b, 0x00003440, 0x00000300, 0x02020200, 0x01000e0e,
736	0x3a020001, 0x00000e0e, 0x00000007, 0x206a012e, 0x03721620,
737	0x00001053, 0x00001053, 0x6d4000e2, 0x7ec84d2e, 0x3137605e,
738	0x00058d18, 0x0001ce00, 0x5ac640d0, 0x06903881, 0x30002310,
739	0x00000898, 0x0000000b, 0xd00a800d, 0xffbc1020, 0x00000000,
740	0x00000000, 0x0000421c, 0x00000c00, 0x05eea6d4, 0x06336f77,
741	0x6af6532f, 0x08f186c8, 0x00046384, 0x00000000, 0x00000000,
742	0x00058084, 0x00058088, 0x0005808c, 0x00058100, 0x00058104,
743	0x00058108, 0x0005810c, 0x00058110, 0x00058114, 0x00058180,
744	0x00058184, 0x00058188, 0x0005818c, 0x00058190, 0x00058194,
745	0x000581a0, 0x0005820c, 0x000581a8, 0x00058284, 0x00058288,
746	0x00058224, 0x00058290, 0x00058300, 0x00058304, 0x00058308,
747	0x0005830c, 0x00058380, 0x00058384, 0x00068700, 0x00068704,
748	0x00068708, 0x0006870c, 0x00068780, 0x00068784, 0x00078b00,
749	0x00078b04, 0x00078b08, 0x00078b0c, 0x00078b80, 0x00078b84,
750	0x00078b88, 0x00078b8c, 0x00078b90, 0x000caf80, 0x000caf84,
751	0x000caf88, 0x000caf8c, 0x000caf90, 0x000db30c, 0x000db310,
752	0x000db384, 0x000db388, 0x000db324, 0x000eb704, 0x000eb6a4,
753	0x000eb6a8, 0x000eb710, 0x000eb714, 0x000eb720, 0x000eb724,
754	0x000eb728, 0x000eb72c, 0x000eb7a0, 0x000eb7a4, 0x000eb7a8,
755	0x000eb7b0, 0x000eb7b4, 0x000eb7b8, 0x000eb7a5, 0x000eb7a9,
756	0x000eb7ad, 0x000eb7b1, 0x000eb7b5, 0x000eb7b9, 0x000eb7c5,
757	0x000eb7c9, 0x000eb7d1, 0x000eb7d5, 0x000eb7d9, 0x000eb7c6,
758	0x000eb7ca, 0x000eb7ce, 0x000eb7d2, 0x000eb7d6, 0x000eb7c3,
759	0x000eb7c7, 0x000eb7cb, 0x000eb7cf, 0x000eb7d7, 0x000eb7db,
760	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
761	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
762	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
763	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
764	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
765	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
766	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
767	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x00058084, 0x00058088,
768	0x0005808c, 0x00058100, 0x00058104, 0x00058108, 0x0005810c,
769	0x00058110, 0x00058114, 0x00058180, 0x00058184, 0x00058188,
770	0x0005818c, 0x00058190, 0x00058194, 0x000581a0, 0x0005820c,
771	0x000581a8, 0x00058284, 0x00058288, 0x00058224, 0x00058290,
772	0x00058300, 0x00058304, 0x00058308, 0x0005830c, 0x00058380,
773	0x00058384, 0x00068700, 0x00068704, 0x00068708, 0x0006870c,
774	0x00068780, 0x00068784, 0x00078b00, 0x00078b04, 0x00078b08,
775	0x00078b0c, 0x00078b80, 0x00078b84, 0x00078b88, 0x00078b8c,
776	0x00078b90, 0x000caf80, 0x000caf84, 0x000caf88, 0x000caf8c,
777	0x000caf90, 0x000db30c, 0x000db310, 0x000db384, 0x000db388,
778	0x000db324, 0x000eb704, 0x000eb6a4, 0x000eb6a8, 0x000eb710,
779	0x000eb714, 0x000eb720, 0x000eb724, 0x000eb728, 0x000eb72c,
780	0x000eb7a0, 0x000eb7a4, 0x000eb7a8, 0x000eb7b0, 0x000eb7b4,
781	0x000eb7b8, 0x000eb7a5, 0x000eb7a9, 0x000eb7ad, 0x000eb7b1,
782	0x000eb7b5, 0x000eb7b9, 0x000eb7c5, 0x000eb7c9, 0x000eb7d1,
783	0x000eb7d5, 0x000eb7d9, 0x000eb7c6, 0x000eb7ca, 0x000eb7ce,
784	0x000eb7d2, 0x000eb7d6, 0x000eb7c3, 0x000eb7c7, 0x000eb7cb,
785	0x000eb7cf, 0x000eb7d7, 0x000eb7db, 0x000eb7db, 0x000eb7db,
786	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
787	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
788	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
789	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
790	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
791	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
792	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
793	0x000eb7db, 0x00000004, 0x0001f000, 0x0001f000, 0x1883800a,
794	0x00000108, 0x0004a000, 0x7999aa0e
795};
796
797static const uint16_t ar9271_cm_regs[] = {
798	P(0x0000c), P(0x00030), P(0x00034), P(0x00040), P(0x00044),
799	P(0x00048), P(0x0004c), P(0x00050), P(0x00054), P(0x00800),
800	P(0x00804), P(0x00808), P(0x0080c), P(0x00810), P(0x00814),
801	P(0x00818), P(0x0081c), P(0x00820), P(0x00824), P(0x01040),
802	P(0x01044), P(0x01048), P(0x0104c), P(0x01050), P(0x01054),
803	P(0x01058), P(0x0105c), P(0x01060), P(0x01064), P(0x01230),
804	P(0x01270), P(0x01038), P(0x01078), P(0x010b8), P(0x010f8),
805	P(0x01138), P(0x01178), P(0x011b8), P(0x011f8), P(0x01238),
806	P(0x01278), P(0x012b8), P(0x012f8), P(0x01338), P(0x01378),
807	P(0x013b8), P(0x013f8), P(0x01438), P(0x01478), P(0x014b8),
808	P(0x014f8), P(0x01538), P(0x01578), P(0x015b8), P(0x015f8),
809	P(0x01638), P(0x01678), P(0x016b8), P(0x016f8), P(0x01738),
810	P(0x01778), P(0x017b8), P(0x017f8), P(0x0103c), P(0x0107c),
811	P(0x010bc), P(0x010fc), P(0x0113c), P(0x0117c), P(0x011bc),
812	P(0x011fc), P(0x0123c), P(0x0127c), P(0x012bc), P(0x012fc),
813	P(0x0133c), P(0x0137c), P(0x013bc), P(0x013fc), P(0x0143c),
814	P(0x0147c), P(0x04030), P(0x0403c), P(0x04024), P(0x04060),
815	P(0x04064), P(0x08004), P(0x08008), P(0x0800c), P(0x08018),
816	P(0x08020), P(0x08038), P(0x0803c), P(0x08048), P(0x08054),
817	P(0x08058), P(0x0805c), P(0x08060), P(0x08064), P(0x08070),
818	P(0x080b0), P(0x080b4), P(0x080b8), P(0x080bc), P(0x080c0),
819	P(0x080c4), P(0x080c8), P(0x080cc), P(0x080d0), P(0x080d4),
820	P(0x080d8), P(0x080e0), P(0x080e4), P(0x080e8), P(0x080ec),
821	P(0x080f0), P(0x080f4), P(0x080f8), P(0x080fc), P(0x08100),
822	P(0x08104), P(0x08108), P(0x0810c), P(0x08110), P(0x08118),
823	P(0x0811c), P(0x08120), P(0x08124), P(0x08128), P(0x0812c),
824	P(0x08130), P(0x08134), P(0x08138), P(0x0813c), P(0x08144),
825	P(0x08168), P(0x0816c), P(0x08170), P(0x08174), P(0x08178),
826	P(0x0817c), P(0x081c0), P(0x081d0), P(0x081ec), P(0x081f0),
827	P(0x081f4), P(0x081f8), P(0x081fc), P(0x08200), P(0x08204),
828	P(0x08208), P(0x0820c), P(0x08210), P(0x08214), P(0x08218),
829	P(0x0821c), P(0x08220), P(0x08224), P(0x08228), P(0x0822c),
830	P(0x08230), P(0x08234), P(0x08238), P(0x0823c), P(0x08240),
831	P(0x08244), P(0x08248), P(0x0824c), P(0x08250), P(0x08254),
832	P(0x08258), P(0x0825c), P(0x08260), P(0x08264), P(0x08270),
833	P(0x08274), P(0x08278), P(0x0827c), P(0x08284), P(0x08288),
834	P(0x0828c), P(0x08294), P(0x08298), P(0x0829c), P(0x08300),
835	P(0x08314), P(0x08328), P(0x0832c), P(0x08330), P(0x08334),
836	P(0x08338), P(0x0833c), P(0x08340), P(0x08344), P(0x07010),
837	P(0x07034), P(0x07038), P(0x07800), P(0x07804), P(0x07808),
838	P(0x0780c), P(0x07810), P(0x07814), P(0x0781c), P(0x07828),
839	P(0x0782c), P(0x07830), P(0x07834), P(0x0783c), P(0x07840),
840	P(0x07844), P(0x07848), P(0x0784c), P(0x07850), P(0x07854),
841	P(0x07858), P(0x0785c), P(0x07860), P(0x07864), P(0x07868),
842	P(0x07870), P(0x09808), P(0x0980c), P(0x09810), P(0x09814),
843	P(0x0981c), P(0x0982c), P(0x09830), P(0x0983c), P(0x0984c),
844	P(0x09854), P(0x09900), P(0x09904), P(0x09908), P(0x0990c),
845	P(0x0991c), P(0x09920), P(0x09928), P(0x0992c), P(0x09934),
846	P(0x09938), P(0x0993c), P(0x09940), P(0x09948), P(0x0994c),
847	P(0x09954), P(0x09958), P(0x09968), P(0x09970), P(0x09974),
848	P(0x09978), P(0x0997c), P(0x09980), P(0x09984), P(0x09988),
849	P(0x0998c), P(0x09990), P(0x09994), P(0x09998), P(0x0999c),
850	P(0x099a0), P(0x099a4), P(0x099a8), P(0x099ac), P(0x099b0),
851	P(0x099b4), P(0x099dc), P(0x099e0), P(0x099e4), P(0x099e8),
852	P(0x099ec), P(0x099f0), P(0x0a208), P(0x0a210), P(0x0a214),
853	P(0x0a218), P(0x0a220), P(0x0a224), P(0x0a228), P(0x0a22c),
854	P(0x0a234), P(0x0a238), P(0x0a244), P(0x0a248), P(0x0a24c),
855	P(0x0a254), P(0x0a258), P(0x0a25c), P(0x0a260), P(0x0a268),
856	P(0x0a26c), P(0x0a388), P(0x0a38c), P(0x0a390), P(0x0a39c),
857	P(0x0a3a0), P(0x0a3a4), P(0x0a3a8), P(0x0a3ac), P(0x0a3b0),
858	P(0x0a3b4), P(0x0a3b8), P(0x0a3bc), P(0x0a3c0), P(0x0a3c4),
859	P(0x0a3cc), P(0x0a3d0), P(0x0a3d4), P(0x0a3e4), P(0x0a3e8),
860	P(0x0a3ec), P(0x0a3f0), P(0x0a3f4), P(0x0d270), P(0x0d35c),
861	P(0x0d360), P(0x0d364), P(0x0d368), P(0x0d36c), P(0x0d370),
862	P(0x0d374), P(0x0d378), P(0x0d37c), P(0x0d380), P(0x0d384)
863};
864
865static const uint32_t ar9271_cm_vals[] = {
866	0x00000000, 0x00020045, 0x00000005, 0x00000000, 0x00000008,
867	0x00000008, 0x00000010, 0x00000000, 0x0000001f, 0x00000000,
868	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
869	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002ffc0f,
870	0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f,
871	0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x00000000,
872	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
873	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
874	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
875	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
876	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
877	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
878	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
879	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
880	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
881	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
882	0x00000000, 0x00000002, 0x00000002, 0x0000001f, 0x00000000,
883	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000700,
884	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
885	0x00000000, 0x000fc78f, 0x0000000f, 0x00000000, 0x00000000,
886	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x2a80001a,
887	0x05dc01e0, 0x1f402710, 0x01f40000, 0x00001e00, 0x00000000,
888	0x00400000, 0xffffffff, 0x0000ffff, 0x003f3f3f, 0x00000000,
889	0x00000000, 0x00000000, 0x00000000, 0x00020000, 0x00020000,
890	0x00000001, 0x00000052, 0x00000000, 0x00000168, 0x000100aa,
891	0x00003210, 0x08f04810, 0x00000000, 0x00000000, 0x00000000,
892	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff,
893	0x00000000, 0x00000000, 0x32143320, 0xfaa4fa50, 0x00000100,
894	0x00000000, 0x00000000, 0x0000320a, 0x00000000, 0x00000000,
895	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
896	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
897	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
898	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100000,
899	0x0010f400, 0x00000100, 0x0001e800, 0x00000000, 0x00000000,
900	0x00000000, 0x400000ff, 0x00080922, 0x88a00010, 0x00000000,
901	0x40000000, 0x003e4180, 0x00000000, 0x0000002c, 0x0000002c,
902	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000040,
903	0x00000000, 0x00000000, 0x00000001, 0x00000302, 0x00000e00,
904	0x00ff0000, 0x00000000, 0x00010380, 0x00581043, 0x00000030,
905	0x00000002, 0x000004c2, 0x00140000, 0x0e4548d8, 0x54214514,
906	0x02025820, 0x71c0d388, 0x924934a8, 0x00000000, 0x66964300,
907	0x8db6d961, 0x8db6d96c, 0x6140008b, 0x72ee0a72, 0xbbfffffc,
908	0x000c0db6, 0x6db6246f, 0x6d9b66db, 0x6d8c6dba, 0x00040000,
909	0xdb003012, 0x04924914, 0x21084210, 0xf7d7ffde, 0xc2034080,
910	0x10142c00, 0x00000000, 0xafe68e30, 0xfd14e000, 0x9c0a9f6b,
911	0x00000000, 0x0000a000, 0x00000000, 0x00200400, 0x0040233c,
912	0x00000044, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
913	0x10000fff, 0x04900000, 0x00000001, 0x00000004, 0x1e1f2022,
914	0x0a0b0c0d, 0x00000000, 0x14750604, 0x9280c00a, 0x00020028,
915	0x5f3ca3de, 0x0108ecff, 0x000003ce, 0x192bb514, 0x00000000,
916	0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
917	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
918	0x00000000, 0x00000001, 0x201fff00, 0x2def0400, 0x03051000,
919	0x00000820, 0x00000000, 0x00000000, 0xaaaaaaaa, 0x3c466478,
920	0x0cc80caa, 0x00000000, 0x803e68c8, 0x4080a333, 0x00206c10,
921	0x009c4060, 0x01834061, 0x00000400, 0x000003b5, 0x00000000,
922	0x20202020, 0x20202020, 0x00000000, 0xfffffffc, 0x00000000,
923	0x00000000, 0x0ccb5380, 0x15151501, 0xdfa90f01, 0x00000000,
924	0x0ebae9e6, 0x0c000000, 0x20202020, 0x20202020, 0x00000001,
925	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
926	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
927	0x20202020, 0x20202020, 0x20202020, 0x00000000, 0x18c43433,
928	0x00f70081, 0x01036a2f, 0x00000000, 0x0d820820, 0x07ffffef,
929	0x0fffffe7, 0x17ffffe5, 0x1fffffe4, 0x37ffffe3, 0x3fffffe3,
930	0x57ffffe3, 0x5fffffe2, 0x7fffffe2, 0x7f3c7bba, 0xf3307ff0
931};
932
933static const struct athn_ini ar9271_ini = {
934	nitems(ar9271_regs),
935	ar9271_regs,
936	NULL,	/* 2GHz only. */
937	NULL,	/* 2GHz only. */
938	ar9271_vals_2g40,
939	ar9271_vals_2g20,
940	nitems(ar9271_cm_regs),
941	ar9271_cm_regs,
942	ar9271_cm_vals
943};
944#endif	/* NATHN_USB */
945
946/*
947 * AR9285 1.2 Tx gains.
948 */
949static const uint16_t ar9285_1_2_tx_gain_regs[] = {
950	P(0x0a300), P(0x0a304), P(0x0a308), P(0x0a30c), P(0x0a310),
951	P(0x0a314), P(0x0a318), P(0x0a31c), P(0x0a320), P(0x0a324),
952	P(0x0a328), P(0x0a32c), P(0x0a330), P(0x0a334), P(0x0a338),
953	P(0x0a33c), P(0x0a340), P(0x0a344), P(0x0a348), P(0x0a34c),
954	P(0x0a350), P(0x0a354), P(0x07814), P(0x07828), P(0x07830),
955	P(0x07838), P(0x0783c), P(0x07840), P(0x0786c), P(0x07820),
956	P(0x0a274), P(0x0a278), P(0x0a27c), P(0x0a394), P(0x0a398),
957	P(0x0a3dc), P(0x0a3e0)
958};
959
960static const uint32_t ar9285_1_2_tx_gain_vals_2g[] = {
961	0x00000000, 0x00009200, 0x00010208, 0x00019608, 0x00022618,
962	0x0002a6c9, 0x00031710, 0x00035718, 0x00038758, 0x0003c75a,
963	0x0004075c, 0x0004475e, 0x0004679f, 0x000487df, 0x0003891e,
964	0x0003a95e, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df,
965	0x0003e9df, 0x0003e9df, 0x924934a8, 0x26d2491b, 0xedb6d96e,
966	0xfac68801, 0x0001fffe, 0xffeb1a20, 0x48609eb4, 0x00000c04,
967	0x0a21a652, 0x39ce739c, 0x050e039c, 0x39ce739c, 0x0000039c,
968	0x39ce739c, 0x0000039c
969};
970
971static const struct athn_gain ar9285_1_2_tx_gain = {
972	nitems(ar9285_1_2_tx_gain_regs),
973	ar9285_1_2_tx_gain_regs,
974	NULL,	/* 2GHz only. */
975	ar9285_1_2_tx_gain_vals_2g
976};
977
978static const uint32_t ar9285_1_2_tx_gain_high_power_vals_2g[] = {
979	0x00000000, 0x00006200, 0x00008201, 0x0000b240, 0x0000d241,
980	0x0000f600, 0x00012800, 0x00016802, 0x0001b805, 0x00021a80,
981	0x00028b00, 0x0002ab40, 0x0002cd80, 0x00033d82, 0x0003891e,
982	0x0003a95e, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df,
983	0x0003e9df, 0x0003e9df, 0x924934a8, 0x26d2491b, 0xedb6d96e,
984	0xfac68803, 0x0001fffe, 0xffeb1a20, 0x08609ebe, 0x00000c00,
985	0x0a216652, 0x0e739ce7, 0x050380e7, 0x0e739ce7, 0x000000e7,
986	0x0e739ce7, 0x000000e7
987};
988
989static const struct athn_gain ar9285_1_2_tx_gain_high_power = {
990	nitems(ar9285_1_2_tx_gain_regs),
991	ar9285_1_2_tx_gain_regs,
992	NULL,	/* 2GHz only. */
993	ar9285_1_2_tx_gain_high_power_vals_2g
994};
995
996/*
997 * AR9285 XE 2.0 Tx gains.
998 */
999static const uint32_t ar9285_2_0_tx_gain_vals_2g[] = {
1000	0x00000000, 0x00009200, 0x00010208, 0x00019608, 0x00022618,
1001	0x0002a6c9, 0x00031710, 0x00035718, 0x00038758, 0x0003c75a,
1002	0x0004075c, 0x0004475e, 0x0004679f, 0x000487df, 0x0003891e,
1003	0x0003a95e, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df,
1004	0x0003e9df, 0x0003e9df, 0x92497ca8, 0x2ad2491b, 0xedb6da6e,
1005	0xdac71441, 0x2481f6fe, 0xba5f638c, 0x48609eb4, 0x00000c04,
1006	0x0a21a652, 0x39ce739c, 0x050e039c, 0x39ce739c, 0x0000039c,
1007	0x39ce739c, 0x0000039c
1008};
1009
1010static const struct athn_gain ar9285_2_0_tx_gain = {
1011	nitems(ar9285_1_2_tx_gain_regs),
1012	ar9285_1_2_tx_gain_regs,
1013	NULL,	/* 2GHz only. */
1014	ar9285_2_0_tx_gain_vals_2g
1015};
1016
1017static const uint32_t ar9285_2_0_tx_gain_high_power_vals_2g[] = {
1018	0x00000000, 0x00006200, 0x00008201, 0x0000b240, 0x0000d241,
1019	0x0000f600, 0x00012800, 0x00016802, 0x0001b805, 0x00021a80,
1020	0x00028b00, 0x0002ab40, 0x0002cd80, 0x00033d82, 0x0003891e,
1021	0x0003a95e, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df,
1022	0x0003e9df, 0x0003e9df, 0x92497ca8, 0x2ad2491b, 0xedb6da6e,
1023	0xdac71443, 0x2481f6fe, 0xba5f638c, 0x08609ebe, 0x00000c00,
1024	0x0a216652, 0x0e739ce7, 0x050380e7, 0x0e739ce7, 0x000000e7,
1025	0x0e739ce7, 0x000000e7
1026};
1027
1028static const struct athn_gain ar9285_2_0_tx_gain_high_power = {
1029	nitems(ar9285_1_2_tx_gain_regs),
1030	ar9285_1_2_tx_gain_regs,
1031	NULL,	/* 2GHz only. */
1032	ar9285_2_0_tx_gain_high_power_vals_2g
1033};
1034
1035#if NATHN_USB > 0
1036/*
1037 * AR9271 Tx gains.
1038 */
1039static const uint16_t ar9271_tx_gain_regs[] = {
1040	P(0x0a300), P(0x0a304), P(0x0a308), P(0x0a30c), P(0x0a310),
1041	P(0x0a314), P(0x0a318), P(0x0a31c), P(0x0a320), P(0x0a324),
1042	P(0x0a328), P(0x0a32c), P(0x0a330), P(0x0a334), P(0x0a338),
1043	P(0x0a33c), P(0x0a340), P(0x0a344), P(0x0a348), P(0x0a34c),
1044	P(0x0a350), P(0x0a354), P(0x07838), P(0x07824), P(0x0786c),
1045	P(0x07820), P(0x0a274), P(0x0a278), P(0x0a27c), P(0x0a394),
1046	P(0x0a398), P(0x0a3dc), P(0x0a3e0)
1047};
1048
1049static const uint32_t ar9271_tx_gain_vals_2g[] = {
1050	0x00000000, 0x00009200, 0x00010208, 0x00019608, 0x0001e610,
1051	0x0002d6d0, 0x00039758, 0x0003b759, 0x0003d75a, 0x0004175c,
1052	0x0004575e, 0x0004979f, 0x0004d7df, 0x000368de, 0x0003891e,
1053	0x0003a95e, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df,
1054	0x0003e9df, 0x0003e9df, 0x00000029, 0x00d8abff, 0x48609eb4,
1055	0x00000c04, 0x0a218652, 0x3bdef7bd, 0x050e83bd, 0x3bdef7bd,
1056	0x000003bd, 0x3bdef7bd, 0x000003bd
1057};
1058
1059static const struct athn_gain ar9271_tx_gain = {
1060	nitems(ar9271_tx_gain_regs),
1061	ar9271_tx_gain_regs,
1062	NULL,	/* 2GHz only. */
1063	ar9271_tx_gain_vals_2g
1064};
1065
1066static const uint32_t ar9271_tx_gain_high_power_vals_2g[] = {
1067	0x00010000, 0x00016200, 0x00018201, 0x0001b240, 0x0001d241,
1068	0x0001f600, 0x00022800, 0x00026802, 0x0002b805, 0x0002ea41,
1069	0x00038b00, 0x0003ab40, 0x0003cd80, 0x000368de, 0x0003891e,
1070	0x0003a95e, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df,
1071	0x0003e9df, 0x0003e9df, 0x0000002b, 0x00d8a7ff, 0x08609eba,
1072	0x00000c00, 0x0a214652, 0x0e739ce7, 0x05018063, 0x06318c63,
1073	0x00000063, 0x06318c63, 0x00000063
1074};
1075
1076static const struct athn_gain ar9271_tx_gain_high_power = {
1077	nitems(ar9271_tx_gain_regs),
1078	ar9271_tx_gain_regs,
1079	NULL,	/* 2GHz only. */
1080	ar9271_tx_gain_high_power_vals_2g
1081};
1082#endif	/* NATHN_USB */
1083