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