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