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