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