xref: /netbsd/sys/dev/ic/arn9380reg.h (revision e480ee86)
1 /*	$NetBSD: arn9380reg.h,v 1.1 2013/03/30 02:53:02 christos Exp $	*/
2 /*	$OpenBSD: ar9380reg.h,v 1.19 2012/10/20 09:54:20 stsp Exp $	*/
3 
4 /*-
5  * Copyright (c) 2010 Damien Bergamini <damien.bergamini@free.fr>
6  * Copyright (c) 2010 Atheros Communications Inc.
7  *
8  * Permission to use, copy, modify, and/or distribute this software for any
9  * purpose with or without fee is hereby granted, provided that the above
10  * copyright notice and this permission notice appear in all copies.
11  *
12  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
13  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
14  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
15  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
16  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
17  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
18  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19  */
20 
21 #ifndef _ARN9380REG_H_
22 #define _ARN9380REG_H_
23 
24 #define AR9380_MAX_CHAINS	3
25 
26 #define AR9380_PHY_CCA_NOM_VAL_2GHZ		(-110)
27 #define AR9380_PHY_CCA_NOM_VAL_5GHZ		(-115)
28 #define AR9380_PHY_CCA_MIN_GOOD_VAL_2GHZ	(-125)
29 #define AR9380_PHY_CCA_MIN_GOOD_VAL_5GHZ	(-125)
30 #define AR9380_PHY_CCA_MAX_GOOD_VAL_2GHZ	( -95)
31 #define AR9380_PHY_CCA_MAX_GOOD_VAL_5GHZ	(-100)
32 
33 /*
34  * ROM layout used by AR9380.
35  */
36 #define AR9380_NUM_5G_CAL_PIERS		8
37 #define AR9380_NUM_2G_CAL_PIERS		3
38 #define AR9380_NUM_5G_20_TARGET_POWERS	8
39 #define AR9380_NUM_5G_40_TARGET_POWERS	8
40 #define AR9380_NUM_2G_CCK_TARGET_POWERS	2
41 #define AR9380_NUM_2G_20_TARGET_POWERS	3
42 #define AR9380_NUM_2G_40_TARGET_POWERS	3
43 #define AR9380_NUM_CTLS_5G		9
44 #define AR9380_NUM_CTLS_2G		12
45 #define AR9380_NUM_BAND_EDGES_5G	8
46 #define AR9380_NUM_BAND_EDGES_2G	4
47 #define AR9380_NUM_PD_GAINS		4
48 #define AR9380_PD_GAINS_IN_MASK		4
49 #define AR9380_PD_GAIN_ICEPTS		5
50 #define AR9380_EEPROM_MODAL_SPURS	5
51 #define AR9380_CUSTOMER_DATA_SIZE	20
52 
53 struct ar9380_cal_ctl_data_2g {
54 	uint8_t	ctlEdges[AR9380_NUM_BAND_EDGES_2G];
55 } __packed;
56 
57 struct ar9380_cal_ctl_data_5g {
58 	uint8_t	ctlEdges[AR9380_NUM_BAND_EDGES_5G];
59 } __packed;
60 
61 struct ar9380_base_eep_hdr {
62 	uint16_t	regDmn[2];
63 	uint8_t		txrxMask;
64 #define AR_EEP_TX_MASK_M	0xf0
65 #define AR_EEP_TX_MASK_S	4
66 #define AR_EEP_RX_MASK_M	0x0f
67 #define AR_EEP_RX_MASK_S	0
68 
69 	uint8_t		opFlags;
70 #define AR_OPFLAGS_11A			0x01
71 #define AR_OPFLAGS_11G			0x02
72 #define AR_OPFLAGS_11N_5G40		0x04
73 #define AR_OPFLAGS_11N_2G40		0x08
74 #define AR_OPFLAGS_11N_5G20		0x10
75 #define AR_OPFLAGS_11N_2G20		0x20
76 /* Shortcut. */
77 #define AR_OPFLAGS_11N			0x3c
78 
79 	uint8_t		eepMisc;
80 	uint8_t		rfSilent;
81 #define AR_EEP_RFSILENT_ENABLED		0x0001
82 #define AR_EEP_RFSILENT_GPIO_SEL_M	0x001c
83 #define AR_EEP_RFSILENT_GPIO_SEL_S	2
84 #define AR_EEP_RFSILENT_POLARITY	0x0002
85 
86 	uint8_t		blueToothOptions;
87 	uint8_t		deviceCap;
88 	uint8_t		deviceType;
89 	int8_t		pwrTableOffset;
90 	uint8_t		params_for_tuning_caps[2];
91 	uint8_t		featureEnable;
92 #define AR_EEP_TX_TEMP_COMP_EN		0x01
93 #define AR_EEP_TX_VOLT_COMP_EN		0x02
94 #define AR_EEP_FAST_CLOCK_EN		0x04
95 #define AR_EEP_DOUBLING_EN		0x08
96 #define AR_EEP_INTERNAL_REGULATOR	0x10
97 #define AR_EEP_PAPRD			0x20
98 #define AR_EEP_TUNING_CAPS		0x40
99 
100 	uint8_t		miscConfiguration;
101 #define AR_EEP_DRIVE_STRENGTH		0x01
102 #define AR_EEP_CHAIN_MASK_REDUCE	0x08
103 
104 	uint8_t		eepromWriteEnableGpio;
105 	uint8_t		wlanDisableGpio;
106 	uint8_t		wlanLedGpio;
107 	uint8_t		rxBandSelectGpio;
108 	uint8_t		txrxgain;
109 #define AR_EEP_TX_GAIN_M		0xf0
110 #define AR_EEP_TX_GAIN_S		4
111 #define AR_EEP_TX_GAIN_HIGH_OB_DB	1
112 #define AR_EEP_TX_GAIN_LOW_OB_DB	2
113 #define AR_EEP_TX_GAIN_HIGH_POWER	3
114 #define AR_EEP_RX_GAIN_M		0x0f
115 #define AR_EEP_RX_GAIN_S		0
116 #define AR_EEP_RX_GAIN_WO_XLNA		1
117 
118 	uint32_t	swreg;
119 } __packed;
120 
121 struct ar9380_modal_eep_header {
122 	uint32_t	antCtrlCommon;
123 	uint32_t	antCtrlCommon2;
124 	uint16_t	antCtrlChain[AR9380_MAX_CHAINS];
125 	uint8_t		xatten1DB[AR9380_MAX_CHAINS];
126 	uint8_t		xatten1Margin[AR9380_MAX_CHAINS];
127 	int8_t		tempSlope;
128 	int8_t		voltSlope;
129 	uint8_t		spurChans[AR9380_EEPROM_MODAL_SPURS];
130 	int8_t		noiseFloorThreshCh[AR9380_MAX_CHAINS];
131 	uint8_t		ob[AR9380_MAX_CHAINS];
132 	uint8_t		db_stage2[AR9380_MAX_CHAINS];
133 	uint8_t		db_stage3[AR9380_MAX_CHAINS];
134 	uint8_t		db_stage4[AR9380_MAX_CHAINS];
135 	uint8_t		xpaBiasLvl;
136 	uint8_t		txFrameToDataStart;
137 	uint8_t		txFrameToPaOn;
138 	uint8_t		txClip;
139 	int8_t		antennaGain;
140 	uint8_t		switchSettling;
141 	int8_t		adcDesiredSize;
142 	uint8_t		txEndToXpaOff;
143 	uint8_t		txEndToRxOn;
144 	uint8_t		txFrameToXpaOn;
145 	uint8_t		thresh62;
146 	uint32_t	papdRateMaskHt20;
147 	uint32_t	papdRateMaskHt40;
148 	uint8_t		futureModal[10];
149 } __packed;
150 
151 struct ar9380_cal_data_per_freq_op_loop {
152 	int8_t	refPower;
153 	uint8_t	voltMeas;
154 	uint8_t	tempMeas;
155 	int8_t	rxNoisefloorCal;
156 	int8_t	rxNoisefloorPower;
157 	uint8_t	rxTempMeas;
158 } __packed;
159 
160 struct ar9380_base_extension_1 {
161 	uint8_t	ant_div_control;
162 #define AR_EEP_ANT_DIV_CTRL_ALL_M	0x3f
163 #define AR_EEP_ANT_DIV_CTRL_ALL_S	0
164 #define AR_EEP_ANT_DIV_CTRL_ANT_DIV	0x40
165 #define AR_EEP_ANT_DIV_CTRL_FAST_DIV	0x80
166 
167 	uint8_t	future[13];
168 } __packed;
169 
170 struct ar9380_base_extension_2 {
171 	int8_t	tempSlopeLow;
172 	int8_t	tempSlopeHigh;
173 	uint8_t	xatten1DBLow[AR9380_MAX_CHAINS];
174 	uint8_t	xatten1MarginLow[AR9380_MAX_CHAINS];
175 	uint8_t	xatten1DBHigh[AR9380_MAX_CHAINS];
176 	uint8_t	xatten1MarginHigh[AR9380_MAX_CHAINS];
177 } __packed;
178 
179 struct ar9380_eeprom {
180 	uint8_t	eepromVersion;
181 	uint8_t	templateVersion;
182 	uint8_t	macAddr[6];
183 	uint8_t	custData[AR9380_CUSTOMER_DATA_SIZE];
184 	struct	ar9380_base_eep_hdr baseEepHeader;
185 	struct	ar9380_modal_eep_header modalHeader2G;
186 	struct	ar9380_base_extension_1 base_ext1;
187 	uint8_t	calFreqPier2G[AR9380_NUM_2G_CAL_PIERS];
188 	struct	ar9380_cal_data_per_freq_op_loop
189 	    calPierData2G[AR9380_MAX_CHAINS][AR9380_NUM_2G_CAL_PIERS];
190 	uint8_t	calTargetFbinCck[AR9380_NUM_2G_CCK_TARGET_POWERS];
191 	uint8_t	calTargetFbin2G[AR9380_NUM_2G_20_TARGET_POWERS];
192 	uint8_t	calTargetFbin2GHT20[AR9380_NUM_2G_20_TARGET_POWERS];
193 	uint8_t	calTargetFbin2GHT40[AR9380_NUM_2G_40_TARGET_POWERS];
194 	struct	ar_cal_target_power_leg
195 	    calTargetPowerCck[AR9380_NUM_2G_CCK_TARGET_POWERS];
196 	struct	ar_cal_target_power_leg
197 	    calTargetPower2G[AR9380_NUM_2G_20_TARGET_POWERS];
198 	struct	ar_cal_target_power_ht
199 	    calTargetPower2GHT20[AR9380_NUM_2G_20_TARGET_POWERS];
200 	struct	ar_cal_target_power_ht
201 	    calTargetPower2GHT40[AR9380_NUM_2G_40_TARGET_POWERS];
202 	uint8_t	ctlIndex_2G[AR9380_NUM_CTLS_2G];
203 	uint8_t	ctl_freqbin_2G[AR9380_NUM_CTLS_2G][AR9380_NUM_BAND_EDGES_2G];
204 	struct	ar9380_cal_ctl_data_2g ctlPowerData_2G[AR9380_NUM_CTLS_2G];
205 	struct	ar9380_modal_eep_header modalHeader5G;
206 	struct	ar9380_base_extension_2 base_ext2;
207 	uint8_t	calFreqPier5G[AR9380_NUM_5G_CAL_PIERS];
208 	struct	ar9380_cal_data_per_freq_op_loop
209 	    calPierData5G[AR9380_MAX_CHAINS][AR9380_NUM_5G_CAL_PIERS];
210 	uint8_t	calTargetFbin5G[AR9380_NUM_5G_20_TARGET_POWERS];
211 	uint8_t	calTargetFbin5GHT20[AR9380_NUM_5G_20_TARGET_POWERS];
212 	uint8_t	calTargetFbin5GHT40[AR9380_NUM_5G_40_TARGET_POWERS];
213 	struct	ar_cal_target_power_leg
214 	    calTargetPower5G[AR9380_NUM_5G_20_TARGET_POWERS];
215 	struct	ar_cal_target_power_ht
216 	    calTargetPower5GHT20[AR9380_NUM_5G_20_TARGET_POWERS];
217 	struct	ar_cal_target_power_ht
218 	    calTargetPower5GHT40[AR9380_NUM_5G_40_TARGET_POWERS];
219 	uint8_t	ctlIndex_5G[AR9380_NUM_CTLS_5G];
220 	uint8_t	ctl_freqbin_5G[AR9380_NUM_CTLS_5G][AR9380_NUM_BAND_EDGES_5G];
221 	struct	ar9380_cal_ctl_data_5g ctlPowerData_5G[AR9380_NUM_CTLS_5G];
222 } __packed;
223 
224 /*
225  * ROM templates (little endian).
226  */
227 static const uint8_t ar9380_def_rom[] = {
228 	0x02, 0x02, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x00, 0x00,
229 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
230 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
231 	0x1f, 0x00, 0x77, 0x03, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00,
232 	0x00, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x08, 0xff, 0x00, 0x00,
233 	0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x22, 0x22, 0x02,
234 	0x00, 0x50, 0x01, 0x50, 0x01, 0x50, 0x01, 0x00, 0x00, 0x00,
235 	0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
236 	0xff, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
237 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0e, 0x03, 0x00,
238 	0x2c, 0xe2, 0x00, 0x02, 0x0e, 0x1c, 0xe0, 0xe0, 0xf0, 0x0c,
239 	0xe0, 0xe0, 0xf0, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
240 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
241 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x89,
242 	0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
243 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
244 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
245 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
246 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
247 	0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xb8, 0x70, 0x89, 0xac,
248 	0x70, 0x89, 0xac, 0x70, 0x89, 0xac, 0x24, 0x24, 0x24, 0x24,
249 	0x24, 0x24, 0x24, 0x24, 0x20, 0x20, 0x1c, 0x18, 0x20, 0x20,
250 	0x1c, 0x18, 0x20, 0x20, 0x1c, 0x18, 0x20, 0x20, 0x20, 0x20,
251 	0x1c, 0x14, 0x20, 0x20, 0x1c, 0x14, 0x20, 0x20, 0x1c, 0x14,
252 	0x20, 0x20, 0x20, 0x20, 0x1c, 0x14, 0x20, 0x20, 0x1c, 0x14,
253 	0x20, 0x20, 0x1c, 0x14, 0x20, 0x20, 0x20, 0x20, 0x1c, 0x14,
254 	0x20, 0x20, 0x1c, 0x14, 0x20, 0x20, 0x1c, 0x14, 0x20, 0x20,
255 	0x20, 0x20, 0x1c, 0x14, 0x20, 0x20, 0x1c, 0x14, 0x20, 0x20,
256 	0x1c, 0x14, 0x20, 0x20, 0x20, 0x20, 0x1c, 0x14, 0x20, 0x20,
257 	0x1c, 0x14, 0x20, 0x20, 0x1c, 0x14, 0x20, 0x20, 0x20, 0x20,
258 	0x1c, 0x14, 0x20, 0x20, 0x1c, 0x14, 0x20, 0x20, 0x1c, 0x14,
259 	0x11, 0x12, 0x15, 0x17, 0x41, 0x42, 0x45, 0x47, 0x31, 0x32,
260 	0x35, 0x37, 0x70, 0x75, 0x9d, 0xa2, 0x70, 0x75, 0xa2, 0xff,
261 	0x70, 0x75, 0xa2, 0xff, 0x7a, 0x7f, 0x93, 0x98, 0x70, 0x75,
262 	0xac, 0xb8, 0x70, 0x75, 0xac, 0x00, 0x70, 0x75, 0xac, 0x00,
263 	0x7a, 0x7f, 0x93, 0xa2, 0x70, 0x75, 0xac, 0x00, 0x70, 0x75,
264 	0xac, 0x00, 0x70, 0x75, 0xac, 0x00, 0x7a, 0x7f, 0x93, 0xa2,
265 	0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 0x7c, 0x3c,
266 	0x3c, 0x7c, 0x7c, 0x3c, 0x00, 0x00, 0x3c, 0x7c, 0x3c, 0x3c,
267 	0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x3c, 0x3c, 0x7c,
268 	0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c,
269 	0x3c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x10, 0x01,
270 	0x00, 0x00, 0x22, 0x22, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
271 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00,
272 	0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x03, 0x03,
273 	0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
274 	0x00, 0x0e, 0x0e, 0x03, 0x00, 0x2d, 0xe2, 0x00, 0x02, 0x0e,
275 	0x1c, 0x80, 0xc0, 0x80, 0x0c, 0x80, 0xc0, 0x80, 0x00, 0x00,
276 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
277 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
278 	0x00, 0x00, 0x00, 0x4c, 0x54, 0x68, 0x78, 0x8c, 0xa0, 0xb9,
279 	0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
280 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
281 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
282 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
283 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
284 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
285 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
286 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
287 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
288 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
289 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
290 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
291 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
292 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
293 	0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x54, 0x68, 0x78, 0x8c,
294 	0xa0, 0xb9, 0xcd, 0x4c, 0x58, 0x68, 0x8c, 0xb4, 0xbd, 0xb9,
295 	0xcd, 0x4c, 0x58, 0x68, 0x8c, 0xb4, 0xbd, 0xb9, 0xcd, 0x14,
296 	0x14, 0x14, 0x0a, 0x14, 0x14, 0x14, 0x0a, 0x14, 0x14, 0x14,
297 	0x0a, 0x14, 0x14, 0x14, 0x0a, 0x14, 0x14, 0x14, 0x0a, 0x14,
298 	0x14, 0x14, 0x0a, 0x14, 0x14, 0x14, 0x0a, 0x14, 0x14, 0x14,
299 	0x0a, 0x14, 0x14, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00,
300 	0x00, 0x0a, 0x0a, 0x00, 0x00, 0x14, 0x14, 0x0a, 0x0a, 0x00,
301 	0x00, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x14,
302 	0x14, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x0a,
303 	0x0a, 0x00, 0x00, 0x14, 0x14, 0x0a, 0x0a, 0x00, 0x00, 0x0a,
304 	0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x14, 0x14, 0x0a,
305 	0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00,
306 	0x00, 0x14, 0x14, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00,
307 	0x00, 0x0a, 0x0a, 0x00, 0x00, 0x14, 0x14, 0x0a, 0x0a, 0x00,
308 	0x00, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x14,
309 	0x14, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x0a,
310 	0x0a, 0x00, 0x00, 0x14, 0x14, 0x0a, 0x0a, 0x00, 0x00, 0x0a,
311 	0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x14, 0x14, 0x0a,
312 	0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00,
313 	0x00, 0x14, 0x14, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00,
314 	0x00, 0x0a, 0x0a, 0x00, 0x00, 0x14, 0x14, 0x0a, 0x0a, 0x00,
315 	0x00, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x14,
316 	0x14, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x0a,
317 	0x0a, 0x00, 0x00, 0x14, 0x14, 0x0a, 0x0a, 0x00, 0x00, 0x0a,
318 	0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x14, 0x14, 0x0a,
319 	0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00,
320 	0x00, 0x14, 0x14, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00,
321 	0x00, 0x0a, 0x0a, 0x00, 0x00, 0x10, 0x16, 0x18, 0x40, 0x46,
322 	0x48, 0x30, 0x36, 0x38, 0x4c, 0x5c, 0x60, 0x8c, 0xa0, 0xb4,
323 	0xbd, 0xcd, 0x4c, 0x5c, 0x60, 0x8c, 0x90, 0xb4, 0xbd, 0xcd,
324 	0x4e, 0x56, 0x5e, 0x66, 0x8e, 0x96, 0xae, 0xbf, 0x4c, 0x50,
325 	0x5c, 0x68, 0x8c, 0xb4, 0xff, 0xff, 0x4c, 0x5c, 0x8c, 0xb4,
326 	0xff, 0xff, 0xff, 0xff, 0x4e, 0x5e, 0x66, 0x8e, 0x9e, 0xae,
327 	0xff, 0xff, 0x4c, 0x50, 0x54, 0x5c, 0x8c, 0xa0, 0xb4, 0xbd,
328 	0x4c, 0x5c, 0x68, 0x8c, 0x98, 0xb4, 0xbd, 0xcd, 0x4e, 0x56,
329 	0x5e, 0x8e, 0x96, 0xae, 0xbf, 0xc7, 0x7c, 0x7c, 0x7c, 0x7c,
330 	0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
331 	0x7c, 0x3c, 0x3c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
332 	0x3c, 0x7c, 0x7c, 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c,
333 	0x7c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c,
334 	0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
335 	0x7c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x3c,
336 	0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c
337 };
338 
339 static const uint8_t ar9380_def_rom_h112[] = {
340 	0x02, 0x03, 0x00, 0x03, 0x7f, 0x00, 0x00, 0x00, 0x68, 0x31,
341 	0x31, 0x32, 0x2d, 0x32, 0x34, 0x31, 0x2d, 0x66, 0x30, 0x30,
342 	0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
343 	0x1f, 0x00, 0x77, 0x03, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00,
344 	0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x08, 0xff, 0x10, 0x00,
345 	0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x44, 0x44, 0x04,
346 	0x00, 0x50, 0x01, 0x50, 0x01, 0x50, 0x01, 0x00, 0x00, 0x00,
347 	0x00, 0x00, 0x00, 0x19, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00,
348 	0xff, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
349 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0e, 0x03, 0x00,
350 	0x2c, 0xe2, 0x00, 0x02, 0x0e, 0x1c, 0x80, 0xc0, 0x80, 0x00,
351 	0x80, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
352 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
353 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x89,
354 	0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
355 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
356 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
357 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
358 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
359 	0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xb8, 0x70, 0x89, 0xac,
360 	0x70, 0x89, 0xac, 0x70, 0x89, 0xac, 0x22, 0x22, 0x22, 0x22,
361 	0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x20, 0x20, 0x22, 0x22,
362 	0x20, 0x20, 0x22, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
363 	0x20, 0x1e, 0x20, 0x20, 0x1e, 0x1c, 0x1c, 0x1c, 0x1c, 0x18,
364 	0x20, 0x20, 0x20, 0x20, 0x20, 0x1e, 0x20, 0x20, 0x1e, 0x1c,
365 	0x1c, 0x1c, 0x1c, 0x18, 0x20, 0x20, 0x20, 0x20, 0x20, 0x1e,
366 	0x20, 0x20, 0x1e, 0x1c, 0x1c, 0x1c, 0x1c, 0x18, 0x1e, 0x1e,
367 	0x1e, 0x1e, 0x1e, 0x1c, 0x1e, 0x1e, 0x1c, 0x1a, 0x1a, 0x1a,
368 	0x1a, 0x16, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1c, 0x1e, 0x1e,
369 	0x1c, 0x1a, 0x1a, 0x1a, 0x1a, 0x16, 0x1e, 0x1e, 0x1e, 0x1e,
370 	0x1e, 0x1c, 0x1e, 0x1e, 0x1c, 0x1a, 0x1a, 0x1a, 0x1a, 0x16,
371 	0x11, 0x12, 0x15, 0x17, 0x41, 0x42, 0x45, 0x47, 0x31, 0x32,
372 	0x35, 0x37, 0x70, 0x75, 0x9d, 0xa2, 0x70, 0x75, 0xa2, 0xff,
373 	0x70, 0x75, 0xa2, 0xff, 0x7a, 0x7f, 0x93, 0x98, 0x70, 0x75,
374 	0xac, 0xb8, 0x70, 0x75, 0xac, 0x00, 0x70, 0x75, 0xac, 0x00,
375 	0x7a, 0x7f, 0x93, 0xa2, 0x70, 0x75, 0xac, 0x00, 0x70, 0x75,
376 	0xac, 0x00, 0x70, 0x75, 0xac, 0x00, 0x7a, 0x7f, 0x93, 0xa2,
377 	0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 0x7c, 0x3c,
378 	0x3c, 0x7c, 0x7c, 0x3c, 0x00, 0x00, 0x3c, 0x7c, 0x3c, 0x3c,
379 	0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x3c, 0x3c, 0x7c,
380 	0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c,
381 	0x3c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x20, 0x02,
382 	0x00, 0x00, 0x44, 0x44, 0x04, 0x00, 0x50, 0x01, 0x50, 0x01,
383 	0x50, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00,
384 	0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x03, 0x03,
385 	0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
386 	0x00, 0x0e, 0x0e, 0x03, 0x00, 0x2d, 0xe2, 0x00, 0x02, 0x0e,
387 	0x1c, 0xe0, 0xe0, 0xf0, 0x0c, 0xe0, 0xe0, 0xf0, 0x6c, 0x00,
388 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28,
389 	0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
390 	0x00, 0x00, 0x00, 0x4c, 0x54, 0x68, 0x78, 0x8c, 0xa0, 0xb4,
391 	0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
392 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
393 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
394 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
395 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
396 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
397 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
398 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
399 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
400 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
401 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
402 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
403 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
404 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
405 	0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x58, 0x68, 0x78, 0x8c,
406 	0xa0, 0xb4, 0xcd, 0x4c, 0x58, 0x68, 0x78, 0x8c, 0xb4, 0xbd,
407 	0xcd, 0x4c, 0x58, 0x68, 0x78, 0x8c, 0xb4, 0xbd, 0xcd, 0x1e,
408 	0x1e, 0x1c, 0x18, 0x1e, 0x1e, 0x1c, 0x18, 0x1e, 0x1e, 0x1c,
409 	0x18, 0x1e, 0x1e, 0x1c, 0x18, 0x1e, 0x1e, 0x1c, 0x18, 0x1e,
410 	0x1e, 0x1c, 0x18, 0x1e, 0x1e, 0x1c, 0x18, 0x1e, 0x1e, 0x1c,
411 	0x18, 0x1e, 0x1e, 0x1e, 0x1c, 0x18, 0x14, 0x1e, 0x1c, 0x18,
412 	0x14, 0x14, 0x14, 0x14, 0x10, 0x1e, 0x1e, 0x1e, 0x1c, 0x18,
413 	0x14, 0x1e, 0x1c, 0x18, 0x14, 0x14, 0x14, 0x14, 0x10, 0x1e,
414 	0x1e, 0x1e, 0x1a, 0x16, 0x12, 0x1e, 0x1a, 0x16, 0x12, 0x12,
415 	0x12, 0x12, 0x10, 0x1e, 0x1e, 0x1e, 0x1a, 0x16, 0x12, 0x1e,
416 	0x1a, 0x16, 0x12, 0x12, 0x12, 0x12, 0x10, 0x1e, 0x1e, 0x1e,
417 	0x18, 0x14, 0x10, 0x1e, 0x18, 0x14, 0x10, 0x10, 0x10, 0x10,
418 	0x0e, 0x1e, 0x1e, 0x1e, 0x18, 0x14, 0x10, 0x1e, 0x18, 0x14,
419 	0x10, 0x10, 0x10, 0x10, 0x0e, 0x1e, 0x1e, 0x1e, 0x16, 0x12,
420 	0x0e, 0x1e, 0x16, 0x12, 0x0e, 0x0e, 0x0e, 0x0e, 0x0c, 0x1e,
421 	0x1e, 0x1e, 0x16, 0x12, 0x0e, 0x1e, 0x16, 0x12, 0x0e, 0x0e,
422 	0x0e, 0x0e, 0x0c, 0x1c, 0x1c, 0x1c, 0x1a, 0x16, 0x12, 0x1c,
423 	0x1a, 0x16, 0x12, 0x12, 0x12, 0x12, 0x0e, 0x1c, 0x1c, 0x1c,
424 	0x1a, 0x16, 0x12, 0x1c, 0x1a, 0x16, 0x12, 0x12, 0x12, 0x12,
425 	0x0e, 0x1c, 0x1c, 0x1c, 0x18, 0x14, 0x10, 0x1c, 0x18, 0x14,
426 	0x10, 0x10, 0x10, 0x10, 0x0c, 0x1c, 0x1c, 0x1c, 0x18, 0x14,
427 	0x10, 0x1c, 0x18, 0x14, 0x10, 0x10, 0x10, 0x10, 0x0c, 0x1c,
428 	0x1c, 0x1c, 0x16, 0x12, 0x0e, 0x1c, 0x16, 0x12, 0x0e, 0x0e,
429 	0x0e, 0x0e, 0x0a, 0x1c, 0x1c, 0x1c, 0x16, 0x12, 0x0e, 0x1c,
430 	0x16, 0x12, 0x0e, 0x0e, 0x0e, 0x0e, 0x0a, 0x1c, 0x1c, 0x1c,
431 	0x14, 0x10, 0x0c, 0x1c, 0x14, 0x10, 0x0c, 0x0c, 0x0c, 0x0c,
432 	0x08, 0x1c, 0x1c, 0x1c, 0x14, 0x10, 0x0c, 0x1c, 0x14, 0x10,
433 	0x0c, 0x0c, 0x0c, 0x0c, 0x08, 0x10, 0x16, 0x18, 0x40, 0x46,
434 	0x48, 0x30, 0x36, 0x38, 0x4c, 0x5c, 0x60, 0x8c, 0xa0, 0xb4,
435 	0xbd, 0xcd, 0x4c, 0x5c, 0x60, 0x8c, 0x90, 0xb4, 0xbd, 0xcd,
436 	0x4e, 0x56, 0x5e, 0x66, 0x8e, 0x96, 0xae, 0xbf, 0x4c, 0x50,
437 	0x5c, 0x68, 0x8c, 0xb4, 0xff, 0xff, 0x4c, 0x5c, 0x8c, 0xb4,
438 	0xff, 0xff, 0xff, 0xff, 0x4e, 0x5e, 0x66, 0x8e, 0x9e, 0xae,
439 	0xff, 0xff, 0x4c, 0x50, 0x54, 0x5c, 0x8c, 0xa0, 0xb4, 0xbd,
440 	0x4c, 0x5c, 0x68, 0x8c, 0x98, 0xb4, 0xbd, 0xcd, 0x4e, 0x56,
441 	0x5e, 0x8e, 0x96, 0xae, 0xbf, 0xc7, 0x7c, 0x7c, 0x7c, 0x7c,
442 	0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
443 	0x7c, 0x3c, 0x3c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
444 	0x3c, 0x7c, 0x7c, 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c,
445 	0x7c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c,
446 	0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
447 	0x7c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x3c,
448 	0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c
449 };
450 
451 static const uint8_t ar9380_def_rom_h116[] = {
452 	0x02, 0x04, 0x00, 0x03, 0x7f, 0x00, 0x00, 0x00, 0x68, 0x31,
453 	0x31, 0x36, 0x2d, 0x30, 0x34, 0x31, 0x2d, 0x66, 0x30, 0x30,
454 	0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
455 	0x1f, 0x00, 0x33, 0x03, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00,
456 	0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x08, 0xff, 0x10, 0x00,
457 	0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x44, 0x44, 0x04,
458 	0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1f, 0x1f, 0x1f,
459 	0x12, 0x12, 0x12, 0x19, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00,
460 	0xff, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
461 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0e, 0x03, 0x00,
462 	0x2c, 0xe2, 0x00, 0x02, 0x0e, 0x1c, 0x80, 0xc0, 0x80, 0x0c,
463 	0x80, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
464 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
465 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x89,
466 	0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
467 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
468 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
469 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
470 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
471 	0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xac, 0x70, 0x89, 0xac,
472 	0x70, 0x89, 0xac, 0x70, 0x89, 0xac, 0x22, 0x22, 0x22, 0x22,
473 	0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x20, 0x20, 0x22, 0x22,
474 	0x20, 0x20, 0x22, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
475 	0x20, 0x1e, 0x20, 0x20, 0x1e, 0x1c, 0x00, 0x00, 0x00, 0x00,
476 	0x20, 0x20, 0x20, 0x20, 0x20, 0x1e, 0x20, 0x20, 0x1e, 0x1c,
477 	0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x1e,
478 	0x20, 0x20, 0x1e, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1e,
479 	0x1e, 0x1e, 0x1e, 0x1c, 0x1e, 0x1e, 0x1c, 0x1a, 0x00, 0x00,
480 	0x00, 0x00, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1c, 0x1e, 0x1e,
481 	0x1c, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x1e, 0x1e,
482 	0x1e, 0x1c, 0x1e, 0x1e, 0x1c, 0x1a, 0x00, 0x00, 0x00, 0x00,
483 	0x11, 0x12, 0x15, 0x17, 0x41, 0x42, 0x45, 0x47, 0x31, 0x32,
484 	0x35, 0x37, 0x70, 0x75, 0x9d, 0xa2, 0x70, 0x75, 0xa2, 0xff,
485 	0x70, 0x75, 0xa2, 0xff, 0x7a, 0x7f, 0x93, 0x98, 0x70, 0x75,
486 	0xac, 0xb8, 0x70, 0x75, 0xac, 0x00, 0x70, 0x75, 0xac, 0x00,
487 	0x7a, 0x7f, 0x93, 0xa2, 0x70, 0x75, 0xac, 0x00, 0x70, 0x75,
488 	0xac, 0x00, 0x70, 0x75, 0xac, 0x00, 0x7a, 0x7f, 0x93, 0xa2,
489 	0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 0x7c, 0x3c,
490 	0x3c, 0x7c, 0x7c, 0x3c, 0x00, 0x00, 0x3c, 0x7c, 0x3c, 0x3c,
491 	0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x3c, 0x3c, 0x7c,
492 	0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c,
493 	0x3c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x20, 0x02,
494 	0x00, 0x00, 0x44, 0x44, 0x04, 0x00, 0x50, 0x01, 0x50, 0x01,
495 	0x50, 0x01, 0x19, 0x19, 0x19, 0x14, 0x14, 0x14, 0x46, 0x00,
496 	0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x03, 0x03,
497 	0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
498 	0x00, 0x0e, 0x0e, 0x03, 0x00, 0x2d, 0xe2, 0x00, 0x02, 0x0e,
499 	0x1c, 0xe0, 0xe0, 0xf0, 0x0c, 0xe0, 0xe0, 0xf0, 0x6c, 0x00,
500 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23,
501 	0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
502 	0x00, 0x00, 0x00, 0x4c, 0x54, 0x68, 0x78, 0x8c, 0xa0, 0xb4,
503 	0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
504 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
505 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
506 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
507 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
508 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
509 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
510 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
511 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
512 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
513 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
514 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
515 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
516 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
517 	0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x58, 0x68, 0x78, 0x8c,
518 	0xa0, 0xb4, 0xcd, 0x4c, 0x58, 0x68, 0x78, 0x8c, 0xb4, 0xbd,
519 	0xcd, 0x4c, 0x58, 0x68, 0x78, 0x8c, 0xb4, 0xbd, 0xcd, 0x1e,
520 	0x1e, 0x1c, 0x18, 0x1e, 0x1e, 0x1c, 0x18, 0x1e, 0x1e, 0x1c,
521 	0x18, 0x1e, 0x1e, 0x1c, 0x18, 0x1e, 0x1e, 0x1c, 0x18, 0x1e,
522 	0x1e, 0x1c, 0x18, 0x1e, 0x1e, 0x1c, 0x18, 0x1e, 0x1e, 0x1c,
523 	0x18, 0x1e, 0x1e, 0x1e, 0x1c, 0x18, 0x14, 0x1e, 0x1c, 0x18,
524 	0x14, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x1e, 0x1c, 0x18,
525 	0x14, 0x1e, 0x1c, 0x18, 0x14, 0x00, 0x00, 0x00, 0x00, 0x1e,
526 	0x1e, 0x1e, 0x1a, 0x16, 0x12, 0x1e, 0x1a, 0x16, 0x12, 0x00,
527 	0x00, 0x00, 0x00, 0x1e, 0x1e, 0x1e, 0x1a, 0x16, 0x12, 0x1e,
528 	0x1a, 0x16, 0x12, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x1e,
529 	0x18, 0x14, 0x10, 0x1e, 0x18, 0x14, 0x10, 0x00, 0x00, 0x00,
530 	0x00, 0x1e, 0x1e, 0x1e, 0x18, 0x14, 0x10, 0x1e, 0x18, 0x14,
531 	0x10, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x1e, 0x16, 0x12,
532 	0x0e, 0x1e, 0x16, 0x12, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x1e,
533 	0x1e, 0x1e, 0x16, 0x12, 0x0e, 0x1e, 0x16, 0x12, 0x0e, 0x00,
534 	0x00, 0x00, 0x00, 0x1c, 0x1c, 0x1c, 0x1a, 0x16, 0x12, 0x1c,
535 	0x1a, 0x16, 0x12, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x1c,
536 	0x1a, 0x16, 0x12, 0x1c, 0x1a, 0x16, 0x12, 0x00, 0x00, 0x00,
537 	0x00, 0x1c, 0x1c, 0x1c, 0x18, 0x14, 0x10, 0x1c, 0x18, 0x14,
538 	0x10, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x1c, 0x18, 0x14,
539 	0x10, 0x1c, 0x18, 0x14, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1c,
540 	0x1c, 0x1c, 0x16, 0x12, 0x0e, 0x1c, 0x16, 0x12, 0x0e, 0x00,
541 	0x00, 0x00, 0x00, 0x1c, 0x1c, 0x1c, 0x16, 0x12, 0x0e, 0x1c,
542 	0x16, 0x12, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x1c,
543 	0x14, 0x10, 0x0c, 0x1c, 0x14, 0x10, 0x0c, 0x00, 0x00, 0x00,
544 	0x00, 0x1c, 0x1c, 0x1c, 0x14, 0x10, 0x0c, 0x1c, 0x14, 0x10,
545 	0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x16, 0x18, 0x40, 0x46,
546 	0x48, 0x30, 0x36, 0x38, 0x4c, 0x5c, 0x60, 0x8c, 0xa0, 0xb4,
547 	0xbd, 0xcd, 0x4c, 0x5c, 0x60, 0x8c, 0x90, 0xb4, 0xbd, 0xcd,
548 	0x4e, 0x56, 0x5e, 0x66, 0x8e, 0x96, 0xae, 0xbf, 0x4c, 0x50,
549 	0x5c, 0x68, 0x8c, 0xb4, 0xff, 0xff, 0x4c, 0x5c, 0x8c, 0xb4,
550 	0xff, 0xff, 0xff, 0xff, 0x4e, 0x5e, 0x66, 0x8e, 0x9e, 0xae,
551 	0xff, 0xff, 0x4c, 0x50, 0x54, 0x5c, 0x8c, 0xa0, 0xb4, 0xbd,
552 	0x4c, 0x5c, 0x68, 0x8c, 0x98, 0xb4, 0xbd, 0xcd, 0x4e, 0x56,
553 	0x5e, 0x8e, 0x96, 0xae, 0xbf, 0xc7, 0x7c, 0x7c, 0x7c, 0x7c,
554 	0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
555 	0x7c, 0x3c, 0x3c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
556 	0x3c, 0x7c, 0x7c, 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c,
557 	0x7c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c,
558 	0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
559 	0x7c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x3c,
560 	0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c
561 };
562 
563 static const uint8_t ar9380_def_rom_x112[] = {
564 	0x02, 0x05, 0x00, 0x03, 0x7f, 0x00, 0x00, 0x00, 0x78, 0x31,
565 	0x31, 0x32, 0x2d, 0x30, 0x34, 0x31, 0x2d, 0x66, 0x30, 0x30,
566 	0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
567 	0x1f, 0x00, 0x77, 0x03, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00,
568 	0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x08, 0xff, 0x00, 0x00,
569 	0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x22, 0x22, 0x02,
570 	0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1b, 0x1b, 0x1b,
571 	0x15, 0x15, 0x15, 0x32, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00,
572 	0xff, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
573 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0e, 0x03, 0x00,
574 	0x2c, 0xe2, 0x00, 0x02, 0x0e, 0x1c, 0x80, 0xc0, 0x80, 0x0c,
575 	0x80, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
576 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
577 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x89,
578 	0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
579 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
580 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
581 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
582 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
583 	0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xac, 0x70, 0x89, 0xac,
584 	0x70, 0x89, 0xac, 0x70, 0x89, 0xac, 0x26, 0x26, 0x26, 0x26,
585 	0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x24, 0x22, 0x26, 0x26,
586 	0x24, 0x22, 0x26, 0x26, 0x22, 0x20, 0x24, 0x24, 0x24, 0x24,
587 	0x24, 0x22, 0x22, 0x20, 0x1e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1a,
588 	0x24, 0x24, 0x24, 0x24, 0x24, 0x22, 0x24, 0x22, 0x20, 0x1e,
589 	0x1e, 0x1e, 0x1c, 0x1a, 0x24, 0x24, 0x24, 0x24, 0x24, 0x22,
590 	0x22, 0x20, 0x1e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1a, 0x24, 0x24,
591 	0x24, 0x24, 0x22, 0x20, 0x20, 0x1e, 0x1c, 0x1a, 0x1a, 0x1a,
592 	0x1a, 0x18, 0x24, 0x24, 0x24, 0x24, 0x22, 0x20, 0x22, 0x20,
593 	0x1e, 0x1c, 0x1c, 0x1c, 0x1c, 0x18, 0x24, 0x24, 0x24, 0x24,
594 	0x22, 0x20, 0x20, 0x1e, 0x1c, 0x1a, 0x1a, 0x1a, 0x1a, 0x18,
595 	0x11, 0x12, 0x15, 0x17, 0x41, 0x42, 0x45, 0x47, 0x31, 0x32,
596 	0x35, 0x37, 0x70, 0x75, 0x9d, 0xa2, 0x70, 0x75, 0xa2, 0xff,
597 	0x70, 0x75, 0xa2, 0xff, 0x7a, 0x7f, 0x93, 0x98, 0x70, 0x75,
598 	0xac, 0xb8, 0x70, 0x75, 0xac, 0x00, 0x70, 0x75, 0xac, 0x00,
599 	0x7a, 0x7f, 0x93, 0xa2, 0x70, 0x75, 0xac, 0x00, 0x70, 0x75,
600 	0xac, 0x00, 0x70, 0x75, 0xac, 0x00, 0x7a, 0x7f, 0x93, 0xa2,
601 	0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 0x7c, 0x3c,
602 	0x3c, 0x7c, 0x7c, 0x3c, 0x00, 0x00, 0x3c, 0x7c, 0x3c, 0x3c,
603 	0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x3c, 0x3c, 0x7c,
604 	0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c,
605 	0x3c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x10, 0x01,
606 	0x00, 0x00, 0x22, 0x22, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
607 	0x00, 0x00, 0x13, 0x19, 0x17, 0x19, 0x19, 0x19, 0x46, 0x0f,
608 	0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x03, 0x03,
609 	0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
610 	0x00, 0x0e, 0x0e, 0x03, 0x00, 0x2d, 0xe2, 0x00, 0x02, 0x0e,
611 	0x1c, 0xe0, 0xe0, 0xf0, 0x0c, 0xe0, 0xe0, 0xf0, 0x6c, 0x00,
612 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48,
613 	0x69, 0x10, 0x14, 0x10, 0x19, 0x19, 0x19, 0x1d, 0x20, 0x24,
614 	0x10, 0x10, 0x10, 0x4c, 0x54, 0x68, 0x78, 0x8c, 0xa0, 0xb4,
615 	0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
616 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
617 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
618 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
619 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
620 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
621 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
622 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
623 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
624 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
625 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
626 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
627 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
628 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
629 	0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x54, 0x68, 0x78, 0x8c,
630 	0xa0, 0xb9, 0xcd, 0x4c, 0x54, 0x68, 0x78, 0x8c, 0xa0, 0xb9,
631 	0xcd, 0x4c, 0x54, 0x68, 0x78, 0x8c, 0xa0, 0xb9, 0xcd, 0x20,
632 	0x20, 0x1c, 0x1a, 0x20, 0x20, 0x1c, 0x1a, 0x20, 0x20, 0x1c,
633 	0x1a, 0x20, 0x20, 0x1a, 0x18, 0x20, 0x20, 0x1a, 0x18, 0x20,
634 	0x20, 0x18, 0x16, 0x1e, 0x1e, 0x18, 0x16, 0x1e, 0x1e, 0x18,
635 	0x16, 0x20, 0x20, 0x20, 0x20, 0x1c, 0x1a, 0x20, 0x1c, 0x1a,
636 	0x18, 0x18, 0x18, 0x16, 0x16, 0x20, 0x20, 0x20, 0x20, 0x1c,
637 	0x1a, 0x20, 0x1c, 0x1a, 0x18, 0x18, 0x18, 0x16, 0x16, 0x20,
638 	0x20, 0x20, 0x20, 0x1c, 0x1a, 0x20, 0x1c, 0x1a, 0x18, 0x18,
639 	0x18, 0x16, 0x16, 0x20, 0x20, 0x20, 0x20, 0x1c, 0x1a, 0x20,
640 	0x1a, 0x18, 0x16, 0x16, 0x16, 0x14, 0x14, 0x20, 0x20, 0x20,
641 	0x20, 0x1c, 0x1a, 0x20, 0x1a, 0x18, 0x16, 0x14, 0x12, 0x10,
642 	0x10, 0x20, 0x20, 0x20, 0x20, 0x1c, 0x1a, 0x20, 0x18, 0x14,
643 	0x10, 0x12, 0x10, 0x0e, 0x0e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1c,
644 	0x1a, 0x1e, 0x18, 0x14, 0x10, 0x12, 0x10, 0x0e, 0x0e, 0x1e,
645 	0x1e, 0x1e, 0x1e, 0x1c, 0x1a, 0x1e, 0x18, 0x14, 0x10, 0x12,
646 	0x10, 0x0e, 0x0e, 0x20, 0x20, 0x20, 0x1e, 0x1c, 0x1a, 0x1e,
647 	0x1c, 0x1a, 0x18, 0x18, 0x18, 0x16, 0x16, 0x20, 0x20, 0x20,
648 	0x1e, 0x1c, 0x1a, 0x1e, 0x1c, 0x1a, 0x18, 0x18, 0x18, 0x16,
649 	0x16, 0x20, 0x20, 0x20, 0x1e, 0x1c, 0x1a, 0x1e, 0x1c, 0x1a,
650 	0x18, 0x18, 0x18, 0x16, 0x16, 0x20, 0x20, 0x20, 0x1e, 0x1c,
651 	0x1a, 0x1e, 0x1a, 0x18, 0x16, 0x16, 0x16, 0x14, 0x14, 0x20,
652 	0x20, 0x20, 0x1e, 0x1c, 0x1a, 0x1e, 0x1a, 0x18, 0x16, 0x14,
653 	0x12, 0x10, 0x10, 0x20, 0x20, 0x20, 0x1e, 0x1c, 0x1a, 0x1e,
654 	0x16, 0x14, 0x10, 0x12, 0x10, 0x0e, 0x0e, 0x1e, 0x1e, 0x1e,
655 	0x1e, 0x1c, 0x1a, 0x1e, 0x16, 0x14, 0x10, 0x12, 0x10, 0x0e,
656 	0x0e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1c, 0x1a, 0x1e, 0x16, 0x14,
657 	0x10, 0x12, 0x10, 0x0e, 0x0e, 0x10, 0x16, 0x18, 0x40, 0x46,
658 	0x48, 0x30, 0x36, 0x38, 0x4c, 0x5c, 0x60, 0x8c, 0xa0, 0xb4,
659 	0xbd, 0xcd, 0x4c, 0x5c, 0x60, 0x8c, 0x90, 0xb4, 0xbd, 0xcd,
660 	0x4e, 0x56, 0x5e, 0x66, 0x8e, 0x96, 0xae, 0xbf, 0x4c, 0x50,
661 	0x5c, 0x68, 0x8c, 0xb4, 0xff, 0xff, 0x4c, 0x5c, 0x8c, 0xb4,
662 	0xff, 0xff, 0xff, 0xff, 0x4e, 0x5e, 0x66, 0x8e, 0x9e, 0xae,
663 	0xff, 0xff, 0x4c, 0x50, 0x54, 0x5c, 0x8c, 0xa0, 0xb4, 0xbd,
664 	0x4c, 0x5c, 0x68, 0x8c, 0x98, 0xb4, 0xbd, 0xcd, 0x4e, 0x56,
665 	0x5e, 0x8e, 0x96, 0xae, 0xbf, 0xc7, 0x7c, 0x7c, 0x7c, 0x7c,
666 	0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
667 	0x7c, 0x3c, 0x3c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
668 	0x3c, 0x7c, 0x7c, 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c,
669 	0x7c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c,
670 	0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
671 	0x7c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x3c,
672 	0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c
673 };
674 
675 static const uint8_t ar9380_def_rom_x113[] = {
676 	0x02, 0x06, 0x00, 0x03, 0x7f, 0x00, 0x00, 0x00, 0x78, 0x31,
677 	0x31, 0x33, 0x2d, 0x30, 0x32, 0x33, 0x2d, 0x66, 0x30, 0x30,
678 	0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
679 	0x1f, 0x00, 0x77, 0x03, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00,
680 	0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x08, 0xff, 0x21, 0x00,
681 	0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x44, 0x44, 0x04,
682 	0x00, 0x50, 0x01, 0x50, 0x01, 0x50, 0x01, 0x00, 0x00, 0x00,
683 	0x00, 0x00, 0x00, 0x19, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00,
684 	0xff, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
685 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0e, 0x03, 0x00,
686 	0x2c, 0xe2, 0x00, 0x02, 0x0e, 0x1c, 0x80, 0xc0, 0x80, 0x0c,
687 	0x80, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
688 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
689 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x89,
690 	0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
691 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
692 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
693 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
694 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
695 	0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xac, 0x70, 0x89, 0xac,
696 	0x70, 0x89, 0xac, 0x70, 0x89, 0xac, 0x22, 0x22, 0x22, 0x22,
697 	0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x20, 0x20, 0x22, 0x22,
698 	0x20, 0x20, 0x22, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
699 	0x20, 0x1c, 0x20, 0x20, 0x1e, 0x1c, 0x00, 0x00, 0x00, 0x00,
700 	0x20, 0x20, 0x20, 0x20, 0x20, 0x1c, 0x20, 0x20, 0x1e, 0x1c,
701 	0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x1c,
702 	0x20, 0x20, 0x1e, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1e,
703 	0x1e, 0x1e, 0x1e, 0x1c, 0x1e, 0x1e, 0x1c, 0x1a, 0x00, 0x00,
704 	0x00, 0x00, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1c, 0x1e, 0x1e,
705 	0x1c, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x1e, 0x1e,
706 	0x1e, 0x1c, 0x1e, 0x1e, 0x1c, 0x1a, 0x00, 0x00, 0x00, 0x00,
707 	0x11, 0x12, 0x15, 0x17, 0x41, 0x42, 0x45, 0x47, 0x31, 0x32,
708 	0x35, 0x37, 0x70, 0x75, 0x9d, 0xa2, 0x70, 0x75, 0xa2, 0xff,
709 	0x70, 0x75, 0xa2, 0xff, 0x7a, 0x7f, 0x93, 0x98, 0x70, 0x75,
710 	0xac, 0xb8, 0x70, 0x75, 0xac, 0x00, 0x70, 0x75, 0xac, 0x00,
711 	0x7a, 0x7f, 0x93, 0xa2, 0x70, 0x75, 0xac, 0x00, 0x70, 0x75,
712 	0xac, 0x00, 0x70, 0x75, 0xac, 0x00, 0x7a, 0x7f, 0x93, 0xa2,
713 	0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 0x7c, 0x3c,
714 	0x3c, 0x7c, 0x7c, 0x3c, 0x00, 0x00, 0x3c, 0x7c, 0x3c, 0x3c,
715 	0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x3c, 0x3c, 0x7c,
716 	0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c,
717 	0x3c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x20, 0x02,
718 	0x00, 0x00, 0x11, 0x11, 0x01, 0x00, 0x50, 0x01, 0x50, 0x01,
719 	0x50, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00,
720 	0x8c, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x03, 0x03,
721 	0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
722 	0x00, 0x0e, 0x0e, 0x03, 0x00, 0x2d, 0xe2, 0x00, 0x02, 0x0e,
723 	0x1c, 0xe0, 0xe0, 0xf0, 0x0c, 0xe0, 0xe0, 0xf0, 0x6c, 0x00,
724 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48,
725 	0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
726 	0x00, 0x00, 0x00, 0x4c, 0x58, 0x68, 0x78, 0x8c, 0xa0, 0xbd,
727 	0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
728 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
729 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
730 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
731 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
732 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
733 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
734 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
735 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
736 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
737 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
738 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
739 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
740 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
741 	0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x54, 0x68, 0x78, 0x8c,
742 	0xa0, 0xbd, 0xc5, 0x4c, 0x58, 0x68, 0x78, 0x8c, 0xb4, 0xbd,
743 	0xcd, 0x4e, 0x56, 0x68, 0x7a, 0x8e, 0xae, 0xbf, 0xcd, 0x2a,
744 	0x28, 0x28, 0x22, 0x2a, 0x28, 0x28, 0x22, 0x2a, 0x28, 0x28,
745 	0x22, 0x2a, 0x28, 0x28, 0x22, 0x2a, 0x28, 0x28, 0x22, 0x2a,
746 	0x28, 0x28, 0x22, 0x2a, 0x28, 0x28, 0x22, 0x2a, 0x28, 0x28,
747 	0x22, 0x28, 0x28, 0x28, 0x28, 0x20, 0x1c, 0x28, 0x28, 0x20,
748 	0x1c, 0x28, 0x28, 0x20, 0x14, 0x28, 0x28, 0x28, 0x28, 0x20,
749 	0x1c, 0x28, 0x28, 0x20, 0x1c, 0x28, 0x28, 0x20, 0x14, 0x28,
750 	0x28, 0x28, 0x28, 0x20, 0x1c, 0x28, 0x28, 0x20, 0x1c, 0x28,
751 	0x28, 0x20, 0x14, 0x28, 0x28, 0x28, 0x28, 0x20, 0x1c, 0x28,
752 	0x28, 0x20, 0x1c, 0x28, 0x28, 0x20, 0x14, 0x28, 0x28, 0x28,
753 	0x28, 0x20, 0x1c, 0x28, 0x28, 0x20, 0x1c, 0x28, 0x28, 0x20,
754 	0x14, 0x28, 0x28, 0x28, 0x28, 0x20, 0x1c, 0x28, 0x28, 0x20,
755 	0x1c, 0x28, 0x28, 0x20, 0x14, 0x26, 0x26, 0x26, 0x26, 0x20,
756 	0x1c, 0x26, 0x26, 0x20, 0x1c, 0x26, 0x26, 0x20, 0x1a, 0x24,
757 	0x24, 0x24, 0x24, 0x20, 0x1c, 0x24, 0x24, 0x20, 0x1c, 0x24,
758 	0x24, 0x20, 0x1a, 0x28, 0x28, 0x28, 0x26, 0x1e, 0x1a, 0x28,
759 	0x28, 0x1e, 0x1a, 0x28, 0x28, 0x1e, 0x18, 0x28, 0x28, 0x28,
760 	0x26, 0x1e, 0x1a, 0x28, 0x28, 0x1e, 0x1a, 0x28, 0x28, 0x1e,
761 	0x18, 0x28, 0x28, 0x28, 0x26, 0x1e, 0x1a, 0x28, 0x28, 0x1e,
762 	0x1a, 0x28, 0x28, 0x1e, 0x18, 0x28, 0x28, 0x28, 0x26, 0x1e,
763 	0x1a, 0x28, 0x28, 0x1e, 0x1a, 0x28, 0x28, 0x1e, 0x18, 0x28,
764 	0x28, 0x28, 0x26, 0x1e, 0x1a, 0x28, 0x28, 0x1e, 0x1a, 0x28,
765 	0x28, 0x1e, 0x18, 0x28, 0x28, 0x28, 0x26, 0x1e, 0x1a, 0x28,
766 	0x28, 0x1e, 0x1a, 0x28, 0x28, 0x1e, 0x18, 0x24, 0x24, 0x24,
767 	0x24, 0x1e, 0x1a, 0x24, 0x24, 0x1e, 0x1a, 0x24, 0x24, 0x1e,
768 	0x18, 0x22, 0x22, 0x22, 0x22, 0x1e, 0x1a, 0x22, 0x22, 0x1e,
769 	0x1a, 0x22, 0x22, 0x1e, 0x18, 0x10, 0x16, 0x18, 0x40, 0x46,
770 	0x48, 0x30, 0x36, 0x38, 0x4c, 0x5c, 0x60, 0x8c, 0xa0, 0xb4,
771 	0xbd, 0xcd, 0x4c, 0x5c, 0x60, 0x8c, 0x90, 0xb4, 0xbd, 0xcd,
772 	0x4e, 0x56, 0x5e, 0x66, 0x8e, 0x96, 0xae, 0xbf, 0x4c, 0x50,
773 	0x5c, 0x68, 0x8c, 0xb4, 0xff, 0xff, 0x4c, 0x5c, 0x8c, 0xb4,
774 	0xff, 0xff, 0xff, 0xff, 0x4e, 0x5e, 0x66, 0x8e, 0x9e, 0xae,
775 	0xff, 0xff, 0x4c, 0x50, 0x54, 0x5c, 0x8c, 0xa0, 0xb4, 0xbd,
776 	0x4c, 0x5c, 0x68, 0x8c, 0x98, 0xb4, 0xbd, 0xcd, 0x4e, 0x56,
777 	0x5e, 0x8e, 0x96, 0xae, 0xbf, 0xc7, 0x7c, 0x7c, 0x7c, 0x7c,
778 	0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
779 	0x7c, 0x3c, 0x3c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
780 	0x3c, 0x7c, 0x7c, 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c,
781 	0x7c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c,
782 	0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
783 	0x7c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x3c,
784 	0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c
785 };
786 
787 static const uint8_t *ar9380_rom_templates[] = {
788 	ar9380_def_rom,
789 	ar9380_def_rom_h112,
790 	ar9380_def_rom_h116,
791 	ar9380_def_rom_x112,
792 	ar9380_def_rom_x113
793 };
794 
795 /* Macro to "pack" registers to 16-bit to save some .rodata space. */
796 #define P(x)	((x) >> 2)
797 
798 /*
799  * AR9380 2.2 programming.
800  */
801 static const uint16_t ar9380_2_2_regs[] = {
802 	P(0x07010), P(0x01030), P(0x01070), P(0x010b0), P(0x08014),
803 	P(0x0801c), P(0x08120), P(0x081d0), P(0x08318), P(0x1609c),
804 	P(0x160ac), P(0x160b0), P(0x1610c), P(0x16140), P(0x1650c),
805 	P(0x16540), P(0x1690c), P(0x16940), P(0x09810), P(0x09820),
806 	P(0x09824), P(0x09828), P(0x0982c), P(0x09830), P(0x09c00),
807 	P(0x09e00), P(0x09e04), P(0x09e0c), P(0x09e10), P(0x09e14),
808 	P(0x09e18), P(0x09e1c), P(0x09e20), P(0x09e2c), P(0x09e3c),
809 	P(0x09e44), P(0x09e48), P(0x09fc8), P(0x0a204), P(0x0a208),
810 	P(0x0a22c), P(0x0a230), P(0x0a234), P(0x0a238), P(0x0a250),
811 	P(0x0a254), P(0x0a258), P(0x0a25c), P(0x0a260), P(0x0a264),
812 	P(0x0a280), P(0x0a284), P(0x0a288), P(0x0a28c), P(0x0a2c4),
813 	P(0x0a2d0), P(0x0a2d8), P(0x0a358), P(0x0a830), P(0x0ae04),
814 	P(0x0ae18), P(0x0ae1c), P(0x0ae20), P(0x0b284), P(0x0b830),
815 	P(0x0be04), P(0x0be18), P(0x0be1c), P(0x0be20), P(0x0c284)
816 };
817 
818 static const uint32_t ar9380_2_2_vals_5g20[] = {
819 	0x00000023, 0x00000230, 0x00000168, 0x00000e60, 0x03e803e8,
820 	0x128d8027, 0x08f04800, 0x00003210, 0x00003e80, 0x0dd08f29,
821 	0xa4653c00, 0x03284f3e, 0x08000000, 0x10804008, 0x08000000,
822 	0x10804008, 0x08000000, 0x10804008, 0xd00a8005, 0x206a022e,
823 	0x5ac640d0, 0x06903081, 0x05eea6d4, 0x0000059c, 0x000000c4,
824 	0x0372111a, 0x001c2020, 0x6c4000e2, 0x7ec88d2e, 0x37b95d5e,
825 	0x00000000, 0x0001cf9c, 0x000003b5, 0x0000001c, 0xcf946220,
826 	0x02321e27, 0x5030201a, 0x0003f000, 0x000037c0, 0x00000104,
827 	0x01026a2f, 0x0000000a, 0x00000fff, 0xffb81018, 0x00000000,
828 	0x000007d0, 0x02020002, 0x01000e0e, 0x0a021501, 0x00000e0e,
829 	0x00000007, 0x00000000, 0x00000110, 0x00022222, 0x00158d18,
830 	0x00071981, 0x7999a83a, 0x00000000, 0x0000019c, 0x001c0000,
831 	0x00000000, 0x0000019c, 0x000001b5, 0x00000000, 0x0000019c,
832 	0x001c0000, 0x00000000, 0x0000019c, 0x000001b5, 0x00000000
833 };
834 
835 #ifndef IEEE80211_NO_HT
836 static const uint32_t ar9380_2_2_vals_5g40[] = {
837 	0x00000023, 0x00000460, 0x000002d0, 0x00001cc0, 0x07d007d0,
838 	0x128d804f, 0x08f04800, 0x00003210, 0x00007d00, 0x0dd08f29,
839 	0xa4653c00, 0x03284f3e, 0x00000000, 0x10804008, 0x00000000,
840 	0x10804008, 0x00000000, 0x10804008, 0xd00a8005, 0x206a022e,
841 	0x5ac640d0, 0x06903081, 0x05eea6d4, 0x0000059c, 0x000000c4,
842 	0x0372111a, 0x001c2020, 0x6d4000e2, 0x7ec88d2e, 0x37b9605e,
843 	0x00000000, 0x0001cf9c, 0x000003b5, 0x0000001c, 0xcf946220,
844 	0x02321e27, 0x5030201a, 0x0003f000, 0x000037c4, 0x00000104,
845 	0x01026a2f, 0x00000014, 0x10000fff, 0xffb81018, 0x00000000,
846 	0x00000fa0, 0x02020002, 0x01000e0e, 0x0a021501, 0x00000e0e,
847 	0x00000007, 0x00000000, 0x00000110, 0x00022222, 0x00158d18,
848 	0x00071981, 0x7999a83a, 0x00000000, 0x0000019c, 0x001c0000,
849 	0x00000000, 0x0000019c, 0x000001b5, 0x00000000, 0x0000019c,
850 	0x001c0000, 0x00000000, 0x0000019c, 0x000001b5, 0x00000000
851 };
852 
853 static const uint32_t ar9380_2_2_vals_2g40[] = {
854 	0x00000023, 0x000002c0, 0x00000318, 0x00007c70, 0x10801600,
855 	0x12e00057, 0x08f04810, 0x0000320a, 0x00006880, 0x0b283f31,
856 	0x24652800, 0x05d08f20, 0x00000000, 0x50804008, 0x00000000,
857 	0x50804008, 0x00000000, 0x50804008, 0xd00a8011, 0x206a012e,
858 	0x5ac640d0, 0x06903881, 0x05eea6d4, 0x0000119c, 0x000000c4,
859 	0x037216a0, 0x001c2020, 0x6d4000e2, 0x7ec84d2e, 0x3379605e,
860 	0x00000000, 0x00021f9c, 0x000003ce, 0x00000021, 0xcf946222,
861 	0x02291e27, 0x50302012, 0x0001a000, 0x000037c4, 0x00000004,
862 	0x01026a2f, 0x00000016, 0x10000fff, 0xffb81018, 0x00000210,
863 	0x00001130, 0x02020002, 0x01000e0e, 0x3a021501, 0x00000e0e,
864 	0x0000000b, 0x00000150, 0x00000110, 0x00022222, 0x00158d18,
865 	0x00071981, 0x7999a83a, 0x00000000, 0x0000019c, 0x001c0000,
866 	0x00000000, 0x0000019c, 0x000001ce, 0x00000150, 0x0000019c,
867 	0x001c0000, 0x00000000, 0x0000019c, 0x000001ce, 0x00000150
868 };
869 #endif
870 
871 static const uint32_t ar9380_2_2_vals_2g20[] = {
872 	0x00000023, 0x00000160, 0x0000018c, 0x00003e38, 0x08400b00,
873 	0x12e0002b, 0x08f04810, 0x0000320a, 0x00003440, 0x0b283f31,
874 	0x24652800, 0x05d08f20, 0x00000000, 0x50804008, 0x00000000,
875 	0x50804008, 0x00000000, 0x50804008, 0xd00a8011, 0x206a012e,
876 	0x5ac640d0, 0x06903881, 0x05eea6d4, 0x0000119c, 0x000000c4,
877 	0x037216a0, 0x001c2020, 0x6c4000e2, 0x7ec84d2e, 0x33795d5e,
878 	0x00000000, 0x00021f9c, 0x000003ce, 0x00000021, 0xcf946222,
879 	0x02291e27, 0x50302012, 0x0001a000, 0x000037c0, 0x00000004,
880 	0x01026a2f, 0x0000000b, 0x00000fff, 0xffb81018, 0x00000108,
881 	0x00000898, 0x02020002, 0x01000e0e, 0x3a021501, 0x00000e0e,
882 	0x0000000b, 0x00000150, 0x00000110, 0x00022222, 0x00158d18,
883 	0x00071982, 0x7999a83a, 0x00000000, 0x0000019c, 0x001c0000,
884 	0x00000000, 0x0000019c, 0x000001ce, 0x00000150, 0x0000019c,
885 	0x001c0000, 0x00000000, 0x0000019c, 0x000001ce, 0x00000150
886 };
887 
888 static const uint16_t ar9380_2_2_cm_regs[] = {
889 	P(0x040a4), P(0x07008), P(0x07020), P(0x07034), P(0x07038),
890 	P(0x07048), P(0x00008), P(0x00030), P(0x00034), P(0x00040),
891 	P(0x00044), P(0x00048), P(0x0004c), P(0x00050), P(0x01040),
892 	P(0x01044), P(0x01048), P(0x0104c), P(0x01050), P(0x01054),
893 	P(0x01058), P(0x0105c), P(0x01060), P(0x01064), P(0x010f0),
894 	P(0x01270), P(0x012b0), P(0x012f0), P(0x0143c), P(0x0147c),
895 	P(0x08000), P(0x08004), P(0x08008), P(0x0800c), P(0x08018),
896 	P(0x08020), P(0x08038), P(0x0803c), P(0x08040), P(0x08044),
897 	P(0x08048), P(0x0804c), P(0x08054), P(0x08058), P(0x0805c),
898 	P(0x08060), P(0x08064), P(0x08070), P(0x08074), P(0x08078),
899 	P(0x0809c), P(0x080a0), P(0x080a4), P(0x080a8), P(0x080ac),
900 	P(0x080b0), P(0x080b4), P(0x080b8), P(0x080bc), P(0x080c0),
901 	P(0x080c4), P(0x080c8), P(0x080cc), P(0x080d0), P(0x080d4),
902 	P(0x080d8), P(0x080dc), P(0x080e0), P(0x080e4), P(0x080e8),
903 	P(0x080ec), P(0x080f0), P(0x080f4), P(0x080fc), P(0x08100),
904 	P(0x08108), P(0x0810c), P(0x08110), P(0x08114), P(0x08118),
905 	P(0x0811c), P(0x08124), P(0x08128), P(0x0812c), P(0x08130),
906 	P(0x08134), P(0x08138), P(0x0813c), P(0x08144), P(0x08168),
907 	P(0x0816c), P(0x081c0), P(0x081c4), P(0x081c8), P(0x081cc),
908 	P(0x081ec), P(0x081f0), P(0x081f4), P(0x081f8), P(0x081fc),
909 	P(0x08240), P(0x08244), P(0x08248), P(0x0824c), P(0x08250),
910 	P(0x08254), P(0x08258), P(0x0825c), P(0x08260), P(0x08264),
911 	P(0x08268), P(0x0826c), P(0x08270), P(0x08274), P(0x08278),
912 	P(0x0827c), P(0x08284), P(0x08288), P(0x0828c), P(0x08294),
913 	P(0x08298), P(0x0829c), P(0x08300), P(0x08314), P(0x0831c),
914 	P(0x08328), P(0x0832c), P(0x08330), P(0x08334), P(0x08338),
915 	P(0x0833c), P(0x08340), P(0x08344), P(0x08348), P(0x0835c),
916 	P(0x08360), P(0x08364), P(0x08368), P(0x08370), P(0x08374),
917 	P(0x08378), P(0x0837c), P(0x08380), P(0x08384), P(0x08390),
918 	P(0x08394), P(0x08398), P(0x0839c), P(0x083a0), P(0x083a4),
919 	P(0x083a8), P(0x083ac), P(0x083b0), P(0x083b4), P(0x083b8),
920 	P(0x083bc), P(0x083c0), P(0x083c4), P(0x083c8), P(0x083cc),
921 	P(0x083d0), P(0x09800), P(0x09804), P(0x09808), P(0x0980c),
922 	P(0x09814), P(0x09818), P(0x0981c), P(0x09834), P(0x09838),
923 	P(0x0983c), P(0x09880), P(0x09884), P(0x098a4), P(0x098b0),
924 	P(0x098d0), P(0x098d4), P(0x098dc), P(0x098f0), P(0x098f4),
925 	P(0x09c04), P(0x09c08), P(0x09c0c), P(0x09c10), P(0x09c14),
926 	P(0x09c18), P(0x09c1c), P(0x09d00), P(0x09d04), P(0x09d08),
927 	P(0x09d0c), P(0x09d10), P(0x09d14), P(0x09d18), P(0x09e08),
928 	P(0x09e24), P(0x09e28), P(0x09e30), P(0x09e34), P(0x09e38),
929 	P(0x09e40), P(0x09e4c), P(0x09e50), P(0x09e54), P(0x09fc0),
930 	P(0x09fc4), P(0x09fcc), P(0x09fd0), P(0x0a20c), P(0x0a220),
931 	P(0x0a224), P(0x0a228), P(0x0a23c), P(0x0a244), P(0x0a2a0),
932 	P(0x0a2c0), P(0x0a2c8), P(0x0a2cc), P(0x0a2d4), P(0x0a2ec),
933 	P(0x0a2f0), P(0x0a2f4), P(0x0a2f8), P(0x0a344), P(0x0a34c),
934 	P(0x0a350), P(0x0a364), P(0x0a370), P(0x0a390), P(0x0a394),
935 	P(0x0a398), P(0x0a39c), P(0x0a3a0), P(0x0a3a4), P(0x0a3a8),
936 	P(0x0a3ac), P(0x0a3c0), P(0x0a3c4), P(0x0a3c8), P(0x0a3cc),
937 	P(0x0a3d0), P(0x0a3d4), P(0x0a3d8), P(0x0a3dc), P(0x0a3e0),
938 	P(0x0a3e4), P(0x0a3e8), P(0x0a3ec), P(0x0a3f0), P(0x0a3f4),
939 	P(0x0a3f8), P(0x0a3fc), P(0x0a400), P(0x0a404), P(0x0a408),
940 	P(0x0a40c), P(0x0a414), P(0x0a418), P(0x0a41c), P(0x0a420),
941 	P(0x0a424), P(0x0a428), P(0x0a42c), P(0x0a430), P(0x0a434),
942 	P(0x0a438), P(0x0a43c), P(0x0a440), P(0x0a444), P(0x0a448),
943 	P(0x0a44c), P(0x0a450), P(0x0a458), P(0x0a640), P(0x0a644),
944 	P(0x0a648), P(0x0a64c), P(0x0a670), P(0x0a674), P(0x0a678),
945 	P(0x0a67c), P(0x0a680), P(0x0a684), P(0x0a688), P(0x0a690),
946 	P(0x0a7c0), P(0x0a7c4), P(0x0a7c8), P(0x0a7cc), P(0x0a7d0),
947 	P(0x0a7d4), P(0x0a7dc), P(0x0a8d0), P(0x0a8d4), P(0x0a8dc),
948 	P(0x0a8f0), P(0x0a8f4), P(0x0b2d0), P(0x0b2d4), P(0x0b2ec),
949 	P(0x0b2f0), P(0x0b2f4), P(0x0b2f8), P(0x0b408), P(0x0b40c),
950 	P(0x0b420), P(0x0b8d0), P(0x0b8d4), P(0x0b8dc), P(0x0b8f0),
951 	P(0x0b8f4), P(0x0c2d0), P(0x0c2d4), P(0x0c2ec), P(0x0c2f0),
952 	P(0x0c2f4), P(0x0c2f8), P(0x0c408), P(0x0c40c), P(0x0c420),
953 	P(0x16000), P(0x16004), P(0x16008), P(0x1600c), P(0x16040),
954 	P(0x1604c), P(0x16050), P(0x16054), P(0x16058), P(0x1605c),
955 	P(0x16060), P(0x16064), P(0x1606c), P(0x16080), P(0x16084),
956 	P(0x16088), P(0x1608c), P(0x16090), P(0x16098), P(0x160a0),
957 	P(0x160a4), P(0x160a8), P(0x160b4), P(0x160c0), P(0x160c4),
958 	P(0x160c8), P(0x160cc), P(0x16100), P(0x16104), P(0x16108),
959 	P(0x16144), P(0x16148), P(0x16280), P(0x16284), P(0x16288),
960 	P(0x1628c), P(0x16290), P(0x16294), P(0x16380), P(0x16384),
961 	P(0x16388), P(0x1638c), P(0x16390), P(0x16394), P(0x16398),
962 	P(0x1639c), P(0x163a0), P(0x163a4), P(0x163a8), P(0x163ac),
963 	P(0x163b0), P(0x163b4), P(0x163b8), P(0x163bc), P(0x163c0),
964 	P(0x163c4), P(0x163c8), P(0x163cc), P(0x163d0), P(0x163d4),
965 	P(0x16400), P(0x16404), P(0x16408), P(0x1640c), P(0x16440),
966 	P(0x1644c), P(0x16450), P(0x16454), P(0x16458), P(0x1645c),
967 	P(0x16460), P(0x16464), P(0x1646c), P(0x16500), P(0x16504),
968 	P(0x16508), P(0x16544), P(0x16548), P(0x16780), P(0x16784),
969 	P(0x16788), P(0x1678c), P(0x16790), P(0x16794), P(0x16798),
970 	P(0x1679c), P(0x167a0), P(0x167a4), P(0x167a8), P(0x167ac),
971 	P(0x167b0), P(0x167b4), P(0x167b8), P(0x167bc), P(0x167c0),
972 	P(0x167c4), P(0x167c8), P(0x167cc), P(0x167d0), P(0x167d4),
973 	P(0x16800), P(0x16804), P(0x16808), P(0x1680c), P(0x16840),
974 	P(0x1684c), P(0x16850), P(0x16854), P(0x16858), P(0x1685c),
975 	P(0x16860), P(0x16864), P(0x1686c), P(0x16900), P(0x16904),
976 	P(0x16908), P(0x16944), P(0x16948), P(0x16b80), P(0x16b84),
977 	P(0x16b88), P(0x16b8c), P(0x16b90), P(0x16b94), P(0x16b98),
978 	P(0x16b9c), P(0x16ba0), P(0x16ba4), P(0x16ba8), P(0x16bac),
979 	P(0x16bb0), P(0x16bb4), P(0x16bb8), P(0x16bbc), P(0x16bc0),
980 	P(0x16bc4), P(0x16bc8), P(0x16bcc), P(0x16bd0), P(0x16bd4)
981 };
982 
983 static const uint32_t ar9380_2_2_cm_vals[] = {
984 	0x00a0c1c9, 0x00000000, 0x00000000, 0x00000002, 0x000004c2,
985 	0x00000008, 0x00000000, 0x00020085, 0x00000005, 0x00000000,
986 	0x00000000, 0x00000008, 0x00000010, 0x00000000, 0x002ffc0f,
987 	0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f,
988 	0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x00000100,
989 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
990 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
991 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
992 	0x00000000, 0xffffffff, 0x00000000, 0x00000000, 0x000fc78f,
993 	0x0000000f, 0x00000000, 0x00000310, 0x00000020, 0x00000000,
994 	0x0000000f, 0x00000000, 0x02ff0000, 0x0e070605, 0x0000000d,
995 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x2a800000,
996 	0x06900168, 0x13881c20, 0x01f40000, 0x00252500, 0x00a00000,
997 	0x00400000, 0x00000000, 0xffffffff, 0x0000ffff, 0x3f3f3f3f,
998 	0x00000000, 0x00000000, 0x00000000, 0x00020000, 0x00000000,
999 	0x00000052, 0x00000000, 0x00000000, 0x000007ff, 0x000000aa,
1000 	0x00003210, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1001 	0x00000000, 0x00000000, 0x0000ffff, 0xffffffff, 0x00000000,
1002 	0x00000000, 0x00000000, 0x33332210, 0x00000000, 0x00000000,
1003 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1004 	0x00100000, 0x0010f424, 0x00000800, 0x0001e848, 0x00000000,
1005 	0x00000000, 0x00000000, 0x40000000, 0x00080922, 0x9bc00010,
1006 	0xffffffff, 0x0000ffff, 0x00000000, 0x40000000, 0x003e4180,
1007 	0x00000004, 0x0000002c, 0x0000002c, 0x000000ff, 0x00000000,
1008 	0x00000000, 0x00000000, 0x00000140, 0x00000000, 0x0000010d,
1009 	0x00000000, 0x00000007, 0x00000302, 0x00000700, 0x00ff0000,
1010 	0x02400000, 0x000107ff, 0xaa48105b, 0x008f0000, 0x00000000,
1011 	0xffffffff, 0xffffffff, 0x00000000, 0x00000000, 0x000000ff,
1012 	0x00000000, 0x00000000, 0xffffffff, 0xffffffff, 0xffffffff,
1013 	0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x0000fa14,
1014 	0x000f0c00, 0x33332210, 0x33332210, 0x33332210, 0x33332210,
1015 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000200,
1016 	0x000301ff, 0xafe68e30, 0xfd14e000, 0x9c0a9f6b, 0x04900000,
1017 	0x9280c00a, 0x00000000, 0x00020028, 0x6400a290, 0x0108ecff,
1018 	0x0d000600, 0x201fff00, 0x00001042, 0x00200400, 0x32840bbe,
1019 	0x004b6a8e, 0x00000820, 0x00000000, 0x00000000, 0x00000000,
1020 	0xff55ff55, 0x0320ff55, 0x00000000, 0x00000000, 0x00046384,
1021 	0x05b6b440, 0x00b6b440, 0xc080a333, 0x40206c10, 0x009c4060,
1022 	0x9883800a, 0x01834061, 0x00c0040b, 0x00000000, 0x0038230c,
1023 	0x990bb515, 0x0c6f0000, 0x06336f77, 0x6af6532f, 0x0cc80c00,
1024 	0x0d261820, 0x00001004, 0x00ff03f1, 0x00000000, 0x803e4788,
1025 	0x0001efb5, 0x40000014, 0x01193b93, 0x00000000, 0x00000000,
1026 	0x00000000, 0x10002310, 0x00000000, 0x0c000000, 0x00000001,
1027 	0x00000001, 0x00000000, 0x18c43433, 0x00000000, 0x00000000,
1028 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1029 	0x0000a000, 0x00000000, 0x00000000, 0x00000001, 0x00000444,
1030 	0x001f0e0f, 0x0075393f, 0xb79f6427, 0x00000000, 0xaaaaaaaa,
1031 	0x3c466478, 0x20202020, 0x22222220, 0x20200020, 0x20202020,
1032 	0x20202020, 0x20202020, 0x20202020, 0x20202020, 0x20202020,
1033 	0x20202020, 0x20202020, 0x20202020, 0x00000000, 0x00000246,
1034 	0x0cdbd380, 0x000f0f01, 0x8fa91f01, 0x00000000, 0x0e79e5c6,
1035 	0x00820820, 0x1ce739ce, 0x2d001dce, 0x1ce739ce, 0x000001ce,
1036 	0x1ce739ce, 0x000001ce, 0x1ce739ce, 0x1ce739ce, 0x00000000,
1037 	0x00001801, 0x00100000, 0x00000000, 0x00000000, 0x06000080,
1038 	0x00000001, 0x00010000, 0x00000000, 0x00000000, 0x3fad9d74,
1039 	0x0048060a, 0x00003c37, 0x03020100, 0x09080504, 0x0d0c0b0a,
1040 	0x13121110, 0x31301514, 0x35343332, 0x00000036, 0x00000838,
1041 	0x00000000, 0xfffffffc, 0x00000000, 0x00000000, 0x00000000,
1042 	0x00000004, 0x00000001, 0x004b6a8e, 0x00000820, 0x00000000,
1043 	0x00000000, 0x00000000, 0x00000080, 0x00000000, 0x00000000,
1044 	0x00000000, 0x00000000, 0x00000000, 0x0e79e5c0, 0x00820820,
1045 	0x00000000, 0x004b6a8e, 0x00000820, 0x00000000, 0x00000000,
1046 	0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000,
1047 	0x00000000, 0x00000000, 0x0e79e5c0, 0x00820820, 0x00000000,
1048 	0x36db6db6, 0x6db6db40, 0x73f00000, 0x00000000, 0x7f80fff8,
1049 	0x76d005b5, 0x556cf031, 0x13449440, 0x0c51c92c, 0x3db7fffc,
1050 	0xfffffffc, 0x000f0278, 0x6db60000, 0x00000000, 0x0e48048c,
1051 	0x54214514, 0x119f481e, 0x24926490, 0xd2888888, 0x0a108ffe,
1052 	0x812fc370, 0x423c8000, 0x92480080, 0x00adb6d0, 0x6db6db60,
1053 	0x6db6db6c, 0x01e6c000, 0x3fffbe01, 0xfff80000, 0x00080010,
1054 	0x02084080, 0x00000000, 0x058a0001, 0x3d840208, 0x05a20408,
1055 	0x00038c07, 0x00000004, 0x458aa14f, 0x00000000, 0x00000000,
1056 	0x00800700, 0x00800700, 0x00800700, 0x00000000, 0x00000000,
1057 	0x00000000, 0x00000001, 0x00000001, 0x00000000, 0x00000000,
1058 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000000a0,
1059 	0x000c0000, 0x14021402, 0x00001402, 0x00000000, 0x00000000,
1060 	0x36db6db6, 0x6db6db40, 0x73f00000, 0x00000000, 0x7f80fff8,
1061 	0x76d005b5, 0x556cf031, 0x13449440, 0x0c51c92c, 0x3db7fffc,
1062 	0xfffffffc, 0x000f0278, 0x6db60000, 0x3fffbe01, 0xfff80000,
1063 	0x00080010, 0x02084080, 0x00000000, 0x00000000, 0x00000000,
1064 	0x00800700, 0x00800700, 0x00800700, 0x00000000, 0x00000000,
1065 	0x00000000, 0x00000001, 0x00000001, 0x00000000, 0x00000000,
1066 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000000a0,
1067 	0x000c0000, 0x14021402, 0x00001402, 0x00000000, 0x00000000,
1068 	0x36db6db6, 0x6db6db40, 0x73f00000, 0x00000000, 0x7f80fff8,
1069 	0x76d005b5, 0x556cf031, 0x13449440, 0x0c51c92c, 0x3db7fffc,
1070 	0xfffffffc, 0x000f0278, 0x6db60000, 0x3fffbe01, 0xfff80000,
1071 	0x00080010, 0x02084080, 0x00000000, 0x00000000, 0x00000000,
1072 	0x00800700, 0x00800700, 0x00800700, 0x00000000, 0x00000000,
1073 	0x00000000, 0x00000001, 0x00000001, 0x00000000, 0x00000000,
1074 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000000a0,
1075 	0x000c0000, 0x14021402, 0x00001402, 0x00000000, 0x00000000
1076 };
1077 
1078 static const uint16_t ar9380_2_2_fast_clock_regs[] = {
1079 	P(0x01030), P(0x01070), P(0x010b0), P(0x08014), P(0x0801c),
1080 	P(0x08318), P(0x09e00), P(0x0a230), P(0x0a254)
1081 };
1082 
1083 static const uint32_t ar9380_2_2_fast_clock_vals_5g20[] = {
1084 	0x00000268, 0x0000018c, 0x00000fd0, 0x044c044c, 0x148ec02b,
1085 	0x000044c0, 0x0372131c, 0x0000000b, 0x00000898
1086 };
1087 
1088 #ifndef IEEE80211_NO_HT
1089 static const uint32_t ar9380_2_2_fast_clock_vals_5g40[] = {
1090 	0x000004d0, 0x00000318, 0x00001fa0, 0x08980898, 0x148ec057,
1091 	0x00008980, 0x0372131c, 0x00000016, 0x00001130
1092 };
1093 #endif
1094 
1095 static const struct athn_ini ar9380_2_2_ini = {
1096 	.nregs		= __arraycount(ar9380_2_2_regs),
1097 	.regs		= ar9380_2_2_regs,
1098 	.vals_5g20	= ar9380_2_2_vals_5g20,
1099 #ifndef IEEE80211_NO_HT
1100 	.vals_5g40	= ar9380_2_2_vals_5g40,
1101 	.vals_2g40	= ar9380_2_2_vals_2g40,
1102 #endif
1103 	.vals_2g20	= ar9380_2_2_vals_2g20,
1104 	.ncmregs	= __arraycount(ar9380_2_2_cm_regs),
1105 	.cmregs		= ar9380_2_2_cm_regs,
1106 	.cmvals		= ar9380_2_2_cm_vals,
1107 	.nfastregs	= __arraycount(ar9380_2_2_fast_clock_regs),
1108 	.fastregs	= ar9380_2_2_fast_clock_regs,
1109 	.fastvals_5g20	= ar9380_2_2_fast_clock_vals_5g20,
1110 #ifndef IEEE80211_NO_HT
1111 	.fastvals_5g50	= ar9380_2_2_fast_clock_vals_5g40
1112 #endif
1113 };
1114 
1115 /*
1116  * AR9485 1.1 programming.
1117  */
1118 
1119 static const uint16_t ar9485_1_1_regs[] = {
1120 	P(0x01030), P(0x01070), P(0x010b0), P(0x08014), P(0x0801c),
1121 	P(0x08120), P(0x081d0), P(0x08318), P(0x09810), P(0x09820),
1122 	P(0x09824), P(0x09828), P(0x0982c), P(0x09830), P(0x09c00),
1123 	P(0x09e00), P(0x09e04), P(0x09e0c), P(0x09e10), P(0x09e14),
1124 	P(0x09e18), P(0x09e1c), P(0x09e20), P(0x09e2c), P(0x09e3c),
1125 	P(0x09e44), P(0x09e48), P(0x09fc8), P(0x0a204), P(0x0a208),
1126 	P(0x0a230), P(0x0a234), P(0x0a238), P(0x0a250), P(0x0a254),
1127 	P(0x0a258), P(0x0a25c), P(0x0a260), P(0x0a264), P(0x0a280),
1128 	P(0x0a284), P(0x0a288), P(0x0a28c), P(0x0a2c4), P(0x0a2d0),
1129 	P(0x0a2d8), P(0x0a358), P(0x0be04), P(0x0be18), P(0x1609c),
1130 	P(0x160ac), P(0x160b0), P(0x1610c), P(0x16140)
1131 };
1132 
1133 static const uint32_t ar9485_1_1_vals_2g40[] = {
1134 	0x000002c0, 0x00000318, 0x00007c70, 0x10801600, 0x12e00057,
1135 	0x08f04810, 0x0000320a, 0x00006880, 0xd00a8005, 0x206a002e,
1136 	0x5ac640d0, 0x06903881, 0x05eea6d4, 0x0000059c, 0x00000044,
1137 	0x037216a0, 0x00182020, 0x6d4000e2, 0x7ec80d2e, 0x3139605e,
1138 	0x00000000, 0x00021f9c, 0x000003ce, 0x00000021, 0xcf946222,
1139 	0x02282324, 0x50302010, 0x0001a000, 0x01303fc4, 0x00000004,
1140 	0x00004016, 0x10000fff, 0xffb81018, 0x00000210, 0x00001130,
1141 	0x02020002, 0x01000e0e, 0x3a021501, 0x00000e0e, 0x0000000b,
1142 	0x000002a0, 0x00000000, 0x00000000, 0x00158d18, 0x00071982,
1143 	0xf999a83a, 0x00000000, 0x00802020, 0x00000000, 0x0b283f31,
1144 	0x24611800, 0x03284f3e, 0x00170000, 0x50804008
1145 };
1146 
1147 static const uint32_t ar9485_1_1_vals_2g20[] = {
1148 	0x00000160, 0x0000018c, 0x00003e38, 0x08400b00, 0x12e0002b,
1149 	0x08f04810, 0x0000320a, 0x00003440, 0xd00a8005, 0x206a002e,
1150 	0x5ac640d0, 0x06903881, 0x05eea6d4, 0x0000059c, 0x00000044,
1151 	0x037216a0, 0x00182020, 0x6c4000e2, 0x7ec80d2e, 0x31395d5e,
1152 	0x00000000, 0x00021f9c, 0x000003ce, 0x00000021, 0xcf946222,
1153 	0x02282324, 0x50302010, 0x0001a000, 0x01303fc0, 0x00000004,
1154 	0x0000400b, 0x10000fff, 0xffb81018, 0x00000108, 0x00000898,
1155 	0x02020002, 0x01000e0e, 0x3a021501, 0x00000e0e, 0x0000000b,
1156 	0x000002a0, 0x00000000, 0x00000000, 0x00158d18, 0x00071982,
1157 	0xf999a83a, 0x00000000, 0x00802020, 0x00000000, 0x0b283f31,
1158 	0x24611800, 0x03284f3e, 0x00170000, 0x50804008
1159 };
1160 
1161 static const uint16_t ar9485_1_1_cm_regs[] = {
1162 	P(0x00008), P(0x00030), P(0x00034), P(0x00040), P(0x00044),
1163 	P(0x00048), P(0x0004c), P(0x00050), P(0x01040), P(0x01044),
1164 	P(0x01048), P(0x0104c), P(0x01050), P(0x01054), P(0x01058),
1165 	P(0x0105c), P(0x01060), P(0x01064), P(0x010f0), P(0x01270),
1166 	P(0x012b0), P(0x012f0), P(0x0143c), P(0x0147c), P(0x08000),
1167 	P(0x08004), P(0x08008), P(0x0800c), P(0x08018), P(0x08020),
1168 	P(0x08038), P(0x0803c), P(0x08040), P(0x08044), P(0x08048),
1169 	P(0x0804c), P(0x08054), P(0x08058), P(0x0805c), P(0x08060),
1170 	P(0x08064), P(0x08070), P(0x08074), P(0x08078), P(0x0809c),
1171 	P(0x080a0), P(0x080a4), P(0x080a8), P(0x080ac), P(0x080b0),
1172 	P(0x080b4), P(0x080b8), P(0x080bc), P(0x080c0), P(0x080c4),
1173 	P(0x080c8), P(0x080cc), P(0x080d0), P(0x080d4), P(0x080d8),
1174 	P(0x080dc), P(0x080e0), P(0x080e4), P(0x080e8), P(0x080ec),
1175 	P(0x080f0), P(0x080f4), P(0x080fc), P(0x08100), P(0x08108),
1176 	P(0x0810c), P(0x08110), P(0x08114), P(0x08118), P(0x0811c),
1177 	P(0x08124), P(0x08128), P(0x0812c), P(0x08130), P(0x08134),
1178 	P(0x08138), P(0x0813c), P(0x08144), P(0x08168), P(0x0816c),
1179 	P(0x08170), P(0x08174), P(0x08178), P(0x0817c), P(0x081c0),
1180 	P(0x081c4), P(0x081d4), P(0x081ec), P(0x081f0), P(0x081f4),
1181 	P(0x081f8), P(0x081fc), P(0x08240), P(0x08244), P(0x08248),
1182 	P(0x0824c), P(0x08250), P(0x08254), P(0x08258), P(0x0825c),
1183 	P(0x08260), P(0x08264), P(0x08268), P(0x0826c), P(0x08270),
1184 	P(0x08274), P(0x08278), P(0x0827c), P(0x08284), P(0x08288),
1185 	P(0x0828c), P(0x08294), P(0x08298), P(0x0829c), P(0x08300),
1186 	P(0x08314), P(0x0831c), P(0x08328), P(0x0832c), P(0x08330),
1187 	P(0x08334), P(0x08338), P(0x0833c), P(0x08340), P(0x08344),
1188 	P(0x08348), P(0x0835c), P(0x08360), P(0x08364), P(0x08368),
1189 	P(0x08370), P(0x08374), P(0x08378), P(0x0837c), P(0x08380),
1190 	P(0x08384), P(0x08390), P(0x08394), P(0x08398), P(0x0839c),
1191 	P(0x083a0), P(0x083a4), P(0x083a8), P(0x083ac), P(0x083b0),
1192 	P(0x083b4), P(0x083b8), P(0x083bc), P(0x083c0), P(0x083c4),
1193 	P(0x083c8), P(0x083cc), P(0x083d0), P(0x0a580), P(0x0a584),
1194 	P(0x0a588), P(0x0a58c), P(0x0a590), P(0x0a594), P(0x0a598),
1195 	P(0x0a59c), P(0x0a5a0), P(0x0a5a4), P(0x0a5a8), P(0x0a5ac),
1196 	P(0x0a5b0), P(0x0a5b4), P(0x0a5b8), P(0x0a5bc), P(0x09800),
1197 	P(0x09804), P(0x09808), P(0x0980c), P(0x09814), P(0x09818),
1198 	P(0x0981c), P(0x09834), P(0x09838), P(0x0983c), P(0x09880),
1199 	P(0x09884), P(0x098a4), P(0x098b0), P(0x098d0), P(0x098d4),
1200 	P(0x098dc), P(0x098f0), P(0x098f4), P(0x09c04), P(0x09c08),
1201 	P(0x09c0c), P(0x09c10), P(0x09c14), P(0x09c18), P(0x09c1c),
1202 	P(0x09d00), P(0x09d04), P(0x09d08), P(0x09d0c), P(0x09d10),
1203 	P(0x09d14), P(0x09d18), P(0x09d1c), P(0x09e08), P(0x09e24),
1204 	P(0x09e28), P(0x09e30), P(0x09e34), P(0x09e38), P(0x09e40),
1205 	P(0x09e4c), P(0x09e50), P(0x09fc0), P(0x09fc4), P(0x09fcc),
1206 	P(0x0a20c), P(0x0a210), P(0x0a220), P(0x0a224), P(0x0a228),
1207 	P(0x0a23c), P(0x0a244), P(0x0a2a0), P(0x0a2c0), P(0x0a2c8),
1208 	P(0x0a2cc), P(0x0a2d4), P(0x0a2dc), P(0x0a2e0), P(0x0a2e4),
1209 	P(0x0a2e8), P(0x0a2ec), P(0x0a2f0), P(0x0a2f4), P(0x0a2f8),
1210 	P(0x0a344), P(0x0a34c), P(0x0a350), P(0x0a364), P(0x0a370),
1211 	P(0x0a390), P(0x0a394), P(0x0a398), P(0x0a39c), P(0x0a3a0),
1212 	P(0x0a3a4), P(0x0a3a8), P(0x0a3ac), P(0x0a3c0), P(0x0a3c4),
1213 	P(0x0a3c8), P(0x0a3cc), P(0x0a3d0), P(0x0a3d4), P(0x0a3d8),
1214 	P(0x0a3dc), P(0x0a3e0), P(0x0a3e4), P(0x0a3e8), P(0x0a3ec),
1215 	P(0x0a3f0), P(0x0a3f4), P(0x0a3f8), P(0x0a3fc), P(0x0a400),
1216 	P(0x0a404), P(0x0a408), P(0x0a40c), P(0x0a414), P(0x0a418),
1217 	P(0x0a41c), P(0x0a420), P(0x0a424), P(0x0a428), P(0x0a42c),
1218 	P(0x0a430), P(0x0a434), P(0x0a438), P(0x0a43c), P(0x0a440),
1219 	P(0x0a444), P(0x0a448), P(0x0a44c), P(0x0a450), P(0x0a5c4),
1220 	P(0x0a5c8), P(0x0a5cc), P(0x0a760), P(0x0a764), P(0x0a768),
1221 	P(0x0a76c), P(0x0a770), P(0x0a774), P(0x0a778), P(0x0a780),
1222 	P(0x0a7c0), P(0x0a7c4), P(0x0a7c8), P(0x0a7cc), P(0x0a7d0),
1223 	P(0x0a7d4), P(0x0a7dc), P(0x16000), P(0x16004), P(0x16008),
1224 	P(0x1600c), P(0x16040), P(0x1604c), P(0x16050), P(0x16054),
1225 	P(0x16080), P(0x16084), P(0x16088), P(0x1608c), P(0x16090),
1226 	P(0x16098), P(0x160a0), P(0x160a4), P(0x160a8), P(0x160b4),
1227 	P(0x160c0), P(0x160c4), P(0x160c8), P(0x160cc), P(0x160d0),
1228 	P(0x16100), P(0x16104), P(0x16108), P(0x16144), P(0x16148),
1229 	P(0x16240), P(0x16244), P(0x16248), P(0x1624c), P(0x16280),
1230 	P(0x16284), P(0x16288), P(0x1628c), P(0x16290), P(0x16380),
1231 	P(0x16384), P(0x16388), P(0x1638c), P(0x16390), P(0x16394),
1232 	P(0x16398), P(0x1639c), P(0x163a0), P(0x163a4), P(0x163a8),
1233 	P(0x163ac), P(0x163b0), P(0x163b4), P(0x163b8), P(0x163bc),
1234 	P(0x163c0), P(0x163c4), P(0x163c8), P(0x163cc), P(0x163d0),
1235 	P(0x163d4), P(0x16c40), P(0x16c44), P(0x04014), P(0x04090),
1236 	P(0x040a4), P(0x07010), P(0x07020), P(0x07034), P(0x07038),
1237 	P(0x07048)
1238 };
1239 
1240 static const uint32_t ar9485_1_1_cm_vals[] = {
1241 	0x00000000, 0x00020085, 0x00000005, 0x00000000, 0x00000000,
1242 	0x00000008, 0x00000010, 0x00000000, 0x002ffc0f, 0x002ffc0f,
1243 	0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f,
1244 	0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x00000100, 0x00000000,
1245 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1246 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1247 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1248 	0xffffffff, 0x00000000, 0x00000000, 0x000fc78f, 0x0000000f,
1249 	0x00000000, 0x00000310, 0x00000020, 0x00000000, 0x0000000f,
1250 	0x00000000, 0x02ff0000, 0x0e070605, 0x0000000d, 0x00000000,
1251 	0x00000000, 0x00000000, 0x00000000, 0x2a800000, 0x06900168,
1252 	0x13881c22, 0x01f40000, 0x00252500, 0x00a00000, 0x00400000,
1253 	0x00000000, 0xffffffff, 0x0000ffff, 0x3f3f3f3f, 0x00000000,
1254 	0x00000000, 0x00000000, 0x00020000, 0x00000000, 0x00000052,
1255 	0x00000000, 0x00000000, 0x000007ff, 0x000000aa, 0x00003210,
1256 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1257 	0x00000000, 0x0000ffff, 0xffffffff, 0x00000000, 0x00000000,
1258 	0x18486200, 0x33332210, 0x00000000, 0x00020000, 0x00000000,
1259 	0x33332210, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1260 	0x00000000, 0x00000000, 0x00100000, 0x0010f400, 0x00000800,
1261 	0x0001e800, 0x00000000, 0x00000000, 0x00000000, 0x40000000,
1262 	0x00080922, 0x9ca00010, 0xffffffff, 0x0000ffff, 0x00000000,
1263 	0x40000000, 0x003e4180, 0x00000004, 0x0000002c, 0x0000002c,
1264 	0x000000ff, 0x00000000, 0x00000000, 0x00000000, 0x00000140,
1265 	0x00000000, 0x0000010d, 0x00000000, 0x00000007, 0x00000302,
1266 	0x00000700, 0x00ff0000, 0x02400000, 0x000107ff, 0xa248105b,
1267 	0x008f0000, 0x00000000, 0xffffffff, 0xffffffff, 0x00000000,
1268 	0x00000000, 0x000000ff, 0x00000000, 0x00000000, 0xffffffff,
1269 	0xffffffff, 0xffffffff, 0xffffffff, 0x00000000, 0x00000000,
1270 	0x00000000, 0x0000fa14, 0x000f0c00, 0x33332210, 0x33332210,
1271 	0x33332210, 0x33332210, 0x00000000, 0x00000000, 0x00000000,
1272 	0x00000000, 0x00000200, 0x000301ff, 0x00000000, 0x00000000,
1273 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1274 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1275 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xafe68e30,
1276 	0xfd14e000, 0x9c0a8f6b, 0x04800000, 0x9280c00a, 0x00000000,
1277 	0x00020028, 0x5f3ca3de, 0x0108ecff, 0x14750600, 0x201fff00,
1278 	0x00001042, 0x00200400, 0x52440bbe, 0x004b6a8e, 0x00000820,
1279 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x03200000,
1280 	0x00000000, 0x00000000, 0x00046384, 0x05b6b440, 0x00b6b440,
1281 	0xc080a333, 0x40206c10, 0x009c4060, 0x1883800a, 0x01834061,
1282 	0x00c00400, 0x00000000, 0x00000000, 0x0038233c, 0x9927b515,
1283 	0x12ef0200, 0x06336f77, 0x6af6532f, 0x0cc80c00, 0x0d261820,
1284 	0x00001004, 0x00ff03f1, 0x80be4788, 0x0001efb5, 0x40000014,
1285 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10002310,
1286 	0x00000000, 0x0c000000, 0x00000001, 0x00000001, 0x00000000,
1287 	0x18c43433, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1288 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1289 	0x00000000, 0x00000000, 0x0000a000, 0x00000000, 0x00000000,
1290 	0x00000001, 0x00000444, 0x001f0e0f, 0x0075393f, 0xb79f6427,
1291 	0x000000ff, 0x3b3b3b3b, 0x2f2f2f2f, 0x20202020, 0x22222220,
1292 	0x20200020, 0x20202020, 0x20202020, 0x20202020, 0x20202020,
1293 	0x20202020, 0x20202020, 0x20202020, 0x20202020, 0x20202020,
1294 	0x00000000, 0x00000006, 0x0cdbd380, 0x000f0f01, 0x8fa91f01,
1295 	0x00000000, 0x0e79e5c6, 0x00820820, 0x1ce739cf, 0x2d0019ce,
1296 	0x1ce739ce, 0x000001ce, 0x1ce739ce, 0x000001ce, 0x1ce739ce,
1297 	0x1ce739ce, 0x00000000, 0x00001801, 0x00000000, 0x00000000,
1298 	0x00000000, 0x04000000, 0x00000001, 0x00010000, 0xbfad9d74,
1299 	0x0048060a, 0x00000637, 0x03020100, 0x09080504, 0x0d0c0b0a,
1300 	0x13121110, 0x31301514, 0x35343332, 0x00000036, 0x00000838,
1301 	0x00000000, 0xfffffffc, 0x00000000, 0x00000000, 0x00000000,
1302 	0x00000004, 0x00000000, 0x36db6db6, 0x6db6db40, 0x73800000,
1303 	0x00000000, 0x7f80fff8, 0x000f0278, 0x4db6db8c, 0x6db60000,
1304 	0x00080000, 0x0e48048c, 0x14214514, 0x119f081e, 0x24926490,
1305 	0xd28b3330, 0xc2108ffe, 0x812fc370, 0x423c8000, 0x92480040,
1306 	0x006db6db, 0x0186db60, 0x6db6db6c, 0x6de6fbe0, 0xf7dfcf3c,
1307 	0x04cb0001, 0xfff80015, 0x00080010, 0x01884080, 0x00008040,
1308 	0x08400000, 0x1bf90f00, 0x00000000, 0x00000000, 0x01000015,
1309 	0x00d30000, 0x00318000, 0x50000000, 0x4b96210f, 0x00000000,
1310 	0x00000000, 0x00800700, 0x00800700, 0x00800700, 0x00000000,
1311 	0x00000000, 0x00000000, 0x00000001, 0x00000001, 0x00000000,
1312 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1313 	0x000000a0, 0x000c0000, 0x14021402, 0x00001402, 0x00000000,
1314 	0x00000000, 0x13188278, 0x12000000, 0xba280400, 0x00aa10aa,
1315 	0x00a0c9c9, 0x00000022, 0x00000000, 0x00000002, 0x000004c2,
1316 	0x00000002
1317 };
1318 
1319 static const struct athn_ini ar9485_1_1_ini = {
1320 	.nregs		= __arraycount(ar9485_1_1_regs),
1321 	.regs		= ar9485_1_1_regs,
1322 	.vals_5g20	= NULL,	/* 2GHz only. */
1323 #ifndef IEEE80211_NO_HT
1324 	.vals_5g40	= NULL,	/* 2GHz only. */
1325 	.vals_2g40	= ar9485_1_1_vals_2g40,
1326 #endif
1327 	.vals_2g20	= ar9485_1_1_vals_2g20,
1328 	.ncmregs	= __arraycount(ar9485_1_1_cm_regs),
1329 	.cmregs		= ar9485_1_1_cm_regs,
1330 	.cmvals		= ar9485_1_1_cm_vals
1331 };
1332 
1333 /*
1334  * AR9380 2.2 Tx gains.
1335  */
1336 static const uint16_t ar9380_2_2_tx_gain_regs[] = {
1337 	P(0x0a2dc), P(0x0a2e0), P(0x0a2e4), P(0x0a2e8), P(0x0a410),
1338 	P(0x0a500), P(0x0a504), P(0x0a508), P(0x0a50c), P(0x0a510),
1339 	P(0x0a514), P(0x0a518), P(0x0a51c), P(0x0a520), P(0x0a524),
1340 	P(0x0a528), P(0x0a52c), P(0x0a530), P(0x0a534), P(0x0a538),
1341 	P(0x0a53c), P(0x0a540), P(0x0a544), P(0x0a548), P(0x0a54c),
1342 	P(0x0a550), P(0x0a554), P(0x0a558), P(0x0a55c), P(0x0a560),
1343 	P(0x0a564), P(0x0a568), P(0x0a56c), P(0x0a570), P(0x0a574),
1344 	P(0x0a578), P(0x0a57c), P(0x0a580), P(0x0a584), P(0x0a588),
1345 	P(0x0a58c), P(0x0a590), P(0x0a594), P(0x0a598), P(0x0a59c),
1346 	P(0x0a5a0), P(0x0a5a4), P(0x0a5a8), P(0x0a5ac), P(0x0a5b0),
1347 	P(0x0a5b4), P(0x0a5b8), P(0x0a5bc), P(0x0a5c0), P(0x0a5c4),
1348 	P(0x0a5c8), P(0x0a5cc), P(0x0a5d0), P(0x0a5d4), P(0x0a5d8),
1349 	P(0x0a5dc), P(0x0a5e0), P(0x0a5e4), P(0x0a5e8), P(0x0a5ec),
1350 	P(0x0a5f0), P(0x0a5f4), P(0x0a5f8), P(0x0a5fc), P(0x0a600),
1351 	P(0x0a604), P(0x0a608), P(0x0a60c), P(0x0a610), P(0x0a614),
1352 	P(0x0a618), P(0x0a61c), P(0x0a620), P(0x0a624), P(0x0a628),
1353 	P(0x0a62c), P(0x0a630), P(0x0a634), P(0x0a638), P(0x0a63c),
1354 	P(0x0b2dc), P(0x0b2e0), P(0x0b2e4), P(0x0b2e8), P(0x0c2dc),
1355 	P(0x0c2e0), P(0x0c2e4), P(0x0c2e8), P(0x16044), P(0x16048),
1356 	P(0x16068), P(0x16444), P(0x16448), P(0x16468), P(0x16844),
1357 	P(0x16848), P(0x16868)
1358 };
1359 
1360 static const uint32_t ar9380_2_2_tx_gain_vals_5g[] = {
1361 	0x00033800, 0x0003c000, 0x03fc0000, 0x00000000, 0x000050d9,
1362 	0x00000000, 0x06000003, 0x0a000020, 0x10000023, 0x16000220,
1363 	0x1c000223, 0x21002220, 0x27002223, 0x2b022220, 0x2f022222,
1364 	0x34022225, 0x3a02222a, 0x3e02222c, 0x4202242a, 0x4702244a,
1365 	0x4b02244c, 0x4e02246c, 0x52022470, 0x55022490, 0x59022492,
1366 	0x5d022692, 0x61022892, 0x65024890, 0x69024892, 0x6e024c92,
1367 	0x74026e92, 0x74026e92, 0x74026e92, 0x74026e92, 0x74026e92,
1368 	0x74026e92, 0x74026e92, 0x00800000, 0x06800003, 0x0a800020,
1369 	0x10800023, 0x16800220, 0x1c800223, 0x21802220, 0x27802223,
1370 	0x2b822220, 0x2f822222, 0x34822225, 0x3a82222a, 0x3e82222c,
1371 	0x4282242a, 0x4782244a, 0x4b82244c, 0x4e82246c, 0x52822470,
1372 	0x55822490, 0x59822492, 0x5d822692, 0x61822892, 0x65824890,
1373 	0x69824892, 0x6e824c92, 0x74826e92, 0x74826e92, 0x74826e92,
1374 	0x74826e92, 0x74826e92, 0x74826e92, 0x74826e92, 0x00000000,
1375 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x02004000,
1376 	0x02004801, 0x02808a02, 0x0380ce03, 0x04411104, 0x04411104,
1377 	0x04411104, 0x04411104, 0x04411104, 0x04411104, 0x04411104,
1378 	0x00033800, 0x0003c000, 0x03fc0000, 0x00000000, 0x00033800,
1379 	0x0003c000, 0x03fc0000, 0x00000000, 0x012492d4, 0x62480001,
1380 	0x6db6db6c, 0x012492d4, 0x62480001, 0x6db6db6c, 0x012492d4,
1381 	0x62480001, 0x6db6db6c
1382 };
1383 
1384 static const uint32_t ar9380_2_2_tx_gain_vals_2g[] = {
1385 	0x00637800, 0x03838000, 0x03fc0000, 0x00000000, 0x000050d9,
1386 	0x00000000, 0x04000002, 0x08000004, 0x0b000200, 0x0f000202,
1387 	0x12000400, 0x16000402, 0x19000404, 0x1c000603, 0x21000a02,
1388 	0x25000a04, 0x28000a20, 0x2c000e20, 0x30000e22, 0x34000e24,
1389 	0x38001640, 0x3c001660, 0x3f001861, 0x43001a81, 0x47001a83,
1390 	0x4a001c84, 0x4e001ce3, 0x52001ce5, 0x56001ce9, 0x5a001ceb,
1391 	0x5d001eec, 0x5d001eec, 0x5d001eec, 0x5d001eec, 0x5d001eec,
1392 	0x5d001eec, 0x5d001eec, 0x00800000, 0x04800002, 0x08800004,
1393 	0x0b800200, 0x0f800202, 0x12800400, 0x16800402, 0x19800404,
1394 	0x1c800603, 0x21800a02, 0x25800a04, 0x28800a20, 0x2c800e20,
1395 	0x30800e22, 0x34800e24, 0x38801640, 0x3c801660, 0x3f801861,
1396 	0x43801a81, 0x47801a83, 0x4a801c84, 0x4e801ce3, 0x52801ce5,
1397 	0x56801ce9, 0x5a801ceb, 0x5d801eec, 0x5d801eec, 0x5d801eec,
1398 	0x5d801eec, 0x5d801eec, 0x5d801eec, 0x5d801eec, 0x00000000,
1399 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01404000,
1400 	0x01404501, 0x02008501, 0x0280ca03, 0x03010c04, 0x04014c04,
1401 	0x04015005, 0x04015005, 0x04015005, 0x04015005, 0x04015005,
1402 	0x00637800, 0x03838000, 0x03fc0000, 0x00000000, 0x00637800,
1403 	0x03838000, 0x03fc0000, 0x00000000, 0x012492d4, 0x62480001,
1404 	0x6db6db6c, 0x012492d4, 0x62480001, 0x6db6db6c, 0x012492d4,
1405 	0x62480001, 0x6db6db6c
1406 };
1407 
1408 static const struct athn_gain ar9380_2_2_tx_gain = {
1409 	__arraycount(ar9380_2_2_tx_gain_regs),
1410 	ar9380_2_2_tx_gain_regs,
1411 	ar9380_2_2_tx_gain_vals_5g,
1412 	ar9380_2_2_tx_gain_vals_2g
1413 };
1414 
1415 /*
1416  * AR9380 2.2 high ob/db Tx gains.
1417  */
1418 static const uint32_t ar9380_2_2_tx_gain_high_ob_db_vals_5g[] = {
1419 	0x01feee00, 0x0000f000, 0x01ff0000, 0x00000000, 0x000050d8,
1420 	0x00002220, 0x04002222, 0x09002421, 0x0d002621, 0x13004620,
1421 	0x19004a20, 0x1d004e20, 0x21005420, 0x26005e20, 0x2b005e40,
1422 	0x2f005e42, 0x33005e44, 0x38005e65, 0x3c005e69, 0x40005e6b,
1423 	0x44005e6d, 0x49005e72, 0x4e005eb2, 0x53005f12, 0x59025eb2,
1424 	0x5e025f12, 0x61027f12, 0x6702bf12, 0x6b02bf14, 0x6f02bf16,
1425 	0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16,
1426 	0x6f02bf16, 0x6f02bf16, 0x00802220, 0x04802222, 0x09802421,
1427 	0x0d802621, 0x13804620, 0x19804a20, 0x1d804e20, 0x21805420,
1428 	0x26805e20, 0x2b805e40, 0x2f805e42, 0x33805e44, 0x38805e65,
1429 	0x3c805e69, 0x40805e6b, 0x44805e6d, 0x49805e72, 0x4e805eb2,
1430 	0x53805f12, 0x59825eb2, 0x5e825f12, 0x61827f12, 0x6782bf12,
1431 	0x6b82bf14, 0x6f82bf16, 0x6f82bf16, 0x6f82bf16, 0x6f82bf16,
1432 	0x6f82bf16, 0x6f82bf16, 0x6f82bf16, 0x6f82bf16, 0x00000000,
1433 	0x00000000, 0x00000000, 0x00000000, 0x00804000, 0x00804201,
1434 	0x0280c802, 0x0280ca03, 0x04c15104, 0x04c15305, 0x04c15305,
1435 	0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305,
1436 	0x01feee00, 0x0000f000, 0x01ff0000, 0x00000000, 0x01feee00,
1437 	0x0000f000, 0x01ff0000, 0x00000000, 0x056db2e4, 0x8e480001,
1438 	0x6db6db6c, 0x056db2e4, 0x8e480001, 0x6db6db6c, 0x056db2e4,
1439 	0x8e480001, 0x6db6db6c
1440 };
1441 
1442 static const uint32_t ar9380_2_2_tx_gain_high_ob_db_vals_2g[] = {
1443 	0x00637800, 0x03838000, 0x03fc0000, 0x00000000, 0x000050d9,
1444 	0x00000000, 0x04000002, 0x08000004, 0x0b000200, 0x0f000202,
1445 	0x11000400, 0x15000402, 0x19000404, 0x1b000603, 0x1f000a02,
1446 	0x23000a04, 0x26000a20, 0x2a000e20, 0x2e000e22, 0x31000e24,
1447 	0x34001640, 0x38001660, 0x3b001861, 0x3e001a81, 0x42001a83,
1448 	0x44001c84, 0x48001ce3, 0x4c001ce5, 0x50001ce9, 0x54001ceb,
1449 	0x56001eec, 0x56001eec, 0x56001eec, 0x56001eec, 0x56001eec,
1450 	0x56001eec, 0x56001eec, 0x00800000, 0x04800002, 0x08800004,
1451 	0x0b800200, 0x0f800202, 0x11800400, 0x15800402, 0x19800404,
1452 	0x1b800603, 0x1f800a02, 0x23800a04, 0x26800a20, 0x2a800e20,
1453 	0x2e800e22, 0x31800e24, 0x34801640, 0x38801660, 0x3b801861,
1454 	0x3e801a81, 0x42801a83, 0x44801c84, 0x48801ce3, 0x4c801ce5,
1455 	0x50801ce9, 0x54801ceb, 0x56801eec, 0x56801eec, 0x56801eec,
1456 	0x56801eec, 0x56801eec, 0x56801eec, 0x56801eec, 0x00000000,
1457 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01404000,
1458 	0x01404501, 0x02008501, 0x0280ca03, 0x03010c04, 0x04014c04,
1459 	0x04015005, 0x04015005, 0x04015005, 0x04015005, 0x04015005,
1460 	0x00637800, 0x03838000, 0x03fc0000, 0x00000000, 0x00637800,
1461 	0x03838000, 0x03fc0000, 0x00000000, 0x056db2e4, 0x8e480001,
1462 	0x6db6db6c, 0x056db2e4, 0x8e480001, 0x6db6db6c, 0x056db2e4,
1463 	0x8e480001, 0x6db6db6c
1464 };
1465 
1466 static const struct athn_gain ar9380_2_2_tx_gain_high_ob_db = {
1467 	__arraycount(ar9380_2_2_tx_gain_regs),
1468 	ar9380_2_2_tx_gain_regs,
1469 	ar9380_2_2_tx_gain_high_ob_db_vals_5g,
1470 	ar9380_2_2_tx_gain_high_ob_db_vals_2g
1471 };
1472 
1473 /*
1474  * AR9380 2.2 low ob/db Tx gains.
1475  */
1476 static const uint32_t ar9380_2_2_tx_gain_low_ob_db_vals_5g[] = {
1477 	0x0380c7fc, 0x0000f800, 0x03ff0000, 0x00000000, 0x000050d9,
1478 	0x00000000, 0x06000003, 0x0a000020, 0x10000023, 0x16000220,
1479 	0x1c000223, 0x21002220, 0x27002223, 0x2b022220, 0x2f022222,
1480 	0x34022225, 0x3a02222a, 0x3e02222c, 0x4202242a, 0x4702244a,
1481 	0x4b02244c, 0x4e02246c, 0x5302266c, 0x5702286c, 0x5c02486b,
1482 	0x61024a6c, 0x66026a6c, 0x6b026e6c, 0x7002708c, 0x7302b08a,
1483 	0x7702b08c, 0x7702b08c, 0x7702b08c, 0x7702b08c, 0x7702b08c,
1484 	0x7702b08c, 0x7702b08c, 0x00800000, 0x06800003, 0x0a800020,
1485 	0x10800023, 0x16800220, 0x1c800223, 0x21802220, 0x27802223,
1486 	0x2b822220, 0x2f822222, 0x34822225, 0x3a82222a, 0x3e82222c,
1487 	0x4282242a, 0x4782244a, 0x4b82244c, 0x4e82246c, 0x5382266c,
1488 	0x5782286c, 0x5c82486b, 0x61824a6c, 0x66826a6c, 0x6b826e6c,
1489 	0x7082708c, 0x7382b08a, 0x7782b08c, 0x7782b08c, 0x7782b08c,
1490 	0x7782b08c, 0x7782b08c, 0x7782b08c, 0x7782b08c, 0x00000000,
1491 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01404000,
1492 	0x01404501, 0x02008802, 0x0300cc03, 0x0300cc03, 0x0300cc03,
1493 	0x03810c03, 0x03810e04, 0x03810e04, 0x03810e04, 0x03810e04,
1494 	0x0380c7fc, 0x0000f800, 0x03ff0000, 0x00000000, 0x0380c7fc,
1495 	0x0000f800, 0x03ff0000, 0x00000000, 0x012492d4, 0x66480001,
1496 	0x6db6db6c, 0x012492d4, 0x66480001, 0x6db6db6c, 0x012492d4,
1497 	0x66480001, 0x6db6db6c
1498 };
1499 
1500 static const uint32_t ar9380_2_2_tx_gain_low_ob_db_vals_2g[] = {
1501 	0x00637800, 0x03838000, 0x03fc0000, 0x00000000, 0x000050d9,
1502 	0x00000000, 0x04000002, 0x08000004, 0x0b000200, 0x0f000202,
1503 	0x12000400, 0x16000402, 0x19000404, 0x1c000603, 0x21000a02,
1504 	0x25000a04, 0x28000a20, 0x2c000e20, 0x30000e22, 0x34000e24,
1505 	0x38001640, 0x3c001660, 0x3f001861, 0x43001a81, 0x47001a83,
1506 	0x4a001c84, 0x4e001ce3, 0x52001ce5, 0x56001ce9, 0x5a001ceb,
1507 	0x5d001eec, 0x5d001eec, 0x5d001eec, 0x5d001eec, 0x5d001eec,
1508 	0x5d001eec, 0x5d001eec, 0x00800000, 0x04800002, 0x08800004,
1509 	0x0b800200, 0x0f800202, 0x12800400, 0x16800402, 0x19800404,
1510 	0x1c800603, 0x21800a02, 0x25800a04, 0x28800a20, 0x2c800e20,
1511 	0x30800e22, 0x34800e24, 0x38801640, 0x3c801660, 0x3f801861,
1512 	0x43801a81, 0x47801a83, 0x4a801c84, 0x4e801ce3, 0x52801ce5,
1513 	0x56801ce9, 0x5a801ceb, 0x5d801eec, 0x5d801eec, 0x5d801eec,
1514 	0x5d801eec, 0x5d801eec, 0x5d801eec, 0x5d801eec, 0x00000000,
1515 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01404000,
1516 	0x01404501, 0x02008501, 0x0280ca03, 0x03010c04, 0x04014c04,
1517 	0x04015005, 0x04015005, 0x04015005, 0x04015005, 0x04015005,
1518 	0x00637800, 0x03838000, 0x03fc0000, 0x00000000, 0x00637800,
1519 	0x03838000, 0x03fc0000, 0x00000000, 0x012492d4, 0x66480001,
1520 	0x6db6db6c, 0x012492d4, 0x66480001, 0x6db6db6c, 0x012492d4,
1521 	0x66480001, 0x6db6db6c
1522 };
1523 
1524 static const struct athn_gain ar9380_2_2_tx_gain_low_ob_db = {
1525 	__arraycount(ar9380_2_2_tx_gain_regs),
1526 	ar9380_2_2_tx_gain_regs,
1527 	ar9380_2_2_tx_gain_low_ob_db_vals_5g,
1528 	ar9380_2_2_tx_gain_low_ob_db_vals_2g
1529 };
1530 
1531 /*
1532  * AR9380 2.2 high power Tx gains.
1533  */
1534 static const uint32_t ar9380_2_2_tx_gain_high_power_vals_5g[] = {
1535 	0x0380c7fc, 0x0000f800, 0x03ff0000, 0x00000000, 0x000050d8,
1536 	0x00002220, 0x04002222, 0x09002421, 0x0d002621, 0x13004620,
1537 	0x19004a20, 0x1d004e20, 0x21005420, 0x26005e20, 0x2b005e40,
1538 	0x2f005e42, 0x33005e44, 0x38005e65, 0x3c005e69, 0x40005e6b,
1539 	0x44005e6d, 0x49005e72, 0x4e005eb2, 0x53005f12, 0x59025eb2,
1540 	0x5e025f12, 0x61027f12, 0x6702bf12, 0x6b02bf14, 0x6f02bf16,
1541 	0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16,
1542 	0x6f02bf16, 0x6f02bf16, 0x00802220, 0x04802222, 0x09802421,
1543 	0x0d802621, 0x13804620, 0x19804a20, 0x1d804e20, 0x21805420,
1544 	0x26805e20, 0x2b805e40, 0x2f805e42, 0x33805e44, 0x38805e65,
1545 	0x3c805e69, 0x40805e6b, 0x44805e6d, 0x49805e72, 0x4e805eb2,
1546 	0x53805f12, 0x59825eb2, 0x5e825f12, 0x61827f12, 0x6782bf12,
1547 	0x6b82bf14, 0x6f82bf16, 0x6f82bf16, 0x6f82bf16, 0x6f82bf16,
1548 	0x6f82bf16, 0x6f82bf16, 0x6f82bf16, 0x6f82bf16, 0x00000000,
1549 	0x00000000, 0x00000000, 0x00000000, 0x00804000, 0x00804201,
1550 	0x0280c802, 0x0280ca03, 0x04c15104, 0x04c15305, 0x04c15305,
1551 	0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305,
1552 	0x0380c7fc, 0x0000f800, 0x03ff0000, 0x00000000, 0x0380c7fc,
1553 	0x0000f800, 0x03ff0000, 0x00000000, 0x056db2e6, 0xae480001,
1554 	0x6eb6db6c, 0x056db2e6, 0xae480001, 0x6eb6db6c, 0x056db2e6,
1555 	0xae480001, 0x6eb6db6c
1556 };
1557 
1558 static const uint32_t ar9380_2_2_tx_gain_high_power_vals_2g[] = {
1559 	0x00637800, 0x03838000, 0x03fc0000, 0x00000000, 0x000050d9,
1560 	0x00000000, 0x04000002, 0x08000004, 0x0b000200, 0x0f000202,
1561 	0x11000400, 0x15000402, 0x19000404, 0x1b000603, 0x1f000a02,
1562 	0x23000a04, 0x26000a20, 0x2a000e20, 0x2e000e22, 0x31000e24,
1563 	0x34001640, 0x38001660, 0x3b001861, 0x3e001a81, 0x42001a83,
1564 	0x44001c84, 0x48001ce3, 0x4c001ce5, 0x50001ce9, 0x54001ceb,
1565 	0x56001eec, 0x56001eec, 0x56001eec, 0x56001eec, 0x56001eec,
1566 	0x56001eec, 0x56001eec, 0x00800000, 0x04800002, 0x08800004,
1567 	0x0b800200, 0x0f800202, 0x11800400, 0x15800402, 0x19800404,
1568 	0x1b800603, 0x1f800a02, 0x23800a04, 0x26800a20, 0x2a800e20,
1569 	0x2e800e22, 0x31800e24, 0x34801640, 0x38801660, 0x3b801861,
1570 	0x3e801a81, 0x42801a83, 0x44801c84, 0x48801ce3, 0x4c801ce5,
1571 	0x50801ce9, 0x54801ceb, 0x56801eec, 0x56801eec, 0x56801eec,
1572 	0x56801eec, 0x56801eec, 0x56801eec, 0x56801eec, 0x00000000,
1573 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01404000,
1574 	0x01404501, 0x02008501, 0x0280ca03, 0x03010c04, 0x04014c04,
1575 	0x04015005, 0x04015005, 0x04015005, 0x04015005, 0x04015005,
1576 	0x00637800, 0x03838000, 0x03fc0000, 0x00000000, 0x00637800,
1577 	0x03838000, 0x03fc0000, 0x00000000, 0x056db2e6, 0xae480001,
1578 	0x6eb6db6c, 0x056db2e6, 0xae480001, 0x6eb6db6c, 0x056db2e6,
1579 	0xae480001, 0x6eb6db6c
1580 };
1581 
1582 static const struct athn_gain ar9380_2_2_tx_gain_high_power = {
1583 	__arraycount(ar9380_2_2_tx_gain_regs),
1584 	ar9380_2_2_tx_gain_regs,
1585 	ar9380_2_2_tx_gain_high_power_vals_5g,
1586 	ar9380_2_2_tx_gain_high_power_vals_2g
1587 };
1588 
1589 /*
1590  * AR9485 1.1 Tx gains.
1591  */
1592 static const uint16_t ar9485_1_1_tx_gain_regs[] = {
1593 	P(0x098bc), P(0x0a410), P(0x0a458), P(0x0a500), P(0x0a504),
1594 	P(0x0a508), P(0x0a50c), P(0x0a510), P(0x0a514), P(0x0a518),
1595 	P(0x0a51c), P(0x0a520), P(0x0a524), P(0x0a528), P(0x0a52c),
1596 	P(0x0a530), P(0x0a534), P(0x0a538), P(0x0a53c), P(0x0a540),
1597 	P(0x0a544), P(0x0a548), P(0x0a54c), P(0x0a550), P(0x0a554),
1598 	P(0x0a558), P(0x0a55c), P(0x0a560), P(0x0a564), P(0x0a568),
1599 	P(0x0a56c), P(0x0a570), P(0x0a574), P(0x0a578), P(0x0a57c),
1600 	P(0x0b500), P(0x0b504), P(0x0b508), P(0x0b50c), P(0x0b510),
1601 	P(0x0b514), P(0x0b518), P(0x0b51c), P(0x0b520), P(0x0b524),
1602 	P(0x0b528), P(0x0b52c), P(0x0b530), P(0x0b534), P(0x0b538),
1603 	P(0x0b53c), P(0x0b540), P(0x0b544), P(0x0b548), P(0x0b54c),
1604 	P(0x0b550), P(0x0b554), P(0x0b558), P(0x0b55c), P(0x0b560),
1605 	P(0x0b564), P(0x0b568), P(0x0b56c), P(0x0b570), P(0x0b574),
1606 	P(0x0b578), P(0x0b57c), P(0x16044), P(0x16048),
1607 };
1608 
1609 static const uint32_t ar9485_1_1_tx_gain_vals_2g[] = {
1610 	0x00000002, 0x000050d8, 0x00000000, 0x00000000, 0x04000002,
1611 	0x08000004, 0x0d000200, 0x11000202, 0x15000400, 0x19000402,
1612 	0x1d000404, 0x21000603, 0x25000605, 0x2a000a03, 0x2c000a04,
1613 	0x34000e20, 0x35000e21, 0x43000e62, 0x45000e63, 0x49000e65,
1614 	0x4b000e66, 0x4d001645, 0x51001865, 0x55001a86, 0x57001ce9,
1615 	0x5a001ceb, 0x5e001eeb, 0x5e001eeb, 0x5e001eeb, 0x5e001eeb,
1616 	0x5e001eeb, 0x5e001eeb, 0x5e001eeb, 0x5e001eeb, 0x5e001eeb,
1617 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1618 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1619 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1620 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1621 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1622 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1623 	0x00000000, 0x00000000, 0x05d6b2db, 0x6c924260
1624 };
1625 
1626 static const struct athn_gain ar9485_1_1_tx_gain = {
1627 	__arraycount(ar9485_1_1_tx_gain_regs),
1628 	ar9485_1_1_tx_gain_regs,
1629 	NULL,	/* 2GHz only. */
1630 	ar9485_1_1_tx_gain_vals_2g
1631 };
1632 
1633 /*
1634  * AR9380 2.2 Rx gains.
1635  */
1636 static const uint16_t ar9380_2_2_rx_gain_regs[] = {
1637 	P(0x0a000), P(0x0a004), P(0x0a008), P(0x0a00c), P(0x0a010),
1638 	P(0x0a014), P(0x0a018), P(0x0a01c), P(0x0a020), P(0x0a024),
1639 	P(0x0a028), P(0x0a02c), P(0x0a030), P(0x0a034), P(0x0a038),
1640 	P(0x0a03c), P(0x0a040), P(0x0a044), P(0x0a048), P(0x0a04c),
1641 	P(0x0a050), P(0x0a054), P(0x0a058), P(0x0a05c), P(0x0a060),
1642 	P(0x0a064), P(0x0a068), P(0x0a06c), P(0x0a070), P(0x0a074),
1643 	P(0x0a078), P(0x0a07c), P(0x0a080), P(0x0a084), P(0x0a088),
1644 	P(0x0a08c), P(0x0a090), P(0x0a094), P(0x0a098), P(0x0a09c),
1645 	P(0x0a0a0), P(0x0a0a4), P(0x0a0a8), P(0x0a0ac), P(0x0a0b0),
1646 	P(0x0a0b4), P(0x0a0b8), P(0x0a0bc), P(0x0a0c0), P(0x0a0c4),
1647 	P(0x0a0c8), P(0x0a0cc), P(0x0a0d0), P(0x0a0d4), P(0x0a0d8),
1648 	P(0x0a0dc), P(0x0a0e0), P(0x0a0e4), P(0x0a0e8), P(0x0a0ec),
1649 	P(0x0a0f0), P(0x0a0f4), P(0x0a0f8), P(0x0a0fc), P(0x0a100),
1650 	P(0x0a104), P(0x0a108), P(0x0a10c), P(0x0a110), P(0x0a114),
1651 	P(0x0a118), P(0x0a11c), P(0x0a120), P(0x0a124), P(0x0a128),
1652 	P(0x0a12c), P(0x0a130), P(0x0a134), P(0x0a138), P(0x0a13c),
1653 	P(0x0a140), P(0x0a144), P(0x0a148), P(0x0a14c), P(0x0a150),
1654 	P(0x0a154), P(0x0a158), P(0x0a15c), P(0x0a160), P(0x0a164),
1655 	P(0x0a168), P(0x0a16c), P(0x0a170), P(0x0a174), P(0x0a178),
1656 	P(0x0a17c), P(0x0a180), P(0x0a184), P(0x0a188), P(0x0a18c),
1657 	P(0x0a190), P(0x0a194), P(0x0a198), P(0x0a19c), P(0x0a1a0),
1658 	P(0x0a1a4), P(0x0a1a8), P(0x0a1ac), P(0x0a1b0), P(0x0a1b4),
1659 	P(0x0a1b8), P(0x0a1bc), P(0x0a1c0), P(0x0a1c4), P(0x0a1c8),
1660 	P(0x0a1cc), P(0x0a1d0), P(0x0a1d4), P(0x0a1d8), P(0x0a1dc),
1661 	P(0x0a1e0), P(0x0a1e4), P(0x0a1e8), P(0x0a1ec), P(0x0a1f0),
1662 	P(0x0a1f4), P(0x0a1f8), P(0x0a1fc), P(0x0b000), P(0x0b004),
1663 	P(0x0b008), P(0x0b00c), P(0x0b010), P(0x0b014), P(0x0b018),
1664 	P(0x0b01c), P(0x0b020), P(0x0b024), P(0x0b028), P(0x0b02c),
1665 	P(0x0b030), P(0x0b034), P(0x0b038), P(0x0b03c), P(0x0b040),
1666 	P(0x0b044), P(0x0b048), P(0x0b04c), P(0x0b050), P(0x0b054),
1667 	P(0x0b058), P(0x0b05c), P(0x0b060), P(0x0b064), P(0x0b068),
1668 	P(0x0b06c), P(0x0b070), P(0x0b074), P(0x0b078), P(0x0b07c),
1669 	P(0x0b080), P(0x0b084), P(0x0b088), P(0x0b08c), P(0x0b090),
1670 	P(0x0b094), P(0x0b098), P(0x0b09c), P(0x0b0a0), P(0x0b0a4),
1671 	P(0x0b0a8), P(0x0b0ac), P(0x0b0b0), P(0x0b0b4), P(0x0b0b8),
1672 	P(0x0b0bc), P(0x0b0c0), P(0x0b0c4), P(0x0b0c8), P(0x0b0cc),
1673 	P(0x0b0d0), P(0x0b0d4), P(0x0b0d8), P(0x0b0dc), P(0x0b0e0),
1674 	P(0x0b0e4), P(0x0b0e8), P(0x0b0ec), P(0x0b0f0), P(0x0b0f4),
1675 	P(0x0b0f8), P(0x0b0fc), P(0x0b100), P(0x0b104), P(0x0b108),
1676 	P(0x0b10c), P(0x0b110), P(0x0b114), P(0x0b118), P(0x0b11c),
1677 	P(0x0b120), P(0x0b124), P(0x0b128), P(0x0b12c), P(0x0b130),
1678 	P(0x0b134), P(0x0b138), P(0x0b13c), P(0x0b140), P(0x0b144),
1679 	P(0x0b148), P(0x0b14c), P(0x0b150), P(0x0b154), P(0x0b158),
1680 	P(0x0b15c), P(0x0b160), P(0x0b164), P(0x0b168), P(0x0b16c),
1681 	P(0x0b170), P(0x0b174), P(0x0b178), P(0x0b17c), P(0x0b180),
1682 	P(0x0b184), P(0x0b188), P(0x0b18c), P(0x0b190), P(0x0b194),
1683 	P(0x0b198), P(0x0b19c), P(0x0b1a0), P(0x0b1a4), P(0x0b1a8),
1684 	P(0x0b1ac), P(0x0b1b0), P(0x0b1b4), P(0x0b1b8), P(0x0b1bc),
1685 	P(0x0b1c0), P(0x0b1c4), P(0x0b1c8), P(0x0b1cc), P(0x0b1d0),
1686 	P(0x0b1d4), P(0x0b1d8), P(0x0b1dc), P(0x0b1e0), P(0x0b1e4),
1687 	P(0x0b1e8), P(0x0b1ec), P(0x0b1f0), P(0x0b1f4), P(0x0b1f8),
1688 	P(0x0b1fc)
1689 };
1690 
1691 static const uint32_t ar9380_2_2_rx_gain_vals[] = {
1692 	0x00010000, 0x00030002, 0x00050004, 0x00810080, 0x00830082,
1693 	0x01810180, 0x01830182, 0x01850184, 0x01890188, 0x018b018a,
1694 	0x018d018c, 0x01910190, 0x01930192, 0x01950194, 0x038a0196,
1695 	0x038c038b, 0x0390038d, 0x03920391, 0x03940393, 0x03960395,
1696 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1697 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1698 	0x00000000, 0x00000000, 0x22222229, 0x1d1d1d1d, 0x1d1d1d1d,
1699 	0x1d1d1d1d, 0x171d1d1d, 0x11111717, 0x00030311, 0x00000000,
1700 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1701 	0x00000000, 0x00000000, 0x00000000, 0x001f0000, 0x01000101,
1702 	0x011e011f, 0x011c011d, 0x02030204, 0x02010202, 0x021f0200,
1703 	0x0302021e, 0x03000301, 0x031e031f, 0x0402031d, 0x04000401,
1704 	0x041e041f, 0x0502041d, 0x05000501, 0x051e051f, 0x06010602,
1705 	0x061f0600, 0x061d061e, 0x07020703, 0x07000701, 0x00000000,
1706 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1707 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1708 	0x001f0000, 0x01000101, 0x011e011f, 0x011c011d, 0x02030204,
1709 	0x02010202, 0x021f0200, 0x0302021e, 0x03000301, 0x031e031f,
1710 	0x0402031d, 0x04000401, 0x041e041f, 0x0502041d, 0x05000501,
1711 	0x051e051f, 0x06010602, 0x061f0600, 0x061d061e, 0x07020703,
1712 	0x07000701, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1713 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1714 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1715 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1716 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000396,
1717 	0x00000396, 0x00000396, 0x00000196, 0x00010000, 0x00030002,
1718 	0x00050004, 0x00810080, 0x00830082, 0x01810180, 0x01830182,
1719 	0x01850184, 0x02810280, 0x02830282, 0x02850284, 0x02890288,
1720 	0x028b028a, 0x0388028c, 0x038a0389, 0x038c038b, 0x0390038d,
1721 	0x03920391, 0x03940393, 0x03960395, 0x00000000, 0x00000000,
1722 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1723 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1724 	0x2a2d2f32, 0x21232328, 0x19191c1e, 0x12141417, 0x07070e0e,
1725 	0x03030305, 0x00000003, 0x00000000, 0x00000000, 0x00000000,
1726 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1727 	0x00000000, 0x003f0020, 0x00400041, 0x0140005f, 0x0160015f,
1728 	0x017e017f, 0x02410242, 0x025f0240, 0x027f0260, 0x0341027e,
1729 	0x035f0340, 0x037f0360, 0x04400441, 0x0460045f, 0x0541047f,
1730 	0x055f0540, 0x057f0560, 0x06400641, 0x0660065f, 0x067e067f,
1731 	0x07410742, 0x075f0740, 0x077f0760, 0x07800781, 0x07a0079f,
1732 	0x07c107bf, 0x000007c0, 0x00000000, 0x00000000, 0x00000000,
1733 	0x00000000, 0x00000000, 0x00000000, 0x003f0020, 0x00400041,
1734 	0x0140005f, 0x0160015f, 0x017e017f, 0x02410242, 0x025f0240,
1735 	0x027f0260, 0x0341027e, 0x035f0340, 0x037f0360, 0x04400441,
1736 	0x0460045f, 0x0541047f, 0x055f0540, 0x057f0560, 0x06400641,
1737 	0x0660065f, 0x067e067f, 0x07410742, 0x075f0740, 0x077f0760,
1738 	0x07800781, 0x07a0079f, 0x07c107bf, 0x000007c0, 0x00000000,
1739 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1740 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1741 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1742 	0x00000000, 0x00000000, 0x00000396, 0x00000396, 0x00000396,
1743 	0x00000196
1744 };
1745 
1746 static const struct athn_gain ar9380_2_2_rx_gain = {
1747 	__arraycount(ar9380_2_2_rx_gain_regs),
1748 	ar9380_2_2_rx_gain_regs,
1749 	ar9380_2_2_rx_gain_vals,
1750 	ar9380_2_2_rx_gain_vals
1751 };
1752 
1753 /*
1754  * AR9380 2.2 without external low-noise amplifier Rx gains.
1755  */
1756 static const uint32_t ar9380_2_2_rx_gain_wo_xlna_vals[] = {
1757 	0x00010000, 0x00030002, 0x00050004, 0x00810080, 0x00830082,
1758 	0x01810180, 0x01830182, 0x01850184, 0x01890188, 0x018b018a,
1759 	0x018d018c, 0x03820190, 0x03840383, 0x03880385, 0x038a0389,
1760 	0x038c038b, 0x0390038d, 0x03920391, 0x03940393, 0x03960395,
1761 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1762 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1763 	0x00000000, 0x00000000, 0x29292929, 0x29292929, 0x29292929,
1764 	0x29292929, 0x22292929, 0x1d1d2222, 0x0c111117, 0x00030303,
1765 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1766 	0x00000000, 0x00000000, 0x00000000, 0x001f0000, 0x01000101,
1767 	0x011e011f, 0x011c011d, 0x02030204, 0x02010202, 0x021f0200,
1768 	0x0302021e, 0x03000301, 0x031e031f, 0x0402031d, 0x04000401,
1769 	0x041e041f, 0x0502041d, 0x05000501, 0x051e051f, 0x06010602,
1770 	0x061f0600, 0x061d061e, 0x07020703, 0x07000701, 0x00000000,
1771 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1772 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1773 	0x001f0000, 0x01000101, 0x011e011f, 0x011c011d, 0x02030204,
1774 	0x02010202, 0x021f0200, 0x0302021e, 0x03000301, 0x031e031f,
1775 	0x0402031d, 0x04000401, 0x041e041f, 0x0502041d, 0x05000501,
1776 	0x051e051f, 0x06010602, 0x061f0600, 0x061d061e, 0x07020703,
1777 	0x07000701, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1778 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1779 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1780 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1781 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000396,
1782 	0x00000396, 0x00000396, 0x00000196, 0x00010000, 0x00030002,
1783 	0x00050004, 0x00810080, 0x00830082, 0x01810180, 0x01830182,
1784 	0x01850184, 0x02810280, 0x02830282, 0x02850284, 0x02890288,
1785 	0x028b028a, 0x0388028c, 0x038a0389, 0x038c038b, 0x0390038d,
1786 	0x03920391, 0x03940393, 0x03960395, 0x00000000, 0x00000000,
1787 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1788 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1789 	0x32323232, 0x2f2f3232, 0x23282a2d, 0x1c1e2123, 0x14171919,
1790 	0x0e0e1214, 0x03050707, 0x00030303, 0x00000000, 0x00000000,
1791 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1792 	0x00000000, 0x003f0020, 0x00400041, 0x0140005f, 0x0160015f,
1793 	0x017e017f, 0x02410242, 0x025f0240, 0x027f0260, 0x0341027e,
1794 	0x035f0340, 0x037f0360, 0x04400441, 0x0460045f, 0x0541047f,
1795 	0x055f0540, 0x057f0560, 0x06400641, 0x0660065f, 0x067e067f,
1796 	0x07410742, 0x075f0740, 0x077f0760, 0x07800781, 0x07a0079f,
1797 	0x07c107bf, 0x000007c0, 0x00000000, 0x00000000, 0x00000000,
1798 	0x00000000, 0x00000000, 0x00000000, 0x003f0020, 0x00400041,
1799 	0x0140005f, 0x0160015f, 0x017e017f, 0x02410242, 0x025f0240,
1800 	0x027f0260, 0x0341027e, 0x035f0340, 0x037f0360, 0x04400441,
1801 	0x0460045f, 0x0541047f, 0x055f0540, 0x057f0560, 0x06400641,
1802 	0x0660065f, 0x067e067f, 0x07410742, 0x075f0740, 0x077f0760,
1803 	0x07800781, 0x07a0079f, 0x07c107bf, 0x000007c0, 0x00000000,
1804 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1805 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1806 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1807 	0x00000000, 0x00000000, 0x00000396, 0x00000396, 0x00000396,
1808 	0x00000196
1809 };
1810 
1811 static const struct athn_gain ar9380_2_2_rx_gain_wo_xlna = {
1812 	__arraycount(ar9380_2_2_rx_gain_regs),
1813 	ar9380_2_2_rx_gain_regs,
1814 	ar9380_2_2_rx_gain_wo_xlna_vals,
1815 	ar9380_2_2_rx_gain_wo_xlna_vals
1816 };
1817 
1818 /*
1819  * AR9485 1.1 Rx gains.
1820  */
1821 static const uint16_t ar9485_1_1_rx_gain_regs[] = {
1822 	P(0x0a000), P(0x0a004), P(0x0a008), P(0x0a00c), P(0x0a010),
1823 	P(0x0a014), P(0x0a018), P(0x0a01c), P(0x0a020), P(0x0a024),
1824 	P(0x0a028), P(0x0a02c), P(0x0a030), P(0x0a034), P(0x0a038),
1825 	P(0x0a03c), P(0x0a040), P(0x0a044), P(0x0a048), P(0x0a04c),
1826 	P(0x0a050), P(0x0a054), P(0x0a058), P(0x0a05c), P(0x0a060),
1827 	P(0x0a064), P(0x0a068), P(0x0a06c), P(0x0a070), P(0x0a074),
1828 	P(0x0a078), P(0x0a07c), P(0x0a080), P(0x0a084), P(0x0a088),
1829 	P(0x0a08c), P(0x0a090), P(0x0a094), P(0x0a098), P(0x0a09c),
1830 	P(0x0a0a0), P(0x0a0a4), P(0x0a0a8), P(0x0a0ac), P(0x0a0b0),
1831 	P(0x0a0b4), P(0x0a0b8), P(0x0a0bc), P(0x0a0c0), P(0x0a0c4),
1832 	P(0x0a0c8), P(0x0a0cc), P(0x0a0d0), P(0x0a0d4), P(0x0a0d8),
1833 	P(0x0a0dc), P(0x0a0e0), P(0x0a0e4), P(0x0a0e8), P(0x0a0ec),
1834 	P(0x0a0f0), P(0x0a0f4), P(0x0a0f8), P(0x0a0fc), P(0x0a100),
1835 	P(0x0a104), P(0x0a108), P(0x0a10c), P(0x0a110), P(0x0a114),
1836 	P(0x0a118), P(0x0a11c), P(0x0a120), P(0x0a124), P(0x0a128),
1837 	P(0x0a12c), P(0x0a130), P(0x0a134), P(0x0a138), P(0x0a13c),
1838 	P(0x0a140), P(0x0a144), P(0x0a148), P(0x0a14c), P(0x0a150),
1839 	P(0x0a154), P(0x0a158), P(0x0a15c), P(0x0a160), P(0x0a164),
1840 	P(0x0a168), P(0x0a16c), P(0x0a170), P(0x0a174), P(0x0a178),
1841 	P(0x0a17c), P(0x0a180), P(0x0a184), P(0x0a188), P(0x0a18c),
1842 	P(0x0a190), P(0x0a194), P(0x0a198), P(0x0a19c), P(0x0a1a0),
1843 	P(0x0a1a4), P(0x0a1a8), P(0x0a1ac), P(0x0a1b0), P(0x0a1b4),
1844 	P(0x0a1b8), P(0x0a1bc), P(0x0a1c0), P(0x0a1c4), P(0x0a1c8),
1845 	P(0x0a1cc), P(0x0a1d0), P(0x0a1d4), P(0x0a1d8), P(0x0a1dc),
1846 	P(0x0a1e0), P(0x0a1e4), P(0x0a1e8), P(0x0a1ec), P(0x0a1f0),
1847 	P(0x0a1f4), P(0x0a1f8), P(0x0a1fc)
1848 };
1849 
1850 static const uint32_t ar9485_1_1_rx_gain_vals[] = {
1851 	0x00060005, 0x00810080, 0x00830082, 0x00850084, 0x01820181,
1852 	0x01840183, 0x01880185, 0x018a0189, 0x02850284, 0x02890288,
1853 	0x028b028a, 0x03850384, 0x03890388, 0x038b038a, 0x038d038c,
1854 	0x03910390, 0x03930392, 0x03950394, 0x00000396, 0x00000000,
1855 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1856 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1857 	0x00000000, 0x00000000, 0x28282828, 0x28282828, 0x28282828,
1858 	0x28282828, 0x28282828, 0x24242428, 0x171e1e1e, 0x02020b0b,
1859 	0x02020202, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1860 	0x00000000, 0x00000000, 0x00000000, 0x22072208, 0x22052206,
1861 	0x22032204, 0x22012202, 0x221f2200, 0x221d221e, 0x33023303,
1862 	0x33003301, 0x331e331f, 0x4402331d, 0x44004401, 0x441e441f,
1863 	0x55025503, 0x55005501, 0x551e551f, 0x6602551d, 0x66006601,
1864 	0x661e661f, 0x7703661d, 0x77017702, 0x00007700, 0x00000000,
1865 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1866 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1867 	0x001f0000, 0x111f1100, 0x111d111e, 0x111b111c, 0x22032204,
1868 	0x22012202, 0x221f2200, 0x221d221e, 0x33013302, 0x331f3300,
1869 	0x4402331e, 0x44004401, 0x441e441f, 0x55015502, 0x551f5500,
1870 	0x6602551e, 0x66006601, 0x661e661f, 0x7703661d, 0x77017702,
1871 	0x00007700, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1872 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1873 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1874 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1875 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000396,
1876 	0x00000396, 0x00000396, 0x00000296
1877 };
1878 
1879 static const struct athn_gain ar9485_1_1_rx_gain = {
1880 	__arraycount(ar9485_1_1_rx_gain_regs),
1881 	ar9485_1_1_rx_gain_regs,
1882 	NULL,	/* 2GHz only. */
1883 	ar9485_1_1_rx_gain_vals
1884 };
1885 
1886 /*
1887  * Serializer/Deserializer programming.
1888  */
1889 
1890 static const uint32_t ar9380_2_2_serdes_regs[] = {
1891 	AR_PCIE_SERDES,
1892 	AR_PCIE_SERDES,
1893 	AR_PCIE_SERDES2
1894 };
1895 
1896 static const uint32_t ar9380_2_2_serdes_vals[] = {
1897 	0x08212e5e,
1898 	0x0008003b,
1899 	0x00000000
1900 };
1901 
1902 static const struct athn_serdes ar9380_2_2_serdes = {
1903 	__arraycount(ar9380_2_2_serdes_vals),
1904 	ar9380_2_2_serdes_regs,
1905 	ar9380_2_2_serdes_vals
1906 };
1907 
1908 static const uint32_t ar9485_1_1_serdes_regs[] = {
1909 	0x00018c00,
1910 	0x00018c04,
1911 	0x00018c08
1912 };
1913 
1914 static const uint32_t ar9485_1_1_serdes_vals[] = {
1915 	0x18013e5e,
1916 	0x000801d8,
1917 	0x0000080c
1918 };
1919 
1920 static const struct athn_serdes ar9485_1_1_serdes = {
1921 	__arraycount(ar9485_1_1_serdes_vals),
1922 	ar9485_1_1_serdes_regs,
1923 	ar9485_1_1_serdes_vals
1924 };
1925 
1926 #endif /* _ARN9380REG_H_ */
1927