Home | History | Annotate | Line # | Download | only in dist
      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