Home | History | Annotate | Line # | Download | only in ic
      1  1.1  christos /*	$NetBSD: arn9287reg.h,v 1.1 2013/03/30 02:53:02 christos Exp $	*/
      2  1.1  christos /*	$OpenBSD: ar9287reg.h,v 1.3 2010/07/15 19:07:43 damien Exp $	*/
      3  1.1  christos 
      4  1.1  christos /*-
      5  1.1  christos  * Copyright (c) 2009 Damien Bergamini <damien.bergamini (at) free.fr>
      6  1.1  christos  * Copyright (c) 2008-2009 Atheros Communications Inc.
      7  1.1  christos  *
      8  1.1  christos  * Permission to use, copy, modify, and/or distribute this software for any
      9  1.1  christos  * purpose with or without fee is hereby granted, provided that the above
     10  1.1  christos  * copyright notice and this permission notice appear in all copies.
     11  1.1  christos  *
     12  1.1  christos  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
     13  1.1  christos  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
     14  1.1  christos  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
     15  1.1  christos  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
     16  1.1  christos  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
     17  1.1  christos  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
     18  1.1  christos  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
     19  1.1  christos  */
     20  1.1  christos 
     21  1.1  christos #ifndef _ARN9287REG_H_
     22  1.1  christos #define _ARN9287REG_H_
     23  1.1  christos 
     24  1.1  christos #define AR9287_MAX_CHAINS	2
     25  1.1  christos 
     26  1.1  christos #define AR9287_PHY_CCA_MAX_GOOD_VALUE	(-118)
     27  1.1  christos 
     28  1.1  christos /*
     29  1.1  christos  * Analog registers.
     30  1.1  christos  */
     31  1.1  christos #define AR9287_AN_RF2G3_CH0		0x7808
     32  1.1  christos #define AR9287_AN_RF2G3_CH1		0x785c
     33  1.1  christos #define AR9287_AN_TXPC0			0x7898
     34  1.1  christos #define AR9287_AN_TOP2			0x78b4
     35  1.1  christos 
     36  1.1  christos /* Bits for AR9287_AN_RF2G3_CH[01]. */
     37  1.1  christos #define AR9287_AN_RF2G3_OB_PAL_OFF_M	0x0001c000
     38  1.1  christos #define AR9287_AN_RF2G3_OB_PAL_OFF_S	14
     39  1.1  christos #define AR9287_AN_RF2G3_OB_QAM_M	0x000e0000
     40  1.1  christos #define AR9287_AN_RF2G3_OB_QAM_S	17
     41  1.1  christos #define AR9287_AN_RF2G3_OB_PSK_M	0x00700000
     42  1.1  christos #define AR9287_AN_RF2G3_OB_PSK_S	20
     43  1.1  christos #define AR9287_AN_RF2G3_OB_CCK_M	0x03800000
     44  1.1  christos #define AR9287_AN_RF2G3_OB_CCK_S	23
     45  1.1  christos #define AR9287_AN_RF2G3_DB2_M		0x1c000000
     46  1.1  christos #define AR9287_AN_RF2G3_DB2_S		26
     47  1.1  christos #define AR9287_AN_RF2G3_DB1_M		0xe0000000
     48  1.1  christos #define AR9287_AN_RF2G3_DB1_S		29
     49  1.1  christos 
     50  1.1  christos /* Bits for AR9287_AN_TXPC0. */
     51  1.1  christos #define AR9287_AN_TXPC0_TXPCMODE_M		0x0000c000
     52  1.1  christos #define AR9287_AN_TXPC0_TXPCMODE_S		14
     53  1.1  christos #define AR9287_AN_TXPC0_TXPCMODE_NORMAL		0
     54  1.1  christos #define AR9287_AN_TXPC0_TXPCMODE_TEST		1
     55  1.1  christos #define AR9287_AN_TXPC0_TXPCMODE_TEMPSENSE	2
     56  1.1  christos #define AR9287_AN_TXPC0_TXPCMODE_ATBTEST	3
     57  1.1  christos 
     58  1.1  christos /* Bits for AR9287_AN_TOP2. */
     59  1.1  christos #define AR9287_AN_TOP2_XPABIAS_LVL_M	0xc0000000
     60  1.1  christos #define AR9287_AN_TOP2_XPABIAS_LVL_S	30
     61  1.1  christos 
     62  1.1  christos /*
     63  1.1  christos  * ROM layout used by AR9287 (2GHz only).
     64  1.1  christos  */
     65  1.1  christos #define AR9287_EEP_START_LOC		128
     66  1.1  christos #define AR9287_NUM_2G_CAL_PIERS		3
     67  1.1  christos #define AR9287_NUM_2G_CCK_TARGET_POWERS	3
     68  1.1  christos #define AR9287_NUM_2G_20_TARGET_POWERS	3
     69  1.1  christos #define AR9287_NUM_2G_40_TARGET_POWERS	3
     70  1.1  christos #define AR9287_NUM_CTLS			12
     71  1.1  christos #define AR9287_NUM_BAND_EDGES		4
     72  1.1  christos #define AR9287_NUM_PD_GAINS		4
     73  1.1  christos #define AR9287_PD_GAINS_IN_MASK 	4
     74  1.1  christos #define AR9287_PD_GAIN_ICEPTS		1
     75  1.1  christos #define AR9287_MAX_RATE_POWER		63
     76  1.1  christos #define AR9287_NUM_RATES		16
     77  1.1  christos 
     78  1.1  christos struct ar9287_base_eep_header {
     79  1.1  christos 	uint16_t	length;
     80  1.1  christos 	uint16_t	checksum;
     81  1.1  christos 	uint16_t	version;
     82  1.1  christos 	uint8_t		opCapFlags;
     83  1.1  christos 	uint8_t		eepMisc;
     84  1.1  christos #define AR9287_EEPMISC_BIG_ENDIAN	0x01
     85  1.1  christos #define AR9287_EEPMISC_WOW		0x02
     86  1.1  christos 
     87  1.1  christos 	uint16_t	regDmn[2];
     88  1.1  christos 	uint8_t		macAddr[6];
     89  1.1  christos 	uint8_t		rxMask;
     90  1.1  christos 	uint8_t		txMask;
     91  1.1  christos 	uint16_t	rfSilent;
     92  1.1  christos 	uint16_t	blueToothOptions;
     93  1.1  christos 	uint16_t	deviceCap;
     94  1.1  christos 	uint32_t	binBuildNumber;
     95  1.1  christos 	uint8_t		deviceType;
     96  1.1  christos 	/* End of common header. */
     97  1.1  christos 	uint8_t		openLoopPwrCntl;
     98  1.1  christos 	int8_t		pwrTableOffset;
     99  1.1  christos 	int8_t		tempSensSlope;
    100  1.1  christos 	int8_t		tempSensSlopePalOn;
    101  1.1  christos 	uint8_t		futureBase[29];
    102  1.1  christos } __packed;
    103  1.1  christos 
    104  1.1  christos struct ar9287_modal_eep_header {
    105  1.1  christos 	uint32_t	antCtrlChain[AR9287_MAX_CHAINS];
    106  1.1  christos 	uint32_t	antCtrlCommon;
    107  1.1  christos 	int8_t		antennaGainCh[AR9287_MAX_CHAINS];
    108  1.1  christos 	uint8_t		switchSettling;
    109  1.1  christos 	uint8_t		txRxAttenCh[AR9287_MAX_CHAINS];
    110  1.1  christos 	uint8_t		rxTxMarginCh[AR9287_MAX_CHAINS];
    111  1.1  christos 	int8_t		adcDesiredSize;
    112  1.1  christos 	uint8_t		txEndToXpaOff;
    113  1.1  christos 	uint8_t		txEndToRxOn;
    114  1.1  christos 	uint8_t		txFrameToXpaOn;
    115  1.1  christos 	uint8_t		thresh62;
    116  1.1  christos 	int8_t		noiseFloorThreshCh[AR9287_MAX_CHAINS];
    117  1.1  christos 	uint8_t		xpdGain;
    118  1.1  christos 	uint8_t		xpd;
    119  1.1  christos 	int8_t		iqCalICh[AR9287_MAX_CHAINS];
    120  1.1  christos 	int8_t		iqCalQCh[AR9287_MAX_CHAINS];
    121  1.1  christos 	uint8_t		pdGainOverlap;
    122  1.1  christos 	uint8_t		xpaBiasLvl;
    123  1.1  christos 	uint8_t		txFrameToDataStart;
    124  1.1  christos 	uint8_t		txFrameToPaOn;
    125  1.1  christos 	uint8_t		ht40PowerIncForPdadc;
    126  1.1  christos 	uint8_t		bswAtten[AR9287_MAX_CHAINS];
    127  1.1  christos 	uint8_t		bswMargin[AR9287_MAX_CHAINS];
    128  1.1  christos 	uint8_t		swSettleHt40;
    129  1.1  christos 	uint8_t		version;
    130  1.1  christos 	uint8_t		db1;
    131  1.1  christos 	uint8_t		db2;
    132  1.1  christos 	uint8_t		ob_cck;
    133  1.1  christos 	uint8_t		ob_psk;
    134  1.1  christos 	uint8_t		ob_qam;
    135  1.1  christos 	uint8_t		ob_pal_off;
    136  1.1  christos 	uint8_t		futureModal[30];
    137  1.1  christos 	struct		ar_spur_chan spurChans[AR_EEPROM_MODAL_SPURS];
    138  1.1  christos } __packed;
    139  1.1  christos 
    140  1.1  christos struct ar9287_cal_data_per_freq {
    141  1.1  christos 	uint8_t	pwrPdg[AR9287_NUM_PD_GAINS][AR9287_PD_GAIN_ICEPTS];
    142  1.1  christos 	uint8_t	vpdPdg[AR9287_NUM_PD_GAINS][AR9287_PD_GAIN_ICEPTS];
    143  1.1  christos } __packed;
    144  1.1  christos 
    145  1.1  christos union ar9287_cal_data_per_freq_u {
    146  1.1  christos 	struct ar_cal_data_per_freq_olpc	calDataOpen;
    147  1.1  christos 	struct ar9287_cal_data_per_freq		calDataClose;
    148  1.1  christos } __packed;
    149  1.1  christos 
    150  1.1  christos struct ar9287_cal_ctl_data {
    151  1.1  christos 	struct ar_cal_ctl_edges
    152  1.1  christos 	    ctlEdges[AR9287_MAX_CHAINS][AR9287_NUM_BAND_EDGES];
    153  1.1  christos } __packed;
    154  1.1  christos 
    155  1.1  christos struct ar9287_eeprom {
    156  1.1  christos 	struct	ar9287_base_eep_header baseEepHeader;
    157  1.1  christos 	uint8_t custData[32];
    158  1.1  christos 	struct	ar9287_modal_eep_header modalHeader;
    159  1.1  christos 	uint8_t	calFreqPier2G[AR9287_NUM_2G_CAL_PIERS];
    160  1.1  christos 	union	ar9287_cal_data_per_freq_u
    161  1.1  christos 	    calPierData2G[AR9287_MAX_CHAINS][AR9287_NUM_2G_CAL_PIERS];
    162  1.1  christos 	struct	ar_cal_target_power_leg
    163  1.1  christos 	    calTargetPowerCck[AR9287_NUM_2G_CCK_TARGET_POWERS];
    164  1.1  christos 	struct	ar_cal_target_power_leg
    165  1.1  christos 	    calTargetPower2G[AR9287_NUM_2G_20_TARGET_POWERS];
    166  1.1  christos 	struct	ar_cal_target_power_ht
    167  1.1  christos 	    calTargetPower2GHT20[AR9287_NUM_2G_20_TARGET_POWERS];
    168  1.1  christos 	struct	ar_cal_target_power_ht
    169  1.1  christos 	    calTargetPower2GHT40[AR9287_NUM_2G_40_TARGET_POWERS];
    170  1.1  christos 	uint8_t	ctlIndex[AR9287_NUM_CTLS];
    171  1.1  christos 	struct	ar9287_cal_ctl_data ctlData[AR9287_NUM_CTLS];
    172  1.1  christos 	uint8_t	padding;
    173  1.1  christos } __packed;
    174  1.1  christos 
    175  1.1  christos /* Macro to "pack" registers to 16-bit to save some .rodata space. */
    176  1.1  christos #define P(x)	(x)
    177  1.1  christos 
    178  1.1  christos /*
    179  1.1  christos  * AR9287 1.1 initialization values.
    180  1.1  christos  */
    181  1.1  christos static const uint16_t ar9287_1_1_regs[] = {
    182  1.1  christos 	P(0x01030), P(0x01070), P(0x010b0), P(0x010f0), P(0x08014),
    183  1.1  christos 	P(0x0801c), P(0x08120), P(0x081d0), P(0x08318), P(0x09804),
    184  1.1  christos 	P(0x09820), P(0x09824), P(0x09828), P(0x09834), P(0x09838),
    185  1.1  christos 	P(0x09840), P(0x09844), P(0x09850), P(0x09858), P(0x0985c),
    186  1.1  christos 	P(0x09860), P(0x09864), P(0x09868), P(0x0986c), P(0x09914),
    187  1.1  christos 	P(0x09918), P(0x09924), P(0x09944), P(0x09960), P(0x0a960),
    188  1.1  christos 	P(0x09964), P(0x0c968), P(0x099b8), P(0x099bc), P(0x099c0),
    189  1.1  christos 	P(0x0a204), P(0x0a20c), P(0x0b20c), P(0x0a21c), P(0x0a230),
    190  1.1  christos 	P(0x0a250), P(0x0a358), P(0x0a3d8)
    191  1.1  christos };
    192  1.1  christos 
    193  1.1  christos #ifndef IEEE80211_NO_HT
    194  1.1  christos static const uint32_t ar9287_1_1_vals_2g40[] = {
    195  1.1  christos 	0x000002c0, 0x00000318, 0x00007c70, 0x00000000, 0x10801600,
    196  1.1  christos 	0x12e00057, 0x08f04810, 0x0000320a, 0x00006880, 0x000003c4,
    197  1.1  christos 	0x02020200, 0x01000e0e, 0x3a020001, 0x00000e0e, 0x00000007,
    198  1.1  christos 	0x206a012e, 0x037216a0, 0x6d4000e2, 0x7ec84d2e, 0x3139605e,
    199  1.1  christos 	0x00058d20, 0x0001ce00, 0x5ac640d0, 0x06903881, 0x00001130,
    200  1.1  christos 	0x00000016, 0xd00a8a0d, 0xefbc1010, 0x00000010, 0x00000010,
    201  1.1  christos 	0x00000210, 0x000003ce, 0x0000001c, 0x00000c00, 0x05eea6d4,
    202  1.1  christos 	0x00000444, 0x00000000, 0x00000000, 0x1883800a, 0x00000210,
    203  1.1  christos 	0x0004a000, 0x7999aa0e, 0x00000000
    204  1.1  christos };
    205  1.1  christos #endif
    206  1.1  christos 
    207  1.1  christos static const uint32_t ar9287_1_1_vals_2g20[] = {
    208  1.1  christos 	0x00000160, 0x0000018c, 0x00003e38, 0x00000000, 0x08400b00,
    209  1.1  christos 	0x12e0002b, 0x08f04810, 0x0000320a, 0x00003440, 0x00000300,
    210  1.1  christos 	0x02020200, 0x01000e0e, 0x3a020001, 0x00000e0e, 0x00000007,
    211  1.1  christos 	0x206a012e, 0x037216a0, 0x6c4000e2, 0x7ec84d2e, 0x31395d5e,
    212  1.1  christos 	0x00058d20, 0x0001ce00, 0x5ac640d0, 0x06903881, 0x00000898,
    213  1.1  christos 	0x0000000b, 0xd00a8a0d, 0xefbc1010, 0x00000010, 0x00000010,
    214  1.1  christos 	0x00000210, 0x000003ce, 0x0000001c, 0x00000c00, 0x05eea6d4,
    215  1.1  christos 	0x00000444, 0x00000000, 0x00000000, 0x1883800a, 0x00000108,
    216  1.1  christos 	0x0004a000, 0x7999aa0e, 0x00000000
    217  1.1  christos };
    218  1.1  christos 
    219  1.1  christos static const uint16_t ar9287_1_1_cm_regs[] = {
    220  1.1  christos 	P(0x0000c), P(0x00030), P(0x00034), P(0x00040), P(0x00044),
    221  1.1  christos 	P(0x00048), P(0x0004c), P(0x00050), P(0x00054), P(0x00800),
    222  1.1  christos 	P(0x00804), P(0x00808), P(0x0080c), P(0x00810), P(0x00814),
    223  1.1  christos 	P(0x00818), P(0x0081c), P(0x00820), P(0x00824), P(0x01040),
    224  1.1  christos 	P(0x01044), P(0x01048), P(0x0104c), P(0x01050), P(0x01054),
    225  1.1  christos 	P(0x01058), P(0x0105c), P(0x01060), P(0x01064), P(0x01230),
    226  1.1  christos 	P(0x01270), P(0x01038), P(0x01078), P(0x010b8), P(0x010f8),
    227  1.1  christos 	P(0x01138), P(0x01178), P(0x011b8), P(0x011f8), P(0x01238),
    228  1.1  christos 	P(0x01278), P(0x012b8), P(0x012f8), P(0x01338), P(0x01378),
    229  1.1  christos 	P(0x013b8), P(0x013f8), P(0x01438), P(0x01478), P(0x014b8),
    230  1.1  christos 	P(0x014f8), P(0x01538), P(0x01578), P(0x015b8), P(0x015f8),
    231  1.1  christos 	P(0x01638), P(0x01678), P(0x016b8), P(0x016f8), P(0x01738),
    232  1.1  christos 	P(0x01778), P(0x017b8), P(0x017f8), P(0x0103c), P(0x0107c),
    233  1.1  christos 	P(0x010bc), P(0x010fc), P(0x0113c), P(0x0117c), P(0x011bc),
    234  1.1  christos 	P(0x011fc), P(0x0123c), P(0x0127c), P(0x012bc), P(0x012fc),
    235  1.1  christos 	P(0x0133c), P(0x0137c), P(0x013bc), P(0x013fc), P(0x0143c),
    236  1.1  christos 	P(0x0147c), P(0x04030), P(0x0403c), P(0x04024), P(0x04060),
    237  1.1  christos 	P(0x04064), P(0x07010), P(0x07020), P(0x07034), P(0x07038),
    238  1.1  christos 	P(0x08004), P(0x08008), P(0x0800c), P(0x08018), P(0x08020),
    239  1.1  christos 	P(0x08038), P(0x0803c), P(0x08048), P(0x08054), P(0x08058),
    240  1.1  christos 	P(0x0805c), P(0x08060), P(0x08064), P(0x08070), P(0x080c0),
    241  1.1  christos 	P(0x080c4), P(0x080c8), P(0x080cc), P(0x080d0), P(0x080d4),
    242  1.1  christos 	P(0x080d8), P(0x080e0), P(0x080e4), P(0x080e8), P(0x080ec),
    243  1.1  christos 	P(0x080f0), P(0x080f4), P(0x080f8), P(0x080fc), P(0x08100),
    244  1.1  christos 	P(0x08104), P(0x08108), P(0x0810c), P(0x08110), P(0x08118),
    245  1.1  christos 	P(0x0811c), P(0x08124), P(0x08128), P(0x0812c), P(0x08130),
    246  1.1  christos 	P(0x08134), P(0x08138), P(0x0813c), P(0x08144), P(0x08168),
    247  1.1  christos 	P(0x0816c), P(0x08170), P(0x08174), P(0x08178), P(0x0817c),
    248  1.1  christos 	P(0x081c0), P(0x081c4), P(0x081d4), P(0x081ec), P(0x081f0),
    249  1.1  christos 	P(0x081f4), P(0x081f8), P(0x081fc), P(0x08200), P(0x08204),
    250  1.1  christos 	P(0x08208), P(0x0820c), P(0x08210), P(0x08214), P(0x08218),
    251  1.1  christos 	P(0x0821c), P(0x08220), P(0x08224), P(0x08228), P(0x0822c),
    252  1.1  christos 	P(0x08230), P(0x08234), P(0x08238), P(0x0823c), P(0x08240),
    253  1.1  christos 	P(0x08244), P(0x08248), P(0x0824c), P(0x08250), P(0x08254),
    254  1.1  christos 	P(0x08258), P(0x0825c), P(0x08260), P(0x08264), P(0x08270),
    255  1.1  christos 	P(0x08274), P(0x08278), P(0x0827c), P(0x08284), P(0x08288),
    256  1.1  christos 	P(0x0828c), P(0x08294), P(0x08298), P(0x0829c), P(0x08300),
    257  1.1  christos 	P(0x08314), P(0x08328), P(0x0832c), P(0x08330), P(0x08334),
    258  1.1  christos 	P(0x08338), P(0x0833c), P(0x08340), P(0x08344), P(0x08360),
    259  1.1  christos 	P(0x08364), P(0x08368), P(0x08370), P(0x08374), P(0x08378),
    260  1.1  christos 	P(0x0837c), P(0x08380), P(0x08384), P(0x08390), P(0x08394),
    261  1.1  christos 	P(0x08398), P(0x0839c), P(0x083a0), P(0x09808), P(0x0980c),
    262  1.1  christos 	P(0x09810), P(0x09814), P(0x0981c), P(0x0982c), P(0x09830),
    263  1.1  christos 	P(0x0983c), P(0x0984c), P(0x0a84c), P(0x09854), P(0x09900),
    264  1.1  christos 	P(0x09904), P(0x09908), P(0x0990c), P(0x09910), P(0x0991c),
    265  1.1  christos 	P(0x09920), P(0x0a920), P(0x09928), P(0x0992c), P(0x09930),
    266  1.1  christos 	P(0x0a930), P(0x09934), P(0x09938), P(0x0993c), P(0x09948),
    267  1.1  christos 	P(0x0994c), P(0x09954), P(0x09958), P(0x09940), P(0x0c95c),
    268  1.1  christos 	P(0x09970), P(0x09974), P(0x09978), P(0x0997c), P(0x099a0),
    269  1.1  christos 	P(0x099a4), P(0x099a8), P(0x099ac), P(0x099b0), P(0x099b4),
    270  1.1  christos 	P(0x099c4), P(0x099c8), P(0x099cc), P(0x099d0), P(0x099dc),
    271  1.1  christos 	P(0x099e0), P(0x099e4), P(0x099e8), P(0x099ec), P(0x099f0),
    272  1.1  christos 	P(0x099fc), P(0x0a208), P(0x0a210), P(0x0a214), P(0x0a218),
    273  1.1  christos 	P(0x0a220), P(0x0a224), P(0x0a228), P(0x0a22c), P(0x0a234),
    274  1.1  christos 	P(0x0a238), P(0x0a23c), P(0x0a240), P(0x0a244), P(0x0a248),
    275  1.1  christos 	P(0x0a24c), P(0x0a254), P(0x0a258), P(0x0a25c), P(0x0a260),
    276  1.1  christos 	P(0x0a264), P(0x0b264), P(0x0a268), P(0x0a26c), P(0x0b26c),
    277  1.1  christos 	P(0x0d270), P(0x0a278), P(0x0a27c), P(0x0d35c), P(0x0d360),
    278  1.1  christos 	P(0x0d364), P(0x0d368), P(0x0d36c), P(0x0d370), P(0x0d374),
    279  1.1  christos 	P(0x0d378), P(0x0d37c), P(0x0d380), P(0x0d384), P(0x0a388),
    280  1.1  christos 	P(0x0a38c), P(0x0a390), P(0x0a394), P(0x0a398), P(0x0b398),
    281  1.1  christos 	P(0x0a39c), P(0x0a3c8), P(0x0a3cc), P(0x0a3d0), P(0x0a3d4),
    282  1.1  christos 	P(0x0a3dc), P(0x0a3e0), P(0x0a3e4), P(0x0a3e8), P(0x0a3ec),
    283  1.1  christos 	P(0x0a3f0), P(0x0a3f4), P(0x0b3f4), P(0x0a7d8), P(0x07800),
    284  1.1  christos 	P(0x07804), P(0x07808), P(0x0780c), P(0x07810), P(0x07814),
    285  1.1  christos 	P(0x07818), P(0x0781c), P(0x07820), P(0x07824), P(0x07828),
    286  1.1  christos 	P(0x0782c), P(0x07830), P(0x07834), P(0x07838), P(0x0783c),
    287  1.1  christos 	P(0x07840), P(0x07844), P(0x07848), P(0x07850), P(0x07854),
    288  1.1  christos 	P(0x07858), P(0x0785c), P(0x07860), P(0x07864), P(0x07868),
    289  1.1  christos 	P(0x0786c), P(0x07870), P(0x07874), P(0x07878), P(0x0787c),
    290  1.1  christos 	P(0x07880), P(0x07884), P(0x07888), P(0x0788c), P(0x07890),
    291  1.1  christos 	P(0x07894), P(0x07898), P(0x0789c), P(0x078a0), P(0x078a4),
    292  1.1  christos 	P(0x078a8), P(0x078ac), P(0x078b0), P(0x078b4), P(0x078b8)
    293  1.1  christos };
    294  1.1  christos 
    295  1.1  christos static const uint32_t ar9287_1_1_cm_vals[] = {
    296  1.1  christos 	0x00000000, 0x00020015, 0x00000005, 0x00000000, 0x00000008,
    297  1.1  christos 	0x00000008, 0x00000010, 0x00000000, 0x0000001f, 0x00000000,
    298  1.1  christos 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    299  1.1  christos 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002ffc0f,
    300  1.1  christos 	0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f,
    301  1.1  christos 	0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x00000000,
    302  1.1  christos 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    303  1.1  christos 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    304  1.1  christos 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    305  1.1  christos 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    306  1.1  christos 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    307  1.1  christos 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    308  1.1  christos 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    309  1.1  christos 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    310  1.1  christos 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    311  1.1  christos 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    312  1.1  christos 	0x00000000, 0x00000002, 0x00000002, 0x0000001f, 0x00000000,
    313  1.1  christos 	0x00000000, 0x00000033, 0x00000000, 0x00000002, 0x000004c2,
    314  1.1  christos 	0x00000000, 0x00000000, 0x00000000, 0x00000700, 0x00000000,
    315  1.1  christos 	0x00000000, 0x00000000, 0x40000000, 0x00000000, 0x00000000,
    316  1.1  christos 	0x000fc78f, 0x0000000f, 0x00000000, 0x00000000, 0x2a80001a,
    317  1.1  christos 	0x05dc01e0, 0x1f402710, 0x01f40000, 0x00001e00, 0x00000000,
    318  1.1  christos 	0x00400000, 0xffffffff, 0x0000ffff, 0x003f3f3f, 0x00000000,
    319  1.1  christos 	0x00000000, 0x00000000, 0x00000000, 0x00020000, 0x00020000,
    320  1.1  christos 	0x00000001, 0x00000052, 0x00000000, 0x00000168, 0x000100aa,
    321  1.1  christos 	0x00003210, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    322  1.1  christos 	0x00000000, 0x00000000, 0x00000000, 0xffffffff, 0x00000000,
    323  1.1  christos 	0x00000000, 0x18487320, 0xfaa4fa50, 0x00000100, 0x00000000,
    324  1.1  christos 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    325  1.1  christos 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    326  1.1  christos 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    327  1.1  christos 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
    328  1.1  christos 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100000,
    329  1.1  christos 	0x0010f400, 0x00000100, 0x0001e800, 0x00000000, 0x00000000,
    330  1.1  christos 	0x00000000, 0x400000ff, 0x00080922, 0x88a00010, 0x00000000,
    331  1.1  christos 	0x40000000, 0x003e4180, 0x00000000, 0x0000002c, 0x0000002c,
    332  1.1  christos 	0x000000ff, 0x00000000, 0x00000000, 0x00000000, 0x00000040,
    333  1.1  christos 	0x00000000, 0x00000000, 0x00000007, 0x00000302, 0x00000e00,
    334  1.1  christos 	0x00ff0000, 0x00000000, 0x000107ff, 0x01c81043, 0xffffffff,
    335  1.1  christos 	0xffffffff, 0x00000000, 0x00000000, 0x000000ff, 0x00000000,
    336  1.1  christos 	0x00000000, 0xffffffff, 0xffffffff, 0x0fffffff, 0x0fffffff,
    337  1.1  christos 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xafe68e30,
    338  1.1  christos 	0xfd14e000, 0x9c0a9f6b, 0x00000000, 0x0000a000, 0x00000000,
    339  1.1  christos 	0x00200400, 0x0040233c, 0x0040233c, 0x00000044, 0x00000000,
    340  1.1  christos 	0x00000000, 0x00000000, 0x00000000, 0x10002310, 0x10000fff,
    341  1.1  christos 	0x04900000, 0x04900000, 0x00000001, 0x00000004, 0x00000000,
    342  1.1  christos 	0x00000000, 0x1e1f2022, 0x0a0b0c0d, 0x00000000, 0x9280c00a,
    343  1.1  christos 	0x00020028, 0x5f3ca3de, 0x0108ecff, 0x14750604, 0x004b6a8e,
    344  1.1  christos 	0x990bb514, 0x00000000, 0x00000001, 0x00000000, 0x00000000,
    345  1.1  christos 	0x00000001, 0x201fff00, 0x0c6f0000, 0x03051000, 0x00000820,
    346  1.1  christos 	0x06336f77, 0x6af6532f, 0x08f186c8, 0x00046384, 0x00000000,
    347  1.1  christos 	0x00000000, 0xaaaaaaaa, 0x3c466478, 0x0cc80caa, 0x00000000,
    348  1.1  christos 	0x00001042, 0x803e4788, 0x4080a333, 0x40206c10, 0x009c4060,
    349  1.1  christos 	0x01834061, 0x00000400, 0x000003b5, 0x233f7180, 0x20202020,
    350  1.1  christos 	0x20202020, 0x13c889af, 0x38490a20, 0x00000000, 0xfffffffc,
    351  1.1  christos 	0x00000000, 0x00000000, 0x0cdbd380, 0x0f0f0f01, 0xdfa91f01,
    352  1.1  christos 	0x00418a11, 0x00418a11, 0x00000000, 0x0e79e5c6, 0x0e79e5c6,
    353  1.1  christos 	0x00820820, 0x1ce739ce, 0x050701ce, 0x07ffffef, 0x0fffffe7,
    354  1.1  christos 	0x17ffffe5, 0x1fffffe4, 0x37ffffe3, 0x3fffffe3, 0x57ffffe3,
    355  1.1  christos 	0x5fffffe2, 0x7fffffe2, 0x7f3c7bba, 0xf3307ff0, 0x0c000000,
    356  1.1  christos 	0x20202020, 0x20202020, 0x1ce739ce, 0x000001ce, 0x000001ce,
    357  1.1  christos 	0x00000001, 0x00000246, 0x20202020, 0x20202020, 0x20202020,
    358  1.1  christos 	0x1ce739ce, 0x000001ce, 0x00000000, 0x18c43433, 0x00f70081,
    359  1.1  christos 	0x01036a1e, 0x00000000, 0x00000000, 0x000003f1, 0x00000800,
    360  1.1  christos 	0x6c35ffd2, 0x6db6c000, 0x6db6cb30, 0x6db6cb6c, 0x0501e200,
    361  1.1  christos 	0x0094128d, 0x976ee392, 0xf75ff6fc, 0x00040000, 0xdb003012,
    362  1.1  christos 	0x04924914, 0x21084210, 0x00140000, 0x0e4548d8, 0x54214514,
    363  1.1  christos 	0x02025830, 0x71c0d388, 0x934934a8, 0x00000000, 0x00000800,
    364  1.1  christos 	0x6c35ffd2, 0x6db6c000, 0x6db6cb30, 0x6db6cb6c, 0x0501e200,
    365  1.1  christos 	0x0094128d, 0x976ee392, 0xf75ff6fc, 0x00040000, 0xdb003012,
    366  1.1  christos 	0x04924914, 0x21084210, 0x001b6db0, 0x00376b63, 0x06db6db6,
    367  1.1  christos 	0x006d8000, 0x48100000, 0x00000000, 0x08000000, 0x0007ffd8,
    368  1.1  christos 	0x0007ffd8, 0x001c0020, 0x00060aeb, 0x40008080, 0x2a850160
    369  1.1  christos };
    370  1.1  christos 
    371  1.1  christos static const struct athn_ini ar9287_1_1_ini = {
    372  1.1  christos 	.nregs		= __arraycount(ar9287_1_1_regs),
    373  1.1  christos 	.regs		= ar9287_1_1_regs,
    374  1.1  christos 	.vals_5g20	= NULL,	/* 2GHz only. */
    375  1.1  christos #ifndef IEEE80211_NO_HT
    376  1.1  christos 	.vals_5g40	= NULL,	/* 2GHz only. */
    377  1.1  christos 	.vals_2g40	= ar9287_1_1_vals_2g40,
    378  1.1  christos #endif
    379  1.1  christos 	.vals_2g20	= ar9287_1_1_vals_2g20,
    380  1.1  christos 	.ncmregs	= __arraycount(ar9287_1_1_cm_regs),
    381  1.1  christos 	.cmregs		= ar9287_1_1_cm_regs,
    382  1.1  christos 	.cmvals		= ar9287_1_1_cm_vals
    383  1.1  christos };
    384  1.1  christos 
    385  1.1  christos /*
    386  1.1  christos  * AR9287 1.1 Tx gains.
    387  1.1  christos  */
    388  1.1  christos static const uint16_t ar9287_1_1_tx_gain_regs[] = {
    389  1.1  christos 	P(0x0a300), P(0x0a304), P(0x0a308), P(0x0a30c), P(0x0a310),
    390  1.1  christos 	P(0x0a314), P(0x0a318), P(0x0a31c), P(0x0a320), P(0x0a324),
    391  1.1  christos 	P(0x0a328), P(0x0a32c), P(0x0a330), P(0x0a334), P(0x0a338),
    392  1.1  christos 	P(0x0a33c), P(0x0a340), P(0x0a344), P(0x0a348), P(0x0a34c),
    393  1.1  christos 	P(0x0a350), P(0x0a354), P(0x0a780), P(0x0a784), P(0x0a788),
    394  1.1  christos 	P(0x0a78c), P(0x0a790), P(0x0a794), P(0x0a798), P(0x0a79c),
    395  1.1  christos 	P(0x0a7a0), P(0x0a7a4), P(0x0a7a8), P(0x0a7ac), P(0x0a7b0),
    396  1.1  christos 	P(0x0a7b4), P(0x0a7b8), P(0x0a7bc), P(0x0a7c0), P(0x0a7c4),
    397  1.1  christos 	P(0x0a7c8), P(0x0a7cc), P(0x0a7d0), P(0x0a7d4), P(0x0a274)
    398  1.1  christos };
    399  1.1  christos 
    400  1.1  christos static const uint32_t ar9287_1_1_tx_gain_vals_2g[] = {
    401  1.1  christos 	0x00000000, 0x00004002, 0x00008004, 0x0000c00a, 0x0001000c,
    402  1.1  christos 	0x0001420b, 0x0001824a, 0x0001c44a, 0x0002064a, 0x0002484a,
    403  1.1  christos 	0x00028a4a, 0x0002cc4a, 0x00030e4a, 0x00034e8a, 0x00038e8c,
    404  1.1  christos 	0x0003cecc, 0x00040ed4, 0x00044edc, 0x00048ede, 0x0004cf1e,
    405  1.1  christos 	0x00050f5e, 0x00054f9e, 0x00000062, 0x00004064, 0x000080a4,
    406  1.1  christos 	0x0000c0aa, 0x000100ac, 0x000140b4, 0x000180f4, 0x0001c134,
    407  1.1  christos 	0x00020174, 0x0002417c, 0x0002817e, 0x0002c1be, 0x000301fe,
    408  1.1  christos 	0x000301fe, 0x000301fe, 0x000301fe, 0x000301fe, 0x000301fe,
    409  1.1  christos 	0x000301fe, 0x000301fe, 0x000301fe, 0x000301fe, 0x0a1aa000
    410  1.1  christos };
    411  1.1  christos 
    412  1.1  christos static const struct athn_gain ar9287_1_1_tx_gain = {
    413  1.1  christos 	__arraycount(ar9287_1_1_tx_gain_regs),
    414  1.1  christos 	ar9287_1_1_tx_gain_regs,
    415  1.1  christos 	NULL,	/* 2GHz only. */
    416  1.1  christos 	ar9287_1_1_tx_gain_vals_2g
    417  1.1  christos };
    418  1.1  christos 
    419  1.1  christos /*
    420  1.1  christos  * AR9287 1.1 Rx gains.
    421  1.1  christos  */
    422  1.1  christos static const uint16_t ar9287_1_1_rx_gain_regs[] = {
    423  1.1  christos 	P(0x09a00), P(0x09a04), P(0x09a08), P(0x09a0c), P(0x09a10),
    424  1.1  christos 	P(0x09a14), P(0x09a18), P(0x09a1c), P(0x09a20), P(0x09a24),
    425  1.1  christos 	P(0x09a28), P(0x09a2c), P(0x09a30), P(0x09a34), P(0x09a38),
    426  1.1  christos 	P(0x09a3c), P(0x09a40), P(0x09a44), P(0x09a48), P(0x09a4c),
    427  1.1  christos 	P(0x09a50), P(0x09a54), P(0x09a58), P(0x09a5c), P(0x09a60),
    428  1.1  christos 	P(0x09a64), P(0x09a68), P(0x09a6c), P(0x09a70), P(0x09a74),
    429  1.1  christos 	P(0x09a78), P(0x09a7c), P(0x09a80), P(0x09a84), P(0x09a88),
    430  1.1  christos 	P(0x09a8c), P(0x09a90), P(0x09a94), P(0x09a98), P(0x09a9c),
    431  1.1  christos 	P(0x09aa0), P(0x09aa4), P(0x09aa8), P(0x09aac), P(0x09ab0),
    432  1.1  christos 	P(0x09ab4), P(0x09ab8), P(0x09abc), P(0x09ac0), P(0x09ac4),
    433  1.1  christos 	P(0x09ac8), P(0x09acc), P(0x09ad0), P(0x09ad4), P(0x09ad8),
    434  1.1  christos 	P(0x09adc), P(0x09ae0), P(0x09ae4), P(0x09ae8), P(0x09aec),
    435  1.1  christos 	P(0x09af0), P(0x09af4), P(0x09af8), P(0x09afc), P(0x09b00),
    436  1.1  christos 	P(0x09b04), P(0x09b08), P(0x09b0c), P(0x09b10), P(0x09b14),
    437  1.1  christos 	P(0x09b18), P(0x09b1c), P(0x09b20), P(0x09b24), P(0x09b28),
    438  1.1  christos 	P(0x09b2c), P(0x09b30), P(0x09b34), P(0x09b38), P(0x09b3c),
    439  1.1  christos 	P(0x09b40), P(0x09b44), P(0x09b48), P(0x09b4c), P(0x09b50),
    440  1.1  christos 	P(0x09b54), P(0x09b58), P(0x09b5c), P(0x09b60), P(0x09b64),
    441  1.1  christos 	P(0x09b68), P(0x09b6c), P(0x09b70), P(0x09b74), P(0x09b78),
    442  1.1  christos 	P(0x09b7c), P(0x09b80), P(0x09b84), P(0x09b88), P(0x09b8c),
    443  1.1  christos 	P(0x09b90), P(0x09b94), P(0x09b98), P(0x09b9c), P(0x09ba0),
    444  1.1  christos 	P(0x09ba4), P(0x09ba8), P(0x09bac), P(0x09bb0), P(0x09bb4),
    445  1.1  christos 	P(0x09bb8), P(0x09bbc), P(0x09bc0), P(0x09bc4), P(0x09bc8),
    446  1.1  christos 	P(0x09bcc), P(0x09bd0), P(0x09bd4), P(0x09bd8), P(0x09bdc),
    447  1.1  christos 	P(0x09be0), P(0x09be4), P(0x09be8), P(0x09bec), P(0x09bf0),
    448  1.1  christos 	P(0x09bf4), P(0x09bf8), P(0x09bfc), P(0x0aa00), P(0x0aa04),
    449  1.1  christos 	P(0x0aa08), P(0x0aa0c), P(0x0aa10), P(0x0aa14), P(0x0aa18),
    450  1.1  christos 	P(0x0aa1c), P(0x0aa20), P(0x0aa24), P(0x0aa28), P(0x0aa2c),
    451  1.1  christos 	P(0x0aa30), P(0x0aa34), P(0x0aa38), P(0x0aa3c), P(0x0aa40),
    452  1.1  christos 	P(0x0aa44), P(0x0aa48), P(0x0aa4c), P(0x0aa50), P(0x0aa54),
    453  1.1  christos 	P(0x0aa58), P(0x0aa5c), P(0x0aa60), P(0x0aa64), P(0x0aa68),
    454  1.1  christos 	P(0x0aa6c), P(0x0aa70), P(0x0aa74), P(0x0aa78), P(0x0aa7c),
    455  1.1  christos 	P(0x0aa80), P(0x0aa84), P(0x0aa88), P(0x0aa8c), P(0x0aa90),
    456  1.1  christos 	P(0x0aa94), P(0x0aa98), P(0x0aa9c), P(0x0aaa0), P(0x0aaa4),
    457  1.1  christos 	P(0x0aaa8), P(0x0aaac), P(0x0aab0), P(0x0aab4), P(0x0aab8),
    458  1.1  christos 	P(0x0aabc), P(0x0aac0), P(0x0aac4), P(0x0aac8), P(0x0aacc),
    459  1.1  christos 	P(0x0aad0), P(0x0aad4), P(0x0aad8), P(0x0aadc), P(0x0aae0),
    460  1.1  christos 	P(0x0aae4), P(0x0aae8), P(0x0aaec), P(0x0aaf0), P(0x0aaf4),
    461  1.1  christos 	P(0x0aaf8), P(0x0aafc), P(0x0ab00), P(0x0ab04), P(0x0ab08),
    462  1.1  christos 	P(0x0ab0c), P(0x0ab10), P(0x0ab14), P(0x0ab18), P(0x0ab1c),
    463  1.1  christos 	P(0x0ab20), P(0x0ab24), P(0x0ab28), P(0x0ab2c), P(0x0ab30),
    464  1.1  christos 	P(0x0ab34), P(0x0ab38), P(0x0ab3c), P(0x0ab40), P(0x0ab44),
    465  1.1  christos 	P(0x0ab48), P(0x0ab4c), P(0x0ab50), P(0x0ab54), P(0x0ab58),
    466  1.1  christos 	P(0x0ab5c), P(0x0ab60), P(0x0ab64), P(0x0ab68), P(0x0ab6c),
    467  1.1  christos 	P(0x0ab70), P(0x0ab74), P(0x0ab78), P(0x0ab7c), P(0x0ab80),
    468  1.1  christos 	P(0x0ab84), P(0x0ab88), P(0x0ab8c), P(0x0ab90), P(0x0ab94),
    469  1.1  christos 	P(0x0ab98), P(0x0ab9c), P(0x0aba0), P(0x0aba4), P(0x0aba8),
    470  1.1  christos 	P(0x0abac), P(0x0abb0), P(0x0abb4), P(0x0abb8), P(0x0abbc),
    471  1.1  christos 	P(0x0abc0), P(0x0abc4), P(0x0abc8), P(0x0abcc), P(0x0abd0),
    472  1.1  christos 	P(0x0abd4), P(0x0abd8), P(0x0abdc), P(0x0abe0), P(0x0abe4),
    473  1.1  christos 	P(0x0abe8), P(0x0abec), P(0x0abf0), P(0x0abf4), P(0x0abf8),
    474  1.1  christos 	P(0x0abfc), P(0x09848), P(0x0a848)
    475  1.1  christos };
    476  1.1  christos 
    477  1.1  christos static const uint32_t ar9287_1_1_rx_gain_vals_2g[] = {
    478  1.1  christos 	0x0000a120, 0x0000a124, 0x0000a128, 0x0000a12c, 0x0000a130,
    479  1.1  christos 	0x0000a194, 0x0000a198, 0x0000a20c, 0x0000a210, 0x0000a284,
    480  1.1  christos 	0x0000a288, 0x0000a28c, 0x0000a290, 0x0000a294, 0x0000a2a0,
    481  1.1  christos 	0x0000a2a4, 0x0000a2a8, 0x0000a2ac, 0x0000a2b0, 0x0000a2b4,
    482  1.1  christos 	0x0000a2b8, 0x0000a2c4, 0x0000a708, 0x0000a70c, 0x0000a710,
    483  1.1  christos 	0x0000ab04, 0x0000ab08, 0x0000ab0c, 0x0000ab10, 0x0000ab14,
    484  1.1  christos 	0x0000ab18, 0x0000ab8c, 0x0000ab90, 0x0000ab94, 0x0000ab98,
    485  1.1  christos 	0x0000aba4, 0x0000aba8, 0x0000cb04, 0x0000cb08, 0x0000cb0c,
    486  1.1  christos 	0x0000cb10, 0x0000cb14, 0x0000cb18, 0x0000cb8c, 0x0000cb90,
    487  1.1  christos 	0x0000cf18, 0x0000cf24, 0x0000cf28, 0x0000d314, 0x0000d318,
    488  1.1  christos 	0x0000d38c, 0x0000d390, 0x0000d394, 0x0000d398, 0x0000d3a4,
    489  1.1  christos 	0x0000d3a8, 0x0000d3ac, 0x0000d3b0, 0x0000f380, 0x0000f384,
    490  1.1  christos 	0x0000f388, 0x0000f710, 0x0000f714, 0x0000f718, 0x0000fb10,
    491  1.1  christos 	0x0000fb14, 0x0000fb18, 0x0000fb8c, 0x0000fb90, 0x0000fb94,
    492  1.1  christos 	0x0000ff8c, 0x0000ff90, 0x0000ff94, 0x0000ffa0, 0x0000ffa4,
    493  1.1  christos 	0x0000ffa8, 0x0000ffac, 0x0000ffb0, 0x0000ffb4, 0x0000ffa1,
    494  1.1  christos 	0x0000ffa5, 0x0000ffa9, 0x0000ffad, 0x0000ffb1, 0x0000ffb5,
    495  1.1  christos 	0x0000ffb9, 0x0000ffc5, 0x0000ffc9, 0x0000ffcd, 0x0000ffd1,
    496  1.1  christos 	0x0000ffd5, 0x0000ffc2, 0x0000ffc6, 0x0000ffca, 0x0000ffce,
    497  1.1  christos 	0x0000ffd2, 0x0000ffd6, 0x0000ffda, 0x0000ffc7, 0x0000ffcb,
    498  1.1  christos 	0x0000ffcf, 0x0000ffd3, 0x0000ffd7, 0x0000ffdb, 0x0000ffdb,
    499  1.1  christos 	0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb,
    500  1.1  christos 	0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb,
    501  1.1  christos 	0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb,
    502  1.1  christos 	0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb,
    503  1.1  christos 	0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000a120, 0x0000a124,
    504  1.1  christos 	0x0000a128, 0x0000a12c, 0x0000a130, 0x0000a194, 0x0000a198,
    505  1.1  christos 	0x0000a20c, 0x0000a210, 0x0000a284, 0x0000a288, 0x0000a28c,
    506  1.1  christos 	0x0000a290, 0x0000a294, 0x0000a2a0, 0x0000a2a4, 0x0000a2a8,
    507  1.1  christos 	0x0000a2ac, 0x0000a2b0, 0x0000a2b4, 0x0000a2b8, 0x0000a2c4,
    508  1.1  christos 	0x0000a708, 0x0000a70c, 0x0000a710, 0x0000ab04, 0x0000ab08,
    509  1.1  christos 	0x0000ab0c, 0x0000ab10, 0x0000ab14, 0x0000ab18, 0x0000ab8c,
    510  1.1  christos 	0x0000ab90, 0x0000ab94, 0x0000ab98, 0x0000aba4, 0x0000aba8,
    511  1.1  christos 	0x0000cb04, 0x0000cb08, 0x0000cb0c, 0x0000cb10, 0x0000cb14,
    512  1.1  christos 	0x0000cb18, 0x0000cb8c, 0x0000cb90, 0x0000cf18, 0x0000cf24,
    513  1.1  christos 	0x0000cf28, 0x0000d314, 0x0000d318, 0x0000d38c, 0x0000d390,
    514  1.1  christos 	0x0000d394, 0x0000d398, 0x0000d3a4, 0x0000d3a8, 0x0000d3ac,
    515  1.1  christos 	0x0000d3b0, 0x0000f380, 0x0000f384, 0x0000f388, 0x0000f710,
    516  1.1  christos 	0x0000f714, 0x0000f718, 0x0000fb10, 0x0000fb14, 0x0000fb18,
    517  1.1  christos 	0x0000fb8c, 0x0000fb90, 0x0000fb94, 0x0000ff8c, 0x0000ff90,
    518  1.1  christos 	0x0000ff94, 0x0000ffa0, 0x0000ffa4, 0x0000ffa8, 0x0000ffac,
    519  1.1  christos 	0x0000ffb0, 0x0000ffb4, 0x0000ffa1, 0x0000ffa5, 0x0000ffa9,
    520  1.1  christos 	0x0000ffad, 0x0000ffb1, 0x0000ffb5, 0x0000ffb9, 0x0000ffc5,
    521  1.1  christos 	0x0000ffc9, 0x0000ffcd, 0x0000ffd1, 0x0000ffd5, 0x0000ffc2,
    522  1.1  christos 	0x0000ffc6, 0x0000ffca, 0x0000ffce, 0x0000ffd2, 0x0000ffd6,
    523  1.1  christos 	0x0000ffda, 0x0000ffc7, 0x0000ffcb, 0x0000ffcf, 0x0000ffd3,
    524  1.1  christos 	0x0000ffd7, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb,
    525  1.1  christos 	0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb,
    526  1.1  christos 	0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb,
    527  1.1  christos 	0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb,
    528  1.1  christos 	0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb, 0x0000ffdb,
    529  1.1  christos 	0x0000ffdb, 0x00001067, 0x00001067
    530  1.1  christos };
    531  1.1  christos 
    532  1.1  christos static const struct athn_gain ar9287_1_1_rx_gain = {
    533  1.1  christos 	__arraycount(ar9287_1_1_rx_gain_regs),
    534  1.1  christos 	ar9287_1_1_rx_gain_regs,
    535  1.1  christos 	NULL,	/* 2GHz only. */
    536  1.1  christos 	ar9287_1_1_rx_gain_vals_2g
    537  1.1  christos };
    538  1.1  christos 
    539  1.1  christos #endif /* _ARN9287REG_H_ */
    540