1 1.1 alc /* 2 1.1 alc * Copyright (c) 2002-2008 Sam Leffler, Errno Consulting 3 1.1 alc * Copyright (c) 2002-2008 Atheros Communications, Inc. 4 1.1 alc * 5 1.1 alc * Permission to use, copy, modify, and/or distribute this software for any 6 1.1 alc * purpose with or without fee is hereby granted, provided that the above 7 1.1 alc * copyright notice and this permission notice appear in all copies. 8 1.1 alc * 9 1.1 alc * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 1.1 alc * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 1.1 alc * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 1.1 alc * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 1.1 alc * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 1.1 alc * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 1.1 alc * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 1.1 alc * 17 1.1 alc * $Id: ah_eeprom_v3.h,v 1.1.1.1 2008/12/11 04:46:25 alc Exp $ 18 1.1 alc */ 19 1.1 alc #ifndef _ATH_AH_EEPROM_V3_H_ 20 1.1 alc #define _ATH_AH_EEPROM_V3_H_ 21 1.1 alc 22 1.1 alc #include "ah_eeprom.h" 23 1.1 alc 24 1.1 alc /* EEPROM defines for Version 2 & 3 AR5211 chips */ 25 1.1 alc #define AR_EEPROM_RFSILENT 0x0f /* RF Silent/Clock Run Enable */ 26 1.1 alc #define AR_EEPROM_MAC(i) (0x1d+(i)) /* MAC address word */ 27 1.1 alc #define AR_EEPROM_MAGIC 0x3d /* magic number */ 28 1.1 alc #define AR_EEPROM_PROTECT 0x3f /* EEPROM protect bits */ 29 1.1 alc #define AR_EEPROM_PROTECT_PCIE 0x01 /* EEPROM protect bits for Condor/Swan*/ 30 1.1 alc #define AR_EEPROM_REG_DOMAIN 0xbf /* current regulatory domain */ 31 1.1 alc #define AR_EEPROM_ATHEROS_BASE 0xc0 /* Base of Atheros-specific data */ 32 1.1 alc #define AR_EEPROM_ATHEROS(i) (AR_EEPROM_ATHEROS_BASE+(i)) 33 1.1 alc #define AR_EEPROM_ATHEROS_MAX (0x400-AR_EEPROM_ATHEROS_BASE) 34 1.1 alc #define AR_EEPROM_VERSION AR_EEPROM_ATHEROS(1) 35 1.1 alc 36 1.1 alc /* FLASH(EEPROM) Defines for AR531X chips */ 37 1.1 alc #define AR_EEPROM_SIZE_LOWER 0x1b /* size info -- lower */ 38 1.1 alc #define AR_EEPROM_SIZE_UPPER 0x1c /* size info -- upper */ 39 1.1 alc #define AR_EEPROM_SIZE_UPPER_MASK 0xfff0 40 1.1 alc #define AR_EEPROM_SIZE_UPPER_SHIFT 4 41 1.1 alc #define AR_EEPROM_SIZE_ENDLOC_SHIFT 12 42 1.1 alc #define AR_EEPROM_ATHEROS_MAX_LOC 0x400 43 1.1 alc #define AR_EEPROM_ATHEROS_MAX_OFF (AR_EEPROM_ATHEROS_MAX_LOC-AR_EEPROM_ATHEROS_BASE) 44 1.1 alc 45 1.1 alc /* regulatory capabilities offsets */ 46 1.1 alc #define AR_EEPROM_REG_CAPABILITIES_OFFSET 0xCA 47 1.1 alc #define AR_EEPROM_REG_CAPABILITIES_OFFSET_PRE4_0 0xCF /* prior to 4.0 */ 48 1.1 alc 49 1.1 alc /* regulatory capabilities */ 50 1.1 alc #define AR_EEPROM_EEREGCAP_EN_FCC_MIDBAND 0x0040 51 1.1 alc #define AR_EEPROM_EEREGCAP_EN_KK_U1_EVEN 0x0080 52 1.1 alc #define AR_EEPROM_EEREGCAP_EN_KK_U2 0x0100 53 1.1 alc #define AR_EEPROM_EEREGCAP_EN_KK_MIDBAND 0x0200 54 1.1 alc #define AR_EEPROM_EEREGCAP_EN_KK_U1_ODD 0x0400 55 1.1 alc #define AR_EEPROM_EEREGCAP_EN_KK_NEW_11A 0x0800 56 1.1 alc 57 1.1 alc /* regulatory capabilities prior to eeprom version 4.0 */ 58 1.1 alc #define AR_EEPROM_EEREGCAP_EN_KK_U1_ODD_PRE4_0 0x4000 59 1.1 alc #define AR_EEPROM_EEREGCAP_EN_KK_NEW_11A_PRE4_0 0x8000 60 1.1 alc 61 1.1 alc /* 62 1.1 alc * AR2413 (includes AR5413) 63 1.1 alc */ 64 1.1 alc #define AR_EEPROM_SERIAL_NUM_OFFSET 0xB0 /* EEPROM serial number */ 65 1.1 alc #define AR_EEPROM_SERIAL_NUM_SIZE 12 /* EEPROM serial number size */ 66 1.1 alc #define AR_EEPROM_CAPABILITIES_OFFSET 0xC9 /* EEPROM Location of capabilities */ 67 1.1 alc 68 1.1 alc #define AR_EEPROM_EEPCAP_COMPRESS_DIS 0x0001 69 1.1 alc #define AR_EEPROM_EEPCAP_AES_DIS 0x0002 70 1.1 alc #define AR_EEPROM_EEPCAP_FASTFRAME_DIS 0x0004 71 1.1 alc #define AR_EEPROM_EEPCAP_BURST_DIS 0x0008 72 1.1 alc #define AR_EEPROM_EEPCAP_MAXQCU 0x01F0 73 1.1 alc #define AR_EEPROM_EEPCAP_MAXQCU_S 4 74 1.1 alc #define AR_EEPROM_EEPCAP_HEAVY_CLIP_EN 0x0200 75 1.1 alc #define AR_EEPROM_EEPCAP_KC_ENTRIES 0xF000 76 1.1 alc #define AR_EEPROM_EEPCAP_KC_ENTRIES_S 12 77 1.1 alc 78 1.1 alc /* XXX used to index various EEPROM-derived data structures */ 79 1.1 alc enum { 80 1.1 alc headerInfo11A = 0, 81 1.1 alc headerInfo11B = 1, 82 1.1 alc headerInfo11G = 2, 83 1.1 alc }; 84 1.1 alc 85 1.1 alc #define GROUPS_OFFSET3_2 0x100 /* groups offset for ver3.2 and earlier */ 86 1.1 alc #define GROUPS_OFFSET3_3 0x150 /* groups offset for ver3.3 */ 87 1.1 alc /* relative offset of GROUPi to GROUPS_OFFSET */ 88 1.1 alc #define GROUP1_OFFSET 0x0 89 1.1 alc #define GROUP2_OFFSET 0x5 90 1.1 alc #define GROUP3_OFFSET 0x37 91 1.1 alc #define GROUP4_OFFSET 0x46 92 1.1 alc #define GROUP5_OFFSET 0x55 93 1.1 alc #define GROUP6_OFFSET 0x65 94 1.1 alc #define GROUP7_OFFSET 0x69 95 1.1 alc #define GROUP8_OFFSET 0x6f 96 1.1 alc 97 1.1 alc /* RF silent fields in EEPROM */ 98 1.1 alc #define AR_EEPROM_RFSILENT_GPIO_SEL 0x001c 99 1.1 alc #define AR_EEPROM_RFSILENT_GPIO_SEL_S 2 100 1.1 alc #define AR_EEPROM_RFSILENT_POLARITY 0x0002 101 1.1 alc #define AR_EEPROM_RFSILENT_POLARITY_S 1 102 1.1 alc 103 1.1 alc /* Protect Bits RP is read protect, WP is write protect */ 104 1.1 alc #define AR_EEPROM_PROTECT_RP_0_31 0x0001 105 1.1 alc #define AR_EEPROM_PROTECT_WP_0_31 0x0002 106 1.1 alc #define AR_EEPROM_PROTECT_RP_32_63 0x0004 107 1.1 alc #define AR_EEPROM_PROTECT_WP_32_63 0x0008 108 1.1 alc #define AR_EEPROM_PROTECT_RP_64_127 0x0010 109 1.1 alc #define AR_EEPROM_PROTECT_WP_64_127 0x0020 110 1.1 alc #define AR_EEPROM_PROTECT_RP_128_191 0x0040 111 1.1 alc #define AR_EEPROM_PROTECT_WP_128_191 0x0080 112 1.1 alc #define AR_EEPROM_PROTECT_RP_192_207 0x0100 113 1.1 alc #define AR_EEPROM_PROTECT_WP_192_207 0x0200 114 1.1 alc #define AR_EEPROM_PROTECT_RP_208_223 0x0400 115 1.1 alc #define AR_EEPROM_PROTECT_WP_208_223 0x0800 116 1.1 alc #define AR_EEPROM_PROTECT_RP_224_239 0x1000 117 1.1 alc #define AR_EEPROM_PROTECT_WP_224_239 0x2000 118 1.1 alc #define AR_EEPROM_PROTECT_RP_240_255 0x4000 119 1.1 alc #define AR_EEPROM_PROTECT_WP_240_255 0x8000 120 1.1 alc 121 1.1 alc #define AR_EEPROM_MODAL_SPURS 5 122 1.1 alc #define AR_SPUR_5413_1 1640 /* Freq 2464 */ 123 1.1 alc #define AR_SPUR_5413_2 1200 /* Freq 2420 */ 124 1.1 alc 125 1.1 alc /* 126 1.1 alc * EEPROM fixed point conversion scale factors. 127 1.1 alc * NB: if you change one be sure to keep the other in sync. 128 1.1 alc */ 129 1.1 alc #define EEP_SCALE 100 /* conversion scale to avoid fp arith */ 130 1.1 alc #define EEP_DELTA 10 /* SCALE/10, to avoid arith divide */ 131 1.1 alc 132 1.1 alc #define PWR_MIN 0 133 1.1 alc #define PWR_MAX 3150 /* 31.5 * SCALE */ 134 1.1 alc #define PWR_STEP 50 /* 0.5 * SCALE */ 135 1.1 alc /* Keep 2 above defines together */ 136 1.1 alc 137 1.1 alc #define NUM_11A_EEPROM_CHANNELS 10 138 1.1 alc #define NUM_2_4_EEPROM_CHANNELS 3 139 1.1 alc #define NUM_PCDAC_VALUES 11 140 1.1 alc #define NUM_TEST_FREQUENCIES 8 141 1.1 alc #define NUM_EDGES 8 142 1.1 alc #define NUM_INTERCEPTS 11 143 1.1 alc #define FREQ_MASK 0x7f 144 1.1 alc #define FREQ_MASK_3_3 0xff /* expanded in version 3.3 */ 145 1.1 alc #define PCDAC_MASK 0x3f 146 1.1 alc #define POWER_MASK 0x3f 147 1.1 alc #define NON_EDGE_FLAG_MASK 0x40 148 1.1 alc #define CHANNEL_POWER_INFO 8 149 1.1 alc #define OBDB_UNSET 0xffff 150 1.1 alc #define CHANNEL_UNUSED 0xff 151 1.1 alc #define SCALE_OC_DELTA(_x) (((_x) * 2) / 10) 152 1.1 alc 153 1.1 alc /* Used during pcdac table construction */ 154 1.1 alc #define PCDAC_START 1 155 1.1 alc #define PCDAC_STOP 63 156 1.1 alc #define PCDAC_STEP 1 157 1.1 alc #define PWR_TABLE_SIZE 64 158 1.1 alc #define MAX_RATE_POWER 63 159 1.1 alc 160 1.1 alc /* Used during power/rate table construction */ 161 1.1 alc #define NUM_CTLS 16 162 1.1 alc #define NUM_CTLS_3_3 32 /* expanded in version 3.3 */ 163 1.1 alc #define NUM_CTLS_MAX NUM_CTLS_3_3 164 1.1 alc 165 1.1 alc typedef struct fullPcdacStruct { 166 1.1 alc uint16_t channelValue; 167 1.1 alc uint16_t pcdacMin; 168 1.1 alc uint16_t pcdacMax; 169 1.1 alc uint16_t numPcdacValues; 170 1.1 alc uint16_t PcdacValues[64]; 171 1.1 alc /* power is 32bit since in dest it is scaled */ 172 1.1 alc int16_t PwrValues[64]; 173 1.1 alc } FULL_PCDAC_STRUCT; 174 1.1 alc 175 1.1 alc typedef struct dataPerChannel { 176 1.1 alc uint16_t channelValue; 177 1.1 alc uint16_t pcdacMin; 178 1.1 alc uint16_t pcdacMax; 179 1.1 alc uint16_t numPcdacValues; 180 1.1 alc uint16_t PcdacValues[NUM_PCDAC_VALUES]; 181 1.1 alc /* NB: power is 32bit since in dest it is scaled */ 182 1.1 alc int16_t PwrValues[NUM_PCDAC_VALUES]; 183 1.1 alc } DATA_PER_CHANNEL; 184 1.1 alc 185 1.1 alc /* points to the appropriate pcdac structs in the above struct based on mode */ 186 1.1 alc typedef struct pcdacsEeprom { 187 1.1 alc const uint16_t *pChannelList; 188 1.1 alc uint16_t numChannels; 189 1.1 alc const DATA_PER_CHANNEL *pDataPerChannel; 190 1.1 alc } PCDACS_EEPROM; 191 1.1 alc 192 1.1 alc typedef struct trgtPowerInfo { 193 1.1 alc uint16_t twicePwr54; 194 1.1 alc uint16_t twicePwr48; 195 1.1 alc uint16_t twicePwr36; 196 1.1 alc uint16_t twicePwr6_24; 197 1.1 alc uint16_t testChannel; 198 1.1 alc } TRGT_POWER_INFO; 199 1.1 alc 200 1.1 alc typedef struct trgtPowerAllModes { 201 1.1 alc uint16_t numTargetPwr_11a; 202 1.1 alc TRGT_POWER_INFO trgtPwr_11a[NUM_TEST_FREQUENCIES]; 203 1.1 alc uint16_t numTargetPwr_11g; 204 1.1 alc TRGT_POWER_INFO trgtPwr_11g[3]; 205 1.1 alc uint16_t numTargetPwr_11b; 206 1.1 alc TRGT_POWER_INFO trgtPwr_11b[2]; 207 1.1 alc } TRGT_POWER_ALL_MODES; 208 1.1 alc 209 1.1 alc typedef struct cornerCalInfo { 210 1.1 alc uint16_t gSel; 211 1.1 alc uint16_t pd84; 212 1.1 alc uint16_t pd90; 213 1.1 alc uint16_t clip; 214 1.1 alc } CORNER_CAL_INFO; 215 1.1 alc 216 1.1 alc /* 217 1.1 alc * EEPROM version 4 definitions 218 1.1 alc */ 219 1.1 alc #define NUM_XPD_PER_CHANNEL 4 220 1.1 alc #define NUM_POINTS_XPD0 4 221 1.1 alc #define NUM_POINTS_XPD3 3 222 1.1 alc #define IDEAL_10dB_INTERCEPT_2G 35 223 1.1 alc #define IDEAL_10dB_INTERCEPT_5G 55 224 1.1 alc 225 1.1 alc #define TENX_OFDM_CCK_DELTA_INIT 15 /* power 1.5 dbm */ 226 1.1 alc #define TENX_CH14_FILTER_CCK_DELTA_INIT 15 /* power 1.5 dbm */ 227 1.1 alc #define CCK_OFDM_GAIN_DELTA 15 228 1.1 alc 229 1.1 alc #define NUM_TARGET_POWER_LOCATIONS_11B 4 230 1.1 alc #define NUM_TARGET_POWER_LOCATIONS_11G 6 231 1.1 alc 232 1.1 alc 233 1.1 alc typedef struct { 234 1.1 alc uint16_t xpd_gain; 235 1.1 alc uint16_t numPcdacs; 236 1.1 alc uint16_t pcdac[NUM_POINTS_XPD0]; 237 1.1 alc int16_t pwr_t4[NUM_POINTS_XPD0]; /* or gainF */ 238 1.1 alc } EXPN_DATA_PER_XPD_5112; 239 1.1 alc 240 1.1 alc typedef struct { 241 1.1 alc uint16_t channelValue; 242 1.1 alc int16_t maxPower_t4; 243 1.1 alc EXPN_DATA_PER_XPD_5112 pDataPerXPD[NUM_XPD_PER_CHANNEL]; 244 1.1 alc } EXPN_DATA_PER_CHANNEL_5112; 245 1.1 alc 246 1.1 alc typedef struct { 247 1.1 alc uint16_t *pChannels; 248 1.1 alc uint16_t numChannels; 249 1.1 alc uint16_t xpdMask; /* mask of permitted xpd_gains */ 250 1.1 alc EXPN_DATA_PER_CHANNEL_5112 *pDataPerChannel; 251 1.1 alc } EEPROM_POWER_EXPN_5112; 252 1.1 alc 253 1.1 alc typedef struct { 254 1.1 alc uint16_t channelValue; 255 1.1 alc uint16_t pcd1_xg0; 256 1.1 alc int16_t pwr1_xg0; 257 1.1 alc uint16_t pcd2_delta_xg0; 258 1.1 alc int16_t pwr2_xg0; 259 1.1 alc uint16_t pcd3_delta_xg0; 260 1.1 alc int16_t pwr3_xg0; 261 1.1 alc uint16_t pcd4_delta_xg0; 262 1.1 alc int16_t pwr4_xg0; 263 1.1 alc int16_t maxPower_t4; 264 1.1 alc int16_t pwr1_xg3; /* pcdac = 20 */ 265 1.1 alc int16_t pwr2_xg3; /* pcdac = 35 */ 266 1.1 alc int16_t pwr3_xg3; /* pcdac = 63 */ 267 1.1 alc /* XXX - Should be pwr1_xg2, etc to agree with documentation */ 268 1.1 alc } EEPROM_DATA_PER_CHANNEL_5112; 269 1.1 alc 270 1.1 alc typedef struct { 271 1.1 alc uint16_t pChannels[NUM_11A_EEPROM_CHANNELS]; 272 1.1 alc uint16_t numChannels; 273 1.1 alc uint16_t xpdMask; /* mask of permitted xpd_gains */ 274 1.1 alc EEPROM_DATA_PER_CHANNEL_5112 pDataPerChannel[NUM_11A_EEPROM_CHANNELS]; 275 1.1 alc } EEPROM_POWER_5112; 276 1.1 alc 277 1.1 alc /* 278 1.1 alc * EEPROM version 5 definitions (Griffin, et. al.). 279 1.1 alc */ 280 1.1 alc #define NUM_2_4_EEPROM_CHANNELS_2413 4 281 1.1 alc #define NUM_11A_EEPROM_CHANNELS_2413 10 282 1.1 alc #define PWR_TABLE_SIZE_2413 128 283 1.1 alc 284 1.1 alc /* Used during pdadc construction */ 285 1.1 alc #define MAX_NUM_PDGAINS_PER_CHANNEL 4 286 1.1 alc #define NUM_PDGAINS_PER_CHANNEL 2 287 1.1 alc #define NUM_POINTS_LAST_PDGAIN 5 288 1.1 alc #define NUM_POINTS_OTHER_PDGAINS 4 289 1.1 alc #define XPD_GAIN1_GEN5 3 290 1.1 alc #define XPD_GAIN2_GEN5 1 291 1.1 alc #define MAX_PWR_RANGE_IN_HALF_DB 64 292 1.1 alc #define PD_GAIN_BOUNDARY_STRETCH_IN_HALF_DB 4 293 1.1 alc 294 1.1 alc typedef struct { 295 1.1 alc uint16_t pd_gain; 296 1.1 alc uint16_t numVpd; 297 1.1 alc uint16_t Vpd[NUM_POINTS_LAST_PDGAIN]; 298 1.1 alc int16_t pwr_t4[NUM_POINTS_LAST_PDGAIN]; /* or gainF */ 299 1.1 alc } RAW_DATA_PER_PDGAIN_2413; 300 1.1 alc 301 1.1 alc typedef struct { 302 1.1 alc uint16_t channelValue; 303 1.1 alc int16_t maxPower_t4; 304 1.1 alc uint16_t numPdGains; /* # Pd Gains per channel */ 305 1.1 alc RAW_DATA_PER_PDGAIN_2413 pDataPerPDGain[MAX_NUM_PDGAINS_PER_CHANNEL]; 306 1.1 alc } RAW_DATA_PER_CHANNEL_2413; 307 1.1 alc 308 1.1 alc /* XXX: assumes NUM_11A_EEPROM_CHANNELS_2413 >= NUM_2_4_EEPROM_CHANNELS_2413 ??? */ 309 1.1 alc typedef struct { 310 1.1 alc uint16_t pChannels[NUM_11A_EEPROM_CHANNELS_2413]; 311 1.1 alc uint16_t numChannels; 312 1.1 alc uint16_t xpd_mask; /* mask of permitted xpd_gains */ 313 1.1 alc RAW_DATA_PER_CHANNEL_2413 pDataPerChannel[NUM_11A_EEPROM_CHANNELS_2413]; 314 1.1 alc } RAW_DATA_STRUCT_2413; 315 1.1 alc 316 1.1 alc typedef struct { 317 1.1 alc uint16_t channelValue; 318 1.1 alc uint16_t numPdGains; 319 1.1 alc uint16_t Vpd_I[MAX_NUM_PDGAINS_PER_CHANNEL]; 320 1.1 alc int16_t pwr_I[MAX_NUM_PDGAINS_PER_CHANNEL]; 321 1.1 alc uint16_t Vpd_delta[NUM_POINTS_LAST_PDGAIN] 322 1.1 alc [MAX_NUM_PDGAINS_PER_CHANNEL]; 323 1.1 alc int16_t pwr_delta_t2[NUM_POINTS_LAST_PDGAIN] 324 1.1 alc [MAX_NUM_PDGAINS_PER_CHANNEL]; 325 1.1 alc int16_t maxPower_t4; 326 1.1 alc } EEPROM_DATA_PER_CHANNEL_2413; 327 1.1 alc 328 1.1 alc typedef struct { 329 1.1 alc uint16_t pChannels[NUM_11A_EEPROM_CHANNELS_2413]; 330 1.1 alc uint16_t numChannels; 331 1.1 alc uint16_t xpd_mask; /* mask of permitted xpd_gains */ 332 1.1 alc EEPROM_DATA_PER_CHANNEL_2413 pDataPerChannel[NUM_11A_EEPROM_CHANNELS_2413]; 333 1.1 alc } EEPROM_DATA_STRUCT_2413; 334 1.1 alc 335 1.1 alc /* 336 1.1 alc * Information retrieved from EEPROM. 337 1.1 alc */ 338 1.1 alc typedef struct { 339 1.1 alc uint16_t ee_version; /* Version field */ 340 1.1 alc uint16_t ee_protect; /* EEPROM protect field */ 341 1.1 alc uint16_t ee_regdomain; /* Regulatory domain */ 342 1.1 alc 343 1.1 alc /* General Device Parameters */ 344 1.1 alc uint16_t ee_turbo5Disable; 345 1.1 alc uint16_t ee_turbo2Disable; 346 1.1 alc uint16_t ee_rfKill; 347 1.1 alc uint16_t ee_deviceType; 348 1.1 alc uint16_t ee_turbo2WMaxPower5; 349 1.1 alc uint16_t ee_turbo2WMaxPower2; 350 1.1 alc uint16_t ee_xrTargetPower5; 351 1.1 alc uint16_t ee_xrTargetPower2; 352 1.1 alc uint16_t ee_Amode; 353 1.1 alc uint16_t ee_regCap; 354 1.1 alc uint16_t ee_Bmode; 355 1.1 alc uint16_t ee_Gmode; 356 1.1 alc int8_t ee_antennaGainMax[2]; 357 1.1 alc uint16_t ee_xtnd5GSupport; 358 1.1 alc uint8_t ee_cckOfdmPwrDelta; 359 1.1 alc uint8_t ee_exist32kHzCrystal; 360 1.1 alc uint16_t ee_targetPowersStart; 361 1.1 alc uint16_t ee_fixedBias5; 362 1.1 alc uint16_t ee_fixedBias2; 363 1.1 alc uint16_t ee_cckOfdmGainDelta; 364 1.1 alc uint16_t ee_scaledCh14FilterCckDelta; 365 1.1 alc uint16_t ee_eepMap; 366 1.1 alc uint16_t ee_earStart; 367 1.1 alc 368 1.1 alc /* 5 GHz / 2.4 GHz CKK / 2.4 GHz OFDM common parameters */ 369 1.1 alc uint16_t ee_switchSettling[3]; 370 1.1 alc uint16_t ee_txrxAtten[3]; 371 1.1 alc uint16_t ee_txEndToXLNAOn[3]; 372 1.1 alc uint16_t ee_thresh62[3]; 373 1.1 alc uint16_t ee_txEndToXPAOff[3]; 374 1.1 alc uint16_t ee_txFrameToXPAOn[3]; 375 1.1 alc int8_t ee_adcDesiredSize[3]; /* 8-bit signed value */ 376 1.1 alc int8_t ee_pgaDesiredSize[3]; /* 8-bit signed value */ 377 1.1 alc int16_t ee_noiseFloorThresh[3]; 378 1.1 alc uint16_t ee_xlnaGain[3]; 379 1.1 alc uint16_t ee_xgain[3]; 380 1.1 alc uint16_t ee_xpd[3]; 381 1.1 alc uint16_t ee_antennaControl[11][3]; 382 1.1 alc uint16_t ee_falseDetectBackoff[3]; 383 1.1 alc uint16_t ee_gainI[3]; 384 1.1 alc uint16_t ee_rxtxMargin[3]; 385 1.1 alc 386 1.1 alc /* new parameters added for the AR2413 */ 387 1.1 alc HAL_BOOL ee_disableXr5; 388 1.1 alc HAL_BOOL ee_disableXr2; 389 1.1 alc uint16_t ee_eepMap2PowerCalStart; 390 1.1 alc uint16_t ee_capField; 391 1.1 alc 392 1.1 alc uint16_t ee_switchSettlingTurbo[2]; 393 1.1 alc uint16_t ee_txrxAttenTurbo[2]; 394 1.1 alc int8_t ee_adcDesiredSizeTurbo[2]; 395 1.1 alc int8_t ee_pgaDesiredSizeTurbo[2]; 396 1.1 alc uint16_t ee_rxtxMarginTurbo[2]; 397 1.1 alc 398 1.1 alc /* 5 GHz parameters */ 399 1.1 alc uint16_t ee_ob1; 400 1.1 alc uint16_t ee_db1; 401 1.1 alc uint16_t ee_ob2; 402 1.1 alc uint16_t ee_db2; 403 1.1 alc uint16_t ee_ob3; 404 1.1 alc uint16_t ee_db3; 405 1.1 alc uint16_t ee_ob4; 406 1.1 alc uint16_t ee_db4; 407 1.1 alc 408 1.1 alc /* 2.4 GHz parameters */ 409 1.1 alc uint16_t ee_obFor24; 410 1.1 alc uint16_t ee_dbFor24; 411 1.1 alc uint16_t ee_obFor24g; 412 1.1 alc uint16_t ee_dbFor24g; 413 1.1 alc uint16_t ee_ob2GHz[2]; 414 1.1 alc uint16_t ee_db2GHz[2]; 415 1.1 alc uint16_t ee_numCtls; 416 1.1 alc uint16_t ee_ctl[NUM_CTLS_MAX]; 417 1.1 alc uint16_t ee_iqCalI[2]; 418 1.1 alc uint16_t ee_iqCalQ[2]; 419 1.1 alc uint16_t ee_calPier11g[NUM_2_4_EEPROM_CHANNELS]; 420 1.1 alc uint16_t ee_calPier11b[NUM_2_4_EEPROM_CHANNELS]; 421 1.1 alc 422 1.1 alc /* corner calibration information */ 423 1.1 alc CORNER_CAL_INFO ee_cornerCal; 424 1.1 alc 425 1.1 alc uint16_t ee_opCap; 426 1.1 alc 427 1.1 alc /* 11a info */ 428 1.1 alc uint16_t ee_channels11a[NUM_11A_EEPROM_CHANNELS]; 429 1.1 alc uint16_t ee_numChannels11a; 430 1.1 alc DATA_PER_CHANNEL ee_dataPerChannel11a[NUM_11A_EEPROM_CHANNELS]; 431 1.1 alc 432 1.1 alc uint16_t ee_numChannels2_4; 433 1.1 alc uint16_t ee_channels11g[NUM_2_4_EEPROM_CHANNELS]; 434 1.1 alc uint16_t ee_channels11b[NUM_2_4_EEPROM_CHANNELS]; 435 1.1 alc uint16_t ee_spurChans[AR_EEPROM_MODAL_SPURS][2]; 436 1.1 alc 437 1.1 alc /* 11g info */ 438 1.1 alc DATA_PER_CHANNEL ee_dataPerChannel11g[NUM_2_4_EEPROM_CHANNELS]; 439 1.1 alc 440 1.1 alc /* 11b info */ 441 1.1 alc DATA_PER_CHANNEL ee_dataPerChannel11b[NUM_2_4_EEPROM_CHANNELS]; 442 1.1 alc 443 1.1 alc TRGT_POWER_ALL_MODES ee_tpow; 444 1.1 alc 445 1.1 alc RD_EDGES_POWER ee_rdEdgesPower[NUM_EDGES*NUM_CTLS_MAX]; 446 1.1 alc 447 1.1 alc union { 448 1.1 alc EEPROM_POWER_EXPN_5112 eu_modePowerArray5112[3]; 449 1.1 alc RAW_DATA_STRUCT_2413 eu_rawDataset2413[3]; 450 1.1 alc } ee_u; 451 1.1 alc } HAL_EEPROM; 452 1.1 alc 453 1.1 alc /* write-around defines */ 454 1.1 alc #define ee_numTargetPwr_11a ee_tpow.numTargetPwr_11a 455 1.1 alc #define ee_trgtPwr_11a ee_tpow.trgtPwr_11a 456 1.1 alc #define ee_numTargetPwr_11g ee_tpow.numTargetPwr_11g 457 1.1 alc #define ee_trgtPwr_11g ee_tpow.trgtPwr_11g 458 1.1 alc #define ee_numTargetPwr_11b ee_tpow.numTargetPwr_11b 459 1.1 alc #define ee_trgtPwr_11b ee_tpow.trgtPwr_11b 460 1.1 alc #define ee_modePowerArray5112 ee_u.eu_modePowerArray5112 461 1.1 alc #define ee_rawDataset2413 ee_u.eu_rawDataset2413 462 1.1 alc #endif /* _ATH_AH_EEPROM_V3_H_ */ 463