1227569Sphilip/*	$NetBSD:$	*/
2227569Sphilip/*	$OpenBSD: ar9285reg.h,v 1.7 2011/01/06 07:27:15 damien Exp $	*/
3227569Sphilip
4227569Sphilip/*-
5227569Sphilip * Copyright (c) 2009 Damien Bergamini <damien.bergamini@free.fr>
6227569Sphilip * Copyright (c) 2008-2009 Atheros Communications Inc.
7227569Sphilip *
8227569Sphilip * Permission to use, copy, modify, and/or distribute this software for any
9227569Sphilip * purpose with or without fee is hereby granted, provided that the above
10227569Sphilip * copyright notice and this permission notice appear in all copies.
11227569Sphilip *
12227569Sphilip * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
13227569Sphilip * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
14227569Sphilip * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
15227569Sphilip * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
16227569Sphilip * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
17227569Sphilip * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
18227569Sphilip * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19227569Sphilip */
20227569Sphilip
21227569Sphilip#ifndef _ARN9285REG_H_
22227569Sphilip#define _ARN9285REG_H_
23227569Sphilip
24227569Sphilip#define AR9285_MAX_CHAINS	1
25227569Sphilip
26227569Sphilip#define AR9285_PHY_CCA_MAX_GOOD_VALUE	(-118)
27227569Sphilip
28227569Sphilip#define AR9285_CL_CAL_REDO_THRESH	1
29227569Sphilip
30227569Sphilip/*
31227569Sphilip * Analog registers.
32227569Sphilip */
33227569Sphilip#define AR9285_AN_RF2G1			0x7820
34227569Sphilip#define AR9285_AN_RF2G2			0x7824
35227569Sphilip#define AR9285_AN_RF2G3			0x7828
36227569Sphilip#define AR9285_AN_RF2G4			0x782c
37227569Sphilip#define AR9285_AN_RF2G5			0x7830
38227569Sphilip#define AR9285_AN_RF2G6			0x7834
39227569Sphilip#define AR9285_AN_RF2G7			0x7838
40227569Sphilip#define AR9285_AN_RF2G8			0x783c
41227569Sphilip#define AR9285_AN_RF2G9			0x7840
42227569Sphilip#define AR9285_AN_RXTXBB1		0x7854
43227569Sphilip#define AR9285_AN_TOP2			0x7868
44227569Sphilip#define AR9285_AN_TOP3			0x786c
45280502Sarybchik#define AR9285_AN_TOP4			0x7870
46227569Sphilip
47227569Sphilip/* Bits for AR9285_AN_RF2G1. */
48227569Sphilip#define AR9285_AN_RF2G1_ENPACAL		0x00000800
49227569Sphilip#define AR9285_AN_RF2G1_PDPAOUT		0x00800000
50227569Sphilip#define AR9285_AN_RF2G1_PDPADRV2	0x01000000
51227569Sphilip#define AR9285_AN_RF2G1_PDPADRV1	0x02000000
52227569Sphilip
53227569Sphilip/* Bits for AR9285_AN_RF2G2. */
54227569Sphilip#define AR9285_AN_RF2G2_OFFCAL	0x00001000
55227569Sphilip
56227569Sphilip/* Bits for AR9285_AN_RF2G3. */
57227569Sphilip#define AR9285_AN_RF2G3_DB1_2_M		0x00000007
58227569Sphilip#define AR9285_AN_RF2G3_DB1_2_S		0
59227569Sphilip#define AR9285_AN_RF2G3_DB1_1_M		0x00000038
60280501Sarybchik#define AR9285_AN_RF2G3_DB1_1_S		3
61227569Sphilip#define AR9285_AN_RF2G3_DB1_0_M		0x000001c0
62227569Sphilip#define AR9285_AN_RF2G3_DB1_0_S		6
63227569Sphilip#define AR9285_AN_RF2G3_OB_4_M		0x00000e00
64280501Sarybchik#define AR9285_AN_RF2G3_OB_4_S		9
65280501Sarybchik#define AR9285_AN_RF2G3_OB_3_M		0x00007000
66227569Sphilip#define AR9285_AN_RF2G3_OB_3_S		12
67227569Sphilip#define AR9285_AN_RF2G3_OB_2_M		0x00038000
68227569Sphilip#define AR9285_AN_RF2G3_OB_2_S		15
69227569Sphilip#define AR9285_AN_RF2G3_OB_1_M		0x001c0000
70280502Sarybchik#define AR9285_AN_RF2G3_OB_1_S		18
71280502Sarybchik#define AR9285_AN_RF2G3_OB_0_M		0x00e00000
72280502Sarybchik#define AR9285_AN_RF2G3_OB_0_S		21
73280502Sarybchik#define AR9285_AN_RF2G3_PDVCCOMP	0x02000000
74280502Sarybchik#define AR9271_AN_RF2G3_CCOMP_M		0x00000fff
75280502Sarybchik#define AR9271_AN_RF2G3_CCOMP_S		0
76280502Sarybchik#define AR9271_AN_RF2G3_OB_QAM_M	0x00007000
77280502Sarybchik#define AR9271_AN_RF2G3_OB_QAM_S	12
78280502Sarybchik#define AR9271_AN_RF2G3_OB_PSK_M	0x00038000
79280502Sarybchik#define AR9271_AN_RF2G3_OB_PSK_S	15
80280502Sarybchik#define AR9271_AN_RF2G3_OB_CCK_M	0x001c0000
81280502Sarybchik#define AR9271_AN_RF2G3_OB_CCK_S	18
82280502Sarybchik#define AR9271_AN_RF2G3_DB1_M		0x00e00000
83280502Sarybchik#define AR9271_AN_RF2G3_DB1_S		21
84280502Sarybchik
85280502Sarybchik/* Bits for AR9285_AN_RF2G4. */
86280502Sarybchik#define AR9285_AN_RF2G4_DB2_4_M		0x00003800
87280502Sarybchik#define AR9285_AN_RF2G4_DB2_4_S		11
88280502Sarybchik#define AR9285_AN_RF2G4_DB2_3_M		0x0001c000
89227569Sphilip#define AR9285_AN_RF2G4_DB2_3_S		14
90227569Sphilip#define AR9285_AN_RF2G4_DB2_2_M		0x000e0000
91227569Sphilip#define AR9285_AN_RF2G4_DB2_2_S		17
92227569Sphilip#define AR9285_AN_RF2G4_DB2_1_M		0x00700000
93227569Sphilip#define AR9285_AN_RF2G4_DB2_1_S		20
94227569Sphilip#define AR9285_AN_RF2G4_DB2_0_M		0x03800000
95227569Sphilip#define AR9285_AN_RF2G4_DB2_0_S		23
96227569Sphilip#define AR9285_AN_RF2G4_DB1_4_M		0x1c000000
97227569Sphilip#define AR9285_AN_RF2G4_DB1_4_S		26
98227569Sphilip#define AR9285_AN_RF2G4_DB1_3_M		0xe0000000
99227569Sphilip#define AR9285_AN_RF2G4_DB1_3_S		29
100280501Sarybchik#define AR9271_AN_RF2G4_DB2_M		0xe0000000
101227569Sphilip#define AR9271_AN_RF2G4_DB2_S		29
102227569Sphilip
103227569Sphilip/* Bits for AR9285_AN_RF2G5. */
104227569Sphilip#define AR9285_AN_RF2G5_IC50TX_M	0x00000700
105227569Sphilip#define AR9285_AN_RF2G5_IC50TX_S	8
106227569Sphilip
107227569Sphilip/* Bits for AR9285_AN_RF2G6. */
108227569Sphilip#define AR9285_AN_RF2G6_CCOMP_M		0x00007800
109227569Sphilip#define AR9285_AN_RF2G6_CCOMP_S		11
110227569Sphilip#define AR9285_AN_RF2G6_OFFS_6_1	0x03f00000
111227569Sphilip#define AR9285_AN_RF2G6_OFFS(i)		(1 << (19 + (i)))
112227569Sphilip#define AR9271_AN_RF2G6_OFFS_6_0	0x07f00000
113227569Sphilip#define AR9271_AN_RF2G6_OFFS(i)		(1 << (20 + (i)))
114227569Sphilip
115227569Sphilip/* Bits for AR9285_AN_RF2G7. */
116227569Sphilip#define AR9285_AN_RF2G7_PWDDB		0x00000002
117227569Sphilip#define AR9285_AN_RF2G7_PADRVGN2TAB0_M	0xe0000000
118227569Sphilip#define AR9285_AN_RF2G7_PADRVGN2TAB0_S	29
119227569Sphilip
120227569Sphilip/* Bits for AR9285_AN_RF2G8. */
121227569Sphilip#define AR9285_AN_RF2G8_PADRVGN2TAB0_M	0x0001c000
122227569Sphilip#define AR9285_AN_RF2G8_PADRVGN2TAB0_S	14
123227569Sphilip
124227569Sphilip/* Bits for AR9285_AN_RXTXBB1. */
125227569Sphilip#define AR9285_AN_RXTXBB1_SPARE9	0x00000001
126227569Sphilip#define AR9285_AN_RXTXBB1_PDRXTXBB1	0x00000020
127227569Sphilip#define AR9285_AN_RXTXBB1_PDV2I		0x00000080
128227569Sphilip#define AR9285_AN_RXTXBB1_PDDACIF	0x00000100
129227569Sphilip
130227569Sphilip/* Bits for AR9285_AN_TOP2. */
131227569Sphilip#define AR9285_AN_TOP2_DEFAULT		0xca0358a0	/* XXX magic */
132227569Sphilip
133227569Sphilip/* Bits for AR9285_AN_TOP3. */
134227569Sphilip#define AR9285_AN_TOP3_XPABIAS_LVL_M	0x0000000c
135227569Sphilip#define AR9285_AN_TOP3_XPABIAS_LVL_S	2
136227569Sphilip#define AR9285_AN_TOP3_PWDDAC		0x00800000
137227569Sphilip
138227569Sphilip/* Bits for AR9285_AN_TOP4. */
139227569Sphilip#define AR9285_AN_TOP4_DEFAULT		0x10142c00	/* XXX magic */
140227569Sphilip#define AR9285_AN_TOP4_UNLOCKED		0x10142c14	/* XXX magic */
141227569Sphilip
142227569Sphilip/* Bits for AR_PHY_MULTICHAIN_GAIN_CTL. */
143227569Sphilip#define AR9285_PHY_ANT_DIV_CTL_ALL_M		0x7f000000
144227569Sphilip#define AR9285_PHY_ANT_DIV_CTL_ALL_S		24
145227569Sphilip#define AR9285_PHY_ANT_DIV_CTL_M		0x01000000
146227569Sphilip#define AR9285_PHY_ANT_DIV_CTL_S		24
147227569Sphilip#define AR9285_PHY_ANT_DIV_ALT_LNACONF_M	0x06000000
148227569Sphilip#define AR9285_PHY_ANT_DIV_ALT_LNACONF_S	25
149227569Sphilip#define AR9285_PHY_ANT_DIV_MAIN_LNACONF_M	0x18000000
150227569Sphilip#define AR9285_PHY_ANT_DIV_MAIN_LNACONF_S	27
151227569Sphilip#define AR9285_PHY_ANT_DIV_ALT_GAINTB_M		0x20000000
152227569Sphilip#define AR9285_PHY_ANT_DIV_ALT_GAINTB_S		29
153227569Sphilip#define AR9285_PHY_ANT_DIV_MAIN_GAINTB_M	0x40000000
154227569Sphilip#define AR9285_PHY_ANT_DIV_MAIN_GAINTB_S	30
155227569Sphilip
156227569Sphilip/*
157227569Sphilip * ROM layout used by AR9285 (single-stream, 2GHz only).
158227569Sphilip */
159227569Sphilip#define AR9285_EEP_START_LOC		64
160227569Sphilip#define AR9285_NUM_2G_CAL_PIERS		3
161227569Sphilip#define AR9285_NUM_2G_CCK_TARGET_POWERS	3
162227569Sphilip#define AR9285_NUM_2G_20_TARGET_POWERS	3
163227569Sphilip#define AR9285_NUM_2G_40_TARGET_POWERS	3
164227569Sphilip#define AR9285_NUM_CTLS			12
165227569Sphilip#define AR9285_NUM_BAND_EDGES		4
166227569Sphilip#define AR9285_NUM_PD_GAINS		2
167227569Sphilip#define AR9285_PD_GAINS_IN_MASK		4
168227569Sphilip#define AR9285_PD_GAIN_ICEPTS		5
169227569Sphilip
170227569Sphilipstruct ar9285_base_eep_header {
171227569Sphilip	uint16_t	length;
172227569Sphilip	uint16_t	checksum;
173227569Sphilip	uint16_t	version;
174227569Sphilip	uint8_t		opCapFlags;
175227569Sphilip	uint8_t		eepMisc;
176227569Sphilip	uint16_t	regDmn[2];
177227569Sphilip	uint8_t		macAddr[6];
178227569Sphilip	uint8_t		rxMask;
179227569Sphilip	uint8_t		txMask;
180227569Sphilip	uint16_t	rfSilent;
181227569Sphilip	uint16_t	blueToothOptions;
182227569Sphilip	uint16_t	deviceCap;
183227569Sphilip	uint32_t	binBuildNumber;
184227569Sphilip	uint8_t		deviceType;
185227569Sphilip	/* End of common header. */
186227569Sphilip	uint8_t		txGainType;
187227569Sphilip} __packed;
188227569Sphilip
189227569Sphilipstruct ar9285_modal_eep_header {
190227569Sphilip	uint32_t	antCtrlChain;
191227569Sphilip	uint32_t	antCtrlCommon;
192227569Sphilip	uint8_t		antennaGain;
193227569Sphilip	uint8_t		switchSettling;
194227569Sphilip	uint8_t		txRxAtten;
195227569Sphilip	uint8_t		rxTxMargin;
196227569Sphilip	uint8_t		adcDesiredSize;
197227569Sphilip	uint8_t		pgaDesiredSize;
198227569Sphilip	uint8_t		xlnaGain;
199227569Sphilip	uint8_t		txEndToXpaOff;
200227569Sphilip	uint8_t		txEndToRxOn;
201227569Sphilip	uint8_t		txFrameToXpaOn;
202227569Sphilip	uint8_t		thresh62;
203227569Sphilip	uint8_t		noiseFloorThresh;
204227569Sphilip	uint8_t		xpdGain;
205227569Sphilip	uint8_t		xpd;
206227569Sphilip	uint8_t		iqCalI;
207227569Sphilip	uint8_t		iqCalQ;
208227569Sphilip	uint8_t		pdGainOverlap;
209227569Sphilip	uint8_t		ob_01;
210227569Sphilip	uint8_t		db1_01;
211227569Sphilip	uint8_t		xpaBiasLvl;
212227569Sphilip	uint8_t		txFrameToDataStart;
213227569Sphilip	uint8_t		txFrameToPaOn;
214227569Sphilip	uint8_t		ht40PowerIncForPdadc;
215227569Sphilip	uint8_t		bswAtten;
216227569Sphilip	uint8_t		bswMargin;
217227569Sphilip	uint8_t		swSettleHt40;
218227569Sphilip	uint8_t		xatten2Db;
219227569Sphilip	uint8_t		xatten2Margin;
220227569Sphilip	uint8_t		db2_01;
221227569Sphilip	uint8_t		version;
222227569Sphilip	uint16_t	ob_234;
223227569Sphilip	uint16_t	db1_234;
224227569Sphilip	uint16_t	db2_234;
225227569Sphilip	uint8_t		futureModal[4];
226227569Sphilip	struct		ar_spur_chan spurChans[AR_EEPROM_MODAL_SPURS];
227227569Sphilip} __packed;
228227569Sphilip
229227569Sphilipstruct ar9285_cal_data_per_freq {
230227569Sphilip	uint8_t	pwrPdg[AR9285_NUM_PD_GAINS][AR9285_PD_GAIN_ICEPTS];
231227569Sphilip	uint8_t	vpdPdg[AR9285_NUM_PD_GAINS][AR9285_PD_GAIN_ICEPTS];
232227569Sphilip} __packed;
233227569Sphilip
234227569Sphilipstruct ar9285_cal_ctl_data {
235227569Sphilip	struct ar_cal_ctl_edges	ctlEdges[AR9285_NUM_BAND_EDGES];
236227569Sphilip} __packed;
237227569Sphilip
238227569Sphilipstruct ar9285_eeprom {
239227569Sphilip	struct	ar9285_base_eep_header baseEepHeader;
240227569Sphilip	uint8_t	custData[20];
241227569Sphilip	struct	ar9285_modal_eep_header modalHeader;
242227569Sphilip	uint8_t	calFreqPier2G[AR9285_NUM_2G_CAL_PIERS];
243227569Sphilip	struct	ar9285_cal_data_per_freq
244227569Sphilip	    calPierData2G[AR9285_NUM_2G_CAL_PIERS];
245280501Sarybchik	struct	ar_cal_target_power_leg
246227569Sphilip	    calTargetPowerCck[AR9285_NUM_2G_CCK_TARGET_POWERS];
247227569Sphilip	struct	ar_cal_target_power_leg
248227569Sphilip	    calTargetPower2G[AR9285_NUM_2G_20_TARGET_POWERS];
249227569Sphilip	struct	ar_cal_target_power_ht
250227569Sphilip	    calTargetPower2GHT20[AR9285_NUM_2G_20_TARGET_POWERS];
251227569Sphilip	struct	ar_cal_target_power_ht
252227569Sphilip	    calTargetPower2GHT40[AR9285_NUM_2G_40_TARGET_POWERS];
253227569Sphilip	uint8_t	ctlIndex[AR9285_NUM_CTLS];
254227569Sphilip	struct	ar9285_cal_ctl_data ctlData[AR9285_NUM_CTLS];
255227569Sphilip	uint8_t	padding;
256227569Sphilip} __packed;
257227569Sphilip
258227569Sphilip/* Macro to "pack" registers to 16-bit to save some .rodata space. */
259227569Sphilip#define P(x)	(x)
260227569Sphilip
261227569Sphilip/*
262227569Sphilip * AR9285 1.2 initialization values.
263227569Sphilip */
264227569Sphilipstatic const uint16_t ar9285_1_2_regs[] = {
265227569Sphilip	P(0x01030), P(0x01070), P(0x010b0), P(0x010f0), P(0x08014),
266227569Sphilip	P(0x0801c), P(0x08318), P(0x09804), P(0x09820), P(0x09824),
267227569Sphilip	P(0x09828), P(0x09834), P(0x09838), P(0x09840), P(0x09844),
268227569Sphilip	P(0x09848), P(0x0a848), P(0x09850), P(0x09858), P(0x0985c),
269227569Sphilip	P(0x09860), P(0x09864), P(0x09868), P(0x0986c), P(0x09914),
270227569Sphilip	P(0x09918), P(0x09924), P(0x09944), P(0x09960), P(0x09964),
271227569Sphilip	P(0x099b8), P(0x099bc), P(0x099c0), P(0x099c4), P(0x099c8),
272227569Sphilip	P(0x099cc), P(0x099d0), P(0x099d4), P(0x099d8), P(0x09a00),
273227569Sphilip	P(0x09a04), P(0x09a08), P(0x09a0c), P(0x09a10), P(0x09a14),
274227569Sphilip	P(0x09a18), P(0x09a1c), P(0x09a20), P(0x09a24), P(0x09a28),
275227569Sphilip	P(0x09a2c), P(0x09a30), P(0x09a34), P(0x09a38), P(0x09a3c),
276227569Sphilip	P(0x09a40), P(0x09a44), P(0x09a48), P(0x09a4c), P(0x09a50),
277227569Sphilip	P(0x09a54), P(0x09a58), P(0x09a5c), P(0x09a60), P(0x09a64),
278227569Sphilip	P(0x09a68), P(0x09a6c), P(0x09a70), P(0x09a74), P(0x09a78),
279227569Sphilip	P(0x09a7c), P(0x09a80), P(0x09a84), P(0x09a88), P(0x09a8c),
280227569Sphilip	P(0x09a90), P(0x09a94), P(0x09a98), P(0x09a9c), P(0x09aa0),
281227569Sphilip	P(0x09aa4), P(0x09aa8), P(0x09aac), P(0x09ab0), P(0x09ab4),
282227569Sphilip	P(0x09ab8), P(0x09abc), P(0x09ac0), P(0x09ac4), P(0x09ac8),
283227569Sphilip	P(0x09acc), P(0x09ad0), P(0x09ad4), P(0x09ad8), P(0x09adc),
284227569Sphilip	P(0x09ae0), P(0x09ae4), P(0x09ae8), P(0x09aec), P(0x09af0),
285227569Sphilip	P(0x09af4), P(0x09af8), P(0x09afc), P(0x09b00), P(0x09b04),
286227569Sphilip	P(0x09b08), P(0x09b0c), P(0x09b10), P(0x09b14), P(0x09b18),
287227569Sphilip	P(0x09b1c), P(0x09b20), P(0x09b24), P(0x09b28), P(0x09b2c),
288227569Sphilip	P(0x09b30), P(0x09b34), P(0x09b38), P(0x09b3c), P(0x09b40),
289227569Sphilip	P(0x09b44), P(0x09b48), P(0x09b4c), P(0x09b50), P(0x09b54),
290227569Sphilip	P(0x09b58), P(0x09b5c), P(0x09b60), P(0x09b64), P(0x09b68),
291227569Sphilip	P(0x09b6c), P(0x09b70), P(0x09b74), P(0x09b78), P(0x09b7c),
292227569Sphilip	P(0x09b80), P(0x09b84), P(0x09b88), P(0x09b8c), P(0x09b90),
293227569Sphilip	P(0x09b94), P(0x09b98), P(0x09b9c), P(0x09ba0), P(0x09ba4),
294227569Sphilip	P(0x09ba8), P(0x09bac), P(0x09bb0), P(0x09bb4), P(0x09bb8),
295227569Sphilip	P(0x09bbc), P(0x09bc0), P(0x09bc4), P(0x09bc8), P(0x09bcc),
296227569Sphilip	P(0x09bd0), P(0x09bd4), P(0x09bd8), P(0x09bdc), P(0x09be0),
297227569Sphilip	P(0x09be4), P(0x09be8), P(0x09bec), P(0x09bf0), P(0x09bf4),
298227569Sphilip	P(0x09bf8), P(0x09bfc), P(0x0aa00), P(0x0aa04), P(0x0aa08),
299227569Sphilip	P(0x0aa0c), P(0x0aa10), P(0x0aa14), P(0x0aa18), P(0x0aa1c),
300227569Sphilip	P(0x0aa20), P(0x0aa24), P(0x0aa28), P(0x0aa2c), P(0x0aa30),
301227569Sphilip	P(0x0aa34), P(0x0aa38), P(0x0aa3c), P(0x0aa40), P(0x0aa44),
302227569Sphilip	P(0x0aa48), P(0x0aa4c), P(0x0aa50), P(0x0aa54), P(0x0aa58),
303227569Sphilip	P(0x0aa5c), P(0x0aa60), P(0x0aa64), P(0x0aa68), P(0x0aa6c),
304227569Sphilip	P(0x0aa70), P(0x0aa74), P(0x0aa78), P(0x0aa7c), P(0x0aa80),
305227569Sphilip	P(0x0aa84), P(0x0aa88), P(0x0aa8c), P(0x0aa90), P(0x0aa94),
306227569Sphilip	P(0x0aa98), P(0x0aa9c), P(0x0aaa0), P(0x0aaa4), P(0x0aaa8),
307227569Sphilip	P(0x0aaac), P(0x0aab0), P(0x0aab4), P(0x0aab8), P(0x0aabc),
308227569Sphilip	P(0x0aac0), P(0x0aac4), P(0x0aac8), P(0x0aacc), P(0x0aad0),
309280501Sarybchik	P(0x0aad4), P(0x0aad8), P(0x0aadc), P(0x0aae0), P(0x0aae4),
310227569Sphilip	P(0x0aae8), P(0x0aaec), P(0x0aaf0), P(0x0aaf4), P(0x0aaf8),
311227569Sphilip	P(0x0aafc), P(0x0ab00), P(0x0ab04), P(0x0ab08), P(0x0ab0c),
312227569Sphilip	P(0x0ab10), P(0x0ab14), P(0x0ab18), P(0x0ab1c), P(0x0ab20),
313227569Sphilip	P(0x0ab24), P(0x0ab28), P(0x0ab2c), P(0x0ab30), P(0x0ab34),
314227569Sphilip	P(0x0ab38), P(0x0ab3c), P(0x0ab40), P(0x0ab44), P(0x0ab48),
315227569Sphilip	P(0x0ab4c), P(0x0ab50), P(0x0ab54), P(0x0ab58), P(0x0ab5c),
316227569Sphilip	P(0x0ab60), P(0x0ab64), P(0x0ab68), P(0x0ab6c), P(0x0ab70),
317227569Sphilip	P(0x0ab74), P(0x0ab78), P(0x0ab7c), P(0x0ab80), P(0x0ab84),
318227569Sphilip	P(0x0ab88), P(0x0ab8c), P(0x0ab90), P(0x0ab94), P(0x0ab98),
319227569Sphilip	P(0x0ab9c), P(0x0aba0), P(0x0aba4), P(0x0aba8), P(0x0abac),
320227569Sphilip	P(0x0abb0), P(0x0abb4), P(0x0abb8), P(0x0abbc), P(0x0abc0),
321227569Sphilip	P(0x0abc4), P(0x0abc8), P(0x0abcc), P(0x0abd0), P(0x0abd4),
322227569Sphilip	P(0x0abd8), P(0x0abdc), P(0x0abe0), P(0x0abe4), P(0x0abe8),
323227569Sphilip	P(0x0abec), P(0x0abf0), P(0x0abf4), P(0x0abf8), P(0x0abfc),
324227569Sphilip	P(0x0a204), P(0x0a20c), P(0x0b20c), P(0x0a21c), P(0x0a230),
325227569Sphilip	P(0x0a250), P(0x0a358)
326227569Sphilip};
327227569Sphilip
328227569Sphilip#ifndef IEEE80211_NO_HT
329227569Sphilipstatic const uint32_t ar9285_1_2_vals_2g40[] = {
330227569Sphilip	0x000002c0, 0x00000318, 0x00007c70, 0x00000000, 0x10801600,
331227569Sphilip	0x12e00057, 0x00006880, 0x000003c4, 0x02020200, 0x01000e0e,
332227569Sphilip	0x0a020001, 0x00000e0e, 0x00000007, 0x206a012e, 0x03721620,
333227569Sphilip	0x00001053, 0x00001053, 0x6d4000e2, 0x7ec84d2e, 0x3137605e,
334227569Sphilip	0x00058d20, 0x0001ce00, 0x5ac640d0, 0x06903881, 0x00001130,
335227569Sphilip	0x00000016, 0xd00a800d, 0xffbc1020, 0x00000000, 0x00000000,
336280502Sarybchik	0x0000421c, 0x00000c00, 0x05eea6d4, 0x06336f77, 0x6af6532f,
337280502Sarybchik	0x08f186c8, 0x00046384, 0x00000000, 0x00000000, 0x00058084,
338227569Sphilip	0x00058088, 0x0005808c, 0x00058100, 0x00058104, 0x00058108,
339227569Sphilip	0x0005810c, 0x00058110, 0x00058114, 0x00058180, 0x00058184,
340227569Sphilip	0x00058188, 0x0005818c, 0x00058190, 0x00058194, 0x000581a0,
341227569Sphilip	0x0005820c, 0x000581a8, 0x00058284, 0x00058288, 0x00058224,
342227569Sphilip	0x00058290, 0x00058300, 0x00058304, 0x00058308, 0x0005830c,
343227569Sphilip	0x00058380, 0x00058384, 0x00068700, 0x00068704, 0x00068708,
344227569Sphilip	0x0006870c, 0x00068780, 0x00068784, 0x00078b00, 0x00078b04,
345227569Sphilip	0x00078b08, 0x00078b0c, 0x00078b80, 0x00078b84, 0x00078b88,
346280501Sarybchik	0x00078b8c, 0x00078b90, 0x000caf80, 0x000caf84, 0x000caf88,
347227569Sphilip	0x000caf8c, 0x000caf90, 0x000db30c, 0x000db310, 0x000db384,
348227569Sphilip	0x000db388, 0x000db324, 0x000eb704, 0x000eb6a4, 0x000eb6a8,
349227569Sphilip	0x000eb710, 0x000eb714, 0x000eb720, 0x000eb724, 0x000eb728,
350280501Sarybchik	0x000eb72c, 0x000eb7a0, 0x000eb7a4, 0x000eb7a8, 0x000eb7b0,
351227569Sphilip	0x000eb7b4, 0x000eb7b8, 0x000eb7a5, 0x000eb7a9, 0x000eb7ad,
352227569Sphilip	0x000eb7b1, 0x000eb7b5, 0x000eb7b9, 0x000eb7c5, 0x000eb7c9,
353227569Sphilip	0x000eb7d1, 0x000eb7d5, 0x000eb7d9, 0x000eb7c6, 0x000eb7ca,
354227569Sphilip	0x000eb7ce, 0x000eb7d2, 0x000eb7d6, 0x000eb7c3, 0x000eb7c7,
355227569Sphilip	0x000eb7cb, 0x000eb7cf, 0x000eb7d7, 0x000eb7db, 0x000eb7db,
356227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
357227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
358227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
359227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
360227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
361227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
362227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
363227569Sphilip	0x000eb7db, 0x000eb7db, 0x00058084, 0x00058088, 0x0005808c,
364227569Sphilip	0x00058100, 0x00058104, 0x00058108, 0x0005810c, 0x00058110,
365227569Sphilip	0x00058114, 0x00058180, 0x00058184, 0x00058188, 0x0005818c,
366227569Sphilip	0x00058190, 0x00058194, 0x000581a0, 0x0005820c, 0x000581a8,
367227569Sphilip	0x00058284, 0x00058288, 0x00058224, 0x00058290, 0x00058300,
368227569Sphilip	0x00058304, 0x00058308, 0x0005830c, 0x00058380, 0x00058384,
369280501Sarybchik	0x00068700, 0x00068704, 0x00068708, 0x0006870c, 0x00068780,
370227569Sphilip	0x00068784, 0x00078b00, 0x00078b04, 0x00078b08, 0x00078b0c,
371227569Sphilip	0x00078b80, 0x00078b84, 0x00078b88, 0x00078b8c, 0x00078b90,
372227569Sphilip	0x000caf80, 0x000caf84, 0x000caf88, 0x000caf8c, 0x000caf90,
373227569Sphilip	0x000db30c, 0x000db310, 0x000db384, 0x000db388, 0x000db324,
374227569Sphilip	0x000eb704, 0x000eb6a4, 0x000eb6a8, 0x000eb710, 0x000eb714,
375227569Sphilip	0x000eb720, 0x000eb724, 0x000eb728, 0x000eb72c, 0x000eb7a0,
376227569Sphilip	0x000eb7a4, 0x000eb7a8, 0x000eb7b0, 0x000eb7b4, 0x000eb7b8,
377227569Sphilip	0x000eb7a5, 0x000eb7a9, 0x000eb7ad, 0x000eb7b1, 0x000eb7b5,
378227569Sphilip	0x000eb7b9, 0x000eb7c5, 0x000eb7c9, 0x000eb7d1, 0x000eb7d5,
379227569Sphilip	0x000eb7d9, 0x000eb7c6, 0x000eb7ca, 0x000eb7ce, 0x000eb7d2,
380227569Sphilip	0x000eb7d6, 0x000eb7c3, 0x000eb7c7, 0x000eb7cb, 0x000eb7cf,
381227569Sphilip	0x000eb7d7, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
382227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
383227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
384227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
385227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
386227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
387227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
388227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
389227569Sphilip	0x00000004, 0x0001f000, 0x0001f000, 0x1883800a, 0x00000210,
390227569Sphilip	0x0004a000, 0x7999aa0e
391227569Sphilip};
392227569Sphilip#endif
393227569Sphilip
394227569Sphilipstatic const uint32_t ar9285_1_2_vals_2g20[] = {
395227569Sphilip	0x00000160, 0x0000018c, 0x00003e38, 0x00000000, 0x08400b00,
396227569Sphilip	0x12e0002b, 0x00003440, 0x00000300, 0x02020200, 0x01000e0e,
397227569Sphilip	0x0a020001, 0x00000e0e, 0x00000007, 0x206a012e, 0x03721620,
398227569Sphilip	0x00001053, 0x00001053, 0x6d4000e2, 0x7ec84d2e, 0x3137605e,
399280518Sarybchik	0x00058d20, 0x0001ce00, 0x5ac640d0, 0x06903881, 0x00000898,
400227569Sphilip	0x0000000b, 0xd00a800d, 0xffbc1020, 0x00000000, 0x00000000,
401227569Sphilip	0x0000421c, 0x00000c00, 0x05eea6d4, 0x06336f77, 0x6af6532f,
402227569Sphilip	0x08f186c8, 0x00046384, 0x00000000, 0x00000000, 0x00058084,
403227569Sphilip	0x00058088, 0x0005808c, 0x00058100, 0x00058104, 0x00058108,
404227569Sphilip	0x0005810c, 0x00058110, 0x00058114, 0x00058180, 0x00058184,
405280518Sarybchik	0x00058188, 0x0005818c, 0x00058190, 0x00058194, 0x000581a0,
406280518Sarybchik	0x0005820c, 0x000581a8, 0x00058284, 0x00058288, 0x00058224,
407280518Sarybchik	0x00058290, 0x00058300, 0x00058304, 0x00058308, 0x0005830c,
408280518Sarybchik	0x00058380, 0x00058384, 0x00068700, 0x00068704, 0x00068708,
409280518Sarybchik	0x0006870c, 0x00068780, 0x00068784, 0x00078b00, 0x00078b04,
410280518Sarybchik	0x00078b08, 0x00078b0c, 0x00078b80, 0x00078b84, 0x00078b88,
411227569Sphilip	0x00078b8c, 0x00078b90, 0x000caf80, 0x000caf84, 0x000caf88,
412227569Sphilip	0x000caf8c, 0x000caf90, 0x000db30c, 0x000db310, 0x000db384,
413227569Sphilip	0x000db388, 0x000db324, 0x000eb704, 0x000eb6a4, 0x000eb6a8,
414227569Sphilip	0x000eb710, 0x000eb714, 0x000eb720, 0x000eb724, 0x000eb728,
415280501Sarybchik	0x000eb72c, 0x000eb7a0, 0x000eb7a4, 0x000eb7a8, 0x000eb7b0,
416227569Sphilip	0x000eb7b4, 0x000eb7b8, 0x000eb7a5, 0x000eb7a9, 0x000eb7ad,
417227569Sphilip	0x000eb7b1, 0x000eb7b5, 0x000eb7b9, 0x000eb7c5, 0x000eb7c9,
418227569Sphilip	0x000eb7d1, 0x000eb7d5, 0x000eb7d9, 0x000eb7c6, 0x000eb7ca,
419227569Sphilip	0x000eb7ce, 0x000eb7d2, 0x000eb7d6, 0x000eb7c3, 0x000eb7c7,
420227569Sphilip	0x000eb7cb, 0x000eb7cf, 0x000eb7d7, 0x000eb7db, 0x000eb7db,
421227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
422227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
423227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
424227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
425227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
426227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
427227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
428227569Sphilip	0x000eb7db, 0x000eb7db, 0x00058084, 0x00058088, 0x0005808c,
429227569Sphilip	0x00058100, 0x00058104, 0x00058108, 0x0005810c, 0x00058110,
430227569Sphilip	0x00058114, 0x00058180, 0x00058184, 0x00058188, 0x0005818c,
431227569Sphilip	0x00058190, 0x00058194, 0x000581a0, 0x0005820c, 0x000581a8,
432227569Sphilip	0x00058284, 0x00058288, 0x00058224, 0x00058290, 0x00058300,
433227569Sphilip	0x00058304, 0x00058308, 0x0005830c, 0x00058380, 0x00058384,
434227569Sphilip	0x00068700, 0x00068704, 0x00068708, 0x0006870c, 0x00068780,
435227569Sphilip	0x00068784, 0x00078b00, 0x00078b04, 0x00078b08, 0x00078b0c,
436227569Sphilip	0x00078b80, 0x00078b84, 0x00078b88, 0x00078b8c, 0x00078b90,
437227569Sphilip	0x000caf80, 0x000caf84, 0x000caf88, 0x000caf8c, 0x000caf90,
438227569Sphilip	0x000db30c, 0x000db310, 0x000db384, 0x000db388, 0x000db324,
439227569Sphilip	0x000eb704, 0x000eb6a4, 0x000eb6a8, 0x000eb710, 0x000eb714,
440227569Sphilip	0x000eb720, 0x000eb724, 0x000eb728, 0x000eb72c, 0x000eb7a0,
441227569Sphilip	0x000eb7a4, 0x000eb7a8, 0x000eb7b0, 0x000eb7b4, 0x000eb7b8,
442227569Sphilip	0x000eb7a5, 0x000eb7a9, 0x000eb7ad, 0x000eb7b1, 0x000eb7b5,
443280502Sarybchik	0x000eb7b9, 0x000eb7c5, 0x000eb7c9, 0x000eb7d1, 0x000eb7d5,
444280502Sarybchik	0x000eb7d9, 0x000eb7c6, 0x000eb7ca, 0x000eb7ce, 0x000eb7d2,
445280502Sarybchik	0x000eb7d6, 0x000eb7c3, 0x000eb7c7, 0x000eb7cb, 0x000eb7cf,
446280502Sarybchik	0x000eb7d7, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
447280502Sarybchik	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
448280502Sarybchik	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
449280502Sarybchik	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
450280502Sarybchik	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
451280502Sarybchik	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
452280502Sarybchik	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
453280502Sarybchik	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
454280502Sarybchik	0x00000004, 0x0001f000, 0x0001f000, 0x1883800a, 0x00000108,
455280502Sarybchik	0x0004a000, 0x7999aa0e
456280502Sarybchik};
457280502Sarybchik
458280502Sarybchikstatic const uint16_t ar9285_1_2_cm_regs[] = {
459280502Sarybchik	P(0x0000c), P(0x00030), P(0x00034), P(0x00040), P(0x00044),
460280502Sarybchik	P(0x00048), P(0x0004c), P(0x00050), P(0x00054), P(0x00800),
461280502Sarybchik	P(0x00804), P(0x00808), P(0x0080c), P(0x00810), P(0x00814),
462280502Sarybchik	P(0x00818), P(0x0081c), P(0x00820), P(0x00824), P(0x01040),
463227569Sphilip	P(0x01044), P(0x01048), P(0x0104c), P(0x01050), P(0x01054),
464227569Sphilip	P(0x01058), P(0x0105c), P(0x01060), P(0x01064), P(0x01230),
465227569Sphilip	P(0x01270), P(0x01038), P(0x01078), P(0x010b8), P(0x010f8),
466227569Sphilip	P(0x01138), P(0x01178), P(0x011b8), P(0x011f8), P(0x01238),
467227569Sphilip	P(0x01278), P(0x012b8), P(0x012f8), P(0x01338), P(0x01378),
468227569Sphilip	P(0x013b8), P(0x013f8), P(0x01438), P(0x01478), P(0x014b8),
469227569Sphilip	P(0x014f8), P(0x01538), P(0x01578), P(0x015b8), P(0x015f8),
470227569Sphilip	P(0x01638), P(0x01678), P(0x016b8), P(0x016f8), P(0x01738),
471227569Sphilip	P(0x01778), P(0x017b8), P(0x017f8), P(0x0103c), P(0x0107c),
472227569Sphilip	P(0x010bc), P(0x010fc), P(0x0113c), P(0x0117c), P(0x011bc),
473227569Sphilip	P(0x011fc), P(0x0123c), P(0x0127c), P(0x012bc), P(0x012fc),
474227569Sphilip	P(0x0133c), P(0x0137c), P(0x013bc), P(0x013fc), P(0x0143c),
475227569Sphilip	P(0x0147c), P(0x04030), P(0x0403c), P(0x04024), P(0x04060),
476227569Sphilip	P(0x04064), P(0x07010), P(0x07034), P(0x07038), P(0x08004),
477227569Sphilip	P(0x08008), P(0x0800c), P(0x08018), P(0x08020), P(0x08038),
478227569Sphilip	P(0x0803c), P(0x08048), P(0x08054), P(0x08058), P(0x0805c),
479227569Sphilip	P(0x08060), P(0x08064), P(0x08070), P(0x080c0), P(0x080c4),
480227569Sphilip	P(0x080c8), P(0x080cc), P(0x080d0), P(0x080d4), P(0x080d8),
481227569Sphilip	P(0x080e0), P(0x080e4), P(0x080e8), P(0x080ec), P(0x080f0),
482227569Sphilip	P(0x080f4), P(0x080f8), P(0x080fc), P(0x08100), P(0x08104),
483227569Sphilip	P(0x08108), P(0x0810c), P(0x08110), P(0x08118), P(0x0811c),
484227569Sphilip	P(0x08120), P(0x08124), P(0x08128), P(0x0812c), P(0x08130),
485227569Sphilip	P(0x08134), P(0x08138), P(0x0813c), P(0x08144), P(0x08168),
486227569Sphilip	P(0x0816c), P(0x08170), P(0x08174), P(0x08178), P(0x0817c),
487227569Sphilip	P(0x081c0), P(0x081d0), P(0x081ec), P(0x081f0), P(0x081f4),
488227569Sphilip	P(0x081f8), P(0x081fc), P(0x08200), P(0x08204), P(0x08208),
489227569Sphilip	P(0x0820c), P(0x08210), P(0x08214), P(0x08218), P(0x0821c),
490227569Sphilip	P(0x08220), P(0x08224), P(0x08228), P(0x0822c), P(0x08230),
491227569Sphilip	P(0x08234), P(0x08238), P(0x0823c), P(0x08240), P(0x08244),
492227569Sphilip	P(0x08248), P(0x0824c), P(0x08250), P(0x08254), P(0x08258),
493227569Sphilip	P(0x0825c), P(0x08260), P(0x08264), P(0x08270), P(0x08274),
494227569Sphilip	P(0x08278), P(0x0827c), P(0x08284), P(0x08288), P(0x0828c),
495227569Sphilip	P(0x08294), P(0x08298), P(0x0829c), P(0x08300), P(0x08314),
496227569Sphilip	P(0x08328), P(0x0832c), P(0x08330), P(0x08334), P(0x08338),
497227569Sphilip	P(0x0833c), P(0x08340), P(0x08344), P(0x09808), P(0x0980c),
498227569Sphilip	P(0x09810), P(0x09814), P(0x0981c), P(0x0982c), P(0x09830),
499227569Sphilip	P(0x0983c), P(0x0984c), P(0x09854), P(0x09900), P(0x09904),
500227569Sphilip	P(0x09908), P(0x0990c), P(0x09910), P(0x0991c), P(0x09920),
501227569Sphilip	P(0x09928), P(0x0992c), P(0x09934), P(0x09938), P(0x0993c),
502227569Sphilip	P(0x09940), P(0x09948), P(0x0994c), P(0x09954), P(0x09958),
503227569Sphilip	P(0x09968), P(0x09970), P(0x09974), P(0x09978), P(0x0997c),
504227569Sphilip	P(0x09980), P(0x09984), P(0x09988), P(0x0998c), P(0x09990),
505227569Sphilip	P(0x09994), P(0x09998), P(0x0999c), P(0x099a0), P(0x099a4),
506227569Sphilip	P(0x099a8), P(0x099ac), P(0x099b0), P(0x099b4), P(0x099dc),
507227569Sphilip	P(0x099e0), P(0x099e4), P(0x099e8), P(0x099ec), P(0x099f0),
508227569Sphilip	P(0x0a208), P(0x0a210), P(0x0a214), P(0x0a218), P(0x0a220),
509227569Sphilip	P(0x0a224), P(0x0a228), P(0x0a22c), P(0x0a234), P(0x0a238),
510227569Sphilip	P(0x0a244), P(0x0a248), P(0x0a24c), P(0x0a254), P(0x0a258),
511227569Sphilip	P(0x0a25c), P(0x0a260), P(0x0a268), P(0x0a26c), P(0x0d270),
512227569Sphilip	P(0x0d35c), P(0x0d360), P(0x0d364), P(0x0d368), P(0x0d36c),
513227569Sphilip	P(0x0d370), P(0x0d374), P(0x0d378), P(0x0d37c), P(0x0d380),
514227569Sphilip	P(0x0d384), P(0x0a388), P(0x0a38c), P(0x0a390), P(0x0a39c),
515227569Sphilip	P(0x0a3a0), P(0x0a3a4), P(0x0a3a8), P(0x0a3ac), P(0x0a3b0),
516227569Sphilip	P(0x0a3b4), P(0x0a3b8), P(0x0a3bc), P(0x0a3c0), P(0x0a3c4),
517227569Sphilip	P(0x0a3cc), P(0x0a3d0), P(0x0a3d4), P(0x0a3e4), P(0x0a3e8),
518227569Sphilip	P(0x0a3ec), P(0x07800), P(0x07804), P(0x07808), P(0x0780c),
519227569Sphilip	P(0x07810), P(0x0781c), P(0x07824), P(0x0782c), P(0x07834),
520227569Sphilip	P(0x07844), P(0x07848), P(0x0784c), P(0x07850), P(0x07854),
521227569Sphilip	P(0x07858), P(0x0785c), P(0x07860), P(0x07864), P(0x07868),
522227569Sphilip	P(0x07870)
523227569Sphilip};
524227569Sphilip
525227569Sphilipstatic const uint32_t ar9285_1_2_cm_vals[] = {
526227569Sphilip	0x00000000, 0x00020045, 0x00000005, 0x00000000, 0x00000008,
527227569Sphilip	0x00000008, 0x00000010, 0x00000000, 0x0000001f, 0x00000000,
528227569Sphilip	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
529227569Sphilip	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002ffc0f,
530227569Sphilip	0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f,
531227569Sphilip	0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x00000000,
532227569Sphilip	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
533227569Sphilip	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
534227569Sphilip	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
535280502Sarybchik	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
536280502Sarybchik	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
537227569Sphilip	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
538227569Sphilip	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
539227569Sphilip	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
540227569Sphilip	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
541227569Sphilip	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
542227569Sphilip	0x00000000, 0x00000002, 0x00000002, 0x0000001f, 0x00000000,
543227569Sphilip	0x00000000, 0x00000031, 0x00000002, 0x000004c2, 0x00000000,
544227569Sphilip	0x00000000, 0x00000000, 0x00000700, 0x00000000, 0x00000000,
545227569Sphilip	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000fc78f,
546227569Sphilip	0x0000000f, 0x00000000, 0x00000000, 0x2a80001a, 0x05dc01e0,
547227569Sphilip	0x1f402710, 0x01f40000, 0x00001e00, 0x00000000, 0x00400000,
548227569Sphilip	0xffffffff, 0x0000ffff, 0x003f3f3f, 0x00000000, 0x00000000,
549227569Sphilip	0x00000000, 0x00000000, 0x00020000, 0x00020000, 0x00000001,
550227569Sphilip	0x00000052, 0x00000000, 0x00000168, 0x000100aa, 0x00003210,
551227569Sphilip	0x08f04810, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
552227569Sphilip	0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000,
553227569Sphilip	0x00000000, 0x32143320, 0xfaa4fa50, 0x00000100, 0x00000000,
554227569Sphilip	0x00000000, 0x0000320a, 0x00000000, 0x00000000, 0x00000000,
555227569Sphilip	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
556227569Sphilip	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
557227569Sphilip	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
558227569Sphilip	0x00000000, 0x00000000, 0x00000000, 0x00100000, 0x0010f400,
559227569Sphilip	0x00000100, 0x0001e800, 0x00000000, 0x00000000, 0x00000000,
560227569Sphilip	0x400000ff, 0x00080922, 0x88a00010, 0x00000000, 0x40000000,
561227569Sphilip	0x003e4180, 0x00000000, 0x0000002c, 0x0000002c, 0x00000000,
562227569Sphilip	0x00000000, 0x00000000, 0x00000000, 0x00000040, 0x00000000,
563227569Sphilip	0x00000000, 0x00000001, 0x00000302, 0x00000e00, 0x00ff0000,
564227569Sphilip	0x00000000, 0x00010380, 0x00481043, 0x00000000, 0xafe68e30,
565227569Sphilip	0xfd14e000, 0x9c0a9f6b, 0x00000000, 0x0000a000, 0x00000000,
566227569Sphilip	0x00200400, 0x0040233c, 0x00000044, 0x00000000, 0x00000000,
567227569Sphilip	0x00000000, 0x00000000, 0x01002310, 0x10000fff, 0x04900000,
568227569Sphilip	0x00000001, 0x00000004, 0x1e1f2022, 0x0a0b0c0d, 0x00000000,
569227569Sphilip	0x14750604, 0x9280c00a, 0x00020028, 0x5f3ca3de, 0x2108ecff,
570227569Sphilip	0x000003ce, 0x192bb514, 0x00000000, 0x00000001, 0x00000000,
571227569Sphilip	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
572227569Sphilip	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001,
573227569Sphilip	0x201fff00, 0x2def0400, 0x03051000, 0x00000820, 0x00000000,
574227569Sphilip	0x00000000, 0xaaaaaaaa, 0x3c466478, 0x0cc80caa, 0x00000000,
575227569Sphilip	0x803e68c8, 0x4080a333, 0x00206c10, 0x009c4060, 0x01834061,
576227569Sphilip	0x00000400, 0x000003b5, 0x00000000, 0x20202020, 0x20202020,
577227569Sphilip	0x00000000, 0xfffffffc, 0x00000000, 0x00000000, 0x0ccb5380,
578227569Sphilip	0x15151501, 0xdfa90f01, 0x00000000, 0x0ebae9e6, 0x0d820820,
579227569Sphilip	0x07ffffef, 0x0fffffe7, 0x17ffffe5, 0x1fffffe4, 0x37ffffe3,
580227569Sphilip	0x3fffffe3, 0x57ffffe3, 0x5fffffe2, 0x7fffffe2, 0x7f3c7bba,
581227569Sphilip	0xf3307ff0, 0x0c000000, 0x20202020, 0x20202020, 0x00000001,
582227569Sphilip	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
583227569Sphilip	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
584227569Sphilip	0x20202020, 0x20202020, 0x20202020, 0x00000000, 0x18c43433,
585227569Sphilip	0x00f70081, 0x00140000, 0x0e4548d8, 0x54214514, 0x02025830,
586227569Sphilip	0x71c0d388, 0x00000000, 0x00d86fff, 0x6e36d97b, 0x71400087,
587227569Sphilip	0x000c0db6, 0x6db6246f, 0x6d9b66db, 0x6d8c6dba, 0x00040000,
588227569Sphilip	0xdb003012, 0x04924914, 0x21084210, 0xf7d7ffde, 0xc2034080,
589227569Sphilip	0x10142c00
590227569Sphilip};
591227569Sphilip
592227569Sphilipstatic const struct athn_ini ar9285_1_2_ini = {
593227569Sphilip	.nregs		= __arraycount(ar9285_1_2_regs),
594227569Sphilip	.regs		= ar9285_1_2_regs,
595227569Sphilip	.vals_5g20	= NULL,	/* 2GHz only. */
596227569Sphilip#ifndef IEEE80211_NO_HT
597227569Sphilip	.vals_5g40	= NULL,	/* 2GHz only. */
598227569Sphilip	.vals_2g40	= ar9285_1_2_vals_2g40,
599227569Sphilip#endif
600227569Sphilip	.vals_2g20	= ar9285_1_2_vals_2g20,
601227569Sphilip	.ncmregs	= __arraycount(ar9285_1_2_cm_regs),
602227569Sphilip	.cmregs		= ar9285_1_2_cm_regs,
603227569Sphilip	.cmvals		= ar9285_1_2_cm_vals,
604227569Sphilip};
605280501Sarybchik
606227569Sphilip#if NATHN_USB > 0
607227569Sphilip/*
608227569Sphilip * AR9271 programming.
609227569Sphilip */
610280501Sarybchikstatic const uint16_t ar9271_regs[] = {
611227569Sphilip	P(0x01030), P(0x01070), P(0x010b0), P(0x010f0), P(0x08014),
612280501Sarybchik	P(0x0801c), P(0x08318), P(0x09804), P(0x09820), P(0x09824),
613227569Sphilip	P(0x09828), P(0x09834), P(0x09838), P(0x09840), P(0x09844),
614227569Sphilip	P(0x09848), P(0x0a848), P(0x09850), P(0x09858), P(0x0985c),
615227569Sphilip	P(0x09860), P(0x09864), P(0x09868), P(0x0986c), P(0x09910),
616227569Sphilip	P(0x09914), P(0x09918), P(0x09924), P(0x09944), P(0x09960),
617227569Sphilip	P(0x09964), P(0x099b8), P(0x099bc), P(0x099c0), P(0x099c4),
618227569Sphilip	P(0x099c8), P(0x099cc), P(0x099d0), P(0x099d4), P(0x099d8),
619227569Sphilip	P(0x09a00), P(0x09a04), P(0x09a08), P(0x09a0c), P(0x09a10),
620227569Sphilip	P(0x09a14), P(0x09a18), P(0x09a1c), P(0x09a20), P(0x09a24),
621227569Sphilip	P(0x09a28), P(0x09a2c), P(0x09a30), P(0x09a34), P(0x09a38),
622227569Sphilip	P(0x09a3c), P(0x09a40), P(0x09a44), P(0x09a48), P(0x09a4c),
623227569Sphilip	P(0x09a50), P(0x09a54), P(0x09a58), P(0x09a5c), P(0x09a60),
624227569Sphilip	P(0x09a64), P(0x09a68), P(0x09a6c), P(0x09a70), P(0x09a74),
625227569Sphilip	P(0x09a78), P(0x09a7c), P(0x09a80), P(0x09a84), P(0x09a88),
626227569Sphilip	P(0x09a8c), P(0x09a90), P(0x09a94), P(0x09a98), P(0x09a9c),
627227569Sphilip	P(0x09aa0), P(0x09aa4), P(0x09aa8), P(0x09aac), P(0x09ab0),
628227569Sphilip	P(0x09ab4), P(0x09ab8), P(0x09abc), P(0x09ac0), P(0x09ac4),
629227569Sphilip	P(0x09ac8), P(0x09acc), P(0x09ad0), P(0x09ad4), P(0x09ad8),
630227569Sphilip	P(0x09adc), P(0x09ae0), P(0x09ae4), P(0x09ae8), P(0x09aec),
631227569Sphilip	P(0x09af0), P(0x09af4), P(0x09af8), P(0x09afc), P(0x09b00),
632227569Sphilip	P(0x09b04), P(0x09b08), P(0x09b0c), P(0x09b10), P(0x09b14),
633227569Sphilip	P(0x09b18), P(0x09b1c), P(0x09b20), P(0x09b24), P(0x09b28),
634227569Sphilip	P(0x09b2c), P(0x09b30), P(0x09b34), P(0x09b38), P(0x09b3c),
635227569Sphilip	P(0x09b40), P(0x09b44), P(0x09b48), P(0x09b4c), P(0x09b50),
636227569Sphilip	P(0x09b54), P(0x09b58), P(0x09b5c), P(0x09b60), P(0x09b64),
637227569Sphilip	P(0x09b68), P(0x09b6c), P(0x09b70), P(0x09b74), P(0x09b78),
638227569Sphilip	P(0x09b7c), P(0x09b80), P(0x09b84), P(0x09b88), P(0x09b8c),
639227569Sphilip	P(0x09b90), P(0x09b94), P(0x09b98), P(0x09b9c), P(0x09ba0),
640227569Sphilip	P(0x09ba4), P(0x09ba8), P(0x09bac), P(0x09bb0), P(0x09bb4),
641227569Sphilip	P(0x09bb8), P(0x09bbc), P(0x09bc0), P(0x09bc4), P(0x09bc8),
642227569Sphilip	P(0x09bcc), P(0x09bd0), P(0x09bd4), P(0x09bd8), P(0x09bdc),
643227569Sphilip	P(0x09be0), P(0x09be4), P(0x09be8), P(0x09bec), P(0x09bf0),
644227569Sphilip	P(0x09bf4), P(0x09bf8), P(0x09bfc), P(0x0aa00), P(0x0aa04),
645227569Sphilip	P(0x0aa08), P(0x0aa0c), P(0x0aa10), P(0x0aa14), P(0x0aa18),
646227569Sphilip	P(0x0aa1c), P(0x0aa20), P(0x0aa24), P(0x0aa28), P(0x0aa2c),
647227569Sphilip	P(0x0aa30), P(0x0aa34), P(0x0aa38), P(0x0aa3c), P(0x0aa40),
648227569Sphilip	P(0x0aa44), P(0x0aa48), P(0x0aa4c), P(0x0aa50), P(0x0aa54),
649227569Sphilip	P(0x0aa58), P(0x0aa5c), P(0x0aa60), P(0x0aa64), P(0x0aa68),
650227569Sphilip	P(0x0aa6c), P(0x0aa70), P(0x0aa74), P(0x0aa78), P(0x0aa7c),
651227569Sphilip	P(0x0aa80), P(0x0aa84), P(0x0aa88), P(0x0aa8c), P(0x0aa90),
652227569Sphilip	P(0x0aa94), P(0x0aa98), P(0x0aa9c), P(0x0aaa0), P(0x0aaa4),
653227569Sphilip	P(0x0aaa8), P(0x0aaac), P(0x0aab0), P(0x0aab4), P(0x0aab8),
654227569Sphilip	P(0x0aabc), P(0x0aac0), P(0x0aac4), P(0x0aac8), P(0x0aacc),
655227569Sphilip	P(0x0aad0), P(0x0aad4), P(0x0aad8), P(0x0aadc), P(0x0aae0),
656227569Sphilip	P(0x0aae4), P(0x0aae8), P(0x0aaec), P(0x0aaf0), P(0x0aaf4),
657227569Sphilip	P(0x0aaf8), P(0x0aafc), P(0x0ab00), P(0x0ab04), P(0x0ab08),
658227569Sphilip	P(0x0ab0c), P(0x0ab10), P(0x0ab14), P(0x0ab18), P(0x0ab1c),
659227569Sphilip	P(0x0ab20), P(0x0ab24), P(0x0ab28), P(0x0ab2c), P(0x0ab30),
660227569Sphilip	P(0x0ab34), P(0x0ab38), P(0x0ab3c), P(0x0ab40), P(0x0ab44),
661227569Sphilip	P(0x0ab48), P(0x0ab4c), P(0x0ab50), P(0x0ab54), P(0x0ab58),
662227569Sphilip	P(0x0ab5c), P(0x0ab60), P(0x0ab64), P(0x0ab68), P(0x0ab6c),
663227569Sphilip	P(0x0ab70), P(0x0ab74), P(0x0ab78), P(0x0ab7c), P(0x0ab80),
664227569Sphilip	P(0x0ab84), P(0x0ab88), P(0x0ab8c), P(0x0ab90), P(0x0ab94),
665227569Sphilip	P(0x0ab98), P(0x0ab9c), P(0x0aba0), P(0x0aba4), P(0x0aba8),
666227569Sphilip	P(0x0abac), P(0x0abb0), P(0x0abb4), P(0x0abb8), P(0x0abbc),
667227569Sphilip	P(0x0abc0), P(0x0abc4), P(0x0abc8), P(0x0abcc), P(0x0abd0),
668227569Sphilip	P(0x0abd4), P(0x0abd8), P(0x0abdc), P(0x0abe0), P(0x0abe4),
669227569Sphilip	P(0x0abe8), P(0x0abec), P(0x0abf0), P(0x0abf4), P(0x0abf8),
670227569Sphilip	P(0x0abfc), P(0x0a204), P(0x0a20c), P(0x0b20c), P(0x0a21c),
671227569Sphilip	P(0x0a230), P(0x0a250), P(0x0a358)
672227569Sphilip};
673227569Sphilip
674280501Sarybchik#ifndef IEEE80211_NO_HT
675280501Sarybchikstatic const uint32_t ar9271_vals_2g40[] = {
676227569Sphilip	0x000002c0, 0x00000318, 0x00007c70, 0x00000000, 0x10801600,
677227569Sphilip	0x12e00057, 0x00006880, 0x000003c4, 0x02020200, 0x01000e0e,
678227569Sphilip	0x3a020001, 0x00000e0e, 0x00000007, 0x206a012e, 0x03721620,
679280501Sarybchik	0x00001053, 0x00001053, 0x6d4000e2, 0x7ec84d2e, 0x3137605e,
680227569Sphilip	0x00058d18, 0x0001ce00, 0x5ac640d0, 0x06903881, 0x30002310,
681227569Sphilip	0x00001130, 0x00000016, 0xd00a800d, 0xffbc1020, 0x00000000,
682227569Sphilip	0x00000000, 0x0000421c, 0x00000c00, 0x05eea6d4, 0x06336f77,
683227569Sphilip	0x6af6532f, 0x08f186c8, 0x00046384, 0x00000000, 0x00000000,
684227569Sphilip	0x00058084, 0x00058088, 0x0005808c, 0x00058100, 0x00058104,
685227569Sphilip	0x00058108, 0x0005810c, 0x00058110, 0x00058114, 0x00058180,
686227569Sphilip	0x00058184, 0x00058188, 0x0005818c, 0x00058190, 0x00058194,
687227569Sphilip	0x000581a0, 0x0005820c, 0x000581a8, 0x00058284, 0x00058288,
688227569Sphilip	0x00058224, 0x00058290, 0x00058300, 0x00058304, 0x00058308,
689227569Sphilip	0x0005830c, 0x00058380, 0x00058384, 0x00068700, 0x00068704,
690227569Sphilip	0x00068708, 0x0006870c, 0x00068780, 0x00068784, 0x00078b00,
691227569Sphilip	0x00078b04, 0x00078b08, 0x00078b0c, 0x00078b80, 0x00078b84,
692227569Sphilip	0x00078b88, 0x00078b8c, 0x00078b90, 0x000caf80, 0x000caf84,
693227569Sphilip	0x000caf88, 0x000caf8c, 0x000caf90, 0x000db30c, 0x000db310,
694227569Sphilip	0x000db384, 0x000db388, 0x000db324, 0x000eb704, 0x000eb6a4,
695227569Sphilip	0x000eb6a8, 0x000eb710, 0x000eb714, 0x000eb720, 0x000eb724,
696227569Sphilip	0x000eb728, 0x000eb72c, 0x000eb7a0, 0x000eb7a4, 0x000eb7a8,
697227569Sphilip	0x000eb7b0, 0x000eb7b4, 0x000eb7b8, 0x000eb7a5, 0x000eb7a9,
698227569Sphilip	0x000eb7ad, 0x000eb7b1, 0x000eb7b5, 0x000eb7b9, 0x000eb7c5,
699227569Sphilip	0x000eb7c9, 0x000eb7d1, 0x000eb7d5, 0x000eb7d9, 0x000eb7c6,
700227569Sphilip	0x000eb7ca, 0x000eb7ce, 0x000eb7d2, 0x000eb7d6, 0x000eb7c3,
701227569Sphilip	0x000eb7c7, 0x000eb7cb, 0x000eb7cf, 0x000eb7d7, 0x000eb7db,
702227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
703227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
704227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
705227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
706227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
707227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
708227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
709227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x00058084, 0x00058088,
710227569Sphilip	0x0005808c, 0x00058100, 0x00058104, 0x00058108, 0x0005810c,
711227569Sphilip	0x00058110, 0x00058114, 0x00058180, 0x00058184, 0x00058188,
712227569Sphilip	0x0005818c, 0x00058190, 0x00058194, 0x000581a0, 0x0005820c,
713227569Sphilip	0x000581a8, 0x00058284, 0x00058288, 0x00058224, 0x00058290,
714227569Sphilip	0x00058300, 0x00058304, 0x00058308, 0x0005830c, 0x00058380,
715227569Sphilip	0x00058384, 0x00068700, 0x00068704, 0x00068708, 0x0006870c,
716227569Sphilip	0x00068780, 0x00068784, 0x00078b00, 0x00078b04, 0x00078b08,
717227569Sphilip	0x00078b0c, 0x00078b80, 0x00078b84, 0x00078b88, 0x00078b8c,
718227569Sphilip	0x00078b90, 0x000caf80, 0x000caf84, 0x000caf88, 0x000caf8c,
719227569Sphilip	0x000caf90, 0x000db30c, 0x000db310, 0x000db384, 0x000db388,
720227569Sphilip	0x000db324, 0x000eb704, 0x000eb6a4, 0x000eb6a8, 0x000eb710,
721227569Sphilip	0x000eb714, 0x000eb720, 0x000eb724, 0x000eb728, 0x000eb72c,
722227569Sphilip	0x000eb7a0, 0x000eb7a4, 0x000eb7a8, 0x000eb7b0, 0x000eb7b4,
723227569Sphilip	0x000eb7b8, 0x000eb7a5, 0x000eb7a9, 0x000eb7ad, 0x000eb7b1,
724227569Sphilip	0x000eb7b5, 0x000eb7b9, 0x000eb7c5, 0x000eb7c9, 0x000eb7d1,
725227569Sphilip	0x000eb7d5, 0x000eb7d9, 0x000eb7c6, 0x000eb7ca, 0x000eb7ce,
726227569Sphilip	0x000eb7d2, 0x000eb7d6, 0x000eb7c3, 0x000eb7c7, 0x000eb7cb,
727227569Sphilip	0x000eb7cf, 0x000eb7d7, 0x000eb7db, 0x000eb7db, 0x000eb7db,
728227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
729227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
730227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
731227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
732227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
733227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
734227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
735227569Sphilip	0x000eb7db, 0x00000004, 0x0001f000, 0x0001f000, 0x1883800a,
736227569Sphilip	0x00000210, 0x0004a000, 0x7999aa0e
737227569Sphilip};
738227569Sphilip#endif
739227569Sphilip
740227569Sphilipstatic const uint32_t ar9271_vals_2g20[] = {
741227569Sphilip	0x00000160, 0x0000018c, 0x00003e38, 0x00000000, 0x08400b00,
742227569Sphilip	0x12e0002b, 0x00003440, 0x00000300, 0x02020200, 0x01000e0e,
743227569Sphilip	0x3a020001, 0x00000e0e, 0x00000007, 0x206a012e, 0x03721620,
744227569Sphilip	0x00001053, 0x00001053, 0x6d4000e2, 0x7ec84d2e, 0x3137605e,
745227569Sphilip	0x00058d18, 0x0001ce00, 0x5ac640d0, 0x06903881, 0x30002310,
746227569Sphilip	0x00000898, 0x0000000b, 0xd00a800d, 0xffbc1020, 0x00000000,
747227569Sphilip	0x00000000, 0x0000421c, 0x00000c00, 0x05eea6d4, 0x06336f77,
748227569Sphilip	0x6af6532f, 0x08f186c8, 0x00046384, 0x00000000, 0x00000000,
749227569Sphilip	0x00058084, 0x00058088, 0x0005808c, 0x00058100, 0x00058104,
750227569Sphilip	0x00058108, 0x0005810c, 0x00058110, 0x00058114, 0x00058180,
751227569Sphilip	0x00058184, 0x00058188, 0x0005818c, 0x00058190, 0x00058194,
752227569Sphilip	0x000581a0, 0x0005820c, 0x000581a8, 0x00058284, 0x00058288,
753227569Sphilip	0x00058224, 0x00058290, 0x00058300, 0x00058304, 0x00058308,
754227569Sphilip	0x0005830c, 0x00058380, 0x00058384, 0x00068700, 0x00068704,
755227569Sphilip	0x00068708, 0x0006870c, 0x00068780, 0x00068784, 0x00078b00,
756227569Sphilip	0x00078b04, 0x00078b08, 0x00078b0c, 0x00078b80, 0x00078b84,
757227569Sphilip	0x00078b88, 0x00078b8c, 0x00078b90, 0x000caf80, 0x000caf84,
758227569Sphilip	0x000caf88, 0x000caf8c, 0x000caf90, 0x000db30c, 0x000db310,
759227569Sphilip	0x000db384, 0x000db388, 0x000db324, 0x000eb704, 0x000eb6a4,
760227569Sphilip	0x000eb6a8, 0x000eb710, 0x000eb714, 0x000eb720, 0x000eb724,
761227569Sphilip	0x000eb728, 0x000eb72c, 0x000eb7a0, 0x000eb7a4, 0x000eb7a8,
762227569Sphilip	0x000eb7b0, 0x000eb7b4, 0x000eb7b8, 0x000eb7a5, 0x000eb7a9,
763227569Sphilip	0x000eb7ad, 0x000eb7b1, 0x000eb7b5, 0x000eb7b9, 0x000eb7c5,
764227569Sphilip	0x000eb7c9, 0x000eb7d1, 0x000eb7d5, 0x000eb7d9, 0x000eb7c6,
765227569Sphilip	0x000eb7ca, 0x000eb7ce, 0x000eb7d2, 0x000eb7d6, 0x000eb7c3,
766227569Sphilip	0x000eb7c7, 0x000eb7cb, 0x000eb7cf, 0x000eb7d7, 0x000eb7db,
767227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
768227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
769227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
770227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
771227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
772227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
773227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
774227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x00058084, 0x00058088,
775227569Sphilip	0x0005808c, 0x00058100, 0x00058104, 0x00058108, 0x0005810c,
776227569Sphilip	0x00058110, 0x00058114, 0x00058180, 0x00058184, 0x00058188,
777227569Sphilip	0x0005818c, 0x00058190, 0x00058194, 0x000581a0, 0x0005820c,
778227569Sphilip	0x000581a8, 0x00058284, 0x00058288, 0x00058224, 0x00058290,
779227569Sphilip	0x00058300, 0x00058304, 0x00058308, 0x0005830c, 0x00058380,
780227569Sphilip	0x00058384, 0x00068700, 0x00068704, 0x00068708, 0x0006870c,
781227569Sphilip	0x00068780, 0x00068784, 0x00078b00, 0x00078b04, 0x00078b08,
782227569Sphilip	0x00078b0c, 0x00078b80, 0x00078b84, 0x00078b88, 0x00078b8c,
783227569Sphilip	0x00078b90, 0x000caf80, 0x000caf84, 0x000caf88, 0x000caf8c,
784227569Sphilip	0x000caf90, 0x000db30c, 0x000db310, 0x000db384, 0x000db388,
785227569Sphilip	0x000db324, 0x000eb704, 0x000eb6a4, 0x000eb6a8, 0x000eb710,
786227569Sphilip	0x000eb714, 0x000eb720, 0x000eb724, 0x000eb728, 0x000eb72c,
787227569Sphilip	0x000eb7a0, 0x000eb7a4, 0x000eb7a8, 0x000eb7b0, 0x000eb7b4,
788227569Sphilip	0x000eb7b8, 0x000eb7a5, 0x000eb7a9, 0x000eb7ad, 0x000eb7b1,
789227569Sphilip	0x000eb7b5, 0x000eb7b9, 0x000eb7c5, 0x000eb7c9, 0x000eb7d1,
790227569Sphilip	0x000eb7d5, 0x000eb7d9, 0x000eb7c6, 0x000eb7ca, 0x000eb7ce,
791227569Sphilip	0x000eb7d2, 0x000eb7d6, 0x000eb7c3, 0x000eb7c7, 0x000eb7cb,
792227569Sphilip	0x000eb7cf, 0x000eb7d7, 0x000eb7db, 0x000eb7db, 0x000eb7db,
793227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
794227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
795227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
796280501Sarybchik	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
797280501Sarybchik	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
798227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
799227569Sphilip	0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db, 0x000eb7db,
800227569Sphilip	0x000eb7db, 0x00000004, 0x0001f000, 0x0001f000, 0x1883800a,
801280501Sarybchik	0x00000108, 0x0004a000, 0x7999aa0e
802227569Sphilip};
803227569Sphilip
804227569Sphilipstatic const uint16_t ar9271_cm_regs[] = {
805227569Sphilip	P(0x0000c), P(0x00030), P(0x00034), P(0x00040), P(0x00044),
806227569Sphilip	P(0x00048), P(0x0004c), P(0x00050), P(0x00054), P(0x00800),
807227569Sphilip	P(0x00804), P(0x00808), P(0x0080c), P(0x00810), P(0x00814),
808227569Sphilip	P(0x00818), P(0x0081c), P(0x00820), P(0x00824), P(0x01040),
809227843Smarius	P(0x01044), P(0x01048), P(0x0104c), P(0x01050), P(0x01054),
810227569Sphilip	P(0x01058), P(0x0105c), P(0x01060), P(0x01064), P(0x01230),
811227569Sphilip	P(0x01270), P(0x01038), P(0x01078), P(0x010b8), P(0x010f8),
812227569Sphilip	P(0x01138), P(0x01178), P(0x011b8), P(0x011f8), P(0x01238),
813227569Sphilip	P(0x01278), P(0x012b8), P(0x012f8), P(0x01338), P(0x01378),
814227569Sphilip	P(0x013b8), P(0x013f8), P(0x01438), P(0x01478), P(0x014b8),
815227569Sphilip	P(0x014f8), P(0x01538), P(0x01578), P(0x015b8), P(0x015f8),
816227569Sphilip	P(0x01638), P(0x01678), P(0x016b8), P(0x016f8), P(0x01738),
817227569Sphilip	P(0x01778), P(0x017b8), P(0x017f8), P(0x0103c), P(0x0107c),
818227569Sphilip	P(0x010bc), P(0x010fc), P(0x0113c), P(0x0117c), P(0x011bc),
819227569Sphilip	P(0x011fc), P(0x0123c), P(0x0127c), P(0x012bc), P(0x012fc),
820227569Sphilip	P(0x0133c), P(0x0137c), P(0x013bc), P(0x013fc), P(0x0143c),
821	P(0x0147c), P(0x04030), P(0x0403c), P(0x04024), P(0x04060),
822	P(0x04064), P(0x08004), P(0x08008), P(0x0800c), P(0x08018),
823	P(0x08020), P(0x08038), P(0x0803c), P(0x08048), P(0x08054),
824	P(0x08058), P(0x0805c), P(0x08060), P(0x08064), P(0x08070),
825	P(0x080b0), P(0x080b4), P(0x080b8), P(0x080bc), P(0x080c0),
826	P(0x080c4), P(0x080c8), P(0x080cc), P(0x080d0), P(0x080d4),
827	P(0x080d8), P(0x080e0), P(0x080e4), P(0x080e8), P(0x080ec),
828	P(0x080f0), P(0x080f4), P(0x080f8), P(0x080fc), P(0x08100),
829	P(0x08104), P(0x08108), P(0x0810c), P(0x08110), P(0x08118),
830	P(0x0811c), P(0x08120), P(0x08124), P(0x08128), P(0x0812c),
831	P(0x08130), P(0x08134), P(0x08138), P(0x0813c), P(0x08144),
832	P(0x08168), P(0x0816c), P(0x08170), P(0x08174), P(0x08178),
833	P(0x0817c), P(0x081c0), P(0x081d0), P(0x081ec), P(0x081f0),
834	P(0x081f4), P(0x081f8), P(0x081fc), P(0x08200), P(0x08204),
835	P(0x08208), P(0x0820c), P(0x08210), P(0x08214), P(0x08218),
836	P(0x0821c), P(0x08220), P(0x08224), P(0x08228), P(0x0822c),
837	P(0x08230), P(0x08234), P(0x08238), P(0x0823c), P(0x08240),
838	P(0x08244), P(0x08248), P(0x0824c), P(0x08250), P(0x08254),
839	P(0x08258), P(0x0825c), P(0x08260), P(0x08264), P(0x08270),
840	P(0x08274), P(0x08278), P(0x0827c), P(0x08284), P(0x08288),
841	P(0x0828c), P(0x08294), P(0x08298), P(0x0829c), P(0x08300),
842	P(0x08314), P(0x08328), P(0x0832c), P(0x08330), P(0x08334),
843	P(0x08338), P(0x0833c), P(0x08340), P(0x08344), P(0x07010),
844	P(0x07034), P(0x07038), P(0x07800), P(0x07804), P(0x07808),
845	P(0x0780c), P(0x07810), P(0x07814), P(0x0781c), P(0x07828),
846	P(0x0782c), P(0x07830), P(0x07834), P(0x0783c), P(0x07840),
847	P(0x07844), P(0x07848), P(0x0784c), P(0x07850), P(0x07854),
848	P(0x07858), P(0x0785c), P(0x07860), P(0x07864), P(0x07868),
849	P(0x07870), P(0x09808), P(0x0980c), P(0x09810), P(0x09814),
850	P(0x0981c), P(0x0982c), P(0x09830), P(0x0983c), P(0x0984c),
851	P(0x09854), P(0x09900), P(0x09904), P(0x09908), P(0x0990c),
852	P(0x0991c), P(0x09920), P(0x09928), P(0x0992c), P(0x09934),
853	P(0x09938), P(0x0993c), P(0x09940), P(0x09948), P(0x0994c),
854	P(0x09954), P(0x09958), P(0x09968), P(0x09970), P(0x09974),
855	P(0x09978), P(0x0997c), P(0x09980), P(0x09984), P(0x09988),
856	P(0x0998c), P(0x09990), P(0x09994), P(0x09998), P(0x0999c),
857	P(0x099a0), P(0x099a4), P(0x099a8), P(0x099ac), P(0x099b0),
858	P(0x099b4), P(0x099dc), P(0x099e0), P(0x099e4), P(0x099e8),
859	P(0x099ec), P(0x099f0), P(0x0a208), P(0x0a210), P(0x0a214),
860	P(0x0a218), P(0x0a220), P(0x0a224), P(0x0a228), P(0x0a22c),
861	P(0x0a234), P(0x0a238), P(0x0a244), P(0x0a248), P(0x0a24c),
862	P(0x0a254), P(0x0a258), P(0x0a25c), P(0x0a260), P(0x0a268),
863	P(0x0a26c), P(0x0a388), P(0x0a38c), P(0x0a390), P(0x0a39c),
864	P(0x0a3a0), P(0x0a3a4), P(0x0a3a8), P(0x0a3ac), P(0x0a3b0),
865	P(0x0a3b4), P(0x0a3b8), P(0x0a3bc), P(0x0a3c0), P(0x0a3c4),
866	P(0x0a3cc), P(0x0a3d0), P(0x0a3d4), P(0x0a3e4), P(0x0a3e8),
867	P(0x0a3ec), P(0x0a3f0), P(0x0a3f4), P(0x0d270), P(0x0d35c),
868	P(0x0d360), P(0x0d364), P(0x0d368), P(0x0d36c), P(0x0d370),
869	P(0x0d374), P(0x0d378), P(0x0d37c), P(0x0d380), P(0x0d384)
870};
871
872static const uint32_t ar9271_cm_vals[] = {
873	0x00000000, 0x00020045, 0x00000005, 0x00000000, 0x00000008,
874	0x00000008, 0x00000010, 0x00000000, 0x0000001f, 0x00000000,
875	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
876	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002ffc0f,
877	0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f,
878	0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x00000000,
879	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
880	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
881	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
882	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
883	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
884	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
885	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
886	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
887	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
888	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
889	0x00000000, 0x00000002, 0x00000002, 0x0000001f, 0x00000000,
890	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000700,
891	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
892	0x00000000, 0x000fc78f, 0x0000000f, 0x00000000, 0x00000000,
893	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x2a80001a,
894	0x05dc01e0, 0x1f402710, 0x01f40000, 0x00001e00, 0x00000000,
895	0x00400000, 0xffffffff, 0x0000ffff, 0x003f3f3f, 0x00000000,
896	0x00000000, 0x00000000, 0x00000000, 0x00020000, 0x00020000,
897	0x00000001, 0x00000052, 0x00000000, 0x00000168, 0x000100aa,
898	0x00003210, 0x08f04810, 0x00000000, 0x00000000, 0x00000000,
899	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff,
900	0x00000000, 0x00000000, 0x32143320, 0xfaa4fa50, 0x00000100,
901	0x00000000, 0x00000000, 0x0000320a, 0x00000000, 0x00000000,
902	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
903	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
904	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
905	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100000,
906	0x0010f400, 0x00000100, 0x0001e800, 0x00000000, 0x00000000,
907	0x00000000, 0x400000ff, 0x00080922, 0x88a00010, 0x00000000,
908	0x40000000, 0x003e4180, 0x00000000, 0x0000002c, 0x0000002c,
909	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000040,
910	0x00000000, 0x00000000, 0x00000001, 0x00000302, 0x00000e00,
911	0x00ff0000, 0x00000000, 0x00010380, 0x00581043, 0x00000030,
912	0x00000002, 0x000004c2, 0x00140000, 0x0e4548d8, 0x54214514,
913	0x02025820, 0x71c0d388, 0x924934a8, 0x00000000, 0x66964300,
914	0x8db6d961, 0x8db6d96c, 0x6140008b, 0x72ee0a72, 0xbbfffffc,
915	0x000c0db6, 0x6db6246f, 0x6d9b66db, 0x6d8c6dba, 0x00040000,
916	0xdb003012, 0x04924914, 0x21084210, 0xf7d7ffde, 0xc2034080,
917	0x10142c00, 0x00000000, 0xafe68e30, 0xfd14e000, 0x9c0a9f6b,
918	0x00000000, 0x0000a000, 0x00000000, 0x00200400, 0x0040233c,
919	0x00000044, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
920	0x10000fff, 0x04900000, 0x00000001, 0x00000004, 0x1e1f2022,
921	0x0a0b0c0d, 0x00000000, 0x14750604, 0x9280c00a, 0x00020028,
922	0x5f3ca3de, 0x0108ecff, 0x000003ce, 0x192bb514, 0x00000000,
923	0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
924	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
925	0x00000000, 0x00000001, 0x201fff00, 0x2def0400, 0x03051000,
926	0x00000820, 0x00000000, 0x00000000, 0xaaaaaaaa, 0x3c466478,
927	0x0cc80caa, 0x00000000, 0x803e68c8, 0x4080a333, 0x00206c10,
928	0x009c4060, 0x01834061, 0x00000400, 0x000003b5, 0x00000000,
929	0x20202020, 0x20202020, 0x00000000, 0xfffffffc, 0x00000000,
930	0x00000000, 0x0ccb5380, 0x15151501, 0xdfa90f01, 0x00000000,
931	0x0ebae9e6, 0x0c000000, 0x20202020, 0x20202020, 0x00000001,
932	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
933	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
934	0x20202020, 0x20202020, 0x20202020, 0x00000000, 0x18c43433,
935	0x00f70081, 0x01036a2f, 0x00000000, 0x0d820820, 0x07ffffef,
936	0x0fffffe7, 0x17ffffe5, 0x1fffffe4, 0x37ffffe3, 0x3fffffe3,
937	0x57ffffe3, 0x5fffffe2, 0x7fffffe2, 0x7f3c7bba, 0xf3307ff0
938};
939
940static const struct athn_ini ar9271_ini = {
941	.nregs		= __arraycount(ar9271_regs),
942	.regs		= ar9271_regs,
943	.vals_5g20	= NULL,	/* 2GHz only. */
944#ifndef IEEE80211_NO_HT
945	.vals_5g40	= NULL,	/* 2GHz only. */
946	.vals_2g40	= ar9271_vals_2g40,
947#endif
948	.vals_2g20	= ar9271_vals_2g20,
949	.ncmregs	= __arraycount(ar9271_cm_regs),
950	.cmregs		= ar9271_cm_regs,
951	.cmvals		= ar9271_cm_vals,
952};
953#endif	/* NATHN_USB */
954
955/*
956 * AR9285 1.2 Tx gains.
957 */
958static const uint16_t ar9285_1_2_tx_gain_regs[] = {
959	P(0x0a300), P(0x0a304), P(0x0a308), P(0x0a30c), P(0x0a310),
960	P(0x0a314), P(0x0a318), P(0x0a31c), P(0x0a320), P(0x0a324),
961	P(0x0a328), P(0x0a32c), P(0x0a330), P(0x0a334), P(0x0a338),
962	P(0x0a33c), P(0x0a340), P(0x0a344), P(0x0a348), P(0x0a34c),
963	P(0x0a350), P(0x0a354), P(0x07814), P(0x07828), P(0x07830),
964	P(0x07838), P(0x0783c), P(0x07840), P(0x0786c), P(0x07820),
965	P(0x0a274), P(0x0a278), P(0x0a27c), P(0x0a394), P(0x0a398),
966	P(0x0a3dc), P(0x0a3e0)
967};
968
969static const uint32_t ar9285_1_2_tx_gain_vals_2g[] = {
970	0x00000000, 0x00009200, 0x00010208, 0x00019608, 0x00022618,
971	0x0002a6c9, 0x00031710, 0x00035718, 0x00038758, 0x0003c75a,
972	0x0004075c, 0x0004475e, 0x0004679f, 0x000487df, 0x0003891e,
973	0x0003a95e, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df,
974	0x0003e9df, 0x0003e9df, 0x924934a8, 0x26d2491b, 0xedb6d96e,
975	0xfac68801, 0x0001fffe, 0xffeb1a20, 0x48609eb4, 0x00000c04,
976	0x0a21a652, 0x39ce739c, 0x050e039c, 0x39ce739c, 0x0000039c,
977	0x39ce739c, 0x0000039c
978};
979
980static const struct athn_gain ar9285_1_2_tx_gain = {
981	__arraycount(ar9285_1_2_tx_gain_regs),
982	ar9285_1_2_tx_gain_regs,
983	NULL,	/* 2GHz only. */
984	ar9285_1_2_tx_gain_vals_2g
985};
986
987static const uint32_t ar9285_1_2_tx_gain_high_power_vals_2g[] = {
988	0x00000000, 0x00006200, 0x00008201, 0x0000b240, 0x0000d241,
989	0x0000f600, 0x00012800, 0x00016802, 0x0001b805, 0x00021a80,
990	0x00028b00, 0x0002ab40, 0x0002cd80, 0x00033d82, 0x0003891e,
991	0x0003a95e, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df,
992	0x0003e9df, 0x0003e9df, 0x924934a8, 0x26d2491b, 0xedb6d96e,
993	0xfac68803, 0x0001fffe, 0xffeb1a20, 0x08609ebe, 0x00000c00,
994	0x0a216652, 0x0e739ce7, 0x050380e7, 0x0e739ce7, 0x000000e7,
995	0x0e739ce7, 0x000000e7
996};
997
998static const struct athn_gain ar9285_1_2_tx_gain_high_power = {
999	__arraycount(ar9285_1_2_tx_gain_regs),
1000	ar9285_1_2_tx_gain_regs,
1001	NULL,	/* 2GHz only. */
1002	ar9285_1_2_tx_gain_high_power_vals_2g
1003};
1004
1005/*
1006 * AR9285 XE 2.0 Tx gains.
1007 */
1008static const uint32_t ar9285_2_0_tx_gain_vals_2g[] = {
1009	0x00000000, 0x00009200, 0x00010208, 0x00019608, 0x00022618,
1010	0x0002a6c9, 0x00031710, 0x00035718, 0x00038758, 0x0003c75a,
1011	0x0004075c, 0x0004475e, 0x0004679f, 0x000487df, 0x0003891e,
1012	0x0003a95e, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df,
1013	0x0003e9df, 0x0003e9df, 0x92497ca8, 0x2ad2491b, 0xedb6da6e,
1014	0xdac71441, 0x2481f6fe, 0xba5f638c, 0x48609eb4, 0x00000c04,
1015	0x0a21a652, 0x39ce739c, 0x050e039c, 0x39ce739c, 0x0000039c,
1016	0x39ce739c, 0x0000039c
1017};
1018
1019static const struct athn_gain ar9285_2_0_tx_gain = {
1020	__arraycount(ar9285_1_2_tx_gain_regs),
1021	ar9285_1_2_tx_gain_regs,
1022	NULL,	/* 2GHz only. */
1023	ar9285_2_0_tx_gain_vals_2g
1024};
1025
1026static const uint32_t ar9285_2_0_tx_gain_high_power_vals_2g[] = {
1027	0x00000000, 0x00006200, 0x00008201, 0x0000b240, 0x0000d241,
1028	0x0000f600, 0x00012800, 0x00016802, 0x0001b805, 0x00021a80,
1029	0x00028b00, 0x0002ab40, 0x0002cd80, 0x00033d82, 0x0003891e,
1030	0x0003a95e, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df,
1031	0x0003e9df, 0x0003e9df, 0x92497ca8, 0x2ad2491b, 0xedb6da6e,
1032	0xdac71443, 0x2481f6fe, 0xba5f638c, 0x08609ebe, 0x00000c00,
1033	0x0a216652, 0x0e739ce7, 0x050380e7, 0x0e739ce7, 0x000000e7,
1034	0x0e739ce7, 0x000000e7
1035};
1036
1037static const struct athn_gain ar9285_2_0_tx_gain_high_power = {
1038	__arraycount(ar9285_1_2_tx_gain_regs),
1039	ar9285_1_2_tx_gain_regs,
1040	NULL,	/* 2GHz only. */
1041	ar9285_2_0_tx_gain_high_power_vals_2g
1042};
1043
1044#if NATHN_USB > 0
1045/*
1046 * AR9271 Tx gains.
1047 */
1048static const uint16_t ar9271_tx_gain_regs[] = {
1049	P(0x0a300), P(0x0a304), P(0x0a308), P(0x0a30c), P(0x0a310),
1050	P(0x0a314), P(0x0a318), P(0x0a31c), P(0x0a320), P(0x0a324),
1051	P(0x0a328), P(0x0a32c), P(0x0a330), P(0x0a334), P(0x0a338),
1052	P(0x0a33c), P(0x0a340), P(0x0a344), P(0x0a348), P(0x0a34c),
1053	P(0x0a350), P(0x0a354), P(0x07838), P(0x07824), P(0x0786c),
1054	P(0x07820), P(0x0a274), P(0x0a278), P(0x0a27c), P(0x0a394),
1055	P(0x0a398), P(0x0a3dc), P(0x0a3e0)
1056};
1057
1058static const uint32_t ar9271_tx_gain_vals_2g[] = {
1059	0x00000000, 0x00009200, 0x00010208, 0x00019608, 0x0001e610,
1060	0x0002d6d0, 0x00039758, 0x0003b759, 0x0003d75a, 0x0004175c,
1061	0x0004575e, 0x0004979f, 0x0004d7df, 0x000368de, 0x0003891e,
1062	0x0003a95e, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df,
1063	0x0003e9df, 0x0003e9df, 0x00000029, 0x00d8abff, 0x48609eb4,
1064	0x00000c04, 0x0a218652, 0x3bdef7bd, 0x050e83bd, 0x3bdef7bd,
1065	0x000003bd, 0x3bdef7bd, 0x000003bd
1066};
1067
1068static const struct athn_gain ar9271_tx_gain = {
1069	__arraycount(ar9271_tx_gain_regs),
1070	ar9271_tx_gain_regs,
1071	NULL,	/* 2GHz only. */
1072	ar9271_tx_gain_vals_2g
1073};
1074
1075static const uint32_t ar9271_tx_gain_high_power_vals_2g[] = {
1076	0x00010000, 0x00016200, 0x00018201, 0x0001b240, 0x0001d241,
1077	0x0001f600, 0x00022800, 0x00026802, 0x0002b805, 0x0002ea41,
1078	0x00038b00, 0x0003ab40, 0x0003cd80, 0x000368de, 0x0003891e,
1079	0x0003a95e, 0x0003e9df, 0x0003e9df, 0x0003e9df, 0x0003e9df,
1080	0x0003e9df, 0x0003e9df, 0x0000002b, 0x00d8a7ff, 0x08609eba,
1081	0x00000c00, 0x0a214652, 0x0e739ce7, 0x05018063, 0x06318c63,
1082	0x00000063, 0x06318c63, 0x00000063
1083};
1084
1085static const struct athn_gain ar9271_tx_gain_high_power = {
1086	__arraycount(ar9271_tx_gain_regs),
1087	ar9271_tx_gain_regs,
1088	NULL,	/* 2GHz only. */
1089	ar9271_tx_gain_high_power_vals_2g
1090};
1091#endif	/* NATHN_USB */
1092
1093#endif /* _ARN9285REG_H_ */
1094