1 /* $NetBSD: arn9380reg.h,v 1.1 2013/03/30 02:53:02 christos Exp $ */ 2 /* $OpenBSD: ar9380reg.h,v 1.19 2012/10/20 09:54:20 stsp Exp $ */ 3 4 /*- 5 * Copyright (c) 2010 Damien Bergamini <damien.bergamini@free.fr> 6 * Copyright (c) 2010 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 _ARN9380REG_H_ 22 #define _ARN9380REG_H_ 23 24 #define AR9380_MAX_CHAINS 3 25 26 #define AR9380_PHY_CCA_NOM_VAL_2GHZ (-110) 27 #define AR9380_PHY_CCA_NOM_VAL_5GHZ (-115) 28 #define AR9380_PHY_CCA_MIN_GOOD_VAL_2GHZ (-125) 29 #define AR9380_PHY_CCA_MIN_GOOD_VAL_5GHZ (-125) 30 #define AR9380_PHY_CCA_MAX_GOOD_VAL_2GHZ ( -95) 31 #define AR9380_PHY_CCA_MAX_GOOD_VAL_5GHZ (-100) 32 33 /* 34 * ROM layout used by AR9380. 35 */ 36 #define AR9380_NUM_5G_CAL_PIERS 8 37 #define AR9380_NUM_2G_CAL_PIERS 3 38 #define AR9380_NUM_5G_20_TARGET_POWERS 8 39 #define AR9380_NUM_5G_40_TARGET_POWERS 8 40 #define AR9380_NUM_2G_CCK_TARGET_POWERS 2 41 #define AR9380_NUM_2G_20_TARGET_POWERS 3 42 #define AR9380_NUM_2G_40_TARGET_POWERS 3 43 #define AR9380_NUM_CTLS_5G 9 44 #define AR9380_NUM_CTLS_2G 12 45 #define AR9380_NUM_BAND_EDGES_5G 8 46 #define AR9380_NUM_BAND_EDGES_2G 4 47 #define AR9380_NUM_PD_GAINS 4 48 #define AR9380_PD_GAINS_IN_MASK 4 49 #define AR9380_PD_GAIN_ICEPTS 5 50 #define AR9380_EEPROM_MODAL_SPURS 5 51 #define AR9380_CUSTOMER_DATA_SIZE 20 52 53 struct ar9380_cal_ctl_data_2g { 54 uint8_t ctlEdges[AR9380_NUM_BAND_EDGES_2G]; 55 } __packed; 56 57 struct ar9380_cal_ctl_data_5g { 58 uint8_t ctlEdges[AR9380_NUM_BAND_EDGES_5G]; 59 } __packed; 60 61 struct ar9380_base_eep_hdr { 62 uint16_t regDmn[2]; 63 uint8_t txrxMask; 64 #define AR_EEP_TX_MASK_M 0xf0 65 #define AR_EEP_TX_MASK_S 4 66 #define AR_EEP_RX_MASK_M 0x0f 67 #define AR_EEP_RX_MASK_S 0 68 69 uint8_t opFlags; 70 #define AR_OPFLAGS_11A 0x01 71 #define AR_OPFLAGS_11G 0x02 72 #define AR_OPFLAGS_11N_5G40 0x04 73 #define AR_OPFLAGS_11N_2G40 0x08 74 #define AR_OPFLAGS_11N_5G20 0x10 75 #define AR_OPFLAGS_11N_2G20 0x20 76 /* Shortcut. */ 77 #define AR_OPFLAGS_11N 0x3c 78 79 uint8_t eepMisc; 80 uint8_t rfSilent; 81 #define AR_EEP_RFSILENT_ENABLED 0x0001 82 #define AR_EEP_RFSILENT_GPIO_SEL_M 0x001c 83 #define AR_EEP_RFSILENT_GPIO_SEL_S 2 84 #define AR_EEP_RFSILENT_POLARITY 0x0002 85 86 uint8_t blueToothOptions; 87 uint8_t deviceCap; 88 uint8_t deviceType; 89 int8_t pwrTableOffset; 90 uint8_t params_for_tuning_caps[2]; 91 uint8_t featureEnable; 92 #define AR_EEP_TX_TEMP_COMP_EN 0x01 93 #define AR_EEP_TX_VOLT_COMP_EN 0x02 94 #define AR_EEP_FAST_CLOCK_EN 0x04 95 #define AR_EEP_DOUBLING_EN 0x08 96 #define AR_EEP_INTERNAL_REGULATOR 0x10 97 #define AR_EEP_PAPRD 0x20 98 #define AR_EEP_TUNING_CAPS 0x40 99 100 uint8_t miscConfiguration; 101 #define AR_EEP_DRIVE_STRENGTH 0x01 102 #define AR_EEP_CHAIN_MASK_REDUCE 0x08 103 104 uint8_t eepromWriteEnableGpio; 105 uint8_t wlanDisableGpio; 106 uint8_t wlanLedGpio; 107 uint8_t rxBandSelectGpio; 108 uint8_t txrxgain; 109 #define AR_EEP_TX_GAIN_M 0xf0 110 #define AR_EEP_TX_GAIN_S 4 111 #define AR_EEP_TX_GAIN_HIGH_OB_DB 1 112 #define AR_EEP_TX_GAIN_LOW_OB_DB 2 113 #define AR_EEP_TX_GAIN_HIGH_POWER 3 114 #define AR_EEP_RX_GAIN_M 0x0f 115 #define AR_EEP_RX_GAIN_S 0 116 #define AR_EEP_RX_GAIN_WO_XLNA 1 117 118 uint32_t swreg; 119 } __packed; 120 121 struct ar9380_modal_eep_header { 122 uint32_t antCtrlCommon; 123 uint32_t antCtrlCommon2; 124 uint16_t antCtrlChain[AR9380_MAX_CHAINS]; 125 uint8_t xatten1DB[AR9380_MAX_CHAINS]; 126 uint8_t xatten1Margin[AR9380_MAX_CHAINS]; 127 int8_t tempSlope; 128 int8_t voltSlope; 129 uint8_t spurChans[AR9380_EEPROM_MODAL_SPURS]; 130 int8_t noiseFloorThreshCh[AR9380_MAX_CHAINS]; 131 uint8_t ob[AR9380_MAX_CHAINS]; 132 uint8_t db_stage2[AR9380_MAX_CHAINS]; 133 uint8_t db_stage3[AR9380_MAX_CHAINS]; 134 uint8_t db_stage4[AR9380_MAX_CHAINS]; 135 uint8_t xpaBiasLvl; 136 uint8_t txFrameToDataStart; 137 uint8_t txFrameToPaOn; 138 uint8_t txClip; 139 int8_t antennaGain; 140 uint8_t switchSettling; 141 int8_t adcDesiredSize; 142 uint8_t txEndToXpaOff; 143 uint8_t txEndToRxOn; 144 uint8_t txFrameToXpaOn; 145 uint8_t thresh62; 146 uint32_t papdRateMaskHt20; 147 uint32_t papdRateMaskHt40; 148 uint8_t futureModal[10]; 149 } __packed; 150 151 struct ar9380_cal_data_per_freq_op_loop { 152 int8_t refPower; 153 uint8_t voltMeas; 154 uint8_t tempMeas; 155 int8_t rxNoisefloorCal; 156 int8_t rxNoisefloorPower; 157 uint8_t rxTempMeas; 158 } __packed; 159 160 struct ar9380_base_extension_1 { 161 uint8_t ant_div_control; 162 #define AR_EEP_ANT_DIV_CTRL_ALL_M 0x3f 163 #define AR_EEP_ANT_DIV_CTRL_ALL_S 0 164 #define AR_EEP_ANT_DIV_CTRL_ANT_DIV 0x40 165 #define AR_EEP_ANT_DIV_CTRL_FAST_DIV 0x80 166 167 uint8_t future[13]; 168 } __packed; 169 170 struct ar9380_base_extension_2 { 171 int8_t tempSlopeLow; 172 int8_t tempSlopeHigh; 173 uint8_t xatten1DBLow[AR9380_MAX_CHAINS]; 174 uint8_t xatten1MarginLow[AR9380_MAX_CHAINS]; 175 uint8_t xatten1DBHigh[AR9380_MAX_CHAINS]; 176 uint8_t xatten1MarginHigh[AR9380_MAX_CHAINS]; 177 } __packed; 178 179 struct ar9380_eeprom { 180 uint8_t eepromVersion; 181 uint8_t templateVersion; 182 uint8_t macAddr[6]; 183 uint8_t custData[AR9380_CUSTOMER_DATA_SIZE]; 184 struct ar9380_base_eep_hdr baseEepHeader; 185 struct ar9380_modal_eep_header modalHeader2G; 186 struct ar9380_base_extension_1 base_ext1; 187 uint8_t calFreqPier2G[AR9380_NUM_2G_CAL_PIERS]; 188 struct ar9380_cal_data_per_freq_op_loop 189 calPierData2G[AR9380_MAX_CHAINS][AR9380_NUM_2G_CAL_PIERS]; 190 uint8_t calTargetFbinCck[AR9380_NUM_2G_CCK_TARGET_POWERS]; 191 uint8_t calTargetFbin2G[AR9380_NUM_2G_20_TARGET_POWERS]; 192 uint8_t calTargetFbin2GHT20[AR9380_NUM_2G_20_TARGET_POWERS]; 193 uint8_t calTargetFbin2GHT40[AR9380_NUM_2G_40_TARGET_POWERS]; 194 struct ar_cal_target_power_leg 195 calTargetPowerCck[AR9380_NUM_2G_CCK_TARGET_POWERS]; 196 struct ar_cal_target_power_leg 197 calTargetPower2G[AR9380_NUM_2G_20_TARGET_POWERS]; 198 struct ar_cal_target_power_ht 199 calTargetPower2GHT20[AR9380_NUM_2G_20_TARGET_POWERS]; 200 struct ar_cal_target_power_ht 201 calTargetPower2GHT40[AR9380_NUM_2G_40_TARGET_POWERS]; 202 uint8_t ctlIndex_2G[AR9380_NUM_CTLS_2G]; 203 uint8_t ctl_freqbin_2G[AR9380_NUM_CTLS_2G][AR9380_NUM_BAND_EDGES_2G]; 204 struct ar9380_cal_ctl_data_2g ctlPowerData_2G[AR9380_NUM_CTLS_2G]; 205 struct ar9380_modal_eep_header modalHeader5G; 206 struct ar9380_base_extension_2 base_ext2; 207 uint8_t calFreqPier5G[AR9380_NUM_5G_CAL_PIERS]; 208 struct ar9380_cal_data_per_freq_op_loop 209 calPierData5G[AR9380_MAX_CHAINS][AR9380_NUM_5G_CAL_PIERS]; 210 uint8_t calTargetFbin5G[AR9380_NUM_5G_20_TARGET_POWERS]; 211 uint8_t calTargetFbin5GHT20[AR9380_NUM_5G_20_TARGET_POWERS]; 212 uint8_t calTargetFbin5GHT40[AR9380_NUM_5G_40_TARGET_POWERS]; 213 struct ar_cal_target_power_leg 214 calTargetPower5G[AR9380_NUM_5G_20_TARGET_POWERS]; 215 struct ar_cal_target_power_ht 216 calTargetPower5GHT20[AR9380_NUM_5G_20_TARGET_POWERS]; 217 struct ar_cal_target_power_ht 218 calTargetPower5GHT40[AR9380_NUM_5G_40_TARGET_POWERS]; 219 uint8_t ctlIndex_5G[AR9380_NUM_CTLS_5G]; 220 uint8_t ctl_freqbin_5G[AR9380_NUM_CTLS_5G][AR9380_NUM_BAND_EDGES_5G]; 221 struct ar9380_cal_ctl_data_5g ctlPowerData_5G[AR9380_NUM_CTLS_5G]; 222 } __packed; 223 224 /* 225 * ROM templates (little endian). 226 */ 227 static const uint8_t ar9380_def_rom[] = { 228 0x02, 0x02, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x00, 0x00, 229 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 230 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 231 0x1f, 0x00, 0x77, 0x03, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 232 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x08, 0xff, 0x00, 0x00, 233 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x22, 0x22, 0x02, 234 0x00, 0x50, 0x01, 0x50, 0x01, 0x50, 0x01, 0x00, 0x00, 0x00, 235 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 236 0xff, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 237 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0e, 0x03, 0x00, 238 0x2c, 0xe2, 0x00, 0x02, 0x0e, 0x1c, 0xe0, 0xe0, 0xf0, 0x0c, 239 0xe0, 0xe0, 0xf0, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 240 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 241 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x89, 242 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 243 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 244 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 245 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 246 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 247 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xb8, 0x70, 0x89, 0xac, 248 0x70, 0x89, 0xac, 0x70, 0x89, 0xac, 0x24, 0x24, 0x24, 0x24, 249 0x24, 0x24, 0x24, 0x24, 0x20, 0x20, 0x1c, 0x18, 0x20, 0x20, 250 0x1c, 0x18, 0x20, 0x20, 0x1c, 0x18, 0x20, 0x20, 0x20, 0x20, 251 0x1c, 0x14, 0x20, 0x20, 0x1c, 0x14, 0x20, 0x20, 0x1c, 0x14, 252 0x20, 0x20, 0x20, 0x20, 0x1c, 0x14, 0x20, 0x20, 0x1c, 0x14, 253 0x20, 0x20, 0x1c, 0x14, 0x20, 0x20, 0x20, 0x20, 0x1c, 0x14, 254 0x20, 0x20, 0x1c, 0x14, 0x20, 0x20, 0x1c, 0x14, 0x20, 0x20, 255 0x20, 0x20, 0x1c, 0x14, 0x20, 0x20, 0x1c, 0x14, 0x20, 0x20, 256 0x1c, 0x14, 0x20, 0x20, 0x20, 0x20, 0x1c, 0x14, 0x20, 0x20, 257 0x1c, 0x14, 0x20, 0x20, 0x1c, 0x14, 0x20, 0x20, 0x20, 0x20, 258 0x1c, 0x14, 0x20, 0x20, 0x1c, 0x14, 0x20, 0x20, 0x1c, 0x14, 259 0x11, 0x12, 0x15, 0x17, 0x41, 0x42, 0x45, 0x47, 0x31, 0x32, 260 0x35, 0x37, 0x70, 0x75, 0x9d, 0xa2, 0x70, 0x75, 0xa2, 0xff, 261 0x70, 0x75, 0xa2, 0xff, 0x7a, 0x7f, 0x93, 0x98, 0x70, 0x75, 262 0xac, 0xb8, 0x70, 0x75, 0xac, 0x00, 0x70, 0x75, 0xac, 0x00, 263 0x7a, 0x7f, 0x93, 0xa2, 0x70, 0x75, 0xac, 0x00, 0x70, 0x75, 264 0xac, 0x00, 0x70, 0x75, 0xac, 0x00, 0x7a, 0x7f, 0x93, 0xa2, 265 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 0x7c, 0x3c, 266 0x3c, 0x7c, 0x7c, 0x3c, 0x00, 0x00, 0x3c, 0x7c, 0x3c, 0x3c, 267 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x3c, 0x3c, 0x7c, 268 0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 269 0x3c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x10, 0x01, 270 0x00, 0x00, 0x22, 0x22, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 271 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 272 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x03, 0x03, 273 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 274 0x00, 0x0e, 0x0e, 0x03, 0x00, 0x2d, 0xe2, 0x00, 0x02, 0x0e, 275 0x1c, 0x80, 0xc0, 0x80, 0x0c, 0x80, 0xc0, 0x80, 0x00, 0x00, 276 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 277 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 278 0x00, 0x00, 0x00, 0x4c, 0x54, 0x68, 0x78, 0x8c, 0xa0, 0xb9, 279 0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 280 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 281 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 282 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 283 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 284 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 285 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 286 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 287 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 288 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 289 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 290 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 291 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 292 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 293 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x54, 0x68, 0x78, 0x8c, 294 0xa0, 0xb9, 0xcd, 0x4c, 0x58, 0x68, 0x8c, 0xb4, 0xbd, 0xb9, 295 0xcd, 0x4c, 0x58, 0x68, 0x8c, 0xb4, 0xbd, 0xb9, 0xcd, 0x14, 296 0x14, 0x14, 0x0a, 0x14, 0x14, 0x14, 0x0a, 0x14, 0x14, 0x14, 297 0x0a, 0x14, 0x14, 0x14, 0x0a, 0x14, 0x14, 0x14, 0x0a, 0x14, 298 0x14, 0x14, 0x0a, 0x14, 0x14, 0x14, 0x0a, 0x14, 0x14, 0x14, 299 0x0a, 0x14, 0x14, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 300 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x14, 0x14, 0x0a, 0x0a, 0x00, 301 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x14, 302 0x14, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 303 0x0a, 0x00, 0x00, 0x14, 0x14, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 304 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x14, 0x14, 0x0a, 305 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 306 0x00, 0x14, 0x14, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 307 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x14, 0x14, 0x0a, 0x0a, 0x00, 308 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x14, 309 0x14, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 310 0x0a, 0x00, 0x00, 0x14, 0x14, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 311 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x14, 0x14, 0x0a, 312 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 313 0x00, 0x14, 0x14, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 314 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x14, 0x14, 0x0a, 0x0a, 0x00, 315 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x14, 316 0x14, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 317 0x0a, 0x00, 0x00, 0x14, 0x14, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 318 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x14, 0x14, 0x0a, 319 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 320 0x00, 0x14, 0x14, 0x0a, 0x0a, 0x00, 0x00, 0x0a, 0x0a, 0x00, 321 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x10, 0x16, 0x18, 0x40, 0x46, 322 0x48, 0x30, 0x36, 0x38, 0x4c, 0x5c, 0x60, 0x8c, 0xa0, 0xb4, 323 0xbd, 0xcd, 0x4c, 0x5c, 0x60, 0x8c, 0x90, 0xb4, 0xbd, 0xcd, 324 0x4e, 0x56, 0x5e, 0x66, 0x8e, 0x96, 0xae, 0xbf, 0x4c, 0x50, 325 0x5c, 0x68, 0x8c, 0xb4, 0xff, 0xff, 0x4c, 0x5c, 0x8c, 0xb4, 326 0xff, 0xff, 0xff, 0xff, 0x4e, 0x5e, 0x66, 0x8e, 0x9e, 0xae, 327 0xff, 0xff, 0x4c, 0x50, 0x54, 0x5c, 0x8c, 0xa0, 0xb4, 0xbd, 328 0x4c, 0x5c, 0x68, 0x8c, 0x98, 0xb4, 0xbd, 0xcd, 0x4e, 0x56, 329 0x5e, 0x8e, 0x96, 0xae, 0xbf, 0xc7, 0x7c, 0x7c, 0x7c, 0x7c, 330 0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 331 0x7c, 0x3c, 0x3c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 332 0x3c, 0x7c, 0x7c, 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 333 0x7c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 334 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 335 0x7c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x3c, 336 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c 337 }; 338 339 static const uint8_t ar9380_def_rom_h112[] = { 340 0x02, 0x03, 0x00, 0x03, 0x7f, 0x00, 0x00, 0x00, 0x68, 0x31, 341 0x31, 0x32, 0x2d, 0x32, 0x34, 0x31, 0x2d, 0x66, 0x30, 0x30, 342 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 343 0x1f, 0x00, 0x77, 0x03, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 344 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x08, 0xff, 0x10, 0x00, 345 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x44, 0x44, 0x04, 346 0x00, 0x50, 0x01, 0x50, 0x01, 0x50, 0x01, 0x00, 0x00, 0x00, 347 0x00, 0x00, 0x00, 0x19, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 348 0xff, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 349 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0e, 0x03, 0x00, 350 0x2c, 0xe2, 0x00, 0x02, 0x0e, 0x1c, 0x80, 0xc0, 0x80, 0x00, 351 0x80, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 352 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 353 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x89, 354 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 355 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 356 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 357 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 358 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 359 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xb8, 0x70, 0x89, 0xac, 360 0x70, 0x89, 0xac, 0x70, 0x89, 0xac, 0x22, 0x22, 0x22, 0x22, 361 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x20, 0x20, 0x22, 0x22, 362 0x20, 0x20, 0x22, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 363 0x20, 0x1e, 0x20, 0x20, 0x1e, 0x1c, 0x1c, 0x1c, 0x1c, 0x18, 364 0x20, 0x20, 0x20, 0x20, 0x20, 0x1e, 0x20, 0x20, 0x1e, 0x1c, 365 0x1c, 0x1c, 0x1c, 0x18, 0x20, 0x20, 0x20, 0x20, 0x20, 0x1e, 366 0x20, 0x20, 0x1e, 0x1c, 0x1c, 0x1c, 0x1c, 0x18, 0x1e, 0x1e, 367 0x1e, 0x1e, 0x1e, 0x1c, 0x1e, 0x1e, 0x1c, 0x1a, 0x1a, 0x1a, 368 0x1a, 0x16, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1c, 0x1e, 0x1e, 369 0x1c, 0x1a, 0x1a, 0x1a, 0x1a, 0x16, 0x1e, 0x1e, 0x1e, 0x1e, 370 0x1e, 0x1c, 0x1e, 0x1e, 0x1c, 0x1a, 0x1a, 0x1a, 0x1a, 0x16, 371 0x11, 0x12, 0x15, 0x17, 0x41, 0x42, 0x45, 0x47, 0x31, 0x32, 372 0x35, 0x37, 0x70, 0x75, 0x9d, 0xa2, 0x70, 0x75, 0xa2, 0xff, 373 0x70, 0x75, 0xa2, 0xff, 0x7a, 0x7f, 0x93, 0x98, 0x70, 0x75, 374 0xac, 0xb8, 0x70, 0x75, 0xac, 0x00, 0x70, 0x75, 0xac, 0x00, 375 0x7a, 0x7f, 0x93, 0xa2, 0x70, 0x75, 0xac, 0x00, 0x70, 0x75, 376 0xac, 0x00, 0x70, 0x75, 0xac, 0x00, 0x7a, 0x7f, 0x93, 0xa2, 377 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 0x7c, 0x3c, 378 0x3c, 0x7c, 0x7c, 0x3c, 0x00, 0x00, 0x3c, 0x7c, 0x3c, 0x3c, 379 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x3c, 0x3c, 0x7c, 380 0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 381 0x3c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x20, 0x02, 382 0x00, 0x00, 0x44, 0x44, 0x04, 0x00, 0x50, 0x01, 0x50, 0x01, 383 0x50, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 384 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x03, 0x03, 385 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 386 0x00, 0x0e, 0x0e, 0x03, 0x00, 0x2d, 0xe2, 0x00, 0x02, 0x0e, 387 0x1c, 0xe0, 0xe0, 0xf0, 0x0c, 0xe0, 0xe0, 0xf0, 0x6c, 0x00, 388 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 389 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 390 0x00, 0x00, 0x00, 0x4c, 0x54, 0x68, 0x78, 0x8c, 0xa0, 0xb4, 391 0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 392 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 393 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 394 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 395 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 396 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 397 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 398 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 399 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 400 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 401 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 402 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 403 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 404 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 405 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x58, 0x68, 0x78, 0x8c, 406 0xa0, 0xb4, 0xcd, 0x4c, 0x58, 0x68, 0x78, 0x8c, 0xb4, 0xbd, 407 0xcd, 0x4c, 0x58, 0x68, 0x78, 0x8c, 0xb4, 0xbd, 0xcd, 0x1e, 408 0x1e, 0x1c, 0x18, 0x1e, 0x1e, 0x1c, 0x18, 0x1e, 0x1e, 0x1c, 409 0x18, 0x1e, 0x1e, 0x1c, 0x18, 0x1e, 0x1e, 0x1c, 0x18, 0x1e, 410 0x1e, 0x1c, 0x18, 0x1e, 0x1e, 0x1c, 0x18, 0x1e, 0x1e, 0x1c, 411 0x18, 0x1e, 0x1e, 0x1e, 0x1c, 0x18, 0x14, 0x1e, 0x1c, 0x18, 412 0x14, 0x14, 0x14, 0x14, 0x10, 0x1e, 0x1e, 0x1e, 0x1c, 0x18, 413 0x14, 0x1e, 0x1c, 0x18, 0x14, 0x14, 0x14, 0x14, 0x10, 0x1e, 414 0x1e, 0x1e, 0x1a, 0x16, 0x12, 0x1e, 0x1a, 0x16, 0x12, 0x12, 415 0x12, 0x12, 0x10, 0x1e, 0x1e, 0x1e, 0x1a, 0x16, 0x12, 0x1e, 416 0x1a, 0x16, 0x12, 0x12, 0x12, 0x12, 0x10, 0x1e, 0x1e, 0x1e, 417 0x18, 0x14, 0x10, 0x1e, 0x18, 0x14, 0x10, 0x10, 0x10, 0x10, 418 0x0e, 0x1e, 0x1e, 0x1e, 0x18, 0x14, 0x10, 0x1e, 0x18, 0x14, 419 0x10, 0x10, 0x10, 0x10, 0x0e, 0x1e, 0x1e, 0x1e, 0x16, 0x12, 420 0x0e, 0x1e, 0x16, 0x12, 0x0e, 0x0e, 0x0e, 0x0e, 0x0c, 0x1e, 421 0x1e, 0x1e, 0x16, 0x12, 0x0e, 0x1e, 0x16, 0x12, 0x0e, 0x0e, 422 0x0e, 0x0e, 0x0c, 0x1c, 0x1c, 0x1c, 0x1a, 0x16, 0x12, 0x1c, 423 0x1a, 0x16, 0x12, 0x12, 0x12, 0x12, 0x0e, 0x1c, 0x1c, 0x1c, 424 0x1a, 0x16, 0x12, 0x1c, 0x1a, 0x16, 0x12, 0x12, 0x12, 0x12, 425 0x0e, 0x1c, 0x1c, 0x1c, 0x18, 0x14, 0x10, 0x1c, 0x18, 0x14, 426 0x10, 0x10, 0x10, 0x10, 0x0c, 0x1c, 0x1c, 0x1c, 0x18, 0x14, 427 0x10, 0x1c, 0x18, 0x14, 0x10, 0x10, 0x10, 0x10, 0x0c, 0x1c, 428 0x1c, 0x1c, 0x16, 0x12, 0x0e, 0x1c, 0x16, 0x12, 0x0e, 0x0e, 429 0x0e, 0x0e, 0x0a, 0x1c, 0x1c, 0x1c, 0x16, 0x12, 0x0e, 0x1c, 430 0x16, 0x12, 0x0e, 0x0e, 0x0e, 0x0e, 0x0a, 0x1c, 0x1c, 0x1c, 431 0x14, 0x10, 0x0c, 0x1c, 0x14, 0x10, 0x0c, 0x0c, 0x0c, 0x0c, 432 0x08, 0x1c, 0x1c, 0x1c, 0x14, 0x10, 0x0c, 0x1c, 0x14, 0x10, 433 0x0c, 0x0c, 0x0c, 0x0c, 0x08, 0x10, 0x16, 0x18, 0x40, 0x46, 434 0x48, 0x30, 0x36, 0x38, 0x4c, 0x5c, 0x60, 0x8c, 0xa0, 0xb4, 435 0xbd, 0xcd, 0x4c, 0x5c, 0x60, 0x8c, 0x90, 0xb4, 0xbd, 0xcd, 436 0x4e, 0x56, 0x5e, 0x66, 0x8e, 0x96, 0xae, 0xbf, 0x4c, 0x50, 437 0x5c, 0x68, 0x8c, 0xb4, 0xff, 0xff, 0x4c, 0x5c, 0x8c, 0xb4, 438 0xff, 0xff, 0xff, 0xff, 0x4e, 0x5e, 0x66, 0x8e, 0x9e, 0xae, 439 0xff, 0xff, 0x4c, 0x50, 0x54, 0x5c, 0x8c, 0xa0, 0xb4, 0xbd, 440 0x4c, 0x5c, 0x68, 0x8c, 0x98, 0xb4, 0xbd, 0xcd, 0x4e, 0x56, 441 0x5e, 0x8e, 0x96, 0xae, 0xbf, 0xc7, 0x7c, 0x7c, 0x7c, 0x7c, 442 0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 443 0x7c, 0x3c, 0x3c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 444 0x3c, 0x7c, 0x7c, 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 445 0x7c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 446 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 447 0x7c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x3c, 448 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c 449 }; 450 451 static const uint8_t ar9380_def_rom_h116[] = { 452 0x02, 0x04, 0x00, 0x03, 0x7f, 0x00, 0x00, 0x00, 0x68, 0x31, 453 0x31, 0x36, 0x2d, 0x30, 0x34, 0x31, 0x2d, 0x66, 0x30, 0x30, 454 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 455 0x1f, 0x00, 0x33, 0x03, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 456 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x08, 0xff, 0x10, 0x00, 457 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x44, 0x44, 0x04, 458 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1f, 0x1f, 0x1f, 459 0x12, 0x12, 0x12, 0x19, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 460 0xff, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 461 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0e, 0x03, 0x00, 462 0x2c, 0xe2, 0x00, 0x02, 0x0e, 0x1c, 0x80, 0xc0, 0x80, 0x0c, 463 0x80, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 464 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 465 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x89, 466 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 467 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 468 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 469 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 470 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 471 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xac, 0x70, 0x89, 0xac, 472 0x70, 0x89, 0xac, 0x70, 0x89, 0xac, 0x22, 0x22, 0x22, 0x22, 473 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x20, 0x20, 0x22, 0x22, 474 0x20, 0x20, 0x22, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 475 0x20, 0x1e, 0x20, 0x20, 0x1e, 0x1c, 0x00, 0x00, 0x00, 0x00, 476 0x20, 0x20, 0x20, 0x20, 0x20, 0x1e, 0x20, 0x20, 0x1e, 0x1c, 477 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x1e, 478 0x20, 0x20, 0x1e, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1e, 479 0x1e, 0x1e, 0x1e, 0x1c, 0x1e, 0x1e, 0x1c, 0x1a, 0x00, 0x00, 480 0x00, 0x00, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1c, 0x1e, 0x1e, 481 0x1c, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x1e, 0x1e, 482 0x1e, 0x1c, 0x1e, 0x1e, 0x1c, 0x1a, 0x00, 0x00, 0x00, 0x00, 483 0x11, 0x12, 0x15, 0x17, 0x41, 0x42, 0x45, 0x47, 0x31, 0x32, 484 0x35, 0x37, 0x70, 0x75, 0x9d, 0xa2, 0x70, 0x75, 0xa2, 0xff, 485 0x70, 0x75, 0xa2, 0xff, 0x7a, 0x7f, 0x93, 0x98, 0x70, 0x75, 486 0xac, 0xb8, 0x70, 0x75, 0xac, 0x00, 0x70, 0x75, 0xac, 0x00, 487 0x7a, 0x7f, 0x93, 0xa2, 0x70, 0x75, 0xac, 0x00, 0x70, 0x75, 488 0xac, 0x00, 0x70, 0x75, 0xac, 0x00, 0x7a, 0x7f, 0x93, 0xa2, 489 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 0x7c, 0x3c, 490 0x3c, 0x7c, 0x7c, 0x3c, 0x00, 0x00, 0x3c, 0x7c, 0x3c, 0x3c, 491 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x3c, 0x3c, 0x7c, 492 0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 493 0x3c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x20, 0x02, 494 0x00, 0x00, 0x44, 0x44, 0x04, 0x00, 0x50, 0x01, 0x50, 0x01, 495 0x50, 0x01, 0x19, 0x19, 0x19, 0x14, 0x14, 0x14, 0x46, 0x00, 496 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x03, 0x03, 497 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 498 0x00, 0x0e, 0x0e, 0x03, 0x00, 0x2d, 0xe2, 0x00, 0x02, 0x0e, 499 0x1c, 0xe0, 0xe0, 0xf0, 0x0c, 0xe0, 0xe0, 0xf0, 0x6c, 0x00, 500 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 501 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 502 0x00, 0x00, 0x00, 0x4c, 0x54, 0x68, 0x78, 0x8c, 0xa0, 0xb4, 503 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 504 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 505 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 506 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 507 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 508 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 509 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 510 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 511 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 512 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 513 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 514 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 515 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 516 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 517 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x58, 0x68, 0x78, 0x8c, 518 0xa0, 0xb4, 0xcd, 0x4c, 0x58, 0x68, 0x78, 0x8c, 0xb4, 0xbd, 519 0xcd, 0x4c, 0x58, 0x68, 0x78, 0x8c, 0xb4, 0xbd, 0xcd, 0x1e, 520 0x1e, 0x1c, 0x18, 0x1e, 0x1e, 0x1c, 0x18, 0x1e, 0x1e, 0x1c, 521 0x18, 0x1e, 0x1e, 0x1c, 0x18, 0x1e, 0x1e, 0x1c, 0x18, 0x1e, 522 0x1e, 0x1c, 0x18, 0x1e, 0x1e, 0x1c, 0x18, 0x1e, 0x1e, 0x1c, 523 0x18, 0x1e, 0x1e, 0x1e, 0x1c, 0x18, 0x14, 0x1e, 0x1c, 0x18, 524 0x14, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x1e, 0x1c, 0x18, 525 0x14, 0x1e, 0x1c, 0x18, 0x14, 0x00, 0x00, 0x00, 0x00, 0x1e, 526 0x1e, 0x1e, 0x1a, 0x16, 0x12, 0x1e, 0x1a, 0x16, 0x12, 0x00, 527 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x1e, 0x1a, 0x16, 0x12, 0x1e, 528 0x1a, 0x16, 0x12, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x1e, 529 0x18, 0x14, 0x10, 0x1e, 0x18, 0x14, 0x10, 0x00, 0x00, 0x00, 530 0x00, 0x1e, 0x1e, 0x1e, 0x18, 0x14, 0x10, 0x1e, 0x18, 0x14, 531 0x10, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x1e, 0x16, 0x12, 532 0x0e, 0x1e, 0x16, 0x12, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x1e, 533 0x1e, 0x1e, 0x16, 0x12, 0x0e, 0x1e, 0x16, 0x12, 0x0e, 0x00, 534 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x1c, 0x1a, 0x16, 0x12, 0x1c, 535 0x1a, 0x16, 0x12, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x1c, 536 0x1a, 0x16, 0x12, 0x1c, 0x1a, 0x16, 0x12, 0x00, 0x00, 0x00, 537 0x00, 0x1c, 0x1c, 0x1c, 0x18, 0x14, 0x10, 0x1c, 0x18, 0x14, 538 0x10, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x1c, 0x18, 0x14, 539 0x10, 0x1c, 0x18, 0x14, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1c, 540 0x1c, 0x1c, 0x16, 0x12, 0x0e, 0x1c, 0x16, 0x12, 0x0e, 0x00, 541 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x1c, 0x16, 0x12, 0x0e, 0x1c, 542 0x16, 0x12, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x1c, 543 0x14, 0x10, 0x0c, 0x1c, 0x14, 0x10, 0x0c, 0x00, 0x00, 0x00, 544 0x00, 0x1c, 0x1c, 0x1c, 0x14, 0x10, 0x0c, 0x1c, 0x14, 0x10, 545 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x16, 0x18, 0x40, 0x46, 546 0x48, 0x30, 0x36, 0x38, 0x4c, 0x5c, 0x60, 0x8c, 0xa0, 0xb4, 547 0xbd, 0xcd, 0x4c, 0x5c, 0x60, 0x8c, 0x90, 0xb4, 0xbd, 0xcd, 548 0x4e, 0x56, 0x5e, 0x66, 0x8e, 0x96, 0xae, 0xbf, 0x4c, 0x50, 549 0x5c, 0x68, 0x8c, 0xb4, 0xff, 0xff, 0x4c, 0x5c, 0x8c, 0xb4, 550 0xff, 0xff, 0xff, 0xff, 0x4e, 0x5e, 0x66, 0x8e, 0x9e, 0xae, 551 0xff, 0xff, 0x4c, 0x50, 0x54, 0x5c, 0x8c, 0xa0, 0xb4, 0xbd, 552 0x4c, 0x5c, 0x68, 0x8c, 0x98, 0xb4, 0xbd, 0xcd, 0x4e, 0x56, 553 0x5e, 0x8e, 0x96, 0xae, 0xbf, 0xc7, 0x7c, 0x7c, 0x7c, 0x7c, 554 0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 555 0x7c, 0x3c, 0x3c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 556 0x3c, 0x7c, 0x7c, 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 557 0x7c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 558 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 559 0x7c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x3c, 560 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c 561 }; 562 563 static const uint8_t ar9380_def_rom_x112[] = { 564 0x02, 0x05, 0x00, 0x03, 0x7f, 0x00, 0x00, 0x00, 0x78, 0x31, 565 0x31, 0x32, 0x2d, 0x30, 0x34, 0x31, 0x2d, 0x66, 0x30, 0x30, 566 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 567 0x1f, 0x00, 0x77, 0x03, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 568 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x08, 0xff, 0x00, 0x00, 569 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x22, 0x22, 0x02, 570 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1b, 0x1b, 0x1b, 571 0x15, 0x15, 0x15, 0x32, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 572 0xff, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 573 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0e, 0x03, 0x00, 574 0x2c, 0xe2, 0x00, 0x02, 0x0e, 0x1c, 0x80, 0xc0, 0x80, 0x0c, 575 0x80, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 576 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 577 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x89, 578 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 579 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 580 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 581 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 582 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 583 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xac, 0x70, 0x89, 0xac, 584 0x70, 0x89, 0xac, 0x70, 0x89, 0xac, 0x26, 0x26, 0x26, 0x26, 585 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x24, 0x22, 0x26, 0x26, 586 0x24, 0x22, 0x26, 0x26, 0x22, 0x20, 0x24, 0x24, 0x24, 0x24, 587 0x24, 0x22, 0x22, 0x20, 0x1e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1a, 588 0x24, 0x24, 0x24, 0x24, 0x24, 0x22, 0x24, 0x22, 0x20, 0x1e, 589 0x1e, 0x1e, 0x1c, 0x1a, 0x24, 0x24, 0x24, 0x24, 0x24, 0x22, 590 0x22, 0x20, 0x1e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1a, 0x24, 0x24, 591 0x24, 0x24, 0x22, 0x20, 0x20, 0x1e, 0x1c, 0x1a, 0x1a, 0x1a, 592 0x1a, 0x18, 0x24, 0x24, 0x24, 0x24, 0x22, 0x20, 0x22, 0x20, 593 0x1e, 0x1c, 0x1c, 0x1c, 0x1c, 0x18, 0x24, 0x24, 0x24, 0x24, 594 0x22, 0x20, 0x20, 0x1e, 0x1c, 0x1a, 0x1a, 0x1a, 0x1a, 0x18, 595 0x11, 0x12, 0x15, 0x17, 0x41, 0x42, 0x45, 0x47, 0x31, 0x32, 596 0x35, 0x37, 0x70, 0x75, 0x9d, 0xa2, 0x70, 0x75, 0xa2, 0xff, 597 0x70, 0x75, 0xa2, 0xff, 0x7a, 0x7f, 0x93, 0x98, 0x70, 0x75, 598 0xac, 0xb8, 0x70, 0x75, 0xac, 0x00, 0x70, 0x75, 0xac, 0x00, 599 0x7a, 0x7f, 0x93, 0xa2, 0x70, 0x75, 0xac, 0x00, 0x70, 0x75, 600 0xac, 0x00, 0x70, 0x75, 0xac, 0x00, 0x7a, 0x7f, 0x93, 0xa2, 601 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 0x7c, 0x3c, 602 0x3c, 0x7c, 0x7c, 0x3c, 0x00, 0x00, 0x3c, 0x7c, 0x3c, 0x3c, 603 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x3c, 0x3c, 0x7c, 604 0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 605 0x3c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x10, 0x01, 606 0x00, 0x00, 0x22, 0x22, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 607 0x00, 0x00, 0x13, 0x19, 0x17, 0x19, 0x19, 0x19, 0x46, 0x0f, 608 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x03, 0x03, 609 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 610 0x00, 0x0e, 0x0e, 0x03, 0x00, 0x2d, 0xe2, 0x00, 0x02, 0x0e, 611 0x1c, 0xe0, 0xe0, 0xf0, 0x0c, 0xe0, 0xe0, 0xf0, 0x6c, 0x00, 612 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 613 0x69, 0x10, 0x14, 0x10, 0x19, 0x19, 0x19, 0x1d, 0x20, 0x24, 614 0x10, 0x10, 0x10, 0x4c, 0x54, 0x68, 0x78, 0x8c, 0xa0, 0xb4, 615 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 616 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 617 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 618 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 619 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 620 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 621 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 622 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 623 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 624 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 625 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 626 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 627 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 628 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 629 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x54, 0x68, 0x78, 0x8c, 630 0xa0, 0xb9, 0xcd, 0x4c, 0x54, 0x68, 0x78, 0x8c, 0xa0, 0xb9, 631 0xcd, 0x4c, 0x54, 0x68, 0x78, 0x8c, 0xa0, 0xb9, 0xcd, 0x20, 632 0x20, 0x1c, 0x1a, 0x20, 0x20, 0x1c, 0x1a, 0x20, 0x20, 0x1c, 633 0x1a, 0x20, 0x20, 0x1a, 0x18, 0x20, 0x20, 0x1a, 0x18, 0x20, 634 0x20, 0x18, 0x16, 0x1e, 0x1e, 0x18, 0x16, 0x1e, 0x1e, 0x18, 635 0x16, 0x20, 0x20, 0x20, 0x20, 0x1c, 0x1a, 0x20, 0x1c, 0x1a, 636 0x18, 0x18, 0x18, 0x16, 0x16, 0x20, 0x20, 0x20, 0x20, 0x1c, 637 0x1a, 0x20, 0x1c, 0x1a, 0x18, 0x18, 0x18, 0x16, 0x16, 0x20, 638 0x20, 0x20, 0x20, 0x1c, 0x1a, 0x20, 0x1c, 0x1a, 0x18, 0x18, 639 0x18, 0x16, 0x16, 0x20, 0x20, 0x20, 0x20, 0x1c, 0x1a, 0x20, 640 0x1a, 0x18, 0x16, 0x16, 0x16, 0x14, 0x14, 0x20, 0x20, 0x20, 641 0x20, 0x1c, 0x1a, 0x20, 0x1a, 0x18, 0x16, 0x14, 0x12, 0x10, 642 0x10, 0x20, 0x20, 0x20, 0x20, 0x1c, 0x1a, 0x20, 0x18, 0x14, 643 0x10, 0x12, 0x10, 0x0e, 0x0e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1c, 644 0x1a, 0x1e, 0x18, 0x14, 0x10, 0x12, 0x10, 0x0e, 0x0e, 0x1e, 645 0x1e, 0x1e, 0x1e, 0x1c, 0x1a, 0x1e, 0x18, 0x14, 0x10, 0x12, 646 0x10, 0x0e, 0x0e, 0x20, 0x20, 0x20, 0x1e, 0x1c, 0x1a, 0x1e, 647 0x1c, 0x1a, 0x18, 0x18, 0x18, 0x16, 0x16, 0x20, 0x20, 0x20, 648 0x1e, 0x1c, 0x1a, 0x1e, 0x1c, 0x1a, 0x18, 0x18, 0x18, 0x16, 649 0x16, 0x20, 0x20, 0x20, 0x1e, 0x1c, 0x1a, 0x1e, 0x1c, 0x1a, 650 0x18, 0x18, 0x18, 0x16, 0x16, 0x20, 0x20, 0x20, 0x1e, 0x1c, 651 0x1a, 0x1e, 0x1a, 0x18, 0x16, 0x16, 0x16, 0x14, 0x14, 0x20, 652 0x20, 0x20, 0x1e, 0x1c, 0x1a, 0x1e, 0x1a, 0x18, 0x16, 0x14, 653 0x12, 0x10, 0x10, 0x20, 0x20, 0x20, 0x1e, 0x1c, 0x1a, 0x1e, 654 0x16, 0x14, 0x10, 0x12, 0x10, 0x0e, 0x0e, 0x1e, 0x1e, 0x1e, 655 0x1e, 0x1c, 0x1a, 0x1e, 0x16, 0x14, 0x10, 0x12, 0x10, 0x0e, 656 0x0e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1c, 0x1a, 0x1e, 0x16, 0x14, 657 0x10, 0x12, 0x10, 0x0e, 0x0e, 0x10, 0x16, 0x18, 0x40, 0x46, 658 0x48, 0x30, 0x36, 0x38, 0x4c, 0x5c, 0x60, 0x8c, 0xa0, 0xb4, 659 0xbd, 0xcd, 0x4c, 0x5c, 0x60, 0x8c, 0x90, 0xb4, 0xbd, 0xcd, 660 0x4e, 0x56, 0x5e, 0x66, 0x8e, 0x96, 0xae, 0xbf, 0x4c, 0x50, 661 0x5c, 0x68, 0x8c, 0xb4, 0xff, 0xff, 0x4c, 0x5c, 0x8c, 0xb4, 662 0xff, 0xff, 0xff, 0xff, 0x4e, 0x5e, 0x66, 0x8e, 0x9e, 0xae, 663 0xff, 0xff, 0x4c, 0x50, 0x54, 0x5c, 0x8c, 0xa0, 0xb4, 0xbd, 664 0x4c, 0x5c, 0x68, 0x8c, 0x98, 0xb4, 0xbd, 0xcd, 0x4e, 0x56, 665 0x5e, 0x8e, 0x96, 0xae, 0xbf, 0xc7, 0x7c, 0x7c, 0x7c, 0x7c, 666 0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 667 0x7c, 0x3c, 0x3c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 668 0x3c, 0x7c, 0x7c, 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 669 0x7c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 670 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 671 0x7c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x3c, 672 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c 673 }; 674 675 static const uint8_t ar9380_def_rom_x113[] = { 676 0x02, 0x06, 0x00, 0x03, 0x7f, 0x00, 0x00, 0x00, 0x78, 0x31, 677 0x31, 0x33, 0x2d, 0x30, 0x32, 0x33, 0x2d, 0x66, 0x30, 0x30, 678 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 679 0x1f, 0x00, 0x77, 0x03, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 680 0x00, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x08, 0xff, 0x21, 0x00, 681 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x44, 0x44, 0x04, 682 0x00, 0x50, 0x01, 0x50, 0x01, 0x50, 0x01, 0x00, 0x00, 0x00, 683 0x00, 0x00, 0x00, 0x19, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 684 0xff, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 685 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0e, 0x03, 0x00, 686 0x2c, 0xe2, 0x00, 0x02, 0x0e, 0x1c, 0x80, 0xc0, 0x80, 0x0c, 687 0x80, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 688 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 689 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x89, 690 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 691 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 692 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 693 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 694 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 695 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xac, 0x70, 0x89, 0xac, 696 0x70, 0x89, 0xac, 0x70, 0x89, 0xac, 0x22, 0x22, 0x22, 0x22, 697 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x20, 0x20, 0x22, 0x22, 698 0x20, 0x20, 0x22, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 699 0x20, 0x1c, 0x20, 0x20, 0x1e, 0x1c, 0x00, 0x00, 0x00, 0x00, 700 0x20, 0x20, 0x20, 0x20, 0x20, 0x1c, 0x20, 0x20, 0x1e, 0x1c, 701 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x1c, 702 0x20, 0x20, 0x1e, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1e, 703 0x1e, 0x1e, 0x1e, 0x1c, 0x1e, 0x1e, 0x1c, 0x1a, 0x00, 0x00, 704 0x00, 0x00, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1c, 0x1e, 0x1e, 705 0x1c, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x1e, 0x1e, 706 0x1e, 0x1c, 0x1e, 0x1e, 0x1c, 0x1a, 0x00, 0x00, 0x00, 0x00, 707 0x11, 0x12, 0x15, 0x17, 0x41, 0x42, 0x45, 0x47, 0x31, 0x32, 708 0x35, 0x37, 0x70, 0x75, 0x9d, 0xa2, 0x70, 0x75, 0xa2, 0xff, 709 0x70, 0x75, 0xa2, 0xff, 0x7a, 0x7f, 0x93, 0x98, 0x70, 0x75, 710 0xac, 0xb8, 0x70, 0x75, 0xac, 0x00, 0x70, 0x75, 0xac, 0x00, 711 0x7a, 0x7f, 0x93, 0xa2, 0x70, 0x75, 0xac, 0x00, 0x70, 0x75, 712 0xac, 0x00, 0x70, 0x75, 0xac, 0x00, 0x7a, 0x7f, 0x93, 0xa2, 713 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 0x7c, 0x3c, 714 0x3c, 0x7c, 0x7c, 0x3c, 0x00, 0x00, 0x3c, 0x7c, 0x3c, 0x3c, 715 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x3c, 0x3c, 0x7c, 716 0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x3c, 717 0x3c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x20, 0x02, 718 0x00, 0x00, 0x11, 0x11, 0x01, 0x00, 0x50, 0x01, 0x50, 0x01, 719 0x50, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 720 0x8c, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x03, 0x03, 721 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 722 0x00, 0x0e, 0x0e, 0x03, 0x00, 0x2d, 0xe2, 0x00, 0x02, 0x0e, 723 0x1c, 0xe0, 0xe0, 0xf0, 0x0c, 0xe0, 0xe0, 0xf0, 0x6c, 0x00, 724 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 725 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 726 0x00, 0x00, 0x00, 0x4c, 0x58, 0x68, 0x78, 0x8c, 0xa0, 0xbd, 727 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 728 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 729 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 730 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 731 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 732 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 733 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 734 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 735 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 736 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 737 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 738 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 739 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 740 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 741 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x54, 0x68, 0x78, 0x8c, 742 0xa0, 0xbd, 0xc5, 0x4c, 0x58, 0x68, 0x78, 0x8c, 0xb4, 0xbd, 743 0xcd, 0x4e, 0x56, 0x68, 0x7a, 0x8e, 0xae, 0xbf, 0xcd, 0x2a, 744 0x28, 0x28, 0x22, 0x2a, 0x28, 0x28, 0x22, 0x2a, 0x28, 0x28, 745 0x22, 0x2a, 0x28, 0x28, 0x22, 0x2a, 0x28, 0x28, 0x22, 0x2a, 746 0x28, 0x28, 0x22, 0x2a, 0x28, 0x28, 0x22, 0x2a, 0x28, 0x28, 747 0x22, 0x28, 0x28, 0x28, 0x28, 0x20, 0x1c, 0x28, 0x28, 0x20, 748 0x1c, 0x28, 0x28, 0x20, 0x14, 0x28, 0x28, 0x28, 0x28, 0x20, 749 0x1c, 0x28, 0x28, 0x20, 0x1c, 0x28, 0x28, 0x20, 0x14, 0x28, 750 0x28, 0x28, 0x28, 0x20, 0x1c, 0x28, 0x28, 0x20, 0x1c, 0x28, 751 0x28, 0x20, 0x14, 0x28, 0x28, 0x28, 0x28, 0x20, 0x1c, 0x28, 752 0x28, 0x20, 0x1c, 0x28, 0x28, 0x20, 0x14, 0x28, 0x28, 0x28, 753 0x28, 0x20, 0x1c, 0x28, 0x28, 0x20, 0x1c, 0x28, 0x28, 0x20, 754 0x14, 0x28, 0x28, 0x28, 0x28, 0x20, 0x1c, 0x28, 0x28, 0x20, 755 0x1c, 0x28, 0x28, 0x20, 0x14, 0x26, 0x26, 0x26, 0x26, 0x20, 756 0x1c, 0x26, 0x26, 0x20, 0x1c, 0x26, 0x26, 0x20, 0x1a, 0x24, 757 0x24, 0x24, 0x24, 0x20, 0x1c, 0x24, 0x24, 0x20, 0x1c, 0x24, 758 0x24, 0x20, 0x1a, 0x28, 0x28, 0x28, 0x26, 0x1e, 0x1a, 0x28, 759 0x28, 0x1e, 0x1a, 0x28, 0x28, 0x1e, 0x18, 0x28, 0x28, 0x28, 760 0x26, 0x1e, 0x1a, 0x28, 0x28, 0x1e, 0x1a, 0x28, 0x28, 0x1e, 761 0x18, 0x28, 0x28, 0x28, 0x26, 0x1e, 0x1a, 0x28, 0x28, 0x1e, 762 0x1a, 0x28, 0x28, 0x1e, 0x18, 0x28, 0x28, 0x28, 0x26, 0x1e, 763 0x1a, 0x28, 0x28, 0x1e, 0x1a, 0x28, 0x28, 0x1e, 0x18, 0x28, 764 0x28, 0x28, 0x26, 0x1e, 0x1a, 0x28, 0x28, 0x1e, 0x1a, 0x28, 765 0x28, 0x1e, 0x18, 0x28, 0x28, 0x28, 0x26, 0x1e, 0x1a, 0x28, 766 0x28, 0x1e, 0x1a, 0x28, 0x28, 0x1e, 0x18, 0x24, 0x24, 0x24, 767 0x24, 0x1e, 0x1a, 0x24, 0x24, 0x1e, 0x1a, 0x24, 0x24, 0x1e, 768 0x18, 0x22, 0x22, 0x22, 0x22, 0x1e, 0x1a, 0x22, 0x22, 0x1e, 769 0x1a, 0x22, 0x22, 0x1e, 0x18, 0x10, 0x16, 0x18, 0x40, 0x46, 770 0x48, 0x30, 0x36, 0x38, 0x4c, 0x5c, 0x60, 0x8c, 0xa0, 0xb4, 771 0xbd, 0xcd, 0x4c, 0x5c, 0x60, 0x8c, 0x90, 0xb4, 0xbd, 0xcd, 772 0x4e, 0x56, 0x5e, 0x66, 0x8e, 0x96, 0xae, 0xbf, 0x4c, 0x50, 773 0x5c, 0x68, 0x8c, 0xb4, 0xff, 0xff, 0x4c, 0x5c, 0x8c, 0xb4, 774 0xff, 0xff, 0xff, 0xff, 0x4e, 0x5e, 0x66, 0x8e, 0x9e, 0xae, 775 0xff, 0xff, 0x4c, 0x50, 0x54, 0x5c, 0x8c, 0xa0, 0xb4, 0xbd, 776 0x4c, 0x5c, 0x68, 0x8c, 0x98, 0xb4, 0xbd, 0xcd, 0x4e, 0x56, 777 0x5e, 0x8e, 0x96, 0xae, 0xbf, 0xc7, 0x7c, 0x7c, 0x7c, 0x7c, 778 0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 779 0x7c, 0x3c, 0x3c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 780 0x3c, 0x7c, 0x7c, 0x3c, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 781 0x7c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 782 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 783 0x7c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x3c, 784 0x7c, 0x3c, 0x7c, 0x7c, 0x7c, 0x7c, 0x3c, 0x7c 785 }; 786 787 static const uint8_t *ar9380_rom_templates[] = { 788 ar9380_def_rom, 789 ar9380_def_rom_h112, 790 ar9380_def_rom_h116, 791 ar9380_def_rom_x112, 792 ar9380_def_rom_x113 793 }; 794 795 /* Macro to "pack" registers to 16-bit to save some .rodata space. */ 796 #define P(x) ((x) >> 2) 797 798 /* 799 * AR9380 2.2 programming. 800 */ 801 static const uint16_t ar9380_2_2_regs[] = { 802 P(0x07010), P(0x01030), P(0x01070), P(0x010b0), P(0x08014), 803 P(0x0801c), P(0x08120), P(0x081d0), P(0x08318), P(0x1609c), 804 P(0x160ac), P(0x160b0), P(0x1610c), P(0x16140), P(0x1650c), 805 P(0x16540), P(0x1690c), P(0x16940), P(0x09810), P(0x09820), 806 P(0x09824), P(0x09828), P(0x0982c), P(0x09830), P(0x09c00), 807 P(0x09e00), P(0x09e04), P(0x09e0c), P(0x09e10), P(0x09e14), 808 P(0x09e18), P(0x09e1c), P(0x09e20), P(0x09e2c), P(0x09e3c), 809 P(0x09e44), P(0x09e48), P(0x09fc8), P(0x0a204), P(0x0a208), 810 P(0x0a22c), P(0x0a230), P(0x0a234), P(0x0a238), P(0x0a250), 811 P(0x0a254), P(0x0a258), P(0x0a25c), P(0x0a260), P(0x0a264), 812 P(0x0a280), P(0x0a284), P(0x0a288), P(0x0a28c), P(0x0a2c4), 813 P(0x0a2d0), P(0x0a2d8), P(0x0a358), P(0x0a830), P(0x0ae04), 814 P(0x0ae18), P(0x0ae1c), P(0x0ae20), P(0x0b284), P(0x0b830), 815 P(0x0be04), P(0x0be18), P(0x0be1c), P(0x0be20), P(0x0c284) 816 }; 817 818 static const uint32_t ar9380_2_2_vals_5g20[] = { 819 0x00000023, 0x00000230, 0x00000168, 0x00000e60, 0x03e803e8, 820 0x128d8027, 0x08f04800, 0x00003210, 0x00003e80, 0x0dd08f29, 821 0xa4653c00, 0x03284f3e, 0x08000000, 0x10804008, 0x08000000, 822 0x10804008, 0x08000000, 0x10804008, 0xd00a8005, 0x206a022e, 823 0x5ac640d0, 0x06903081, 0x05eea6d4, 0x0000059c, 0x000000c4, 824 0x0372111a, 0x001c2020, 0x6c4000e2, 0x7ec88d2e, 0x37b95d5e, 825 0x00000000, 0x0001cf9c, 0x000003b5, 0x0000001c, 0xcf946220, 826 0x02321e27, 0x5030201a, 0x0003f000, 0x000037c0, 0x00000104, 827 0x01026a2f, 0x0000000a, 0x00000fff, 0xffb81018, 0x00000000, 828 0x000007d0, 0x02020002, 0x01000e0e, 0x0a021501, 0x00000e0e, 829 0x00000007, 0x00000000, 0x00000110, 0x00022222, 0x00158d18, 830 0x00071981, 0x7999a83a, 0x00000000, 0x0000019c, 0x001c0000, 831 0x00000000, 0x0000019c, 0x000001b5, 0x00000000, 0x0000019c, 832 0x001c0000, 0x00000000, 0x0000019c, 0x000001b5, 0x00000000 833 }; 834 835 #ifndef IEEE80211_NO_HT 836 static const uint32_t ar9380_2_2_vals_5g40[] = { 837 0x00000023, 0x00000460, 0x000002d0, 0x00001cc0, 0x07d007d0, 838 0x128d804f, 0x08f04800, 0x00003210, 0x00007d00, 0x0dd08f29, 839 0xa4653c00, 0x03284f3e, 0x00000000, 0x10804008, 0x00000000, 840 0x10804008, 0x00000000, 0x10804008, 0xd00a8005, 0x206a022e, 841 0x5ac640d0, 0x06903081, 0x05eea6d4, 0x0000059c, 0x000000c4, 842 0x0372111a, 0x001c2020, 0x6d4000e2, 0x7ec88d2e, 0x37b9605e, 843 0x00000000, 0x0001cf9c, 0x000003b5, 0x0000001c, 0xcf946220, 844 0x02321e27, 0x5030201a, 0x0003f000, 0x000037c4, 0x00000104, 845 0x01026a2f, 0x00000014, 0x10000fff, 0xffb81018, 0x00000000, 846 0x00000fa0, 0x02020002, 0x01000e0e, 0x0a021501, 0x00000e0e, 847 0x00000007, 0x00000000, 0x00000110, 0x00022222, 0x00158d18, 848 0x00071981, 0x7999a83a, 0x00000000, 0x0000019c, 0x001c0000, 849 0x00000000, 0x0000019c, 0x000001b5, 0x00000000, 0x0000019c, 850 0x001c0000, 0x00000000, 0x0000019c, 0x000001b5, 0x00000000 851 }; 852 853 static const uint32_t ar9380_2_2_vals_2g40[] = { 854 0x00000023, 0x000002c0, 0x00000318, 0x00007c70, 0x10801600, 855 0x12e00057, 0x08f04810, 0x0000320a, 0x00006880, 0x0b283f31, 856 0x24652800, 0x05d08f20, 0x00000000, 0x50804008, 0x00000000, 857 0x50804008, 0x00000000, 0x50804008, 0xd00a8011, 0x206a012e, 858 0x5ac640d0, 0x06903881, 0x05eea6d4, 0x0000119c, 0x000000c4, 859 0x037216a0, 0x001c2020, 0x6d4000e2, 0x7ec84d2e, 0x3379605e, 860 0x00000000, 0x00021f9c, 0x000003ce, 0x00000021, 0xcf946222, 861 0x02291e27, 0x50302012, 0x0001a000, 0x000037c4, 0x00000004, 862 0x01026a2f, 0x00000016, 0x10000fff, 0xffb81018, 0x00000210, 863 0x00001130, 0x02020002, 0x01000e0e, 0x3a021501, 0x00000e0e, 864 0x0000000b, 0x00000150, 0x00000110, 0x00022222, 0x00158d18, 865 0x00071981, 0x7999a83a, 0x00000000, 0x0000019c, 0x001c0000, 866 0x00000000, 0x0000019c, 0x000001ce, 0x00000150, 0x0000019c, 867 0x001c0000, 0x00000000, 0x0000019c, 0x000001ce, 0x00000150 868 }; 869 #endif 870 871 static const uint32_t ar9380_2_2_vals_2g20[] = { 872 0x00000023, 0x00000160, 0x0000018c, 0x00003e38, 0x08400b00, 873 0x12e0002b, 0x08f04810, 0x0000320a, 0x00003440, 0x0b283f31, 874 0x24652800, 0x05d08f20, 0x00000000, 0x50804008, 0x00000000, 875 0x50804008, 0x00000000, 0x50804008, 0xd00a8011, 0x206a012e, 876 0x5ac640d0, 0x06903881, 0x05eea6d4, 0x0000119c, 0x000000c4, 877 0x037216a0, 0x001c2020, 0x6c4000e2, 0x7ec84d2e, 0x33795d5e, 878 0x00000000, 0x00021f9c, 0x000003ce, 0x00000021, 0xcf946222, 879 0x02291e27, 0x50302012, 0x0001a000, 0x000037c0, 0x00000004, 880 0x01026a2f, 0x0000000b, 0x00000fff, 0xffb81018, 0x00000108, 881 0x00000898, 0x02020002, 0x01000e0e, 0x3a021501, 0x00000e0e, 882 0x0000000b, 0x00000150, 0x00000110, 0x00022222, 0x00158d18, 883 0x00071982, 0x7999a83a, 0x00000000, 0x0000019c, 0x001c0000, 884 0x00000000, 0x0000019c, 0x000001ce, 0x00000150, 0x0000019c, 885 0x001c0000, 0x00000000, 0x0000019c, 0x000001ce, 0x00000150 886 }; 887 888 static const uint16_t ar9380_2_2_cm_regs[] = { 889 P(0x040a4), P(0x07008), P(0x07020), P(0x07034), P(0x07038), 890 P(0x07048), P(0x00008), P(0x00030), P(0x00034), P(0x00040), 891 P(0x00044), P(0x00048), P(0x0004c), P(0x00050), P(0x01040), 892 P(0x01044), P(0x01048), P(0x0104c), P(0x01050), P(0x01054), 893 P(0x01058), P(0x0105c), P(0x01060), P(0x01064), P(0x010f0), 894 P(0x01270), P(0x012b0), P(0x012f0), P(0x0143c), P(0x0147c), 895 P(0x08000), P(0x08004), P(0x08008), P(0x0800c), P(0x08018), 896 P(0x08020), P(0x08038), P(0x0803c), P(0x08040), P(0x08044), 897 P(0x08048), P(0x0804c), P(0x08054), P(0x08058), P(0x0805c), 898 P(0x08060), P(0x08064), P(0x08070), P(0x08074), P(0x08078), 899 P(0x0809c), P(0x080a0), P(0x080a4), P(0x080a8), P(0x080ac), 900 P(0x080b0), P(0x080b4), P(0x080b8), P(0x080bc), P(0x080c0), 901 P(0x080c4), P(0x080c8), P(0x080cc), P(0x080d0), P(0x080d4), 902 P(0x080d8), P(0x080dc), P(0x080e0), P(0x080e4), P(0x080e8), 903 P(0x080ec), P(0x080f0), P(0x080f4), P(0x080fc), P(0x08100), 904 P(0x08108), P(0x0810c), P(0x08110), P(0x08114), P(0x08118), 905 P(0x0811c), P(0x08124), P(0x08128), P(0x0812c), P(0x08130), 906 P(0x08134), P(0x08138), P(0x0813c), P(0x08144), P(0x08168), 907 P(0x0816c), P(0x081c0), P(0x081c4), P(0x081c8), P(0x081cc), 908 P(0x081ec), P(0x081f0), P(0x081f4), P(0x081f8), P(0x081fc), 909 P(0x08240), P(0x08244), P(0x08248), P(0x0824c), P(0x08250), 910 P(0x08254), P(0x08258), P(0x0825c), P(0x08260), P(0x08264), 911 P(0x08268), P(0x0826c), P(0x08270), P(0x08274), P(0x08278), 912 P(0x0827c), P(0x08284), P(0x08288), P(0x0828c), P(0x08294), 913 P(0x08298), P(0x0829c), P(0x08300), P(0x08314), P(0x0831c), 914 P(0x08328), P(0x0832c), P(0x08330), P(0x08334), P(0x08338), 915 P(0x0833c), P(0x08340), P(0x08344), P(0x08348), P(0x0835c), 916 P(0x08360), P(0x08364), P(0x08368), P(0x08370), P(0x08374), 917 P(0x08378), P(0x0837c), P(0x08380), P(0x08384), P(0x08390), 918 P(0x08394), P(0x08398), P(0x0839c), P(0x083a0), P(0x083a4), 919 P(0x083a8), P(0x083ac), P(0x083b0), P(0x083b4), P(0x083b8), 920 P(0x083bc), P(0x083c0), P(0x083c4), P(0x083c8), P(0x083cc), 921 P(0x083d0), P(0x09800), P(0x09804), P(0x09808), P(0x0980c), 922 P(0x09814), P(0x09818), P(0x0981c), P(0x09834), P(0x09838), 923 P(0x0983c), P(0x09880), P(0x09884), P(0x098a4), P(0x098b0), 924 P(0x098d0), P(0x098d4), P(0x098dc), P(0x098f0), P(0x098f4), 925 P(0x09c04), P(0x09c08), P(0x09c0c), P(0x09c10), P(0x09c14), 926 P(0x09c18), P(0x09c1c), P(0x09d00), P(0x09d04), P(0x09d08), 927 P(0x09d0c), P(0x09d10), P(0x09d14), P(0x09d18), P(0x09e08), 928 P(0x09e24), P(0x09e28), P(0x09e30), P(0x09e34), P(0x09e38), 929 P(0x09e40), P(0x09e4c), P(0x09e50), P(0x09e54), P(0x09fc0), 930 P(0x09fc4), P(0x09fcc), P(0x09fd0), P(0x0a20c), P(0x0a220), 931 P(0x0a224), P(0x0a228), P(0x0a23c), P(0x0a244), P(0x0a2a0), 932 P(0x0a2c0), P(0x0a2c8), P(0x0a2cc), P(0x0a2d4), P(0x0a2ec), 933 P(0x0a2f0), P(0x0a2f4), P(0x0a2f8), P(0x0a344), P(0x0a34c), 934 P(0x0a350), P(0x0a364), P(0x0a370), P(0x0a390), P(0x0a394), 935 P(0x0a398), P(0x0a39c), P(0x0a3a0), P(0x0a3a4), P(0x0a3a8), 936 P(0x0a3ac), P(0x0a3c0), P(0x0a3c4), P(0x0a3c8), P(0x0a3cc), 937 P(0x0a3d0), P(0x0a3d4), P(0x0a3d8), P(0x0a3dc), P(0x0a3e0), 938 P(0x0a3e4), P(0x0a3e8), P(0x0a3ec), P(0x0a3f0), P(0x0a3f4), 939 P(0x0a3f8), P(0x0a3fc), P(0x0a400), P(0x0a404), P(0x0a408), 940 P(0x0a40c), P(0x0a414), P(0x0a418), P(0x0a41c), P(0x0a420), 941 P(0x0a424), P(0x0a428), P(0x0a42c), P(0x0a430), P(0x0a434), 942 P(0x0a438), P(0x0a43c), P(0x0a440), P(0x0a444), P(0x0a448), 943 P(0x0a44c), P(0x0a450), P(0x0a458), P(0x0a640), P(0x0a644), 944 P(0x0a648), P(0x0a64c), P(0x0a670), P(0x0a674), P(0x0a678), 945 P(0x0a67c), P(0x0a680), P(0x0a684), P(0x0a688), P(0x0a690), 946 P(0x0a7c0), P(0x0a7c4), P(0x0a7c8), P(0x0a7cc), P(0x0a7d0), 947 P(0x0a7d4), P(0x0a7dc), P(0x0a8d0), P(0x0a8d4), P(0x0a8dc), 948 P(0x0a8f0), P(0x0a8f4), P(0x0b2d0), P(0x0b2d4), P(0x0b2ec), 949 P(0x0b2f0), P(0x0b2f4), P(0x0b2f8), P(0x0b408), P(0x0b40c), 950 P(0x0b420), P(0x0b8d0), P(0x0b8d4), P(0x0b8dc), P(0x0b8f0), 951 P(0x0b8f4), P(0x0c2d0), P(0x0c2d4), P(0x0c2ec), P(0x0c2f0), 952 P(0x0c2f4), P(0x0c2f8), P(0x0c408), P(0x0c40c), P(0x0c420), 953 P(0x16000), P(0x16004), P(0x16008), P(0x1600c), P(0x16040), 954 P(0x1604c), P(0x16050), P(0x16054), P(0x16058), P(0x1605c), 955 P(0x16060), P(0x16064), P(0x1606c), P(0x16080), P(0x16084), 956 P(0x16088), P(0x1608c), P(0x16090), P(0x16098), P(0x160a0), 957 P(0x160a4), P(0x160a8), P(0x160b4), P(0x160c0), P(0x160c4), 958 P(0x160c8), P(0x160cc), P(0x16100), P(0x16104), P(0x16108), 959 P(0x16144), P(0x16148), P(0x16280), P(0x16284), P(0x16288), 960 P(0x1628c), P(0x16290), P(0x16294), P(0x16380), P(0x16384), 961 P(0x16388), P(0x1638c), P(0x16390), P(0x16394), P(0x16398), 962 P(0x1639c), P(0x163a0), P(0x163a4), P(0x163a8), P(0x163ac), 963 P(0x163b0), P(0x163b4), P(0x163b8), P(0x163bc), P(0x163c0), 964 P(0x163c4), P(0x163c8), P(0x163cc), P(0x163d0), P(0x163d4), 965 P(0x16400), P(0x16404), P(0x16408), P(0x1640c), P(0x16440), 966 P(0x1644c), P(0x16450), P(0x16454), P(0x16458), P(0x1645c), 967 P(0x16460), P(0x16464), P(0x1646c), P(0x16500), P(0x16504), 968 P(0x16508), P(0x16544), P(0x16548), P(0x16780), P(0x16784), 969 P(0x16788), P(0x1678c), P(0x16790), P(0x16794), P(0x16798), 970 P(0x1679c), P(0x167a0), P(0x167a4), P(0x167a8), P(0x167ac), 971 P(0x167b0), P(0x167b4), P(0x167b8), P(0x167bc), P(0x167c0), 972 P(0x167c4), P(0x167c8), P(0x167cc), P(0x167d0), P(0x167d4), 973 P(0x16800), P(0x16804), P(0x16808), P(0x1680c), P(0x16840), 974 P(0x1684c), P(0x16850), P(0x16854), P(0x16858), P(0x1685c), 975 P(0x16860), P(0x16864), P(0x1686c), P(0x16900), P(0x16904), 976 P(0x16908), P(0x16944), P(0x16948), P(0x16b80), P(0x16b84), 977 P(0x16b88), P(0x16b8c), P(0x16b90), P(0x16b94), P(0x16b98), 978 P(0x16b9c), P(0x16ba0), P(0x16ba4), P(0x16ba8), P(0x16bac), 979 P(0x16bb0), P(0x16bb4), P(0x16bb8), P(0x16bbc), P(0x16bc0), 980 P(0x16bc4), P(0x16bc8), P(0x16bcc), P(0x16bd0), P(0x16bd4) 981 }; 982 983 static const uint32_t ar9380_2_2_cm_vals[] = { 984 0x00a0c1c9, 0x00000000, 0x00000000, 0x00000002, 0x000004c2, 985 0x00000008, 0x00000000, 0x00020085, 0x00000005, 0x00000000, 986 0x00000000, 0x00000008, 0x00000010, 0x00000000, 0x002ffc0f, 987 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 988 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x00000100, 989 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 990 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 991 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 992 0x00000000, 0xffffffff, 0x00000000, 0x00000000, 0x000fc78f, 993 0x0000000f, 0x00000000, 0x00000310, 0x00000020, 0x00000000, 994 0x0000000f, 0x00000000, 0x02ff0000, 0x0e070605, 0x0000000d, 995 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x2a800000, 996 0x06900168, 0x13881c20, 0x01f40000, 0x00252500, 0x00a00000, 997 0x00400000, 0x00000000, 0xffffffff, 0x0000ffff, 0x3f3f3f3f, 998 0x00000000, 0x00000000, 0x00000000, 0x00020000, 0x00000000, 999 0x00000052, 0x00000000, 0x00000000, 0x000007ff, 0x000000aa, 1000 0x00003210, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1001 0x00000000, 0x00000000, 0x0000ffff, 0xffffffff, 0x00000000, 1002 0x00000000, 0x00000000, 0x33332210, 0x00000000, 0x00000000, 1003 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1004 0x00100000, 0x0010f424, 0x00000800, 0x0001e848, 0x00000000, 1005 0x00000000, 0x00000000, 0x40000000, 0x00080922, 0x9bc00010, 1006 0xffffffff, 0x0000ffff, 0x00000000, 0x40000000, 0x003e4180, 1007 0x00000004, 0x0000002c, 0x0000002c, 0x000000ff, 0x00000000, 1008 0x00000000, 0x00000000, 0x00000140, 0x00000000, 0x0000010d, 1009 0x00000000, 0x00000007, 0x00000302, 0x00000700, 0x00ff0000, 1010 0x02400000, 0x000107ff, 0xaa48105b, 0x008f0000, 0x00000000, 1011 0xffffffff, 0xffffffff, 0x00000000, 0x00000000, 0x000000ff, 1012 0x00000000, 0x00000000, 0xffffffff, 0xffffffff, 0xffffffff, 1013 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x0000fa14, 1014 0x000f0c00, 0x33332210, 0x33332210, 0x33332210, 0x33332210, 1015 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000200, 1016 0x000301ff, 0xafe68e30, 0xfd14e000, 0x9c0a9f6b, 0x04900000, 1017 0x9280c00a, 0x00000000, 0x00020028, 0x6400a290, 0x0108ecff, 1018 0x0d000600, 0x201fff00, 0x00001042, 0x00200400, 0x32840bbe, 1019 0x004b6a8e, 0x00000820, 0x00000000, 0x00000000, 0x00000000, 1020 0xff55ff55, 0x0320ff55, 0x00000000, 0x00000000, 0x00046384, 1021 0x05b6b440, 0x00b6b440, 0xc080a333, 0x40206c10, 0x009c4060, 1022 0x9883800a, 0x01834061, 0x00c0040b, 0x00000000, 0x0038230c, 1023 0x990bb515, 0x0c6f0000, 0x06336f77, 0x6af6532f, 0x0cc80c00, 1024 0x0d261820, 0x00001004, 0x00ff03f1, 0x00000000, 0x803e4788, 1025 0x0001efb5, 0x40000014, 0x01193b93, 0x00000000, 0x00000000, 1026 0x00000000, 0x10002310, 0x00000000, 0x0c000000, 0x00000001, 1027 0x00000001, 0x00000000, 0x18c43433, 0x00000000, 0x00000000, 1028 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1029 0x0000a000, 0x00000000, 0x00000000, 0x00000001, 0x00000444, 1030 0x001f0e0f, 0x0075393f, 0xb79f6427, 0x00000000, 0xaaaaaaaa, 1031 0x3c466478, 0x20202020, 0x22222220, 0x20200020, 0x20202020, 1032 0x20202020, 0x20202020, 0x20202020, 0x20202020, 0x20202020, 1033 0x20202020, 0x20202020, 0x20202020, 0x00000000, 0x00000246, 1034 0x0cdbd380, 0x000f0f01, 0x8fa91f01, 0x00000000, 0x0e79e5c6, 1035 0x00820820, 0x1ce739ce, 0x2d001dce, 0x1ce739ce, 0x000001ce, 1036 0x1ce739ce, 0x000001ce, 0x1ce739ce, 0x1ce739ce, 0x00000000, 1037 0x00001801, 0x00100000, 0x00000000, 0x00000000, 0x06000080, 1038 0x00000001, 0x00010000, 0x00000000, 0x00000000, 0x3fad9d74, 1039 0x0048060a, 0x00003c37, 0x03020100, 0x09080504, 0x0d0c0b0a, 1040 0x13121110, 0x31301514, 0x35343332, 0x00000036, 0x00000838, 1041 0x00000000, 0xfffffffc, 0x00000000, 0x00000000, 0x00000000, 1042 0x00000004, 0x00000001, 0x004b6a8e, 0x00000820, 0x00000000, 1043 0x00000000, 0x00000000, 0x00000080, 0x00000000, 0x00000000, 1044 0x00000000, 0x00000000, 0x00000000, 0x0e79e5c0, 0x00820820, 1045 0x00000000, 0x004b6a8e, 0x00000820, 0x00000000, 0x00000000, 1046 0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000, 1047 0x00000000, 0x00000000, 0x0e79e5c0, 0x00820820, 0x00000000, 1048 0x36db6db6, 0x6db6db40, 0x73f00000, 0x00000000, 0x7f80fff8, 1049 0x76d005b5, 0x556cf031, 0x13449440, 0x0c51c92c, 0x3db7fffc, 1050 0xfffffffc, 0x000f0278, 0x6db60000, 0x00000000, 0x0e48048c, 1051 0x54214514, 0x119f481e, 0x24926490, 0xd2888888, 0x0a108ffe, 1052 0x812fc370, 0x423c8000, 0x92480080, 0x00adb6d0, 0x6db6db60, 1053 0x6db6db6c, 0x01e6c000, 0x3fffbe01, 0xfff80000, 0x00080010, 1054 0x02084080, 0x00000000, 0x058a0001, 0x3d840208, 0x05a20408, 1055 0x00038c07, 0x00000004, 0x458aa14f, 0x00000000, 0x00000000, 1056 0x00800700, 0x00800700, 0x00800700, 0x00000000, 0x00000000, 1057 0x00000000, 0x00000001, 0x00000001, 0x00000000, 0x00000000, 1058 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000000a0, 1059 0x000c0000, 0x14021402, 0x00001402, 0x00000000, 0x00000000, 1060 0x36db6db6, 0x6db6db40, 0x73f00000, 0x00000000, 0x7f80fff8, 1061 0x76d005b5, 0x556cf031, 0x13449440, 0x0c51c92c, 0x3db7fffc, 1062 0xfffffffc, 0x000f0278, 0x6db60000, 0x3fffbe01, 0xfff80000, 1063 0x00080010, 0x02084080, 0x00000000, 0x00000000, 0x00000000, 1064 0x00800700, 0x00800700, 0x00800700, 0x00000000, 0x00000000, 1065 0x00000000, 0x00000001, 0x00000001, 0x00000000, 0x00000000, 1066 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000000a0, 1067 0x000c0000, 0x14021402, 0x00001402, 0x00000000, 0x00000000, 1068 0x36db6db6, 0x6db6db40, 0x73f00000, 0x00000000, 0x7f80fff8, 1069 0x76d005b5, 0x556cf031, 0x13449440, 0x0c51c92c, 0x3db7fffc, 1070 0xfffffffc, 0x000f0278, 0x6db60000, 0x3fffbe01, 0xfff80000, 1071 0x00080010, 0x02084080, 0x00000000, 0x00000000, 0x00000000, 1072 0x00800700, 0x00800700, 0x00800700, 0x00000000, 0x00000000, 1073 0x00000000, 0x00000001, 0x00000001, 0x00000000, 0x00000000, 1074 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000000a0, 1075 0x000c0000, 0x14021402, 0x00001402, 0x00000000, 0x00000000 1076 }; 1077 1078 static const uint16_t ar9380_2_2_fast_clock_regs[] = { 1079 P(0x01030), P(0x01070), P(0x010b0), P(0x08014), P(0x0801c), 1080 P(0x08318), P(0x09e00), P(0x0a230), P(0x0a254) 1081 }; 1082 1083 static const uint32_t ar9380_2_2_fast_clock_vals_5g20[] = { 1084 0x00000268, 0x0000018c, 0x00000fd0, 0x044c044c, 0x148ec02b, 1085 0x000044c0, 0x0372131c, 0x0000000b, 0x00000898 1086 }; 1087 1088 #ifndef IEEE80211_NO_HT 1089 static const uint32_t ar9380_2_2_fast_clock_vals_5g40[] = { 1090 0x000004d0, 0x00000318, 0x00001fa0, 0x08980898, 0x148ec057, 1091 0x00008980, 0x0372131c, 0x00000016, 0x00001130 1092 }; 1093 #endif 1094 1095 static const struct athn_ini ar9380_2_2_ini = { 1096 .nregs = __arraycount(ar9380_2_2_regs), 1097 .regs = ar9380_2_2_regs, 1098 .vals_5g20 = ar9380_2_2_vals_5g20, 1099 #ifndef IEEE80211_NO_HT 1100 .vals_5g40 = ar9380_2_2_vals_5g40, 1101 .vals_2g40 = ar9380_2_2_vals_2g40, 1102 #endif 1103 .vals_2g20 = ar9380_2_2_vals_2g20, 1104 .ncmregs = __arraycount(ar9380_2_2_cm_regs), 1105 .cmregs = ar9380_2_2_cm_regs, 1106 .cmvals = ar9380_2_2_cm_vals, 1107 .nfastregs = __arraycount(ar9380_2_2_fast_clock_regs), 1108 .fastregs = ar9380_2_2_fast_clock_regs, 1109 .fastvals_5g20 = ar9380_2_2_fast_clock_vals_5g20, 1110 #ifndef IEEE80211_NO_HT 1111 .fastvals_5g50 = ar9380_2_2_fast_clock_vals_5g40 1112 #endif 1113 }; 1114 1115 /* 1116 * AR9485 1.1 programming. 1117 */ 1118 1119 static const uint16_t ar9485_1_1_regs[] = { 1120 P(0x01030), P(0x01070), P(0x010b0), P(0x08014), P(0x0801c), 1121 P(0x08120), P(0x081d0), P(0x08318), P(0x09810), P(0x09820), 1122 P(0x09824), P(0x09828), P(0x0982c), P(0x09830), P(0x09c00), 1123 P(0x09e00), P(0x09e04), P(0x09e0c), P(0x09e10), P(0x09e14), 1124 P(0x09e18), P(0x09e1c), P(0x09e20), P(0x09e2c), P(0x09e3c), 1125 P(0x09e44), P(0x09e48), P(0x09fc8), P(0x0a204), P(0x0a208), 1126 P(0x0a230), P(0x0a234), P(0x0a238), P(0x0a250), P(0x0a254), 1127 P(0x0a258), P(0x0a25c), P(0x0a260), P(0x0a264), P(0x0a280), 1128 P(0x0a284), P(0x0a288), P(0x0a28c), P(0x0a2c4), P(0x0a2d0), 1129 P(0x0a2d8), P(0x0a358), P(0x0be04), P(0x0be18), P(0x1609c), 1130 P(0x160ac), P(0x160b0), P(0x1610c), P(0x16140) 1131 }; 1132 1133 static const uint32_t ar9485_1_1_vals_2g40[] = { 1134 0x000002c0, 0x00000318, 0x00007c70, 0x10801600, 0x12e00057, 1135 0x08f04810, 0x0000320a, 0x00006880, 0xd00a8005, 0x206a002e, 1136 0x5ac640d0, 0x06903881, 0x05eea6d4, 0x0000059c, 0x00000044, 1137 0x037216a0, 0x00182020, 0x6d4000e2, 0x7ec80d2e, 0x3139605e, 1138 0x00000000, 0x00021f9c, 0x000003ce, 0x00000021, 0xcf946222, 1139 0x02282324, 0x50302010, 0x0001a000, 0x01303fc4, 0x00000004, 1140 0x00004016, 0x10000fff, 0xffb81018, 0x00000210, 0x00001130, 1141 0x02020002, 0x01000e0e, 0x3a021501, 0x00000e0e, 0x0000000b, 1142 0x000002a0, 0x00000000, 0x00000000, 0x00158d18, 0x00071982, 1143 0xf999a83a, 0x00000000, 0x00802020, 0x00000000, 0x0b283f31, 1144 0x24611800, 0x03284f3e, 0x00170000, 0x50804008 1145 }; 1146 1147 static const uint32_t ar9485_1_1_vals_2g20[] = { 1148 0x00000160, 0x0000018c, 0x00003e38, 0x08400b00, 0x12e0002b, 1149 0x08f04810, 0x0000320a, 0x00003440, 0xd00a8005, 0x206a002e, 1150 0x5ac640d0, 0x06903881, 0x05eea6d4, 0x0000059c, 0x00000044, 1151 0x037216a0, 0x00182020, 0x6c4000e2, 0x7ec80d2e, 0x31395d5e, 1152 0x00000000, 0x00021f9c, 0x000003ce, 0x00000021, 0xcf946222, 1153 0x02282324, 0x50302010, 0x0001a000, 0x01303fc0, 0x00000004, 1154 0x0000400b, 0x10000fff, 0xffb81018, 0x00000108, 0x00000898, 1155 0x02020002, 0x01000e0e, 0x3a021501, 0x00000e0e, 0x0000000b, 1156 0x000002a0, 0x00000000, 0x00000000, 0x00158d18, 0x00071982, 1157 0xf999a83a, 0x00000000, 0x00802020, 0x00000000, 0x0b283f31, 1158 0x24611800, 0x03284f3e, 0x00170000, 0x50804008 1159 }; 1160 1161 static const uint16_t ar9485_1_1_cm_regs[] = { 1162 P(0x00008), P(0x00030), P(0x00034), P(0x00040), P(0x00044), 1163 P(0x00048), P(0x0004c), P(0x00050), P(0x01040), P(0x01044), 1164 P(0x01048), P(0x0104c), P(0x01050), P(0x01054), P(0x01058), 1165 P(0x0105c), P(0x01060), P(0x01064), P(0x010f0), P(0x01270), 1166 P(0x012b0), P(0x012f0), P(0x0143c), P(0x0147c), P(0x08000), 1167 P(0x08004), P(0x08008), P(0x0800c), P(0x08018), P(0x08020), 1168 P(0x08038), P(0x0803c), P(0x08040), P(0x08044), P(0x08048), 1169 P(0x0804c), P(0x08054), P(0x08058), P(0x0805c), P(0x08060), 1170 P(0x08064), P(0x08070), P(0x08074), P(0x08078), P(0x0809c), 1171 P(0x080a0), P(0x080a4), P(0x080a8), P(0x080ac), P(0x080b0), 1172 P(0x080b4), P(0x080b8), P(0x080bc), P(0x080c0), P(0x080c4), 1173 P(0x080c8), P(0x080cc), P(0x080d0), P(0x080d4), P(0x080d8), 1174 P(0x080dc), P(0x080e0), P(0x080e4), P(0x080e8), P(0x080ec), 1175 P(0x080f0), P(0x080f4), P(0x080fc), P(0x08100), P(0x08108), 1176 P(0x0810c), P(0x08110), P(0x08114), P(0x08118), P(0x0811c), 1177 P(0x08124), P(0x08128), P(0x0812c), P(0x08130), P(0x08134), 1178 P(0x08138), P(0x0813c), P(0x08144), P(0x08168), P(0x0816c), 1179 P(0x08170), P(0x08174), P(0x08178), P(0x0817c), P(0x081c0), 1180 P(0x081c4), P(0x081d4), P(0x081ec), P(0x081f0), P(0x081f4), 1181 P(0x081f8), P(0x081fc), P(0x08240), P(0x08244), P(0x08248), 1182 P(0x0824c), P(0x08250), P(0x08254), P(0x08258), P(0x0825c), 1183 P(0x08260), P(0x08264), P(0x08268), P(0x0826c), P(0x08270), 1184 P(0x08274), P(0x08278), P(0x0827c), P(0x08284), P(0x08288), 1185 P(0x0828c), P(0x08294), P(0x08298), P(0x0829c), P(0x08300), 1186 P(0x08314), P(0x0831c), P(0x08328), P(0x0832c), P(0x08330), 1187 P(0x08334), P(0x08338), P(0x0833c), P(0x08340), P(0x08344), 1188 P(0x08348), P(0x0835c), P(0x08360), P(0x08364), P(0x08368), 1189 P(0x08370), P(0x08374), P(0x08378), P(0x0837c), P(0x08380), 1190 P(0x08384), P(0x08390), P(0x08394), P(0x08398), P(0x0839c), 1191 P(0x083a0), P(0x083a4), P(0x083a8), P(0x083ac), P(0x083b0), 1192 P(0x083b4), P(0x083b8), P(0x083bc), P(0x083c0), P(0x083c4), 1193 P(0x083c8), P(0x083cc), P(0x083d0), P(0x0a580), P(0x0a584), 1194 P(0x0a588), P(0x0a58c), P(0x0a590), P(0x0a594), P(0x0a598), 1195 P(0x0a59c), P(0x0a5a0), P(0x0a5a4), P(0x0a5a8), P(0x0a5ac), 1196 P(0x0a5b0), P(0x0a5b4), P(0x0a5b8), P(0x0a5bc), P(0x09800), 1197 P(0x09804), P(0x09808), P(0x0980c), P(0x09814), P(0x09818), 1198 P(0x0981c), P(0x09834), P(0x09838), P(0x0983c), P(0x09880), 1199 P(0x09884), P(0x098a4), P(0x098b0), P(0x098d0), P(0x098d4), 1200 P(0x098dc), P(0x098f0), P(0x098f4), P(0x09c04), P(0x09c08), 1201 P(0x09c0c), P(0x09c10), P(0x09c14), P(0x09c18), P(0x09c1c), 1202 P(0x09d00), P(0x09d04), P(0x09d08), P(0x09d0c), P(0x09d10), 1203 P(0x09d14), P(0x09d18), P(0x09d1c), P(0x09e08), P(0x09e24), 1204 P(0x09e28), P(0x09e30), P(0x09e34), P(0x09e38), P(0x09e40), 1205 P(0x09e4c), P(0x09e50), P(0x09fc0), P(0x09fc4), P(0x09fcc), 1206 P(0x0a20c), P(0x0a210), P(0x0a220), P(0x0a224), P(0x0a228), 1207 P(0x0a23c), P(0x0a244), P(0x0a2a0), P(0x0a2c0), P(0x0a2c8), 1208 P(0x0a2cc), P(0x0a2d4), P(0x0a2dc), P(0x0a2e0), P(0x0a2e4), 1209 P(0x0a2e8), P(0x0a2ec), P(0x0a2f0), P(0x0a2f4), P(0x0a2f8), 1210 P(0x0a344), P(0x0a34c), P(0x0a350), P(0x0a364), P(0x0a370), 1211 P(0x0a390), P(0x0a394), P(0x0a398), P(0x0a39c), P(0x0a3a0), 1212 P(0x0a3a4), P(0x0a3a8), P(0x0a3ac), P(0x0a3c0), P(0x0a3c4), 1213 P(0x0a3c8), P(0x0a3cc), P(0x0a3d0), P(0x0a3d4), P(0x0a3d8), 1214 P(0x0a3dc), P(0x0a3e0), P(0x0a3e4), P(0x0a3e8), P(0x0a3ec), 1215 P(0x0a3f0), P(0x0a3f4), P(0x0a3f8), P(0x0a3fc), P(0x0a400), 1216 P(0x0a404), P(0x0a408), P(0x0a40c), P(0x0a414), P(0x0a418), 1217 P(0x0a41c), P(0x0a420), P(0x0a424), P(0x0a428), P(0x0a42c), 1218 P(0x0a430), P(0x0a434), P(0x0a438), P(0x0a43c), P(0x0a440), 1219 P(0x0a444), P(0x0a448), P(0x0a44c), P(0x0a450), P(0x0a5c4), 1220 P(0x0a5c8), P(0x0a5cc), P(0x0a760), P(0x0a764), P(0x0a768), 1221 P(0x0a76c), P(0x0a770), P(0x0a774), P(0x0a778), P(0x0a780), 1222 P(0x0a7c0), P(0x0a7c4), P(0x0a7c8), P(0x0a7cc), P(0x0a7d0), 1223 P(0x0a7d4), P(0x0a7dc), P(0x16000), P(0x16004), P(0x16008), 1224 P(0x1600c), P(0x16040), P(0x1604c), P(0x16050), P(0x16054), 1225 P(0x16080), P(0x16084), P(0x16088), P(0x1608c), P(0x16090), 1226 P(0x16098), P(0x160a0), P(0x160a4), P(0x160a8), P(0x160b4), 1227 P(0x160c0), P(0x160c4), P(0x160c8), P(0x160cc), P(0x160d0), 1228 P(0x16100), P(0x16104), P(0x16108), P(0x16144), P(0x16148), 1229 P(0x16240), P(0x16244), P(0x16248), P(0x1624c), P(0x16280), 1230 P(0x16284), P(0x16288), P(0x1628c), P(0x16290), P(0x16380), 1231 P(0x16384), P(0x16388), P(0x1638c), P(0x16390), P(0x16394), 1232 P(0x16398), P(0x1639c), P(0x163a0), P(0x163a4), P(0x163a8), 1233 P(0x163ac), P(0x163b0), P(0x163b4), P(0x163b8), P(0x163bc), 1234 P(0x163c0), P(0x163c4), P(0x163c8), P(0x163cc), P(0x163d0), 1235 P(0x163d4), P(0x16c40), P(0x16c44), P(0x04014), P(0x04090), 1236 P(0x040a4), P(0x07010), P(0x07020), P(0x07034), P(0x07038), 1237 P(0x07048) 1238 }; 1239 1240 static const uint32_t ar9485_1_1_cm_vals[] = { 1241 0x00000000, 0x00020085, 0x00000005, 0x00000000, 0x00000000, 1242 0x00000008, 0x00000010, 0x00000000, 0x002ffc0f, 0x002ffc0f, 1243 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 1244 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x00000100, 0x00000000, 1245 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1246 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1247 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1248 0xffffffff, 0x00000000, 0x00000000, 0x000fc78f, 0x0000000f, 1249 0x00000000, 0x00000310, 0x00000020, 0x00000000, 0x0000000f, 1250 0x00000000, 0x02ff0000, 0x0e070605, 0x0000000d, 0x00000000, 1251 0x00000000, 0x00000000, 0x00000000, 0x2a800000, 0x06900168, 1252 0x13881c22, 0x01f40000, 0x00252500, 0x00a00000, 0x00400000, 1253 0x00000000, 0xffffffff, 0x0000ffff, 0x3f3f3f3f, 0x00000000, 1254 0x00000000, 0x00000000, 0x00020000, 0x00000000, 0x00000052, 1255 0x00000000, 0x00000000, 0x000007ff, 0x000000aa, 0x00003210, 1256 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1257 0x00000000, 0x0000ffff, 0xffffffff, 0x00000000, 0x00000000, 1258 0x18486200, 0x33332210, 0x00000000, 0x00020000, 0x00000000, 1259 0x33332210, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1260 0x00000000, 0x00000000, 0x00100000, 0x0010f400, 0x00000800, 1261 0x0001e800, 0x00000000, 0x00000000, 0x00000000, 0x40000000, 1262 0x00080922, 0x9ca00010, 0xffffffff, 0x0000ffff, 0x00000000, 1263 0x40000000, 0x003e4180, 0x00000004, 0x0000002c, 0x0000002c, 1264 0x000000ff, 0x00000000, 0x00000000, 0x00000000, 0x00000140, 1265 0x00000000, 0x0000010d, 0x00000000, 0x00000007, 0x00000302, 1266 0x00000700, 0x00ff0000, 0x02400000, 0x000107ff, 0xa248105b, 1267 0x008f0000, 0x00000000, 0xffffffff, 0xffffffff, 0x00000000, 1268 0x00000000, 0x000000ff, 0x00000000, 0x00000000, 0xffffffff, 1269 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000, 0x00000000, 1270 0x00000000, 0x0000fa14, 0x000f0c00, 0x33332210, 0x33332210, 1271 0x33332210, 0x33332210, 0x00000000, 0x00000000, 0x00000000, 1272 0x00000000, 0x00000200, 0x000301ff, 0x00000000, 0x00000000, 1273 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1274 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1275 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xafe68e30, 1276 0xfd14e000, 0x9c0a8f6b, 0x04800000, 0x9280c00a, 0x00000000, 1277 0x00020028, 0x5f3ca3de, 0x0108ecff, 0x14750600, 0x201fff00, 1278 0x00001042, 0x00200400, 0x52440bbe, 0x004b6a8e, 0x00000820, 1279 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x03200000, 1280 0x00000000, 0x00000000, 0x00046384, 0x05b6b440, 0x00b6b440, 1281 0xc080a333, 0x40206c10, 0x009c4060, 0x1883800a, 0x01834061, 1282 0x00c00400, 0x00000000, 0x00000000, 0x0038233c, 0x9927b515, 1283 0x12ef0200, 0x06336f77, 0x6af6532f, 0x0cc80c00, 0x0d261820, 1284 0x00001004, 0x00ff03f1, 0x80be4788, 0x0001efb5, 0x40000014, 1285 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10002310, 1286 0x00000000, 0x0c000000, 0x00000001, 0x00000001, 0x00000000, 1287 0x18c43433, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1288 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1289 0x00000000, 0x00000000, 0x0000a000, 0x00000000, 0x00000000, 1290 0x00000001, 0x00000444, 0x001f0e0f, 0x0075393f, 0xb79f6427, 1291 0x000000ff, 0x3b3b3b3b, 0x2f2f2f2f, 0x20202020, 0x22222220, 1292 0x20200020, 0x20202020, 0x20202020, 0x20202020, 0x20202020, 1293 0x20202020, 0x20202020, 0x20202020, 0x20202020, 0x20202020, 1294 0x00000000, 0x00000006, 0x0cdbd380, 0x000f0f01, 0x8fa91f01, 1295 0x00000000, 0x0e79e5c6, 0x00820820, 0x1ce739cf, 0x2d0019ce, 1296 0x1ce739ce, 0x000001ce, 0x1ce739ce, 0x000001ce, 0x1ce739ce, 1297 0x1ce739ce, 0x00000000, 0x00001801, 0x00000000, 0x00000000, 1298 0x00000000, 0x04000000, 0x00000001, 0x00010000, 0xbfad9d74, 1299 0x0048060a, 0x00000637, 0x03020100, 0x09080504, 0x0d0c0b0a, 1300 0x13121110, 0x31301514, 0x35343332, 0x00000036, 0x00000838, 1301 0x00000000, 0xfffffffc, 0x00000000, 0x00000000, 0x00000000, 1302 0x00000004, 0x00000000, 0x36db6db6, 0x6db6db40, 0x73800000, 1303 0x00000000, 0x7f80fff8, 0x000f0278, 0x4db6db8c, 0x6db60000, 1304 0x00080000, 0x0e48048c, 0x14214514, 0x119f081e, 0x24926490, 1305 0xd28b3330, 0xc2108ffe, 0x812fc370, 0x423c8000, 0x92480040, 1306 0x006db6db, 0x0186db60, 0x6db6db6c, 0x6de6fbe0, 0xf7dfcf3c, 1307 0x04cb0001, 0xfff80015, 0x00080010, 0x01884080, 0x00008040, 1308 0x08400000, 0x1bf90f00, 0x00000000, 0x00000000, 0x01000015, 1309 0x00d30000, 0x00318000, 0x50000000, 0x4b96210f, 0x00000000, 1310 0x00000000, 0x00800700, 0x00800700, 0x00800700, 0x00000000, 1311 0x00000000, 0x00000000, 0x00000001, 0x00000001, 0x00000000, 1312 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1313 0x000000a0, 0x000c0000, 0x14021402, 0x00001402, 0x00000000, 1314 0x00000000, 0x13188278, 0x12000000, 0xba280400, 0x00aa10aa, 1315 0x00a0c9c9, 0x00000022, 0x00000000, 0x00000002, 0x000004c2, 1316 0x00000002 1317 }; 1318 1319 static const struct athn_ini ar9485_1_1_ini = { 1320 .nregs = __arraycount(ar9485_1_1_regs), 1321 .regs = ar9485_1_1_regs, 1322 .vals_5g20 = NULL, /* 2GHz only. */ 1323 #ifndef IEEE80211_NO_HT 1324 .vals_5g40 = NULL, /* 2GHz only. */ 1325 .vals_2g40 = ar9485_1_1_vals_2g40, 1326 #endif 1327 .vals_2g20 = ar9485_1_1_vals_2g20, 1328 .ncmregs = __arraycount(ar9485_1_1_cm_regs), 1329 .cmregs = ar9485_1_1_cm_regs, 1330 .cmvals = ar9485_1_1_cm_vals 1331 }; 1332 1333 /* 1334 * AR9380 2.2 Tx gains. 1335 */ 1336 static const uint16_t ar9380_2_2_tx_gain_regs[] = { 1337 P(0x0a2dc), P(0x0a2e0), P(0x0a2e4), P(0x0a2e8), P(0x0a410), 1338 P(0x0a500), P(0x0a504), P(0x0a508), P(0x0a50c), P(0x0a510), 1339 P(0x0a514), P(0x0a518), P(0x0a51c), P(0x0a520), P(0x0a524), 1340 P(0x0a528), P(0x0a52c), P(0x0a530), P(0x0a534), P(0x0a538), 1341 P(0x0a53c), P(0x0a540), P(0x0a544), P(0x0a548), P(0x0a54c), 1342 P(0x0a550), P(0x0a554), P(0x0a558), P(0x0a55c), P(0x0a560), 1343 P(0x0a564), P(0x0a568), P(0x0a56c), P(0x0a570), P(0x0a574), 1344 P(0x0a578), P(0x0a57c), P(0x0a580), P(0x0a584), P(0x0a588), 1345 P(0x0a58c), P(0x0a590), P(0x0a594), P(0x0a598), P(0x0a59c), 1346 P(0x0a5a0), P(0x0a5a4), P(0x0a5a8), P(0x0a5ac), P(0x0a5b0), 1347 P(0x0a5b4), P(0x0a5b8), P(0x0a5bc), P(0x0a5c0), P(0x0a5c4), 1348 P(0x0a5c8), P(0x0a5cc), P(0x0a5d0), P(0x0a5d4), P(0x0a5d8), 1349 P(0x0a5dc), P(0x0a5e0), P(0x0a5e4), P(0x0a5e8), P(0x0a5ec), 1350 P(0x0a5f0), P(0x0a5f4), P(0x0a5f8), P(0x0a5fc), P(0x0a600), 1351 P(0x0a604), P(0x0a608), P(0x0a60c), P(0x0a610), P(0x0a614), 1352 P(0x0a618), P(0x0a61c), P(0x0a620), P(0x0a624), P(0x0a628), 1353 P(0x0a62c), P(0x0a630), P(0x0a634), P(0x0a638), P(0x0a63c), 1354 P(0x0b2dc), P(0x0b2e0), P(0x0b2e4), P(0x0b2e8), P(0x0c2dc), 1355 P(0x0c2e0), P(0x0c2e4), P(0x0c2e8), P(0x16044), P(0x16048), 1356 P(0x16068), P(0x16444), P(0x16448), P(0x16468), P(0x16844), 1357 P(0x16848), P(0x16868) 1358 }; 1359 1360 static const uint32_t ar9380_2_2_tx_gain_vals_5g[] = { 1361 0x00033800, 0x0003c000, 0x03fc0000, 0x00000000, 0x000050d9, 1362 0x00000000, 0x06000003, 0x0a000020, 0x10000023, 0x16000220, 1363 0x1c000223, 0x21002220, 0x27002223, 0x2b022220, 0x2f022222, 1364 0x34022225, 0x3a02222a, 0x3e02222c, 0x4202242a, 0x4702244a, 1365 0x4b02244c, 0x4e02246c, 0x52022470, 0x55022490, 0x59022492, 1366 0x5d022692, 0x61022892, 0x65024890, 0x69024892, 0x6e024c92, 1367 0x74026e92, 0x74026e92, 0x74026e92, 0x74026e92, 0x74026e92, 1368 0x74026e92, 0x74026e92, 0x00800000, 0x06800003, 0x0a800020, 1369 0x10800023, 0x16800220, 0x1c800223, 0x21802220, 0x27802223, 1370 0x2b822220, 0x2f822222, 0x34822225, 0x3a82222a, 0x3e82222c, 1371 0x4282242a, 0x4782244a, 0x4b82244c, 0x4e82246c, 0x52822470, 1372 0x55822490, 0x59822492, 0x5d822692, 0x61822892, 0x65824890, 1373 0x69824892, 0x6e824c92, 0x74826e92, 0x74826e92, 0x74826e92, 1374 0x74826e92, 0x74826e92, 0x74826e92, 0x74826e92, 0x00000000, 1375 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x02004000, 1376 0x02004801, 0x02808a02, 0x0380ce03, 0x04411104, 0x04411104, 1377 0x04411104, 0x04411104, 0x04411104, 0x04411104, 0x04411104, 1378 0x00033800, 0x0003c000, 0x03fc0000, 0x00000000, 0x00033800, 1379 0x0003c000, 0x03fc0000, 0x00000000, 0x012492d4, 0x62480001, 1380 0x6db6db6c, 0x012492d4, 0x62480001, 0x6db6db6c, 0x012492d4, 1381 0x62480001, 0x6db6db6c 1382 }; 1383 1384 static const uint32_t ar9380_2_2_tx_gain_vals_2g[] = { 1385 0x00637800, 0x03838000, 0x03fc0000, 0x00000000, 0x000050d9, 1386 0x00000000, 0x04000002, 0x08000004, 0x0b000200, 0x0f000202, 1387 0x12000400, 0x16000402, 0x19000404, 0x1c000603, 0x21000a02, 1388 0x25000a04, 0x28000a20, 0x2c000e20, 0x30000e22, 0x34000e24, 1389 0x38001640, 0x3c001660, 0x3f001861, 0x43001a81, 0x47001a83, 1390 0x4a001c84, 0x4e001ce3, 0x52001ce5, 0x56001ce9, 0x5a001ceb, 1391 0x5d001eec, 0x5d001eec, 0x5d001eec, 0x5d001eec, 0x5d001eec, 1392 0x5d001eec, 0x5d001eec, 0x00800000, 0x04800002, 0x08800004, 1393 0x0b800200, 0x0f800202, 0x12800400, 0x16800402, 0x19800404, 1394 0x1c800603, 0x21800a02, 0x25800a04, 0x28800a20, 0x2c800e20, 1395 0x30800e22, 0x34800e24, 0x38801640, 0x3c801660, 0x3f801861, 1396 0x43801a81, 0x47801a83, 0x4a801c84, 0x4e801ce3, 0x52801ce5, 1397 0x56801ce9, 0x5a801ceb, 0x5d801eec, 0x5d801eec, 0x5d801eec, 1398 0x5d801eec, 0x5d801eec, 0x5d801eec, 0x5d801eec, 0x00000000, 1399 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01404000, 1400 0x01404501, 0x02008501, 0x0280ca03, 0x03010c04, 0x04014c04, 1401 0x04015005, 0x04015005, 0x04015005, 0x04015005, 0x04015005, 1402 0x00637800, 0x03838000, 0x03fc0000, 0x00000000, 0x00637800, 1403 0x03838000, 0x03fc0000, 0x00000000, 0x012492d4, 0x62480001, 1404 0x6db6db6c, 0x012492d4, 0x62480001, 0x6db6db6c, 0x012492d4, 1405 0x62480001, 0x6db6db6c 1406 }; 1407 1408 static const struct athn_gain ar9380_2_2_tx_gain = { 1409 __arraycount(ar9380_2_2_tx_gain_regs), 1410 ar9380_2_2_tx_gain_regs, 1411 ar9380_2_2_tx_gain_vals_5g, 1412 ar9380_2_2_tx_gain_vals_2g 1413 }; 1414 1415 /* 1416 * AR9380 2.2 high ob/db Tx gains. 1417 */ 1418 static const uint32_t ar9380_2_2_tx_gain_high_ob_db_vals_5g[] = { 1419 0x01feee00, 0x0000f000, 0x01ff0000, 0x00000000, 0x000050d8, 1420 0x00002220, 0x04002222, 0x09002421, 0x0d002621, 0x13004620, 1421 0x19004a20, 0x1d004e20, 0x21005420, 0x26005e20, 0x2b005e40, 1422 0x2f005e42, 0x33005e44, 0x38005e65, 0x3c005e69, 0x40005e6b, 1423 0x44005e6d, 0x49005e72, 0x4e005eb2, 0x53005f12, 0x59025eb2, 1424 0x5e025f12, 0x61027f12, 0x6702bf12, 0x6b02bf14, 0x6f02bf16, 1425 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 1426 0x6f02bf16, 0x6f02bf16, 0x00802220, 0x04802222, 0x09802421, 1427 0x0d802621, 0x13804620, 0x19804a20, 0x1d804e20, 0x21805420, 1428 0x26805e20, 0x2b805e40, 0x2f805e42, 0x33805e44, 0x38805e65, 1429 0x3c805e69, 0x40805e6b, 0x44805e6d, 0x49805e72, 0x4e805eb2, 1430 0x53805f12, 0x59825eb2, 0x5e825f12, 0x61827f12, 0x6782bf12, 1431 0x6b82bf14, 0x6f82bf16, 0x6f82bf16, 0x6f82bf16, 0x6f82bf16, 1432 0x6f82bf16, 0x6f82bf16, 0x6f82bf16, 0x6f82bf16, 0x00000000, 1433 0x00000000, 0x00000000, 0x00000000, 0x00804000, 0x00804201, 1434 0x0280c802, 0x0280ca03, 0x04c15104, 0x04c15305, 0x04c15305, 1435 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 1436 0x01feee00, 0x0000f000, 0x01ff0000, 0x00000000, 0x01feee00, 1437 0x0000f000, 0x01ff0000, 0x00000000, 0x056db2e4, 0x8e480001, 1438 0x6db6db6c, 0x056db2e4, 0x8e480001, 0x6db6db6c, 0x056db2e4, 1439 0x8e480001, 0x6db6db6c 1440 }; 1441 1442 static const uint32_t ar9380_2_2_tx_gain_high_ob_db_vals_2g[] = { 1443 0x00637800, 0x03838000, 0x03fc0000, 0x00000000, 0x000050d9, 1444 0x00000000, 0x04000002, 0x08000004, 0x0b000200, 0x0f000202, 1445 0x11000400, 0x15000402, 0x19000404, 0x1b000603, 0x1f000a02, 1446 0x23000a04, 0x26000a20, 0x2a000e20, 0x2e000e22, 0x31000e24, 1447 0x34001640, 0x38001660, 0x3b001861, 0x3e001a81, 0x42001a83, 1448 0x44001c84, 0x48001ce3, 0x4c001ce5, 0x50001ce9, 0x54001ceb, 1449 0x56001eec, 0x56001eec, 0x56001eec, 0x56001eec, 0x56001eec, 1450 0x56001eec, 0x56001eec, 0x00800000, 0x04800002, 0x08800004, 1451 0x0b800200, 0x0f800202, 0x11800400, 0x15800402, 0x19800404, 1452 0x1b800603, 0x1f800a02, 0x23800a04, 0x26800a20, 0x2a800e20, 1453 0x2e800e22, 0x31800e24, 0x34801640, 0x38801660, 0x3b801861, 1454 0x3e801a81, 0x42801a83, 0x44801c84, 0x48801ce3, 0x4c801ce5, 1455 0x50801ce9, 0x54801ceb, 0x56801eec, 0x56801eec, 0x56801eec, 1456 0x56801eec, 0x56801eec, 0x56801eec, 0x56801eec, 0x00000000, 1457 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01404000, 1458 0x01404501, 0x02008501, 0x0280ca03, 0x03010c04, 0x04014c04, 1459 0x04015005, 0x04015005, 0x04015005, 0x04015005, 0x04015005, 1460 0x00637800, 0x03838000, 0x03fc0000, 0x00000000, 0x00637800, 1461 0x03838000, 0x03fc0000, 0x00000000, 0x056db2e4, 0x8e480001, 1462 0x6db6db6c, 0x056db2e4, 0x8e480001, 0x6db6db6c, 0x056db2e4, 1463 0x8e480001, 0x6db6db6c 1464 }; 1465 1466 static const struct athn_gain ar9380_2_2_tx_gain_high_ob_db = { 1467 __arraycount(ar9380_2_2_tx_gain_regs), 1468 ar9380_2_2_tx_gain_regs, 1469 ar9380_2_2_tx_gain_high_ob_db_vals_5g, 1470 ar9380_2_2_tx_gain_high_ob_db_vals_2g 1471 }; 1472 1473 /* 1474 * AR9380 2.2 low ob/db Tx gains. 1475 */ 1476 static const uint32_t ar9380_2_2_tx_gain_low_ob_db_vals_5g[] = { 1477 0x0380c7fc, 0x0000f800, 0x03ff0000, 0x00000000, 0x000050d9, 1478 0x00000000, 0x06000003, 0x0a000020, 0x10000023, 0x16000220, 1479 0x1c000223, 0x21002220, 0x27002223, 0x2b022220, 0x2f022222, 1480 0x34022225, 0x3a02222a, 0x3e02222c, 0x4202242a, 0x4702244a, 1481 0x4b02244c, 0x4e02246c, 0x5302266c, 0x5702286c, 0x5c02486b, 1482 0x61024a6c, 0x66026a6c, 0x6b026e6c, 0x7002708c, 0x7302b08a, 1483 0x7702b08c, 0x7702b08c, 0x7702b08c, 0x7702b08c, 0x7702b08c, 1484 0x7702b08c, 0x7702b08c, 0x00800000, 0x06800003, 0x0a800020, 1485 0x10800023, 0x16800220, 0x1c800223, 0x21802220, 0x27802223, 1486 0x2b822220, 0x2f822222, 0x34822225, 0x3a82222a, 0x3e82222c, 1487 0x4282242a, 0x4782244a, 0x4b82244c, 0x4e82246c, 0x5382266c, 1488 0x5782286c, 0x5c82486b, 0x61824a6c, 0x66826a6c, 0x6b826e6c, 1489 0x7082708c, 0x7382b08a, 0x7782b08c, 0x7782b08c, 0x7782b08c, 1490 0x7782b08c, 0x7782b08c, 0x7782b08c, 0x7782b08c, 0x00000000, 1491 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01404000, 1492 0x01404501, 0x02008802, 0x0300cc03, 0x0300cc03, 0x0300cc03, 1493 0x03810c03, 0x03810e04, 0x03810e04, 0x03810e04, 0x03810e04, 1494 0x0380c7fc, 0x0000f800, 0x03ff0000, 0x00000000, 0x0380c7fc, 1495 0x0000f800, 0x03ff0000, 0x00000000, 0x012492d4, 0x66480001, 1496 0x6db6db6c, 0x012492d4, 0x66480001, 0x6db6db6c, 0x012492d4, 1497 0x66480001, 0x6db6db6c 1498 }; 1499 1500 static const uint32_t ar9380_2_2_tx_gain_low_ob_db_vals_2g[] = { 1501 0x00637800, 0x03838000, 0x03fc0000, 0x00000000, 0x000050d9, 1502 0x00000000, 0x04000002, 0x08000004, 0x0b000200, 0x0f000202, 1503 0x12000400, 0x16000402, 0x19000404, 0x1c000603, 0x21000a02, 1504 0x25000a04, 0x28000a20, 0x2c000e20, 0x30000e22, 0x34000e24, 1505 0x38001640, 0x3c001660, 0x3f001861, 0x43001a81, 0x47001a83, 1506 0x4a001c84, 0x4e001ce3, 0x52001ce5, 0x56001ce9, 0x5a001ceb, 1507 0x5d001eec, 0x5d001eec, 0x5d001eec, 0x5d001eec, 0x5d001eec, 1508 0x5d001eec, 0x5d001eec, 0x00800000, 0x04800002, 0x08800004, 1509 0x0b800200, 0x0f800202, 0x12800400, 0x16800402, 0x19800404, 1510 0x1c800603, 0x21800a02, 0x25800a04, 0x28800a20, 0x2c800e20, 1511 0x30800e22, 0x34800e24, 0x38801640, 0x3c801660, 0x3f801861, 1512 0x43801a81, 0x47801a83, 0x4a801c84, 0x4e801ce3, 0x52801ce5, 1513 0x56801ce9, 0x5a801ceb, 0x5d801eec, 0x5d801eec, 0x5d801eec, 1514 0x5d801eec, 0x5d801eec, 0x5d801eec, 0x5d801eec, 0x00000000, 1515 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01404000, 1516 0x01404501, 0x02008501, 0x0280ca03, 0x03010c04, 0x04014c04, 1517 0x04015005, 0x04015005, 0x04015005, 0x04015005, 0x04015005, 1518 0x00637800, 0x03838000, 0x03fc0000, 0x00000000, 0x00637800, 1519 0x03838000, 0x03fc0000, 0x00000000, 0x012492d4, 0x66480001, 1520 0x6db6db6c, 0x012492d4, 0x66480001, 0x6db6db6c, 0x012492d4, 1521 0x66480001, 0x6db6db6c 1522 }; 1523 1524 static const struct athn_gain ar9380_2_2_tx_gain_low_ob_db = { 1525 __arraycount(ar9380_2_2_tx_gain_regs), 1526 ar9380_2_2_tx_gain_regs, 1527 ar9380_2_2_tx_gain_low_ob_db_vals_5g, 1528 ar9380_2_2_tx_gain_low_ob_db_vals_2g 1529 }; 1530 1531 /* 1532 * AR9380 2.2 high power Tx gains. 1533 */ 1534 static const uint32_t ar9380_2_2_tx_gain_high_power_vals_5g[] = { 1535 0x0380c7fc, 0x0000f800, 0x03ff0000, 0x00000000, 0x000050d8, 1536 0x00002220, 0x04002222, 0x09002421, 0x0d002621, 0x13004620, 1537 0x19004a20, 0x1d004e20, 0x21005420, 0x26005e20, 0x2b005e40, 1538 0x2f005e42, 0x33005e44, 0x38005e65, 0x3c005e69, 0x40005e6b, 1539 0x44005e6d, 0x49005e72, 0x4e005eb2, 0x53005f12, 0x59025eb2, 1540 0x5e025f12, 0x61027f12, 0x6702bf12, 0x6b02bf14, 0x6f02bf16, 1541 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 0x6f02bf16, 1542 0x6f02bf16, 0x6f02bf16, 0x00802220, 0x04802222, 0x09802421, 1543 0x0d802621, 0x13804620, 0x19804a20, 0x1d804e20, 0x21805420, 1544 0x26805e20, 0x2b805e40, 0x2f805e42, 0x33805e44, 0x38805e65, 1545 0x3c805e69, 0x40805e6b, 0x44805e6d, 0x49805e72, 0x4e805eb2, 1546 0x53805f12, 0x59825eb2, 0x5e825f12, 0x61827f12, 0x6782bf12, 1547 0x6b82bf14, 0x6f82bf16, 0x6f82bf16, 0x6f82bf16, 0x6f82bf16, 1548 0x6f82bf16, 0x6f82bf16, 0x6f82bf16, 0x6f82bf16, 0x00000000, 1549 0x00000000, 0x00000000, 0x00000000, 0x00804000, 0x00804201, 1550 0x0280c802, 0x0280ca03, 0x04c15104, 0x04c15305, 0x04c15305, 1551 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 0x04c15305, 1552 0x0380c7fc, 0x0000f800, 0x03ff0000, 0x00000000, 0x0380c7fc, 1553 0x0000f800, 0x03ff0000, 0x00000000, 0x056db2e6, 0xae480001, 1554 0x6eb6db6c, 0x056db2e6, 0xae480001, 0x6eb6db6c, 0x056db2e6, 1555 0xae480001, 0x6eb6db6c 1556 }; 1557 1558 static const uint32_t ar9380_2_2_tx_gain_high_power_vals_2g[] = { 1559 0x00637800, 0x03838000, 0x03fc0000, 0x00000000, 0x000050d9, 1560 0x00000000, 0x04000002, 0x08000004, 0x0b000200, 0x0f000202, 1561 0x11000400, 0x15000402, 0x19000404, 0x1b000603, 0x1f000a02, 1562 0x23000a04, 0x26000a20, 0x2a000e20, 0x2e000e22, 0x31000e24, 1563 0x34001640, 0x38001660, 0x3b001861, 0x3e001a81, 0x42001a83, 1564 0x44001c84, 0x48001ce3, 0x4c001ce5, 0x50001ce9, 0x54001ceb, 1565 0x56001eec, 0x56001eec, 0x56001eec, 0x56001eec, 0x56001eec, 1566 0x56001eec, 0x56001eec, 0x00800000, 0x04800002, 0x08800004, 1567 0x0b800200, 0x0f800202, 0x11800400, 0x15800402, 0x19800404, 1568 0x1b800603, 0x1f800a02, 0x23800a04, 0x26800a20, 0x2a800e20, 1569 0x2e800e22, 0x31800e24, 0x34801640, 0x38801660, 0x3b801861, 1570 0x3e801a81, 0x42801a83, 0x44801c84, 0x48801ce3, 0x4c801ce5, 1571 0x50801ce9, 0x54801ceb, 0x56801eec, 0x56801eec, 0x56801eec, 1572 0x56801eec, 0x56801eec, 0x56801eec, 0x56801eec, 0x00000000, 1573 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01404000, 1574 0x01404501, 0x02008501, 0x0280ca03, 0x03010c04, 0x04014c04, 1575 0x04015005, 0x04015005, 0x04015005, 0x04015005, 0x04015005, 1576 0x00637800, 0x03838000, 0x03fc0000, 0x00000000, 0x00637800, 1577 0x03838000, 0x03fc0000, 0x00000000, 0x056db2e6, 0xae480001, 1578 0x6eb6db6c, 0x056db2e6, 0xae480001, 0x6eb6db6c, 0x056db2e6, 1579 0xae480001, 0x6eb6db6c 1580 }; 1581 1582 static const struct athn_gain ar9380_2_2_tx_gain_high_power = { 1583 __arraycount(ar9380_2_2_tx_gain_regs), 1584 ar9380_2_2_tx_gain_regs, 1585 ar9380_2_2_tx_gain_high_power_vals_5g, 1586 ar9380_2_2_tx_gain_high_power_vals_2g 1587 }; 1588 1589 /* 1590 * AR9485 1.1 Tx gains. 1591 */ 1592 static const uint16_t ar9485_1_1_tx_gain_regs[] = { 1593 P(0x098bc), P(0x0a410), P(0x0a458), P(0x0a500), P(0x0a504), 1594 P(0x0a508), P(0x0a50c), P(0x0a510), P(0x0a514), P(0x0a518), 1595 P(0x0a51c), P(0x0a520), P(0x0a524), P(0x0a528), P(0x0a52c), 1596 P(0x0a530), P(0x0a534), P(0x0a538), P(0x0a53c), P(0x0a540), 1597 P(0x0a544), P(0x0a548), P(0x0a54c), P(0x0a550), P(0x0a554), 1598 P(0x0a558), P(0x0a55c), P(0x0a560), P(0x0a564), P(0x0a568), 1599 P(0x0a56c), P(0x0a570), P(0x0a574), P(0x0a578), P(0x0a57c), 1600 P(0x0b500), P(0x0b504), P(0x0b508), P(0x0b50c), P(0x0b510), 1601 P(0x0b514), P(0x0b518), P(0x0b51c), P(0x0b520), P(0x0b524), 1602 P(0x0b528), P(0x0b52c), P(0x0b530), P(0x0b534), P(0x0b538), 1603 P(0x0b53c), P(0x0b540), P(0x0b544), P(0x0b548), P(0x0b54c), 1604 P(0x0b550), P(0x0b554), P(0x0b558), P(0x0b55c), P(0x0b560), 1605 P(0x0b564), P(0x0b568), P(0x0b56c), P(0x0b570), P(0x0b574), 1606 P(0x0b578), P(0x0b57c), P(0x16044), P(0x16048), 1607 }; 1608 1609 static const uint32_t ar9485_1_1_tx_gain_vals_2g[] = { 1610 0x00000002, 0x000050d8, 0x00000000, 0x00000000, 0x04000002, 1611 0x08000004, 0x0d000200, 0x11000202, 0x15000400, 0x19000402, 1612 0x1d000404, 0x21000603, 0x25000605, 0x2a000a03, 0x2c000a04, 1613 0x34000e20, 0x35000e21, 0x43000e62, 0x45000e63, 0x49000e65, 1614 0x4b000e66, 0x4d001645, 0x51001865, 0x55001a86, 0x57001ce9, 1615 0x5a001ceb, 0x5e001eeb, 0x5e001eeb, 0x5e001eeb, 0x5e001eeb, 1616 0x5e001eeb, 0x5e001eeb, 0x5e001eeb, 0x5e001eeb, 0x5e001eeb, 1617 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1618 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1619 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1620 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1621 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1622 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1623 0x00000000, 0x00000000, 0x05d6b2db, 0x6c924260 1624 }; 1625 1626 static const struct athn_gain ar9485_1_1_tx_gain = { 1627 __arraycount(ar9485_1_1_tx_gain_regs), 1628 ar9485_1_1_tx_gain_regs, 1629 NULL, /* 2GHz only. */ 1630 ar9485_1_1_tx_gain_vals_2g 1631 }; 1632 1633 /* 1634 * AR9380 2.2 Rx gains. 1635 */ 1636 static const uint16_t ar9380_2_2_rx_gain_regs[] = { 1637 P(0x0a000), P(0x0a004), P(0x0a008), P(0x0a00c), P(0x0a010), 1638 P(0x0a014), P(0x0a018), P(0x0a01c), P(0x0a020), P(0x0a024), 1639 P(0x0a028), P(0x0a02c), P(0x0a030), P(0x0a034), P(0x0a038), 1640 P(0x0a03c), P(0x0a040), P(0x0a044), P(0x0a048), P(0x0a04c), 1641 P(0x0a050), P(0x0a054), P(0x0a058), P(0x0a05c), P(0x0a060), 1642 P(0x0a064), P(0x0a068), P(0x0a06c), P(0x0a070), P(0x0a074), 1643 P(0x0a078), P(0x0a07c), P(0x0a080), P(0x0a084), P(0x0a088), 1644 P(0x0a08c), P(0x0a090), P(0x0a094), P(0x0a098), P(0x0a09c), 1645 P(0x0a0a0), P(0x0a0a4), P(0x0a0a8), P(0x0a0ac), P(0x0a0b0), 1646 P(0x0a0b4), P(0x0a0b8), P(0x0a0bc), P(0x0a0c0), P(0x0a0c4), 1647 P(0x0a0c8), P(0x0a0cc), P(0x0a0d0), P(0x0a0d4), P(0x0a0d8), 1648 P(0x0a0dc), P(0x0a0e0), P(0x0a0e4), P(0x0a0e8), P(0x0a0ec), 1649 P(0x0a0f0), P(0x0a0f4), P(0x0a0f8), P(0x0a0fc), P(0x0a100), 1650 P(0x0a104), P(0x0a108), P(0x0a10c), P(0x0a110), P(0x0a114), 1651 P(0x0a118), P(0x0a11c), P(0x0a120), P(0x0a124), P(0x0a128), 1652 P(0x0a12c), P(0x0a130), P(0x0a134), P(0x0a138), P(0x0a13c), 1653 P(0x0a140), P(0x0a144), P(0x0a148), P(0x0a14c), P(0x0a150), 1654 P(0x0a154), P(0x0a158), P(0x0a15c), P(0x0a160), P(0x0a164), 1655 P(0x0a168), P(0x0a16c), P(0x0a170), P(0x0a174), P(0x0a178), 1656 P(0x0a17c), P(0x0a180), P(0x0a184), P(0x0a188), P(0x0a18c), 1657 P(0x0a190), P(0x0a194), P(0x0a198), P(0x0a19c), P(0x0a1a0), 1658 P(0x0a1a4), P(0x0a1a8), P(0x0a1ac), P(0x0a1b0), P(0x0a1b4), 1659 P(0x0a1b8), P(0x0a1bc), P(0x0a1c0), P(0x0a1c4), P(0x0a1c8), 1660 P(0x0a1cc), P(0x0a1d0), P(0x0a1d4), P(0x0a1d8), P(0x0a1dc), 1661 P(0x0a1e0), P(0x0a1e4), P(0x0a1e8), P(0x0a1ec), P(0x0a1f0), 1662 P(0x0a1f4), P(0x0a1f8), P(0x0a1fc), P(0x0b000), P(0x0b004), 1663 P(0x0b008), P(0x0b00c), P(0x0b010), P(0x0b014), P(0x0b018), 1664 P(0x0b01c), P(0x0b020), P(0x0b024), P(0x0b028), P(0x0b02c), 1665 P(0x0b030), P(0x0b034), P(0x0b038), P(0x0b03c), P(0x0b040), 1666 P(0x0b044), P(0x0b048), P(0x0b04c), P(0x0b050), P(0x0b054), 1667 P(0x0b058), P(0x0b05c), P(0x0b060), P(0x0b064), P(0x0b068), 1668 P(0x0b06c), P(0x0b070), P(0x0b074), P(0x0b078), P(0x0b07c), 1669 P(0x0b080), P(0x0b084), P(0x0b088), P(0x0b08c), P(0x0b090), 1670 P(0x0b094), P(0x0b098), P(0x0b09c), P(0x0b0a0), P(0x0b0a4), 1671 P(0x0b0a8), P(0x0b0ac), P(0x0b0b0), P(0x0b0b4), P(0x0b0b8), 1672 P(0x0b0bc), P(0x0b0c0), P(0x0b0c4), P(0x0b0c8), P(0x0b0cc), 1673 P(0x0b0d0), P(0x0b0d4), P(0x0b0d8), P(0x0b0dc), P(0x0b0e0), 1674 P(0x0b0e4), P(0x0b0e8), P(0x0b0ec), P(0x0b0f0), P(0x0b0f4), 1675 P(0x0b0f8), P(0x0b0fc), P(0x0b100), P(0x0b104), P(0x0b108), 1676 P(0x0b10c), P(0x0b110), P(0x0b114), P(0x0b118), P(0x0b11c), 1677 P(0x0b120), P(0x0b124), P(0x0b128), P(0x0b12c), P(0x0b130), 1678 P(0x0b134), P(0x0b138), P(0x0b13c), P(0x0b140), P(0x0b144), 1679 P(0x0b148), P(0x0b14c), P(0x0b150), P(0x0b154), P(0x0b158), 1680 P(0x0b15c), P(0x0b160), P(0x0b164), P(0x0b168), P(0x0b16c), 1681 P(0x0b170), P(0x0b174), P(0x0b178), P(0x0b17c), P(0x0b180), 1682 P(0x0b184), P(0x0b188), P(0x0b18c), P(0x0b190), P(0x0b194), 1683 P(0x0b198), P(0x0b19c), P(0x0b1a0), P(0x0b1a4), P(0x0b1a8), 1684 P(0x0b1ac), P(0x0b1b0), P(0x0b1b4), P(0x0b1b8), P(0x0b1bc), 1685 P(0x0b1c0), P(0x0b1c4), P(0x0b1c8), P(0x0b1cc), P(0x0b1d0), 1686 P(0x0b1d4), P(0x0b1d8), P(0x0b1dc), P(0x0b1e0), P(0x0b1e4), 1687 P(0x0b1e8), P(0x0b1ec), P(0x0b1f0), P(0x0b1f4), P(0x0b1f8), 1688 P(0x0b1fc) 1689 }; 1690 1691 static const uint32_t ar9380_2_2_rx_gain_vals[] = { 1692 0x00010000, 0x00030002, 0x00050004, 0x00810080, 0x00830082, 1693 0x01810180, 0x01830182, 0x01850184, 0x01890188, 0x018b018a, 1694 0x018d018c, 0x01910190, 0x01930192, 0x01950194, 0x038a0196, 1695 0x038c038b, 0x0390038d, 0x03920391, 0x03940393, 0x03960395, 1696 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1697 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1698 0x00000000, 0x00000000, 0x22222229, 0x1d1d1d1d, 0x1d1d1d1d, 1699 0x1d1d1d1d, 0x171d1d1d, 0x11111717, 0x00030311, 0x00000000, 1700 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1701 0x00000000, 0x00000000, 0x00000000, 0x001f0000, 0x01000101, 1702 0x011e011f, 0x011c011d, 0x02030204, 0x02010202, 0x021f0200, 1703 0x0302021e, 0x03000301, 0x031e031f, 0x0402031d, 0x04000401, 1704 0x041e041f, 0x0502041d, 0x05000501, 0x051e051f, 0x06010602, 1705 0x061f0600, 0x061d061e, 0x07020703, 0x07000701, 0x00000000, 1706 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1707 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1708 0x001f0000, 0x01000101, 0x011e011f, 0x011c011d, 0x02030204, 1709 0x02010202, 0x021f0200, 0x0302021e, 0x03000301, 0x031e031f, 1710 0x0402031d, 0x04000401, 0x041e041f, 0x0502041d, 0x05000501, 1711 0x051e051f, 0x06010602, 0x061f0600, 0x061d061e, 0x07020703, 1712 0x07000701, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1713 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1714 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1715 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1716 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000396, 1717 0x00000396, 0x00000396, 0x00000196, 0x00010000, 0x00030002, 1718 0x00050004, 0x00810080, 0x00830082, 0x01810180, 0x01830182, 1719 0x01850184, 0x02810280, 0x02830282, 0x02850284, 0x02890288, 1720 0x028b028a, 0x0388028c, 0x038a0389, 0x038c038b, 0x0390038d, 1721 0x03920391, 0x03940393, 0x03960395, 0x00000000, 0x00000000, 1722 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1723 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1724 0x2a2d2f32, 0x21232328, 0x19191c1e, 0x12141417, 0x07070e0e, 1725 0x03030305, 0x00000003, 0x00000000, 0x00000000, 0x00000000, 1726 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1727 0x00000000, 0x003f0020, 0x00400041, 0x0140005f, 0x0160015f, 1728 0x017e017f, 0x02410242, 0x025f0240, 0x027f0260, 0x0341027e, 1729 0x035f0340, 0x037f0360, 0x04400441, 0x0460045f, 0x0541047f, 1730 0x055f0540, 0x057f0560, 0x06400641, 0x0660065f, 0x067e067f, 1731 0x07410742, 0x075f0740, 0x077f0760, 0x07800781, 0x07a0079f, 1732 0x07c107bf, 0x000007c0, 0x00000000, 0x00000000, 0x00000000, 1733 0x00000000, 0x00000000, 0x00000000, 0x003f0020, 0x00400041, 1734 0x0140005f, 0x0160015f, 0x017e017f, 0x02410242, 0x025f0240, 1735 0x027f0260, 0x0341027e, 0x035f0340, 0x037f0360, 0x04400441, 1736 0x0460045f, 0x0541047f, 0x055f0540, 0x057f0560, 0x06400641, 1737 0x0660065f, 0x067e067f, 0x07410742, 0x075f0740, 0x077f0760, 1738 0x07800781, 0x07a0079f, 0x07c107bf, 0x000007c0, 0x00000000, 1739 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1740 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1741 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1742 0x00000000, 0x00000000, 0x00000396, 0x00000396, 0x00000396, 1743 0x00000196 1744 }; 1745 1746 static const struct athn_gain ar9380_2_2_rx_gain = { 1747 __arraycount(ar9380_2_2_rx_gain_regs), 1748 ar9380_2_2_rx_gain_regs, 1749 ar9380_2_2_rx_gain_vals, 1750 ar9380_2_2_rx_gain_vals 1751 }; 1752 1753 /* 1754 * AR9380 2.2 without external low-noise amplifier Rx gains. 1755 */ 1756 static const uint32_t ar9380_2_2_rx_gain_wo_xlna_vals[] = { 1757 0x00010000, 0x00030002, 0x00050004, 0x00810080, 0x00830082, 1758 0x01810180, 0x01830182, 0x01850184, 0x01890188, 0x018b018a, 1759 0x018d018c, 0x03820190, 0x03840383, 0x03880385, 0x038a0389, 1760 0x038c038b, 0x0390038d, 0x03920391, 0x03940393, 0x03960395, 1761 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1762 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1763 0x00000000, 0x00000000, 0x29292929, 0x29292929, 0x29292929, 1764 0x29292929, 0x22292929, 0x1d1d2222, 0x0c111117, 0x00030303, 1765 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1766 0x00000000, 0x00000000, 0x00000000, 0x001f0000, 0x01000101, 1767 0x011e011f, 0x011c011d, 0x02030204, 0x02010202, 0x021f0200, 1768 0x0302021e, 0x03000301, 0x031e031f, 0x0402031d, 0x04000401, 1769 0x041e041f, 0x0502041d, 0x05000501, 0x051e051f, 0x06010602, 1770 0x061f0600, 0x061d061e, 0x07020703, 0x07000701, 0x00000000, 1771 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1772 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1773 0x001f0000, 0x01000101, 0x011e011f, 0x011c011d, 0x02030204, 1774 0x02010202, 0x021f0200, 0x0302021e, 0x03000301, 0x031e031f, 1775 0x0402031d, 0x04000401, 0x041e041f, 0x0502041d, 0x05000501, 1776 0x051e051f, 0x06010602, 0x061f0600, 0x061d061e, 0x07020703, 1777 0x07000701, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1778 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1779 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1780 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1781 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000396, 1782 0x00000396, 0x00000396, 0x00000196, 0x00010000, 0x00030002, 1783 0x00050004, 0x00810080, 0x00830082, 0x01810180, 0x01830182, 1784 0x01850184, 0x02810280, 0x02830282, 0x02850284, 0x02890288, 1785 0x028b028a, 0x0388028c, 0x038a0389, 0x038c038b, 0x0390038d, 1786 0x03920391, 0x03940393, 0x03960395, 0x00000000, 0x00000000, 1787 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1788 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1789 0x32323232, 0x2f2f3232, 0x23282a2d, 0x1c1e2123, 0x14171919, 1790 0x0e0e1214, 0x03050707, 0x00030303, 0x00000000, 0x00000000, 1791 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1792 0x00000000, 0x003f0020, 0x00400041, 0x0140005f, 0x0160015f, 1793 0x017e017f, 0x02410242, 0x025f0240, 0x027f0260, 0x0341027e, 1794 0x035f0340, 0x037f0360, 0x04400441, 0x0460045f, 0x0541047f, 1795 0x055f0540, 0x057f0560, 0x06400641, 0x0660065f, 0x067e067f, 1796 0x07410742, 0x075f0740, 0x077f0760, 0x07800781, 0x07a0079f, 1797 0x07c107bf, 0x000007c0, 0x00000000, 0x00000000, 0x00000000, 1798 0x00000000, 0x00000000, 0x00000000, 0x003f0020, 0x00400041, 1799 0x0140005f, 0x0160015f, 0x017e017f, 0x02410242, 0x025f0240, 1800 0x027f0260, 0x0341027e, 0x035f0340, 0x037f0360, 0x04400441, 1801 0x0460045f, 0x0541047f, 0x055f0540, 0x057f0560, 0x06400641, 1802 0x0660065f, 0x067e067f, 0x07410742, 0x075f0740, 0x077f0760, 1803 0x07800781, 0x07a0079f, 0x07c107bf, 0x000007c0, 0x00000000, 1804 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1805 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1806 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1807 0x00000000, 0x00000000, 0x00000396, 0x00000396, 0x00000396, 1808 0x00000196 1809 }; 1810 1811 static const struct athn_gain ar9380_2_2_rx_gain_wo_xlna = { 1812 __arraycount(ar9380_2_2_rx_gain_regs), 1813 ar9380_2_2_rx_gain_regs, 1814 ar9380_2_2_rx_gain_wo_xlna_vals, 1815 ar9380_2_2_rx_gain_wo_xlna_vals 1816 }; 1817 1818 /* 1819 * AR9485 1.1 Rx gains. 1820 */ 1821 static const uint16_t ar9485_1_1_rx_gain_regs[] = { 1822 P(0x0a000), P(0x0a004), P(0x0a008), P(0x0a00c), P(0x0a010), 1823 P(0x0a014), P(0x0a018), P(0x0a01c), P(0x0a020), P(0x0a024), 1824 P(0x0a028), P(0x0a02c), P(0x0a030), P(0x0a034), P(0x0a038), 1825 P(0x0a03c), P(0x0a040), P(0x0a044), P(0x0a048), P(0x0a04c), 1826 P(0x0a050), P(0x0a054), P(0x0a058), P(0x0a05c), P(0x0a060), 1827 P(0x0a064), P(0x0a068), P(0x0a06c), P(0x0a070), P(0x0a074), 1828 P(0x0a078), P(0x0a07c), P(0x0a080), P(0x0a084), P(0x0a088), 1829 P(0x0a08c), P(0x0a090), P(0x0a094), P(0x0a098), P(0x0a09c), 1830 P(0x0a0a0), P(0x0a0a4), P(0x0a0a8), P(0x0a0ac), P(0x0a0b0), 1831 P(0x0a0b4), P(0x0a0b8), P(0x0a0bc), P(0x0a0c0), P(0x0a0c4), 1832 P(0x0a0c8), P(0x0a0cc), P(0x0a0d0), P(0x0a0d4), P(0x0a0d8), 1833 P(0x0a0dc), P(0x0a0e0), P(0x0a0e4), P(0x0a0e8), P(0x0a0ec), 1834 P(0x0a0f0), P(0x0a0f4), P(0x0a0f8), P(0x0a0fc), P(0x0a100), 1835 P(0x0a104), P(0x0a108), P(0x0a10c), P(0x0a110), P(0x0a114), 1836 P(0x0a118), P(0x0a11c), P(0x0a120), P(0x0a124), P(0x0a128), 1837 P(0x0a12c), P(0x0a130), P(0x0a134), P(0x0a138), P(0x0a13c), 1838 P(0x0a140), P(0x0a144), P(0x0a148), P(0x0a14c), P(0x0a150), 1839 P(0x0a154), P(0x0a158), P(0x0a15c), P(0x0a160), P(0x0a164), 1840 P(0x0a168), P(0x0a16c), P(0x0a170), P(0x0a174), P(0x0a178), 1841 P(0x0a17c), P(0x0a180), P(0x0a184), P(0x0a188), P(0x0a18c), 1842 P(0x0a190), P(0x0a194), P(0x0a198), P(0x0a19c), P(0x0a1a0), 1843 P(0x0a1a4), P(0x0a1a8), P(0x0a1ac), P(0x0a1b0), P(0x0a1b4), 1844 P(0x0a1b8), P(0x0a1bc), P(0x0a1c0), P(0x0a1c4), P(0x0a1c8), 1845 P(0x0a1cc), P(0x0a1d0), P(0x0a1d4), P(0x0a1d8), P(0x0a1dc), 1846 P(0x0a1e0), P(0x0a1e4), P(0x0a1e8), P(0x0a1ec), P(0x0a1f0), 1847 P(0x0a1f4), P(0x0a1f8), P(0x0a1fc) 1848 }; 1849 1850 static const uint32_t ar9485_1_1_rx_gain_vals[] = { 1851 0x00060005, 0x00810080, 0x00830082, 0x00850084, 0x01820181, 1852 0x01840183, 0x01880185, 0x018a0189, 0x02850284, 0x02890288, 1853 0x028b028a, 0x03850384, 0x03890388, 0x038b038a, 0x038d038c, 1854 0x03910390, 0x03930392, 0x03950394, 0x00000396, 0x00000000, 1855 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1856 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1857 0x00000000, 0x00000000, 0x28282828, 0x28282828, 0x28282828, 1858 0x28282828, 0x28282828, 0x24242428, 0x171e1e1e, 0x02020b0b, 1859 0x02020202, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1860 0x00000000, 0x00000000, 0x00000000, 0x22072208, 0x22052206, 1861 0x22032204, 0x22012202, 0x221f2200, 0x221d221e, 0x33023303, 1862 0x33003301, 0x331e331f, 0x4402331d, 0x44004401, 0x441e441f, 1863 0x55025503, 0x55005501, 0x551e551f, 0x6602551d, 0x66006601, 1864 0x661e661f, 0x7703661d, 0x77017702, 0x00007700, 0x00000000, 1865 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1866 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1867 0x001f0000, 0x111f1100, 0x111d111e, 0x111b111c, 0x22032204, 1868 0x22012202, 0x221f2200, 0x221d221e, 0x33013302, 0x331f3300, 1869 0x4402331e, 0x44004401, 0x441e441f, 0x55015502, 0x551f5500, 1870 0x6602551e, 0x66006601, 0x661e661f, 0x7703661d, 0x77017702, 1871 0x00007700, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1872 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1873 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1874 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1875 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000396, 1876 0x00000396, 0x00000396, 0x00000296 1877 }; 1878 1879 static const struct athn_gain ar9485_1_1_rx_gain = { 1880 __arraycount(ar9485_1_1_rx_gain_regs), 1881 ar9485_1_1_rx_gain_regs, 1882 NULL, /* 2GHz only. */ 1883 ar9485_1_1_rx_gain_vals 1884 }; 1885 1886 /* 1887 * Serializer/Deserializer programming. 1888 */ 1889 1890 static const uint32_t ar9380_2_2_serdes_regs[] = { 1891 AR_PCIE_SERDES, 1892 AR_PCIE_SERDES, 1893 AR_PCIE_SERDES2 1894 }; 1895 1896 static const uint32_t ar9380_2_2_serdes_vals[] = { 1897 0x08212e5e, 1898 0x0008003b, 1899 0x00000000 1900 }; 1901 1902 static const struct athn_serdes ar9380_2_2_serdes = { 1903 __arraycount(ar9380_2_2_serdes_vals), 1904 ar9380_2_2_serdes_regs, 1905 ar9380_2_2_serdes_vals 1906 }; 1907 1908 static const uint32_t ar9485_1_1_serdes_regs[] = { 1909 0x00018c00, 1910 0x00018c04, 1911 0x00018c08 1912 }; 1913 1914 static const uint32_t ar9485_1_1_serdes_vals[] = { 1915 0x18013e5e, 1916 0x000801d8, 1917 0x0000080c 1918 }; 1919 1920 static const struct athn_serdes ar9485_1_1_serdes = { 1921 __arraycount(ar9485_1_1_serdes_vals), 1922 ar9485_1_1_serdes_regs, 1923 ar9485_1_1_serdes_vals 1924 }; 1925 1926 #endif /* _ARN9380REG_H_ */ 1927