00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053 #define AR5K_EEPROM_PCIE_OFFSET 0x02
00054 #define AR5K_EEPROM_PCIE_SERDES_SECTION 0x40
00055
00056 #define AR5K_EEPROM_MAGIC 0x003d
00057 #define AR5K_EEPROM_MAGIC_VALUE 0x5aa5
00058 #define AR5K_EEPROM_MAGIC_5212 0x0000145c
00059 #define AR5K_EEPROM_MAGIC_5211 0x0000145b
00060 #define AR5K_EEPROM_MAGIC_5210 0x0000145a
00061
00062 #define AR5K_EEPROM_IS_HB63 0x000b
00063
00064 #define AR5K_EEPROM_RFKILL 0x0f
00065 #define AR5K_EEPROM_RFKILL_GPIO_SEL 0x0000001c
00066 #define AR5K_EEPROM_RFKILL_GPIO_SEL_S 2
00067 #define AR5K_EEPROM_RFKILL_POLARITY 0x00000002
00068 #define AR5K_EEPROM_RFKILL_POLARITY_S 1
00069
00070 #define AR5K_EEPROM_REG_DOMAIN 0x00bf
00071 #define AR5K_EEPROM_CHECKSUM 0x00c0
00072 #define AR5K_EEPROM_INFO_BASE 0x00c0
00073 #define AR5K_EEPROM_INFO_MAX (0x400 - AR5K_EEPROM_INFO_BASE)
00074 #define AR5K_EEPROM_INFO_CKSUM 0xffff
00075 #define AR5K_EEPROM_INFO(_n) (AR5K_EEPROM_INFO_BASE + (_n))
00076
00077 #define AR5K_EEPROM_VERSION AR5K_EEPROM_INFO(1)
00078 #define AR5K_EEPROM_VERSION_3_0 0x3000
00079 #define AR5K_EEPROM_VERSION_3_1 0x3001
00080 #define AR5K_EEPROM_VERSION_3_2 0x3002
00081 #define AR5K_EEPROM_VERSION_3_3 0x3003
00082 #define AR5K_EEPROM_VERSION_3_4 0x3004
00083 #define AR5K_EEPROM_VERSION_4_0 0x4000
00084 #define AR5K_EEPROM_VERSION_4_1 0x4001
00085 #define AR5K_EEPROM_VERSION_4_2 0x4002
00086 #define AR5K_EEPROM_VERSION_4_3 0x4003
00087 #define AR5K_EEPROM_VERSION_4_4 0x4004
00088 #define AR5K_EEPROM_VERSION_4_5 0x4005
00089 #define AR5K_EEPROM_VERSION_4_6 0x4006
00090 #define AR5K_EEPROM_VERSION_4_7 0x3007
00091 #define AR5K_EEPROM_VERSION_4_9 0x4009
00092 #define AR5K_EEPROM_VERSION_5_0 0x5000
00093 #define AR5K_EEPROM_VERSION_5_1 0x5001
00094 #define AR5K_EEPROM_VERSION_5_3 0x5003
00095
00096 #define AR5K_EEPROM_MODE_11A 0
00097 #define AR5K_EEPROM_MODE_11B 1
00098 #define AR5K_EEPROM_MODE_11G 2
00099
00100 #define AR5K_EEPROM_HDR AR5K_EEPROM_INFO(2)
00101 #define AR5K_EEPROM_HDR_11A(_v) (((_v) >> AR5K_EEPROM_MODE_11A) & 0x1)
00102 #define AR5K_EEPROM_HDR_11B(_v) (((_v) >> AR5K_EEPROM_MODE_11B) & 0x1)
00103 #define AR5K_EEPROM_HDR_11G(_v) (((_v) >> AR5K_EEPROM_MODE_11G) & 0x1)
00104 #define AR5K_EEPROM_HDR_T_2GHZ_DIS(_v) (((_v) >> 3) & 0x1)
00105 #define AR5K_EEPROM_HDR_T_5GHZ_DBM(_v) (((_v) >> 4) & 0x7f)
00106 #define AR5K_EEPROM_HDR_DEVICE(_v) (((_v) >> 11) & 0x7)
00107 #define AR5K_EEPROM_HDR_RFKILL(_v) (((_v) >> 14) & 0x1)
00108 #define AR5K_EEPROM_HDR_T_5GHZ_DIS(_v) (((_v) >> 15) & 0x1)
00109
00110
00111 #define AR5K_EEPROM_OFF(_v, _v3_0, _v3_3) \
00112 (((_v) >= AR5K_EEPROM_VERSION_3_3) ? _v3_3 : _v3_0)
00113
00114 #define AR5K_EEPROM_ANT_GAIN(_v) AR5K_EEPROM_OFF(_v, 0x00c4, 0x00c3)
00115 #define AR5K_EEPROM_ANT_GAIN_5GHZ(_v) ((s8)(((_v) >> 8) & 0xff))
00116 #define AR5K_EEPROM_ANT_GAIN_2GHZ(_v) ((s8)((_v) & 0xff))
00117
00118
00119 #define AR5K_EEPROM_MISC0 AR5K_EEPROM_INFO(4)
00120 #define AR5K_EEPROM_EARSTART(_v) ((_v) & 0xfff)
00121 #define AR5K_EEPROM_HDR_XR2_DIS(_v) (((_v) >> 12) & 0x1)
00122 #define AR5K_EEPROM_HDR_XR5_DIS(_v) (((_v) >> 13) & 0x1)
00123 #define AR5K_EEPROM_EEMAP(_v) (((_v) >> 14) & 0x3)
00124
00125 #define AR5K_EEPROM_MISC1 AR5K_EEPROM_INFO(5)
00126 #define AR5K_EEPROM_TARGET_PWRSTART(_v) ((_v) & 0xfff)
00127 #define AR5K_EEPROM_HAS32KHZCRYSTAL(_v) (((_v) >> 14) & 0x1)
00128 #define AR5K_EEPROM_HAS32KHZCRYSTAL_OLD(_v) (((_v) >> 15) & 0x1)
00129
00130 #define AR5K_EEPROM_MISC2 AR5K_EEPROM_INFO(6)
00131 #define AR5K_EEPROM_EEP_FILE_VERSION(_v) (((_v) >> 8) & 0xff)
00132 #define AR5K_EEPROM_EAR_FILE_VERSION(_v) ((_v) & 0xff)
00133
00134 #define AR5K_EEPROM_MISC3 AR5K_EEPROM_INFO(7)
00135 #define AR5K_EEPROM_ART_BUILD_NUM(_v) (((_v) >> 10) & 0x3f)
00136 #define AR5K_EEPROM_EAR_FILE_ID(_v) ((_v) & 0xff)
00137
00138 #define AR5K_EEPROM_MISC4 AR5K_EEPROM_INFO(8)
00139 #define AR5K_EEPROM_CAL_DATA_START(_v) (((_v) >> 4) & 0xfff)
00140 #define AR5K_EEPROM_MASK_R0(_v) (((_v) >> 2) & 0x3)
00141 #define AR5K_EEPROM_MASK_R1(_v) ((_v) & 0x3)
00142
00143 #define AR5K_EEPROM_MISC5 AR5K_EEPROM_INFO(9)
00144 #define AR5K_EEPROM_COMP_DIS(_v) ((_v) & 0x1)
00145 #define AR5K_EEPROM_AES_DIS(_v) (((_v) >> 1) & 0x1)
00146 #define AR5K_EEPROM_FF_DIS(_v) (((_v) >> 2) & 0x1)
00147 #define AR5K_EEPROM_BURST_DIS(_v) (((_v) >> 3) & 0x1)
00148 #define AR5K_EEPROM_MAX_QCU(_v) (((_v) >> 4) & 0xf)
00149 #define AR5K_EEPROM_HEAVY_CLIP_EN(_v) (((_v) >> 8) & 0x1)
00150 #define AR5K_EEPROM_KEY_CACHE_SIZE(_v) (((_v) >> 12) & 0xf)
00151
00152 #define AR5K_EEPROM_MISC6 AR5K_EEPROM_INFO(10)
00153 #define AR5K_EEPROM_TX_CHAIN_DIS ((_v) & 0x8)
00154 #define AR5K_EEPROM_RX_CHAIN_DIS (((_v) >> 3) & 0x8)
00155 #define AR5K_EEPROM_FCC_MID_EN (((_v) >> 6) & 0x1)
00156 #define AR5K_EEPROM_JAP_U1EVEN_EN (((_v) >> 7) & 0x1)
00157 #define AR5K_EEPROM_JAP_U2_EN (((_v) >> 8) & 0x1)
00158 #define AR5K_EEPROM_JAP_U1ODD_EN (((_v) >> 9) & 0x1)
00159 #define AR5K_EEPROM_JAP_11A_NEW_EN (((_v) >> 10) & 0x1)
00160
00161
00162 #define AR5K_EEPROM_MODES_11A(_v) AR5K_EEPROM_OFF(_v, 0x00c5, 0x00d4)
00163 #define AR5K_EEPROM_MODES_11B(_v) AR5K_EEPROM_OFF(_v, 0x00d0, 0x00f2)
00164 #define AR5K_EEPROM_MODES_11G(_v) AR5K_EEPROM_OFF(_v, 0x00da, 0x010d)
00165 #define AR5K_EEPROM_CTL(_v) AR5K_EEPROM_OFF(_v, 0x00e4, 0x0128)
00166 #define AR5K_EEPROM_GROUPS_START(_v) AR5K_EEPROM_OFF(_v, 0x0100, 0x0150)
00167 #define AR5K_EEPROM_GROUP1_OFFSET 0x0
00168 #define AR5K_EEPROM_GROUP2_OFFSET 0x5
00169 #define AR5K_EEPROM_GROUP3_OFFSET 0x37
00170 #define AR5K_EEPROM_GROUP4_OFFSET 0x46
00171 #define AR5K_EEPROM_GROUP5_OFFSET 0x55
00172 #define AR5K_EEPROM_GROUP6_OFFSET 0x65
00173 #define AR5K_EEPROM_GROUP7_OFFSET 0x69
00174 #define AR5K_EEPROM_GROUP8_OFFSET 0x6f
00175
00176 #define AR5K_EEPROM_TARGET_PWR_OFF_11A(_v) AR5K_EEPROM_OFF(_v, AR5K_EEPROM_GROUPS_START(_v) + \
00177 AR5K_EEPROM_GROUP5_OFFSET, 0x0000)
00178 #define AR5K_EEPROM_TARGET_PWR_OFF_11B(_v) AR5K_EEPROM_OFF(_v, AR5K_EEPROM_GROUPS_START(_v) + \
00179 AR5K_EEPROM_GROUP6_OFFSET, 0x0010)
00180 #define AR5K_EEPROM_TARGET_PWR_OFF_11G(_v) AR5K_EEPROM_OFF(_v, AR5K_EEPROM_GROUPS_START(_v) + \
00181 AR5K_EEPROM_GROUP7_OFFSET, 0x0014)
00182
00183
00184 #define AR5K_EEPROM_OBDB0_2GHZ 0x00ec
00185 #define AR5K_EEPROM_OBDB1_2GHZ 0x00ed
00186
00187 #define AR5K_EEPROM_PROTECT 0x003f
00188 #define AR5K_EEPROM_PROTECT_RD_0_31 0x0001
00189 #define AR5K_EEPROM_PROTECT_WR_0_31 0x0002
00190 #define AR5K_EEPROM_PROTECT_RD_32_63 0x0004
00191 #define AR5K_EEPROM_PROTECT_WR_32_63 0x0008
00192 #define AR5K_EEPROM_PROTECT_RD_64_127 0x0010
00193 #define AR5K_EEPROM_PROTECT_WR_64_127 0x0020
00194 #define AR5K_EEPROM_PROTECT_RD_128_191 0x0040
00195 #define AR5K_EEPROM_PROTECT_WR_128_191 0x0080
00196 #define AR5K_EEPROM_PROTECT_RD_192_207 0x0100
00197 #define AR5K_EEPROM_PROTECT_WR_192_207 0x0200
00198 #define AR5K_EEPROM_PROTECT_RD_208_223 0x0400
00199 #define AR5K_EEPROM_PROTECT_WR_208_223 0x0800
00200 #define AR5K_EEPROM_PROTECT_RD_224_239 0x1000
00201 #define AR5K_EEPROM_PROTECT_WR_224_239 0x2000
00202 #define AR5K_EEPROM_PROTECT_RD_240_255 0x4000
00203 #define AR5K_EEPROM_PROTECT_WR_240_255 0x8000
00204
00205
00206 #define AR5K_EEPROM_EEP_SCALE 100
00207 #define AR5K_EEPROM_EEP_DELTA 10
00208 #define AR5K_EEPROM_N_MODES 3
00209 #define AR5K_EEPROM_N_5GHZ_CHAN 10
00210 #define AR5K_EEPROM_N_2GHZ_CHAN 3
00211 #define AR5K_EEPROM_N_2GHZ_CHAN_2413 4
00212 #define AR5K_EEPROM_N_2GHZ_CHAN_MAX 4
00213 #define AR5K_EEPROM_MAX_CHAN 10
00214 #define AR5K_EEPROM_N_PWR_POINTS_5111 11
00215 #define AR5K_EEPROM_N_PCDAC 11
00216 #define AR5K_EEPROM_N_PHASE_CAL 5
00217 #define AR5K_EEPROM_N_TEST_FREQ 8
00218 #define AR5K_EEPROM_N_EDGES 8
00219 #define AR5K_EEPROM_N_INTERCEPTS 11
00220 #define AR5K_EEPROM_FREQ_M(_v) AR5K_EEPROM_OFF(_v, 0x7f, 0xff)
00221 #define AR5K_EEPROM_PCDAC_M 0x3f
00222 #define AR5K_EEPROM_PCDAC_START 1
00223 #define AR5K_EEPROM_PCDAC_STOP 63
00224 #define AR5K_EEPROM_PCDAC_STEP 1
00225 #define AR5K_EEPROM_NON_EDGE_M 0x40
00226 #define AR5K_EEPROM_CHANNEL_POWER 8
00227 #define AR5K_EEPROM_N_OBDB 4
00228 #define AR5K_EEPROM_OBDB_DIS 0xffff
00229 #define AR5K_EEPROM_CHANNEL_DIS 0xff
00230 #define AR5K_EEPROM_SCALE_OC_DELTA(_x) (((_x) * 2) / 10)
00231 #define AR5K_EEPROM_N_CTLS(_v) AR5K_EEPROM_OFF(_v, 16, 32)
00232 #define AR5K_EEPROM_MAX_CTLS 32
00233 #define AR5K_EEPROM_N_PD_CURVES 4
00234 #define AR5K_EEPROM_N_XPD0_POINTS 4
00235 #define AR5K_EEPROM_N_XPD3_POINTS 3
00236 #define AR5K_EEPROM_N_PD_GAINS 4
00237 #define AR5K_EEPROM_N_PD_POINTS 5
00238 #define AR5K_EEPROM_N_INTERCEPT_10_2GHZ 35
00239 #define AR5K_EEPROM_N_INTERCEPT_10_5GHZ 55
00240 #define AR5K_EEPROM_POWER_M 0x3f
00241 #define AR5K_EEPROM_POWER_MIN 0
00242 #define AR5K_EEPROM_POWER_MAX 3150
00243 #define AR5K_EEPROM_POWER_STEP 50
00244 #define AR5K_EEPROM_POWER_TABLE_SIZE 64
00245 #define AR5K_EEPROM_N_POWER_LOC_11B 4
00246 #define AR5K_EEPROM_N_POWER_LOC_11G 6
00247 #define AR5K_EEPROM_I_GAIN 10
00248 #define AR5K_EEPROM_CCK_OFDM_DELTA 15
00249 #define AR5K_EEPROM_N_IQ_CAL 2
00250
00251 enum ath5k_eeprom_freq_bands{
00252 AR5K_EEPROM_BAND_5GHZ = 0,
00253 AR5K_EEPROM_BAND_2GHZ = 1,
00254 AR5K_EEPROM_N_FREQ_BANDS,
00255 };
00256
00257 #define AR5K_EEPROM_N_SPUR_CHANS 5
00258
00259 #define AR5K_EEPROM_5413_SPUR_CHAN_1 1640
00260
00261 #define AR5K_EEPROM_5413_SPUR_CHAN_2 1200
00262 #define AR5K_EEPROM_SPUR_CHAN_MASK 0x3FFF
00263 #define AR5K_EEPROM_NO_SPUR 0x8000
00264 #define AR5K_SPUR_CHAN_WIDTH 87
00265 #define AR5K_SPUR_SYMBOL_WIDTH_BASE_100Hz 3125
00266 #define AR5K_SPUR_SYMBOL_WIDTH_TURBO_100Hz 6250
00267
00268 #define AR5K_EEPROM_READ(_o, _v) do { \
00269 ret = ath5k_hw_eeprom_read(ah, (_o), &(_v)); \
00270 if (ret) \
00271 return ret; \
00272 } while (0)
00273
00274 #define AR5K_EEPROM_READ_HDR(_o, _v) \
00275 AR5K_EEPROM_READ(_o, ah->ah_capabilities.cap_eeprom._v); \
00276
00277 enum ath5k_ant_table {
00278 AR5K_ANT_CTL = 0,
00279 AR5K_ANT_SWTABLE_A = 1,
00280 AR5K_ANT_SWTABLE_B = 2,
00281 AR5K_ANT_MAX,
00282 };
00283
00284 enum ath5k_ctl_mode {
00285 AR5K_CTL_11A = 0,
00286 AR5K_CTL_11B = 1,
00287 AR5K_CTL_11G = 2,
00288 AR5K_CTL_TURBO = 3,
00289 AR5K_CTL_TURBOG = 4,
00290 AR5K_CTL_2GHT20 = 5,
00291 AR5K_CTL_5GHT20 = 6,
00292 AR5K_CTL_2GHT40 = 7,
00293 AR5K_CTL_5GHT40 = 8,
00294 AR5K_CTL_MODE_M = 15,
00295 };
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306 #define AR5K_CTL_FCC 0x10
00307 #define AR5K_CTL_CUSTOM 0x20
00308 #define AR5K_CTL_ETSI 0x30
00309 #define AR5K_CTL_MKK 0x40
00310
00311
00312
00313
00314
00315 #define AR5K_CTL_NO_REGDOMAIN 0xf0
00316
00317
00318 #define AR5K_CTL_NO_CTL 0xff
00319
00320
00321 struct ath5k_chan_pcal_info_rf5111 {
00322
00323
00324 u8 pwr[AR5K_EEPROM_N_PWR_POINTS_5111];
00325
00326
00327 u8 pcdac[AR5K_EEPROM_N_PWR_POINTS_5111];
00328
00329 u8 pcdac_min;
00330
00331 u8 pcdac_max;
00332 };
00333
00334 struct ath5k_chan_pcal_info_rf5112 {
00335
00336
00337
00338 s8 pwr_x0[AR5K_EEPROM_N_XPD0_POINTS];
00339 s8 pwr_x3[AR5K_EEPROM_N_XPD3_POINTS];
00340
00341
00342 u8 pcdac_x0[AR5K_EEPROM_N_XPD0_POINTS];
00343 u8 pcdac_x3[AR5K_EEPROM_N_XPD3_POINTS];
00344 };
00345
00346 struct ath5k_chan_pcal_info_rf2413 {
00347
00348 s8 pwr_i[AR5K_EEPROM_N_PD_GAINS];
00349 u8 pddac_i[AR5K_EEPROM_N_PD_GAINS];
00350
00351
00352 s8 pwr[AR5K_EEPROM_N_PD_GAINS]
00353 [AR5K_EEPROM_N_PD_POINTS];
00354 u8 pddac[AR5K_EEPROM_N_PD_GAINS]
00355 [AR5K_EEPROM_N_PD_POINTS];
00356 };
00357
00358 enum ath5k_powertable_type {
00359 AR5K_PWRTABLE_PWR_TO_PCDAC = 0,
00360 AR5K_PWRTABLE_LINEAR_PCDAC = 1,
00361 AR5K_PWRTABLE_PWR_TO_PDADC = 2,
00362 };
00363
00364 struct ath5k_pdgain_info {
00365 u8 pd_points;
00366 u8 *pd_step;
00367
00368
00369 s16 *pd_pwr;
00370 };
00371
00372 struct ath5k_chan_pcal_info {
00373
00374 u16 freq;
00375
00376 s16 max_pwr;
00377 s16 min_pwr;
00378 union {
00379 struct ath5k_chan_pcal_info_rf5111 rf5111_info;
00380 struct ath5k_chan_pcal_info_rf5112 rf5112_info;
00381 struct ath5k_chan_pcal_info_rf2413 rf2413_info;
00382 };
00383
00384
00385
00386 struct ath5k_pdgain_info *pd_curves;
00387 };
00388
00389
00390
00391
00392 struct ath5k_rate_pcal_info {
00393 u16 freq;
00394
00395
00396 u16 target_power_6to24;
00397
00398
00399 u16 target_power_36;
00400
00401
00402 u16 target_power_48;
00403
00404
00405 u16 target_power_54;
00406 };
00407
00408
00409 struct ath5k_edge_power {
00410 u16 freq;
00411 u16 edge;
00412 bool flag;
00413 };
00414
00415
00416 struct ath5k_eeprom_info {
00417
00418
00419 u16 ee_magic;
00420 u16 ee_protect;
00421 u16 ee_regdomain;
00422 u16 ee_version;
00423 u16 ee_header;
00424 u16 ee_ant_gain;
00425 u8 ee_rfkill_pin;
00426 bool ee_rfkill_pol;
00427 bool ee_is_hb63;
00428 bool ee_serdes;
00429 u16 ee_misc0;
00430 u16 ee_misc1;
00431 u16 ee_misc2;
00432 u16 ee_misc3;
00433 u16 ee_misc4;
00434 u16 ee_misc5;
00435 u16 ee_misc6;
00436 u16 ee_cck_ofdm_gain_delta;
00437 u16 ee_cck_ofdm_power_delta;
00438 u16 ee_scaled_cck_delta;
00439
00440
00441 u16 ee_i_cal[AR5K_EEPROM_N_MODES];
00442 u16 ee_q_cal[AR5K_EEPROM_N_MODES];
00443 u16 ee_fixed_bias[AR5K_EEPROM_N_MODES];
00444 u16 ee_turbo_max_power[AR5K_EEPROM_N_MODES];
00445 u16 ee_xr_power[AR5K_EEPROM_N_MODES];
00446 u16 ee_switch_settling[AR5K_EEPROM_N_MODES];
00447 u16 ee_atn_tx_rx[AR5K_EEPROM_N_MODES];
00448 u16 ee_ant_control[AR5K_EEPROM_N_MODES][AR5K_EEPROM_N_PCDAC];
00449 u16 ee_ob[AR5K_EEPROM_N_MODES][AR5K_EEPROM_N_OBDB];
00450 u16 ee_db[AR5K_EEPROM_N_MODES][AR5K_EEPROM_N_OBDB];
00451 u16 ee_tx_end2xlna_enable[AR5K_EEPROM_N_MODES];
00452 u16 ee_tx_end2xpa_disable[AR5K_EEPROM_N_MODES];
00453 u16 ee_tx_frm2xpa_enable[AR5K_EEPROM_N_MODES];
00454 u16 ee_thr_62[AR5K_EEPROM_N_MODES];
00455 u16 ee_xlna_gain[AR5K_EEPROM_N_MODES];
00456 u16 ee_xpd[AR5K_EEPROM_N_MODES];
00457 u16 ee_x_gain[AR5K_EEPROM_N_MODES];
00458 u16 ee_i_gain[AR5K_EEPROM_N_MODES];
00459 u16 ee_margin_tx_rx[AR5K_EEPROM_N_MODES];
00460 u16 ee_switch_settling_turbo[AR5K_EEPROM_N_MODES];
00461 u16 ee_margin_tx_rx_turbo[AR5K_EEPROM_N_MODES];
00462 u16 ee_atn_tx_rx_turbo[AR5K_EEPROM_N_MODES];
00463
00464
00465 u16 ee_false_detect[AR5K_EEPROM_N_MODES];
00466
00467
00468 u8 ee_pd_gains[AR5K_EEPROM_N_MODES];
00469
00470 u8 ee_pdc_to_idx[AR5K_EEPROM_N_MODES][AR5K_EEPROM_N_PD_GAINS];
00471
00472 u8 ee_n_piers[AR5K_EEPROM_N_MODES];
00473 struct ath5k_chan_pcal_info ee_pwr_cal_a[AR5K_EEPROM_N_5GHZ_CHAN];
00474 struct ath5k_chan_pcal_info ee_pwr_cal_b[AR5K_EEPROM_N_2GHZ_CHAN_MAX];
00475 struct ath5k_chan_pcal_info ee_pwr_cal_g[AR5K_EEPROM_N_2GHZ_CHAN_MAX];
00476
00477
00478 u8 ee_rate_target_pwr_num[AR5K_EEPROM_N_MODES];
00479 struct ath5k_rate_pcal_info ee_rate_tpwr_a[AR5K_EEPROM_N_5GHZ_CHAN];
00480 struct ath5k_rate_pcal_info ee_rate_tpwr_b[AR5K_EEPROM_N_2GHZ_CHAN_MAX];
00481 struct ath5k_rate_pcal_info ee_rate_tpwr_g[AR5K_EEPROM_N_2GHZ_CHAN_MAX];
00482
00483
00484 u8 ee_ctls;
00485 u8 ee_ctl[AR5K_EEPROM_MAX_CTLS];
00486 struct ath5k_edge_power ee_ctl_pwr[AR5K_EEPROM_N_EDGES * AR5K_EEPROM_MAX_CTLS];
00487
00488
00489 s16 ee_noise_floor_thr[AR5K_EEPROM_N_MODES];
00490 s8 ee_adc_desired_size[AR5K_EEPROM_N_MODES];
00491 s8 ee_pga_desired_size[AR5K_EEPROM_N_MODES];
00492 s8 ee_adc_desired_size_turbo[AR5K_EEPROM_N_MODES];
00493 s8 ee_pga_desired_size_turbo[AR5K_EEPROM_N_MODES];
00494 s8 ee_pd_gain_overlap;
00495
00496
00497 u16 ee_spur_chans[AR5K_EEPROM_N_SPUR_CHANS][AR5K_EEPROM_N_FREQ_BANDS];
00498
00499
00500 u32 ee_antenna[AR5K_EEPROM_N_MODES][AR5K_ANT_MAX];
00501 };
00502