xref: /openbsd/sys/dev/ic/ar9287reg.h (revision 792ad11e)
1*792ad11eSstsp /*	$OpenBSD: ar9287reg.h,v 1.6 2019/03/29 11:04:40 stsp Exp $	*/
2498e8a28Sdamien 
3498e8a28Sdamien /*-
4498e8a28Sdamien  * Copyright (c) 2009 Damien Bergamini <damien.bergamini@free.fr>
5498e8a28Sdamien  * Copyright (c) 2008-2009 Atheros Communications Inc.
6498e8a28Sdamien  *
7498e8a28Sdamien  * Permission to use, copy, modify, and/or distribute this software for any
8498e8a28Sdamien  * purpose with or without fee is hereby granted, provided that the above
9498e8a28Sdamien  * copyright notice and this permission notice appear in all copies.
10498e8a28Sdamien  *
11498e8a28Sdamien  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12498e8a28Sdamien  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13498e8a28Sdamien  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14498e8a28Sdamien  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15498e8a28Sdamien  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16498e8a28Sdamien  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17498e8a28Sdamien  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18498e8a28Sdamien  */
19498e8a28Sdamien 
20498e8a28Sdamien #define AR9287_MAX_CHAINS	2
21498e8a28Sdamien 
229d1f2812Sstsp #define AR9287_PHY_CCA_MIN_GOOD_VAL_2GHZ	(-127)
239d1f2812Sstsp #define AR9287_PHY_CCA_MAX_GOOD_VAL_2GHZ	(-97)
24498e8a28Sdamien 
25498e8a28Sdamien /*
26498e8a28Sdamien  * Analog registers.
27498e8a28Sdamien  */
28498e8a28Sdamien #define AR9287_AN_RF2G3_CH0		0x7808
29498e8a28Sdamien #define AR9287_AN_RF2G3_CH1		0x785c
30498e8a28Sdamien #define AR9287_AN_TXPC0			0x7898
31498e8a28Sdamien #define AR9287_AN_TOP2			0x78b4
32498e8a28Sdamien 
33498e8a28Sdamien /* Bits for AR9287_AN_RF2G3_CH[01]. */
34498e8a28Sdamien #define AR9287_AN_RF2G3_OB_PAL_OFF_M	0x0001c000
35498e8a28Sdamien #define AR9287_AN_RF2G3_OB_PAL_OFF_S	14
36bd6ea91dSdamien #define AR9287_AN_RF2G3_OB_QAM_M	0x000e0000
37bd6ea91dSdamien #define AR9287_AN_RF2G3_OB_QAM_S	17
38bd6ea91dSdamien #define AR9287_AN_RF2G3_OB_PSK_M	0x00700000
39bd6ea91dSdamien #define AR9287_AN_RF2G3_OB_PSK_S	20
40bd6ea91dSdamien #define AR9287_AN_RF2G3_OB_CCK_M	0x03800000
41bd6ea91dSdamien #define AR9287_AN_RF2G3_OB_CCK_S	23
42bd6ea91dSdamien #define AR9287_AN_RF2G3_DB2_M		0x1c000000
43bd6ea91dSdamien #define AR9287_AN_RF2G3_DB2_S		26
44bd6ea91dSdamien #define AR9287_AN_RF2G3_DB1_M		0xe0000000
45bd6ea91dSdamien #define AR9287_AN_RF2G3_DB1_S		29
46498e8a28Sdamien 
47498e8a28Sdamien /* Bits for AR9287_AN_TXPC0. */
48498e8a28Sdamien #define AR9287_AN_TXPC0_TXPCMODE_M		0x0000c000
49498e8a28Sdamien #define AR9287_AN_TXPC0_TXPCMODE_S		14
50498e8a28Sdamien #define AR9287_AN_TXPC0_TXPCMODE_NORMAL		0
51498e8a28Sdamien #define AR9287_AN_TXPC0_TXPCMODE_TEST		1
52498e8a28Sdamien #define AR9287_AN_TXPC0_TXPCMODE_TEMPSENSE	2
53498e8a28Sdamien #define AR9287_AN_TXPC0_TXPCMODE_ATBTEST	3
54498e8a28Sdamien 
55498e8a28Sdamien /* Bits for AR9287_AN_TOP2. */
56498e8a28Sdamien #define AR9287_AN_TOP2_XPABIAS_LVL_M	0xc0000000
57498e8a28Sdamien #define AR9287_AN_TOP2_XPABIAS_LVL_S	30
58498e8a28Sdamien 
59498e8a28Sdamien /*
60498e8a28Sdamien  * ROM layout used by AR9287 (2GHz only).
61498e8a28Sdamien  */
62498e8a28Sdamien #define AR9287_EEP_START_LOC		128
63*792ad11eSstsp #define AR9287_HTC_EEP_START_LOC	256
64498e8a28Sdamien #define AR9287_NUM_2G_CAL_PIERS		3
65498e8a28Sdamien #define AR9287_NUM_2G_CCK_TARGET_POWERS	3
66498e8a28Sdamien #define AR9287_NUM_2G_20_TARGET_POWERS	3
67498e8a28Sdamien #define AR9287_NUM_2G_40_TARGET_POWERS	3
68498e8a28Sdamien #define AR9287_NUM_CTLS			12
69498e8a28Sdamien #define AR9287_NUM_BAND_EDGES		4
70498e8a28Sdamien #define AR9287_NUM_PD_GAINS		4
71498e8a28Sdamien #define AR9287_PD_GAINS_IN_MASK 	4
72498e8a28Sdamien #define AR9287_PD_GAIN_ICEPTS		1
73498e8a28Sdamien #define AR9287_MAX_RATE_POWER		63
74498e8a28Sdamien #define AR9287_NUM_RATES		16
75498e8a28Sdamien 
76498e8a28Sdamien struct ar9287_base_eep_header {
77498e8a28Sdamien 	uint16_t	length;
78498e8a28Sdamien 	uint16_t	checksum;
79498e8a28Sdamien 	uint16_t	version;
80498e8a28Sdamien 	uint8_t		opCapFlags;
81498e8a28Sdamien 	uint8_t		eepMisc;
82498e8a28Sdamien #define AR9287_EEPMISC_BIG_ENDIAN	0x01
83498e8a28Sdamien #define AR9287_EEPMISC_WOW		0x02
84498e8a28Sdamien 
85498e8a28Sdamien 	uint16_t	regDmn[2];
86498e8a28Sdamien 	uint8_t		macAddr[6];
87498e8a28Sdamien 	uint8_t		rxMask;
88498e8a28Sdamien 	uint8_t		txMask;
89498e8a28Sdamien 	uint16_t	rfSilent;
90498e8a28Sdamien 	uint16_t	blueToothOptions;
91498e8a28Sdamien 	uint16_t	deviceCap;
92498e8a28Sdamien 	uint32_t	binBuildNumber;
93498e8a28Sdamien 	uint8_t		deviceType;
94498e8a28Sdamien 	/* End of common header. */
95498e8a28Sdamien 	uint8_t		openLoopPwrCntl;
96498e8a28Sdamien 	int8_t		pwrTableOffset;
97498e8a28Sdamien 	int8_t		tempSensSlope;
98498e8a28Sdamien 	int8_t		tempSensSlopePalOn;
99498e8a28Sdamien 	uint8_t		futureBase[29];
100498e8a28Sdamien } __packed;
101498e8a28Sdamien 
102498e8a28Sdamien struct ar9287_modal_eep_header {
103498e8a28Sdamien 	uint32_t	antCtrlChain[AR9287_MAX_CHAINS];
104498e8a28Sdamien 	uint32_t	antCtrlCommon;
105498e8a28Sdamien 	int8_t		antennaGainCh[AR9287_MAX_CHAINS];
106498e8a28Sdamien 	uint8_t		switchSettling;
107498e8a28Sdamien 	uint8_t		txRxAttenCh[AR9287_MAX_CHAINS];
108498e8a28Sdamien 	uint8_t		rxTxMarginCh[AR9287_MAX_CHAINS];
109498e8a28Sdamien 	int8_t		adcDesiredSize;
110498e8a28Sdamien 	uint8_t		txEndToXpaOff;
111498e8a28Sdamien 	uint8_t		txEndToRxOn;
112498e8a28Sdamien 	uint8_t		txFrameToXpaOn;
113498e8a28Sdamien 	uint8_t		thresh62;
114498e8a28Sdamien 	int8_t		noiseFloorThreshCh[AR9287_MAX_CHAINS];
115498e8a28Sdamien 	uint8_t		xpdGain;
116498e8a28Sdamien 	uint8_t		xpd;
117498e8a28Sdamien 	int8_t		iqCalICh[AR9287_MAX_CHAINS];
118498e8a28Sdamien 	int8_t		iqCalQCh[AR9287_MAX_CHAINS];
119498e8a28Sdamien 	uint8_t		pdGainOverlap;
120498e8a28Sdamien 	uint8_t		xpaBiasLvl;
121498e8a28Sdamien 	uint8_t		txFrameToDataStart;
122498e8a28Sdamien 	uint8_t		txFrameToPaOn;
123498e8a28Sdamien 	uint8_t		ht40PowerIncForPdadc;
124498e8a28Sdamien 	uint8_t		bswAtten[AR9287_MAX_CHAINS];
125498e8a28Sdamien 	uint8_t		bswMargin[AR9287_MAX_CHAINS];
126498e8a28Sdamien 	uint8_t		swSettleHt40;
127498e8a28Sdamien 	uint8_t		version;
128498e8a28Sdamien 	uint8_t		db1;
129498e8a28Sdamien 	uint8_t		db2;
130498e8a28Sdamien 	uint8_t		ob_cck;
131498e8a28Sdamien 	uint8_t		ob_psk;
132498e8a28Sdamien 	uint8_t		ob_qam;
133498e8a28Sdamien 	uint8_t		ob_pal_off;
134498e8a28Sdamien 	uint8_t		futureModal[30];
135498e8a28Sdamien 	struct		ar_spur_chan spurChans[AR_EEPROM_MODAL_SPURS];
136498e8a28Sdamien } __packed;
137498e8a28Sdamien 
138498e8a28Sdamien struct ar9287_cal_data_per_freq {
139498e8a28Sdamien 	uint8_t	pwrPdg[AR9287_NUM_PD_GAINS][AR9287_PD_GAIN_ICEPTS];
140498e8a28Sdamien 	uint8_t	vpdPdg[AR9287_NUM_PD_GAINS][AR9287_PD_GAIN_ICEPTS];
141498e8a28Sdamien } __packed;
142498e8a28Sdamien 
143498e8a28Sdamien union ar9287_cal_data_per_freq_u {
144498e8a28Sdamien 	struct ar_cal_data_per_freq_olpc	calDataOpen;
145498e8a28Sdamien 	struct ar9287_cal_data_per_freq		calDataClose;
146498e8a28Sdamien } __packed;
147498e8a28Sdamien 
148498e8a28Sdamien struct ar9287_cal_ctl_data {
149498e8a28Sdamien 	struct ar_cal_ctl_edges
150498e8a28Sdamien 	    ctlEdges[AR9287_MAX_CHAINS][AR9287_NUM_BAND_EDGES];
151498e8a28Sdamien } __packed;
152498e8a28Sdamien 
153498e8a28Sdamien struct ar9287_eeprom {
154498e8a28Sdamien 	struct	ar9287_base_eep_header baseEepHeader;
155498e8a28Sdamien 	uint8_t custData[32];
156498e8a28Sdamien 	struct	ar9287_modal_eep_header modalHeader;
157498e8a28Sdamien 	uint8_t	calFreqPier2G[AR9287_NUM_2G_CAL_PIERS];
158498e8a28Sdamien 	union	ar9287_cal_data_per_freq_u
159498e8a28Sdamien 	    calPierData2G[AR9287_MAX_CHAINS][AR9287_NUM_2G_CAL_PIERS];
160498e8a28Sdamien 	struct	ar_cal_target_power_leg
161498e8a28Sdamien 	    calTargetPowerCck[AR9287_NUM_2G_CCK_TARGET_POWERS];
162498e8a28Sdamien 	struct	ar_cal_target_power_leg
163498e8a28Sdamien 	    calTargetPower2G[AR9287_NUM_2G_20_TARGET_POWERS];
164498e8a28Sdamien 	struct	ar_cal_target_power_ht
165498e8a28Sdamien 	    calTargetPower2GHT20[AR9287_NUM_2G_20_TARGET_POWERS];
166498e8a28Sdamien 	struct	ar_cal_target_power_ht
167498e8a28Sdamien 	    calTargetPower2GHT40[AR9287_NUM_2G_40_TARGET_POWERS];
168498e8a28Sdamien 	uint8_t	ctlIndex[AR9287_NUM_CTLS];
169498e8a28Sdamien 	struct	ar9287_cal_ctl_data ctlData[AR9287_NUM_CTLS];
170498e8a28Sdamien 	uint8_t	padding;
171498e8a28Sdamien } __packed;
172498e8a28Sdamien 
173498e8a28Sdamien /* Macro to "pack" registers to 16-bit to save some .rodata space. */
174498e8a28Sdamien #define P(x)	(x)
175498e8a28Sdamien 
176498e8a28Sdamien /*
177498e8a28Sdamien  * AR9287 1.1 initialization values.
178498e8a28Sdamien  */
179498e8a28Sdamien static const uint16_t ar9287_1_1_regs[] = {
180498e8a28Sdamien 	P(0x01030), P(0x01070), P(0x010b0), P(0x010f0), P(0x08014),
181498e8a28Sdamien 	P(0x0801c), P(0x08120), P(0x081d0), P(0x08318), P(0x09804),
182498e8a28Sdamien 	P(0x09820), P(0x09824), P(0x09828), P(0x09834), P(0x09838),
183498e8a28Sdamien 	P(0x09840), P(0x09844), P(0x09850), P(0x09858), P(0x0985c),
184498e8a28Sdamien 	P(0x09860), P(0x09864), P(0x09868), P(0x0986c), P(0x09914),
185498e8a28Sdamien 	P(0x09918), P(0x09924), P(0x09944), P(0x09960), P(0x0a960),
186498e8a28Sdamien 	P(0x09964), P(0x0c968), P(0x099b8), P(0x099bc), P(0x099c0),
187498e8a28Sdamien 	P(0x0a204), P(0x0a20c), P(0x0b20c), P(0x0a21c), P(0x0a230),
188498e8a28Sdamien 	P(0x0a250), P(0x0a358), P(0x0a3d8)
189498e8a28Sdamien };
190498e8a28Sdamien 
191498e8a28Sdamien static const uint32_t ar9287_1_1_vals_2g40[] = {
192498e8a28Sdamien 	0x000002c0, 0x00000318, 0x00007c70, 0x00000000, 0x10801600,
193498e8a28Sdamien 	0x12e00057, 0x08f04810, 0x0000320a, 0x00006880, 0x000003c4,
194498e8a28Sdamien 	0x02020200, 0x01000e0e, 0x3a020001, 0x00000e0e, 0x00000007,
195498e8a28Sdamien 	0x206a012e, 0x037216a0, 0x6d4000e2, 0x7ec84d2e, 0x3139605e,
196498e8a28Sdamien 	0x00058d20, 0x0001ce00, 0x5ac640d0, 0x06903881, 0x00001130,
197498e8a28Sdamien 	0x00000016, 0xd00a8a0d, 0xefbc1010, 0x00000010, 0x00000010,
198498e8a28Sdamien 	0x00000210, 0x000003ce, 0x0000001c, 0x00000c00, 0x05eea6d4,
199498e8a28Sdamien 	0x00000444, 0x00000000, 0x00000000, 0x1883800a, 0x00000210,
200498e8a28Sdamien 	0x0004a000, 0x7999aa0e, 0x00000000
201498e8a28Sdamien };
202498e8a28Sdamien 
203498e8a28Sdamien static const uint32_t ar9287_1_1_vals_2g20[] = {
204498e8a28Sdamien 	0x00000160, 0x0000018c, 0x00003e38, 0x00000000, 0x08400b00,
205498e8a28Sdamien 	0x12e0002b, 0x08f04810, 0x0000320a, 0x00003440, 0x00000300,
206498e8a28Sdamien 	0x02020200, 0x01000e0e, 0x3a020001, 0x00000e0e, 0x00000007,
207498e8a28Sdamien 	0x206a012e, 0x037216a0, 0x6c4000e2, 0x7ec84d2e, 0x31395d5e,
208498e8a28Sdamien 	0x00058d20, 0x0001ce00, 0x5ac640d0, 0x06903881, 0x00000898,
209498e8a28Sdamien 	0x0000000b, 0xd00a8a0d, 0xefbc1010, 0x00000010, 0x00000010,
210498e8a28Sdamien 	0x00000210, 0x000003ce, 0x0000001c, 0x00000c00, 0x05eea6d4,
211498e8a28Sdamien 	0x00000444, 0x00000000, 0x00000000, 0x1883800a, 0x00000108,
212498e8a28Sdamien 	0x0004a000, 0x7999aa0e, 0x00000000
213498e8a28Sdamien };
214498e8a28Sdamien 
215498e8a28Sdamien static const uint16_t ar9287_1_1_cm_regs[] = {
216498e8a28Sdamien 	P(0x0000c), P(0x00030), P(0x00034), P(0x00040), P(0x00044),
217498e8a28Sdamien 	P(0x00048), P(0x0004c), P(0x00050), P(0x00054), P(0x00800),
218498e8a28Sdamien 	P(0x00804), P(0x00808), P(0x0080c), P(0x00810), P(0x00814),
219498e8a28Sdamien 	P(0x00818), P(0x0081c), P(0x00820), P(0x00824), P(0x01040),
220498e8a28Sdamien 	P(0x01044), P(0x01048), P(0x0104c), P(0x01050), P(0x01054),
221498e8a28Sdamien 	P(0x01058), P(0x0105c), P(0x01060), P(0x01064), P(0x01230),
222498e8a28Sdamien 	P(0x01270), P(0x01038), P(0x01078), P(0x010b8), P(0x010f8),
223498e8a28Sdamien 	P(0x01138), P(0x01178), P(0x011b8), P(0x011f8), P(0x01238),
224498e8a28Sdamien 	P(0x01278), P(0x012b8), P(0x012f8), P(0x01338), P(0x01378),
225498e8a28Sdamien 	P(0x013b8), P(0x013f8), P(0x01438), P(0x01478), P(0x014b8),
226498e8a28Sdamien 	P(0x014f8), P(0x01538), P(0x01578), P(0x015b8), P(0x015f8),
227498e8a28Sdamien 	P(0x01638), P(0x01678), P(0x016b8), P(0x016f8), P(0x01738),
228498e8a28Sdamien 	P(0x01778), P(0x017b8), P(0x017f8), P(0x0103c), P(0x0107c),
229498e8a28Sdamien 	P(0x010bc), P(0x010fc), P(0x0113c), P(0x0117c), P(0x011bc),
230498e8a28Sdamien 	P(0x011fc), P(0x0123c), P(0x0127c), P(0x012bc), P(0x012fc),
231498e8a28Sdamien 	P(0x0133c), P(0x0137c), P(0x013bc), P(0x013fc), P(0x0143c),
232498e8a28Sdamien 	P(0x0147c), P(0x04030), P(0x0403c), P(0x04024), P(0x04060),
233498e8a28Sdamien 	P(0x04064), P(0x07010), P(0x07020), P(0x07034), P(0x07038),
234498e8a28Sdamien 	P(0x08004), P(0x08008), P(0x0800c), P(0x08018), P(0x08020),
235498e8a28Sdamien 	P(0x08038), P(0x0803c), P(0x08048), P(0x08054), P(0x08058),
236498e8a28Sdamien 	P(0x0805c), P(0x08060), P(0x08064), P(0x08070), P(0x080c0),
237498e8a28Sdamien 	P(0x080c4), P(0x080c8), P(0x080cc), P(0x080d0), P(0x080d4),
238498e8a28Sdamien 	P(0x080d8), P(0x080e0), P(0x080e4), P(0x080e8), P(0x080ec),
239498e8a28Sdamien 	P(0x080f0), P(0x080f4), P(0x080f8), P(0x080fc), P(0x08100),
240498e8a28Sdamien 	P(0x08104), P(0x08108), P(0x0810c), P(0x08110), P(0x08118),
241498e8a28Sdamien 	P(0x0811c), P(0x08124), P(0x08128), P(0x0812c), P(0x08130),
242498e8a28Sdamien 	P(0x08134), P(0x08138), P(0x0813c), P(0x08144), P(0x08168),
243498e8a28Sdamien 	P(0x0816c), P(0x08170), P(0x08174), P(0x08178), P(0x0817c),
244498e8a28Sdamien 	P(0x081c0), P(0x081c4), P(0x081d4), P(0x081ec), P(0x081f0),
245498e8a28Sdamien 	P(0x081f4), P(0x081f8), P(0x081fc), P(0x08200), P(0x08204),
246498e8a28Sdamien 	P(0x08208), P(0x0820c), P(0x08210), P(0x08214), P(0x08218),
247498e8a28Sdamien 	P(0x0821c), P(0x08220), P(0x08224), P(0x08228), P(0x0822c),
248498e8a28Sdamien 	P(0x08230), P(0x08234), P(0x08238), P(0x0823c), P(0x08240),
249498e8a28Sdamien 	P(0x08244), P(0x08248), P(0x0824c), P(0x08250), P(0x08254),
250498e8a28Sdamien 	P(0x08258), P(0x0825c), P(0x08260), P(0x08264), P(0x08270),
251498e8a28Sdamien 	P(0x08274), P(0x08278), P(0x0827c), P(0x08284), P(0x08288),
252498e8a28Sdamien 	P(0x0828c), P(0x08294), P(0x08298), P(0x0829c), P(0x08300),
253498e8a28Sdamien 	P(0x08314), P(0x08328), P(0x0832c), P(0x08330), P(0x08334),
254498e8a28Sdamien 	P(0x08338), P(0x0833c), P(0x08340), P(0x08344), P(0x08360),
255498e8a28Sdamien 	P(0x08364), P(0x08368), P(0x08370), P(0x08374), P(0x08378),
256498e8a28Sdamien 	P(0x0837c), P(0x08380), P(0x08384), P(0x08390), P(0x08394),
257498e8a28Sdamien 	P(0x08398), P(0x0839c), P(0x083a0), P(0x09808), P(0x0980c),
258498e8a28Sdamien 	P(0x09810), P(0x09814), P(0x0981c), P(0x0982c), P(0x09830),
259498e8a28Sdamien 	P(0x0983c), P(0x0984c), P(0x0a84c), P(0x09854), P(0x09900),
260498e8a28Sdamien 	P(0x09904), P(0x09908), P(0x0990c), P(0x09910), P(0x0991c),
261498e8a28Sdamien 	P(0x09920), P(0x0a920), P(0x09928), P(0x0992c), P(0x09930),
262498e8a28Sdamien 	P(0x0a930), P(0x09934), P(0x09938), P(0x0993c), P(0x09948),
263498e8a28Sdamien 	P(0x0994c), P(0x09954), P(0x09958), P(0x09940), P(0x0c95c),
264498e8a28Sdamien 	P(0x09970), P(0x09974), P(0x09978), P(0x0997c), P(0x099a0),
265498e8a28Sdamien 	P(0x099a4), P(0x099a8), P(0x099ac), P(0x099b0), P(0x099b4),
266498e8a28Sdamien 	P(0x099c4), P(0x099c8), P(0x099cc), P(0x099d0), P(0x099dc),
267498e8a28Sdamien 	P(0x099e0), P(0x099e4), P(0x099e8), P(0x099ec), P(0x099f0),
268498e8a28Sdamien 	P(0x099fc), P(0x0a208), P(0x0a210), P(0x0a214), P(0x0a218),
269498e8a28Sdamien 	P(0x0a220), P(0x0a224), P(0x0a228), P(0x0a22c), P(0x0a234),
270498e8a28Sdamien 	P(0x0a238), P(0x0a23c), P(0x0a240), P(0x0a244), P(0x0a248),
271498e8a28Sdamien 	P(0x0a24c), P(0x0a254), P(0x0a258), P(0x0a25c), P(0x0a260),
272498e8a28Sdamien 	P(0x0a264), P(0x0b264), P(0x0a268), P(0x0a26c), P(0x0b26c),
273498e8a28Sdamien 	P(0x0d270), P(0x0a278), P(0x0a27c), P(0x0d35c), P(0x0d360),
274498e8a28Sdamien 	P(0x0d364), P(0x0d368), P(0x0d36c), P(0x0d370), P(0x0d374),
275498e8a28Sdamien 	P(0x0d378), P(0x0d37c), P(0x0d380), P(0x0d384), P(0x0a388),
276498e8a28Sdamien 	P(0x0a38c), P(0x0a390), P(0x0a394), P(0x0a398), P(0x0b398),
277498e8a28Sdamien 	P(0x0a39c), P(0x0a3c8), P(0x0a3cc), P(0x0a3d0), P(0x0a3d4),
278498e8a28Sdamien 	P(0x0a3dc), P(0x0a3e0), P(0x0a3e4), P(0x0a3e8), P(0x0a3ec),
279498e8a28Sdamien 	P(0x0a3f0), P(0x0a3f4), P(0x0b3f4), P(0x0a7d8), P(0x07800),
280498e8a28Sdamien 	P(0x07804), P(0x07808), P(0x0780c), P(0x07810), P(0x07814),
281498e8a28Sdamien 	P(0x07818), P(0x0781c), P(0x07820), P(0x07824), P(0x07828),
282498e8a28Sdamien 	P(0x0782c), P(0x07830), P(0x07834), P(0x07838), P(0x0783c),
283498e8a28Sdamien 	P(0x07840), P(0x07844), P(0x07848), P(0x07850), P(0x07854),
284498e8a28Sdamien 	P(0x07858), P(0x0785c), P(0x07860), P(0x07864), P(0x07868),
285498e8a28Sdamien 	P(0x0786c), P(0x07870), P(0x07874), P(0x07878), P(0x0787c),
286498e8a28Sdamien 	P(0x07880), P(0x07884), P(0x07888), P(0x0788c), P(0x07890),
287498e8a28Sdamien 	P(0x07894), P(0x07898), P(0x0789c), P(0x078a0), P(0x078a4),
288498e8a28Sdamien 	P(0x078a8), P(0x078ac), P(0x078b0), P(0x078b4), P(0x078b8)
289498e8a28Sdamien };
290498e8a28Sdamien 
291498e8a28Sdamien static const uint32_t ar9287_1_1_cm_vals[] = {
292498e8a28Sdamien 	0x00000000, 0x00020015, 0x00000005, 0x00000000, 0x00000008,
293498e8a28Sdamien 	0x00000008, 0x00000010, 0x00000000, 0x0000001f, 0x00000000,
294498e8a28Sdamien 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
295498e8a28Sdamien 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002ffc0f,
296498e8a28Sdamien 	0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f,
297498e8a28Sdamien 	0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x00000000,
298498e8a28Sdamien 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
299498e8a28Sdamien 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
300498e8a28Sdamien 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
301498e8a28Sdamien 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
302498e8a28Sdamien 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
303498e8a28Sdamien 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
304498e8a28Sdamien 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
305498e8a28Sdamien 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
306498e8a28Sdamien 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
307498e8a28Sdamien 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
308498e8a28Sdamien 	0x00000000, 0x00000002, 0x00000002, 0x0000001f, 0x00000000,
309498e8a28Sdamien 	0x00000000, 0x00000033, 0x00000000, 0x00000002, 0x000004c2,
310498e8a28Sdamien 	0x00000000, 0x00000000, 0x00000000, 0x00000700, 0x00000000,
311498e8a28Sdamien 	0x00000000, 0x00000000, 0x40000000, 0x00000000, 0x00000000,
312498e8a28Sdamien 	0x000fc78f, 0x0000000f, 0x00000000, 0x00000000, 0x2a80001a,
313498e8a28Sdamien 	0x05dc01e0, 0x1f402710, 0x01f40000, 0x00001e00, 0x00000000,
314498e8a28Sdamien 	0x00400000, 0xffffffff, 0x0000ffff, 0x003f3f3f, 0x00000000,
315498e8a28Sdamien 	0x00000000, 0x00000000, 0x00000000, 0x00020000, 0x00020000,
316498e8a28Sdamien 	0x00000001, 0x00000052, 0x00000000, 0x00000168, 0x000100aa,
317498e8a28Sdamien 	0x00003210, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
318498e8a28Sdamien 	0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000,
319498e8a28Sdamien 	0x00000000, 0x18487320, 0xfaa4fa50, 0x00000100, 0x00000000,
320498e8a28Sdamien 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
321498e8a28Sdamien 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
322498e8a28Sdamien 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
323498e8a28Sdamien 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
324498e8a28Sdamien 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100000,
325498e8a28Sdamien 	0x0010f400, 0x00000100, 0x0001e800, 0x00000000, 0x00000000,
326498e8a28Sdamien 	0x00000000, 0x400000ff, 0x00080922, 0x88a00010, 0x00000000,
327498e8a28Sdamien 	0x40000000, 0x003e4180, 0x00000000, 0x0000002c, 0x0000002c,
328498e8a28Sdamien 	0x000000ff, 0x00000000, 0x00000000, 0x00000000, 0x00000040,
329498e8a28Sdamien 	0x00000000, 0x00000000, 0x00000007, 0x00000302, 0x00000e00,
330498e8a28Sdamien 	0x00ff0000, 0x00000000, 0x000107ff, 0x01c81043, 0xffffffff,
331498e8a28Sdamien 	0xffffffff, 0x00000000, 0x00000000, 0x000000ff, 0x00000000,
332498e8a28Sdamien 	0x00000000, 0xffffffff, 0xffffffff, 0x0fffffff, 0x0fffffff,
333498e8a28Sdamien 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xafe68e30,
334498e8a28Sdamien 	0xfd14e000, 0x9c0a9f6b, 0x00000000, 0x0000a000, 0x00000000,
335498e8a28Sdamien 	0x00200400, 0x0040233c, 0x0040233c, 0x00000044, 0x00000000,
336498e8a28Sdamien 	0x00000000, 0x00000000, 0x00000000, 0x10002310, 0x10000fff,
337498e8a28Sdamien 	0x04900000, 0x04900000, 0x00000001, 0x00000004, 0x00000000,
338498e8a28Sdamien 	0x00000000, 0x1e1f2022, 0x0a0b0c0d, 0x00000000, 0x9280c00a,
339498e8a28Sdamien 	0x00020028, 0x5f3ca3de, 0x0108ecff, 0x14750604, 0x004b6a8e,
340498e8a28Sdamien 	0x990bb514, 0x00000000, 0x00000001, 0x00000000, 0x00000000,
341498e8a28Sdamien 	0x00000001, 0x201fff00, 0x0c6f0000, 0x03051000, 0x00000820,
342498e8a28Sdamien 	0x06336f77, 0x6af6532f, 0x08f186c8, 0x00046384, 0x00000000,
343498e8a28Sdamien 	0x00000000, 0xaaaaaaaa, 0x3c466478, 0x0cc80caa, 0x00000000,
344498e8a28Sdamien 	0x00001042, 0x803e4788, 0x4080a333, 0x40206c10, 0x009c4060,
345498e8a28Sdamien 	0x01834061, 0x00000400, 0x000003b5, 0x233f7180, 0x20202020,
346498e8a28Sdamien 	0x20202020, 0x13c889af, 0x38490a20, 0x00000000, 0xfffffffc,
347498e8a28Sdamien 	0x00000000, 0x00000000, 0x0cdbd380, 0x0f0f0f01, 0xdfa91f01,
348498e8a28Sdamien 	0x00418a11, 0x00418a11, 0x00000000, 0x0e79e5c6, 0x0e79e5c6,
349498e8a28Sdamien 	0x00820820, 0x1ce739ce, 0x050701ce, 0x07ffffef, 0x0fffffe7,
350498e8a28Sdamien 	0x17ffffe5, 0x1fffffe4, 0x37ffffe3, 0x3fffffe3, 0x57ffffe3,
351498e8a28Sdamien 	0x5fffffe2, 0x7fffffe2, 0x7f3c7bba, 0xf3307ff0, 0x0c000000,
352498e8a28Sdamien 	0x20202020, 0x20202020, 0x1ce739ce, 0x000001ce, 0x000001ce,
353498e8a28Sdamien 	0x00000001, 0x00000246, 0x20202020, 0x20202020, 0x20202020,
354498e8a28Sdamien 	0x1ce739ce, 0x000001ce, 0x00000000, 0x18c43433, 0x00f70081,
355498e8a28Sdamien 	0x01036a1e, 0x00000000, 0x00000000, 0x000003f1, 0x00000800,
356498e8a28Sdamien 	0x6c35ffd2, 0x6db6c000, 0x6db6cb30, 0x6db6cb6c, 0x0501e200,
357498e8a28Sdamien 	0x0094128d, 0x976ee392, 0xf75ff6fc, 0x00040000, 0xdb003012,
358498e8a28Sdamien 	0x04924914, 0x21084210, 0x00140000, 0x0e4548d8, 0x54214514,
359498e8a28Sdamien 	0x02025830, 0x71c0d388, 0x934934a8, 0x00000000, 0x00000800,
360498e8a28Sdamien 	0x6c35ffd2, 0x6db6c000, 0x6db6cb30, 0x6db6cb6c, 0x0501e200,
361498e8a28Sdamien 	0x0094128d, 0x976ee392, 0xf75ff6fc, 0x00040000, 0xdb003012,
362498e8a28Sdamien 	0x04924914, 0x21084210, 0x001b6db0, 0x00376b63, 0x06db6db6,
363498e8a28Sdamien 	0x006d8000, 0x48100000, 0x00000000, 0x08000000, 0x0007ffd8,
364498e8a28Sdamien 	0x0007ffd8, 0x001c0020, 0x00060aeb, 0x40008080, 0x2a850160
365498e8a28Sdamien };
366498e8a28Sdamien 
367498e8a28Sdamien static const struct athn_ini ar9287_1_1_ini = {
368498e8a28Sdamien 	nitems(ar9287_1_1_regs),
369498e8a28Sdamien 	ar9287_1_1_regs,
370498e8a28Sdamien 	NULL,	/* 2GHz only. */
371498e8a28Sdamien 	NULL,	/* 2GHz only. */
372498e8a28Sdamien 	ar9287_1_1_vals_2g40,
373498e8a28Sdamien 	ar9287_1_1_vals_2g20,
374498e8a28Sdamien 	nitems(ar9287_1_1_cm_regs),
375498e8a28Sdamien 	ar9287_1_1_cm_regs,
376498e8a28Sdamien 	ar9287_1_1_cm_vals
377498e8a28Sdamien };
378498e8a28Sdamien 
379498e8a28Sdamien /*
380498e8a28Sdamien  * AR9287 1.1 Tx gains.
381498e8a28Sdamien  */
382498e8a28Sdamien static const uint16_t ar9287_1_1_tx_gain_regs[] = {
383498e8a28Sdamien 	P(0x0a300), P(0x0a304), P(0x0a308), P(0x0a30c), P(0x0a310),
384498e8a28Sdamien 	P(0x0a314), P(0x0a318), P(0x0a31c), P(0x0a320), P(0x0a324),
385498e8a28Sdamien 	P(0x0a328), P(0x0a32c), P(0x0a330), P(0x0a334), P(0x0a338),
386498e8a28Sdamien 	P(0x0a33c), P(0x0a340), P(0x0a344), P(0x0a348), P(0x0a34c),
387498e8a28Sdamien 	P(0x0a350), P(0x0a354), P(0x0a780), P(0x0a784), P(0x0a788),
388498e8a28Sdamien 	P(0x0a78c), P(0x0a790), P(0x0a794), P(0x0a798), P(0x0a79c),
389498e8a28Sdamien 	P(0x0a7a0), P(0x0a7a4), P(0x0a7a8), P(0x0a7ac), P(0x0a7b0),
390498e8a28Sdamien 	P(0x0a7b4), P(0x0a7b8), P(0x0a7bc), P(0x0a7c0), P(0x0a7c4),
391498e8a28Sdamien 	P(0x0a7c8), P(0x0a7cc), P(0x0a7d0), P(0x0a7d4), P(0x0a274)
392498e8a28Sdamien };
393498e8a28Sdamien 
394498e8a28Sdamien static const uint32_t ar9287_1_1_tx_gain_vals_2g[] = {
395498e8a28Sdamien 	0x00000000, 0x00004002, 0x00008004, 0x0000c00a, 0x0001000c,
396498e8a28Sdamien 	0x0001420b, 0x0001824a, 0x0001c44a, 0x0002064a, 0x0002484a,
397498e8a28Sdamien 	0x00028a4a, 0x0002cc4a, 0x00030e4a, 0x00034e8a, 0x00038e8c,
398498e8a28Sdamien 	0x0003cecc, 0x00040ed4, 0x00044edc, 0x00048ede, 0x0004cf1e,
399498e8a28Sdamien 	0x00050f5e, 0x00054f9e, 0x00000062, 0x00004064, 0x000080a4,
400498e8a28Sdamien 	0x0000c0aa, 0x000100ac, 0x000140b4, 0x000180f4, 0x0001c134,
401498e8a28Sdamien 	0x00020174, 0x0002417c, 0x0002817e, 0x0002c1be, 0x000301fe,
402498e8a28Sdamien 	0x000301fe, 0x000301fe, 0x000301fe, 0x000301fe, 0x000301fe,
403498e8a28Sdamien 	0x000301fe, 0x000301fe, 0x000301fe, 0x000301fe, 0x0a1aa000
404498e8a28Sdamien };
405498e8a28Sdamien 
406498e8a28Sdamien static const struct athn_gain ar9287_1_1_tx_gain = {
407498e8a28Sdamien 	nitems(ar9287_1_1_tx_gain_regs),
408498e8a28Sdamien 	ar9287_1_1_tx_gain_regs,
409498e8a28Sdamien 	NULL,	/* 2GHz only. */
410498e8a28Sdamien 	ar9287_1_1_tx_gain_vals_2g
411498e8a28Sdamien };
412498e8a28Sdamien 
413498e8a28Sdamien /*
414498e8a28Sdamien  * AR9287 1.1 Rx gains.
415498e8a28Sdamien  */
416498e8a28Sdamien static const uint16_t ar9287_1_1_rx_gain_regs[] = {
417498e8a28Sdamien 	P(0x09a00), P(0x09a04), P(0x09a08), P(0x09a0c), P(0x09a10),
418498e8a28Sdamien 	P(0x09a14), P(0x09a18), P(0x09a1c), P(0x09a20), P(0x09a24),
419498e8a28Sdamien 	P(0x09a28), P(0x09a2c), P(0x09a30), P(0x09a34), P(0x09a38),
420498e8a28Sdamien 	P(0x09a3c), P(0x09a40), P(0x09a44), P(0x09a48), P(0x09a4c),
421498e8a28Sdamien 	P(0x09a50), P(0x09a54), P(0x09a58), P(0x09a5c), P(0x09a60),
422498e8a28Sdamien 	P(0x09a64), P(0x09a68), P(0x09a6c), P(0x09a70), P(0x09a74),
423498e8a28Sdamien 	P(0x09a78), P(0x09a7c), P(0x09a80), P(0x09a84), P(0x09a88),
424498e8a28Sdamien 	P(0x09a8c), P(0x09a90), P(0x09a94), P(0x09a98), P(0x09a9c),
425498e8a28Sdamien 	P(0x09aa0), P(0x09aa4), P(0x09aa8), P(0x09aac), P(0x09ab0),
426498e8a28Sdamien 	P(0x09ab4), P(0x09ab8), P(0x09abc), P(0x09ac0), P(0x09ac4),
427498e8a28Sdamien 	P(0x09ac8), P(0x09acc), P(0x09ad0), P(0x09ad4), P(0x09ad8),
428498e8a28Sdamien 	P(0x09adc), P(0x09ae0), P(0x09ae4), P(0x09ae8), P(0x09aec),
429498e8a28Sdamien 	P(0x09af0), P(0x09af4), P(0x09af8), P(0x09afc), P(0x09b00),
430498e8a28Sdamien 	P(0x09b04), P(0x09b08), P(0x09b0c), P(0x09b10), P(0x09b14),
431498e8a28Sdamien 	P(0x09b18), P(0x09b1c), P(0x09b20), P(0x09b24), P(0x09b28),
432498e8a28Sdamien 	P(0x09b2c), P(0x09b30), P(0x09b34), P(0x09b38), P(0x09b3c),
433498e8a28Sdamien 	P(0x09b40), P(0x09b44), P(0x09b48), P(0x09b4c), P(0x09b50),
434498e8a28Sdamien 	P(0x09b54), P(0x09b58), P(0x09b5c), P(0x09b60), P(0x09b64),
435498e8a28Sdamien 	P(0x09b68), P(0x09b6c), P(0x09b70), P(0x09b74), P(0x09b78),
436498e8a28Sdamien 	P(0x09b7c), P(0x09b80), P(0x09b84), P(0x09b88), P(0x09b8c),
437498e8a28Sdamien 	P(0x09b90), P(0x09b94), P(0x09b98), P(0x09b9c), P(0x09ba0),
438498e8a28Sdamien 	P(0x09ba4), P(0x09ba8), P(0x09bac), P(0x09bb0), P(0x09bb4),
439498e8a28Sdamien 	P(0x09bb8), P(0x09bbc), P(0x09bc0), P(0x09bc4), P(0x09bc8),
440498e8a28Sdamien 	P(0x09bcc), P(0x09bd0), P(0x09bd4), P(0x09bd8), P(0x09bdc),
441498e8a28Sdamien 	P(0x09be0), P(0x09be4), P(0x09be8), P(0x09bec), P(0x09bf0),
442498e8a28Sdamien 	P(0x09bf4), P(0x09bf8), P(0x09bfc), P(0x0aa00), P(0x0aa04),
443498e8a28Sdamien 	P(0x0aa08), P(0x0aa0c), P(0x0aa10), P(0x0aa14), P(0x0aa18),
444498e8a28Sdamien 	P(0x0aa1c), P(0x0aa20), P(0x0aa24), P(0x0aa28), P(0x0aa2c),
445498e8a28Sdamien 	P(0x0aa30), P(0x0aa34), P(0x0aa38), P(0x0aa3c), P(0x0aa40),
446498e8a28Sdamien 	P(0x0aa44), P(0x0aa48), P(0x0aa4c), P(0x0aa50), P(0x0aa54),
447498e8a28Sdamien 	P(0x0aa58), P(0x0aa5c), P(0x0aa60), P(0x0aa64), P(0x0aa68),
448498e8a28Sdamien 	P(0x0aa6c), P(0x0aa70), P(0x0aa74), P(0x0aa78), P(0x0aa7c),
449498e8a28Sdamien 	P(0x0aa80), P(0x0aa84), P(0x0aa88), P(0x0aa8c), P(0x0aa90),
450498e8a28Sdamien 	P(0x0aa94), P(0x0aa98), P(0x0aa9c), P(0x0aaa0), P(0x0aaa4),
451498e8a28Sdamien 	P(0x0aaa8), P(0x0aaac), P(0x0aab0), P(0x0aab4), P(0x0aab8),
452498e8a28Sdamien 	P(0x0aabc), P(0x0aac0), P(0x0aac4), P(0x0aac8), P(0x0aacc),
453498e8a28Sdamien 	P(0x0aad0), P(0x0aad4), P(0x0aad8), P(0x0aadc), P(0x0aae0),
454498e8a28Sdamien 	P(0x0aae4), P(0x0aae8), P(0x0aaec), P(0x0aaf0), P(0x0aaf4),
455498e8a28Sdamien 	P(0x0aaf8), P(0x0aafc), P(0x0ab00), P(0x0ab04), P(0x0ab08),
456498e8a28Sdamien 	P(0x0ab0c), P(0x0ab10), P(0x0ab14), P(0x0ab18), P(0x0ab1c),
457498e8a28Sdamien 	P(0x0ab20), P(0x0ab24), P(0x0ab28), P(0x0ab2c), P(0x0ab30),
458498e8a28Sdamien 	P(0x0ab34), P(0x0ab38), P(0x0ab3c), P(0x0ab40), P(0x0ab44),
459498e8a28Sdamien 	P(0x0ab48), P(0x0ab4c), P(0x0ab50), P(0x0ab54), P(0x0ab58),
460498e8a28Sdamien 	P(0x0ab5c), P(0x0ab60), P(0x0ab64), P(0x0ab68), P(0x0ab6c),
461498e8a28Sdamien 	P(0x0ab70), P(0x0ab74), P(0x0ab78), P(0x0ab7c), P(0x0ab80),
462498e8a28Sdamien 	P(0x0ab84), P(0x0ab88), P(0x0ab8c), P(0x0ab90), P(0x0ab94),
463498e8a28Sdamien 	P(0x0ab98), P(0x0ab9c), P(0x0aba0), P(0x0aba4), P(0x0aba8),
464498e8a28Sdamien 	P(0x0abac), P(0x0abb0), P(0x0abb4), P(0x0abb8), P(0x0abbc),
465498e8a28Sdamien 	P(0x0abc0), P(0x0abc4), P(0x0abc8), P(0x0abcc), P(0x0abd0),
466498e8a28Sdamien 	P(0x0abd4), P(0x0abd8), P(0x0abdc), P(0x0abe0), P(0x0abe4),
467498e8a28Sdamien 	P(0x0abe8), P(0x0abec), P(0x0abf0), P(0x0abf4), P(0x0abf8),
468498e8a28Sdamien 	P(0x0abfc), P(0x09848), P(0x0a848)
469498e8a28Sdamien };
470498e8a28Sdamien 
471498e8a28Sdamien static const uint32_t ar9287_1_1_rx_gain_vals_2g[] = {
472498e8a28Sdamien 	0x0000a120, 0x0000a124, 0x0000a128, 0x0000a12c, 0x0000a130,
473498e8a28Sdamien 	0x0000a194, 0x0000a198, 0x0000a20c, 0x0000a210, 0x0000a284,
474498e8a28Sdamien 	0x0000a288, 0x0000a28c, 0x0000a290, 0x0000a294, 0x0000a2a0,
475498e8a28Sdamien 	0x0000a2a4, 0x0000a2a8, 0x0000a2ac, 0x0000a2b0, 0x0000a2b4,
476498e8a28Sdamien 	0x0000a2b8, 0x0000a2c4, 0x0000a708, 0x0000a70c, 0x0000a710,
477498e8a28Sdamien 	0x0000ab04, 0x0000ab08, 0x0000ab0c, 0x0000ab10, 0x0000ab14,
478498e8a28Sdamien 	0x0000ab18, 0x0000ab8c, 0x0000ab90, 0x0000ab94, 0x0000ab98,
479498e8a28Sdamien 	0x0000aba4, 0x0000aba8, 0x0000cb04, 0x0000cb08, 0x0000cb0c,
480498e8a28Sdamien 	0x0000cb10, 0x0000cb14, 0x0000cb18, 0x0000cb8c, 0x0000cb90,
481498e8a28Sdamien 	0x0000cf18, 0x0000cf24, 0x0000cf28, 0x0000d314, 0x0000d318,
482498e8a28Sdamien 	0x0000d38c, 0x0000d390, 0x0000d394, 0x0000d398, 0x0000d3a4,
483498e8a28Sdamien 	0x0000d3a8, 0x0000d3ac, 0x0000d3b0, 0x0000f380, 0x0000f384,
484498e8a28Sdamien 	0x0000f388, 0x0000f710, 0x0000f714, 0x0000f718, 0x0000fb10,
485498e8a28Sdamien 	0x0000fb14, 0x0000fb18, 0x0000fb8c, 0x0000fb90, 0x0000fb94,
486498e8a28Sdamien 	0x0000ff8c, 0x0000ff90, 0x0000ff94, 0x0000ffa0, 0x0000ffa4,
487498e8a28Sdamien 	0x0000ffa8, 0x0000ffac, 0x0000ffb0, 0x0000ffb4, 0x0000ffa1,
488498e8a28Sdamien 	0x0000ffa5, 0x0000ffa9, 0x0000ffad, 0x0000ffb1, 0x0000ffb5,
489498e8a28Sdamien 	0x0000ffb9, 0x0000ffc5, 0x0000ffc9, 0x0000ffcd, 0x0000ffd1,
490498e8a28Sdamien 	0x0000ffd5, 0x0000ffc2, 0x0000ffc6, 0x0000ffca, 0x0000ffce,
491498e8a28Sdamien 	0x0000ffd2, 0x0000ffd6, 0x0000ffda, 0x0000ffc7, 0x0000ffcb,
492498e8a28Sdamien 	0x0000ffcf, 0x0000ffd3, 0x0000ffd7, 0x0000ffdb, 0x0000ffdb,
493498e8a28Sdamien 	0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb,
494498e8a28Sdamien 	0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb,
495498e8a28Sdamien 	0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb,
496498e8a28Sdamien 	0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb,
497498e8a28Sdamien 	0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000a120, 0x0000a124,
498498e8a28Sdamien 	0x0000a128, 0x0000a12c, 0x0000a130, 0x0000a194, 0x0000a198,
499498e8a28Sdamien 	0x0000a20c, 0x0000a210, 0x0000a284, 0x0000a288, 0x0000a28c,
500498e8a28Sdamien 	0x0000a290, 0x0000a294, 0x0000a2a0, 0x0000a2a4, 0x0000a2a8,
501498e8a28Sdamien 	0x0000a2ac, 0x0000a2b0, 0x0000a2b4, 0x0000a2b8, 0x0000a2c4,
502498e8a28Sdamien 	0x0000a708, 0x0000a70c, 0x0000a710, 0x0000ab04, 0x0000ab08,
503498e8a28Sdamien 	0x0000ab0c, 0x0000ab10, 0x0000ab14, 0x0000ab18, 0x0000ab8c,
504498e8a28Sdamien 	0x0000ab90, 0x0000ab94, 0x0000ab98, 0x0000aba4, 0x0000aba8,
505498e8a28Sdamien 	0x0000cb04, 0x0000cb08, 0x0000cb0c, 0x0000cb10, 0x0000cb14,
506498e8a28Sdamien 	0x0000cb18, 0x0000cb8c, 0x0000cb90, 0x0000cf18, 0x0000cf24,
507498e8a28Sdamien 	0x0000cf28, 0x0000d314, 0x0000d318, 0x0000d38c, 0x0000d390,
508498e8a28Sdamien 	0x0000d394, 0x0000d398, 0x0000d3a4, 0x0000d3a8, 0x0000d3ac,
509498e8a28Sdamien 	0x0000d3b0, 0x0000f380, 0x0000f384, 0x0000f388, 0x0000f710,
510498e8a28Sdamien 	0x0000f714, 0x0000f718, 0x0000fb10, 0x0000fb14, 0x0000fb18,
511498e8a28Sdamien 	0x0000fb8c, 0x0000fb90, 0x0000fb94, 0x0000ff8c, 0x0000ff90,
512498e8a28Sdamien 	0x0000ff94, 0x0000ffa0, 0x0000ffa4, 0x0000ffa8, 0x0000ffac,
513498e8a28Sdamien 	0x0000ffb0, 0x0000ffb4, 0x0000ffa1, 0x0000ffa5, 0x0000ffa9,
514498e8a28Sdamien 	0x0000ffad, 0x0000ffb1, 0x0000ffb5, 0x0000ffb9, 0x0000ffc5,
515498e8a28Sdamien 	0x0000ffc9, 0x0000ffcd, 0x0000ffd1, 0x0000ffd5, 0x0000ffc2,
516498e8a28Sdamien 	0x0000ffc6, 0x0000ffca, 0x0000ffce, 0x0000ffd2, 0x0000ffd6,
517498e8a28Sdamien 	0x0000ffda, 0x0000ffc7, 0x0000ffcb, 0x0000ffcf, 0x0000ffd3,
518498e8a28Sdamien 	0x0000ffd7, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb,
519498e8a28Sdamien 	0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb,
520498e8a28Sdamien 	0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb,
521498e8a28Sdamien 	0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb,
522498e8a28Sdamien 	0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb,
523498e8a28Sdamien 	0x0000ffdb, 0x00001067, 0x00001067
524498e8a28Sdamien };
525498e8a28Sdamien 
526498e8a28Sdamien static const struct athn_gain ar9287_1_1_rx_gain = {
527498e8a28Sdamien 	nitems(ar9287_1_1_rx_gain_regs),
528498e8a28Sdamien 	ar9287_1_1_rx_gain_regs,
529498e8a28Sdamien 	NULL,	/* 2GHz only. */
530498e8a28Sdamien 	ar9287_1_1_rx_gain_vals_2g
531498e8a28Sdamien };
532