xref: /freebsd/sys/dev/ath/ath_hal/ah_eeprom_v14.h (revision 95ee2897e98f5d444f26ed2334cc7c439f9c16c6)
1*6e778a7eSPedro F. Giffuni /*-
2*6e778a7eSPedro F. Giffuni  * SPDX-License-Identifier: ISC
3*6e778a7eSPedro F. Giffuni  *
414779705SSam Leffler  * Copyright (c) 2008 Sam Leffler, Errno Consulting
514779705SSam Leffler  * Copyright (c) 2008 Atheros Communications, Inc.
614779705SSam Leffler  *
714779705SSam Leffler  * Permission to use, copy, modify, and/or distribute this software for any
814779705SSam Leffler  * purpose with or without fee is hereby granted, provided that the above
914779705SSam Leffler  * copyright notice and this permission notice appear in all copies.
1014779705SSam Leffler  *
1114779705SSam Leffler  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1214779705SSam Leffler  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1314779705SSam Leffler  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1414779705SSam Leffler  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1514779705SSam Leffler  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1614779705SSam Leffler  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1714779705SSam Leffler  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1814779705SSam Leffler  */
1914779705SSam Leffler #ifndef _AH_EEPROM_V14_H_
2014779705SSam Leffler #define _AH_EEPROM_V14_H_
2114779705SSam Leffler 
2214779705SSam Leffler #include "ah_eeprom.h"
2314779705SSam Leffler 
2414779705SSam Leffler /* reg_off = 4 * (eep_off) */
2514779705SSam Leffler #define AR5416_EEPROM_S			2
2614779705SSam Leffler #define AR5416_EEPROM_OFFSET		0x2000
2714779705SSam Leffler #define AR5416_EEPROM_START_ADDR	0x503f1200
2814779705SSam Leffler #define AR5416_EEPROM_MAX		0xae0 /* Ignore for the moment used only on the flash implementations */
2914779705SSam Leffler #define AR5416_EEPROM_MAGIC		0xa55a
3014779705SSam Leffler #define AR5416_EEPROM_MAGIC_OFFSET	0x0
3114779705SSam Leffler 
3214779705SSam Leffler #define owl_get_ntxchains(_txchainmask) \
3314779705SSam Leffler     (((_txchainmask >> 2) & 1) + ((_txchainmask >> 1) & 1) + (_txchainmask & 1))
3414779705SSam Leffler 
3514779705SSam Leffler #ifdef __LINUX_ARM_ARCH__ /* AP71 */
3614779705SSam Leffler #define owl_eep_start_loc		0
3714779705SSam Leffler #else
3814779705SSam Leffler #define owl_eep_start_loc		256
3914779705SSam Leffler #endif
4014779705SSam Leffler 
4114779705SSam Leffler /* End temp defines */
4214779705SSam Leffler 
4314779705SSam Leffler #define AR5416_EEP_NO_BACK_VER       	0x1
4414779705SSam Leffler #define AR5416_EEP_VER               	0xE
4514779705SSam Leffler #define AR5416_EEP_VER_MINOR_MASK	0xFFF
4614779705SSam Leffler // Adds modal params txFrameToPaOn, txFrametoDataStart, ht40PowerInc
4714779705SSam Leffler #define AR5416_EEP_MINOR_VER_2		0x2
4814779705SSam Leffler // Adds modal params bswAtten, bswMargin, swSettle and base OpFlags for HT20/40 Disable
4914779705SSam Leffler #define AR5416_EEP_MINOR_VER_3		0x3
5014779705SSam Leffler #define AR5416_EEP_MINOR_VER_7		0x7
5114779705SSam Leffler #define AR5416_EEP_MINOR_VER_9		0x9
52c5067868SAdrian Chadd #define AR5416_EEP_MINOR_VER_10		0xa
5314779705SSam Leffler #define AR5416_EEP_MINOR_VER_16		0x10
5414779705SSam Leffler #define AR5416_EEP_MINOR_VER_17		0x11
5514779705SSam Leffler #define AR5416_EEP_MINOR_VER_19		0x13
56c485136bSAdrian Chadd #define AR5416_EEP_MINOR_VER_20		0x14
57c485136bSAdrian Chadd #define AR5416_EEP_MINOR_VER_21		0x15
58c485136bSAdrian Chadd #define	AR5416_EEP_MINOR_VER_22		0x16
5914779705SSam Leffler 
6014779705SSam Leffler // 16-bit offset location start of calibration struct
6114779705SSam Leffler #define AR5416_EEP_START_LOC         	256
6214779705SSam Leffler #define AR5416_NUM_5G_CAL_PIERS      	8
6314779705SSam Leffler #define AR5416_NUM_2G_CAL_PIERS      	4
6414779705SSam Leffler #define AR5416_NUM_5G_20_TARGET_POWERS  8
6514779705SSam Leffler #define AR5416_NUM_5G_40_TARGET_POWERS  8
6614779705SSam Leffler #define AR5416_NUM_2G_CCK_TARGET_POWERS 3
6714779705SSam Leffler #define AR5416_NUM_2G_20_TARGET_POWERS  4
6814779705SSam Leffler #define AR5416_NUM_2G_40_TARGET_POWERS  4
6914779705SSam Leffler #define AR5416_NUM_CTLS              	24
7014779705SSam Leffler #define AR5416_NUM_BAND_EDGES        	8
7114779705SSam Leffler #define AR5416_NUM_PD_GAINS          	4
7214779705SSam Leffler #define AR5416_PD_GAINS_IN_MASK      	4
7314779705SSam Leffler #define AR5416_PD_GAIN_ICEPTS        	5
7414779705SSam Leffler #define AR5416_EEPROM_MODAL_SPURS    	5
7514779705SSam Leffler #define AR5416_MAX_RATE_POWER        	63
7614779705SSam Leffler #define AR5416_NUM_PDADC_VALUES      	128
7714779705SSam Leffler #define AR5416_NUM_RATES             	16
7814779705SSam Leffler #define AR5416_BCHAN_UNUSED          	0xFF
7914779705SSam Leffler #define AR5416_MAX_PWR_RANGE_IN_HALF_DB 64
8014779705SSam Leffler #define AR5416_EEPMISC_BIG_ENDIAN    	0x01
8114779705SSam Leffler #define FREQ2FBIN(x,y) 			((y) ? ((x) - 2300) : (((x) - 4800) / 5))
8214779705SSam Leffler #define AR5416_MAX_CHAINS            	3
8321d18f0eSRui Paulo #define	AR5416_PWR_TABLE_OFFSET_DB	-5
8414779705SSam Leffler #define AR5416_ANT_16S               	25
8514779705SSam Leffler 
8614779705SSam Leffler #define AR5416_NUM_ANT_CHAIN_FIELDS     7
8714779705SSam Leffler #define AR5416_NUM_ANT_COMMON_FIELDS    4
8814779705SSam Leffler #define AR5416_SIZE_ANT_CHAIN_FIELD     3
8914779705SSam Leffler #define AR5416_SIZE_ANT_COMMON_FIELD    4
9014779705SSam Leffler #define AR5416_ANT_CHAIN_MASK           0x7
9114779705SSam Leffler #define AR5416_ANT_COMMON_MASK          0xf
9214779705SSam Leffler #define AR5416_CHAIN_0_IDX              0
9314779705SSam Leffler #define AR5416_CHAIN_1_IDX              1
9414779705SSam Leffler #define AR5416_CHAIN_2_IDX              2
9514779705SSam Leffler 
9614779705SSam Leffler #define	AR5416_OPFLAGS_11A		0x01
9714779705SSam Leffler #define	AR5416_OPFLAGS_11G		0x02
98f678fb43SAdrian Chadd #define	AR5416_OPFLAGS_N_5G_HT40	0x04	/* If set, disable 5G HT40 */
99f678fb43SAdrian Chadd #define	AR5416_OPFLAGS_N_2G_HT40	0x08
100f678fb43SAdrian Chadd #define	AR5416_OPFLAGS_N_5G_HT20	0x10
101f678fb43SAdrian Chadd #define	AR5416_OPFLAGS_N_2G_HT20	0x20
10214779705SSam Leffler 
10314779705SSam Leffler /* RF silent fields in EEPROM */
10414779705SSam Leffler #define	EEP_RFSILENT_ENABLED		0x0001	/* enabled/disabled */
10514779705SSam Leffler #define	EEP_RFSILENT_ENABLED_S		0
10614779705SSam Leffler #define	EEP_RFSILENT_POLARITY		0x0002	/* polarity */
10714779705SSam Leffler #define	EEP_RFSILENT_POLARITY_S		1
10814779705SSam Leffler #define	EEP_RFSILENT_GPIO_SEL		0x001c	/* gpio PIN */
10914779705SSam Leffler #define	EEP_RFSILENT_GPIO_SEL_S		2
11014779705SSam Leffler 
11114779705SSam Leffler /* Rx gain type values */
11214779705SSam Leffler #define	AR5416_EEP_RXGAIN_23dB_BACKOFF	0
11314779705SSam Leffler #define	AR5416_EEP_RXGAIN_13dB_BACKOFF	1
11414779705SSam Leffler #define	AR5416_EEP_RXGAIN_ORIG		2
11514779705SSam Leffler 
11614779705SSam Leffler /* Tx gain type values */
11714779705SSam Leffler #define	AR5416_EEP_TXGAIN_ORIG		0
11814779705SSam Leffler #define	AR5416_EEP_TXGAIN_HIGH_POWER	1
11914779705SSam Leffler 
12014779705SSam Leffler typedef struct spurChanStruct {
12114779705SSam Leffler 	uint16_t	spurChan;
12214779705SSam Leffler 	uint8_t		spurRangeLow;
12314779705SSam Leffler 	uint8_t		spurRangeHigh;
12414779705SSam Leffler } __packed SPUR_CHAN;
12514779705SSam Leffler 
12614779705SSam Leffler typedef struct CalTargetPowerLegacy {
12714779705SSam Leffler 	uint8_t		bChannel;
12814779705SSam Leffler 	uint8_t		tPow2x[4];
12914779705SSam Leffler } __packed CAL_TARGET_POWER_LEG;
13014779705SSam Leffler 
13114779705SSam Leffler typedef struct CalTargetPowerHt {
13214779705SSam Leffler 	uint8_t		bChannel;
13314779705SSam Leffler 	uint8_t		tPow2x[8];
13414779705SSam Leffler } __packed CAL_TARGET_POWER_HT;
13514779705SSam Leffler 
13614779705SSam Leffler typedef struct CalCtlEdges {
13714779705SSam Leffler 	uint8_t		bChannel;
13814779705SSam Leffler 	uint8_t		tPowerFlag;	/* [0..5] tPower [6..7] flag */
13914779705SSam Leffler #define	CAL_CTL_EDGES_POWER	0x3f
14014779705SSam Leffler #define	CAL_CTL_EDGES_POWER_S	0
14114779705SSam Leffler #define	CAL_CTL_EDGES_FLAG	0xc0
14214779705SSam Leffler #define	CAL_CTL_EDGES_FLAG_S	6
14314779705SSam Leffler } __packed CAL_CTL_EDGES;
14414779705SSam Leffler 
14514779705SSam Leffler /*
146635636eaSAdrian Chadd  * These are the secondary regulatory domain flags
147635636eaSAdrian Chadd  * for regDmn[1].
148635636eaSAdrian Chadd  */
149635636eaSAdrian Chadd #define	AR5416_REGDMN_EN_FCC_MID	0x01	/* 5.47 - 5.7GHz operation */
150635636eaSAdrian Chadd #define	AR5416_REGDMN_EN_JAP_MID	0x02	/* 5.47 - 5.7GHz operation */
151635636eaSAdrian Chadd #define	AR5416_REGDMN_EN_FCC_DFS_HT40	0x04	/* FCC HT40 + DFS operation */
152635636eaSAdrian Chadd #define	AR5416_REGDMN_EN_JAP_HT40	0x08	/* JP HT40 operation */
153635636eaSAdrian Chadd #define	AR5416_REGDMN_EN_JAP_DFS_HT40	0x10	/* JP HT40 + DFS operation */
154635636eaSAdrian Chadd 
155635636eaSAdrian Chadd /*
15614779705SSam Leffler  * NB: The format in EEPROM has words 0 and 2 swapped (i.e. version
15714779705SSam Leffler  * and length are swapped).  We reverse their position after reading
15814779705SSam Leffler  * the data into host memory so the version field is at the same
15914779705SSam Leffler  * offset as in previous EEPROM layouts.  This makes utilities that
16014779705SSam Leffler  * inspect the EEPROM contents work without looking at the PCI device
16114779705SSam Leffler  * id which may or may not be reliable.
16214779705SSam Leffler  */
16314779705SSam Leffler typedef struct BaseEepHeader {
16414779705SSam Leffler 	uint16_t	version;	/* NB: length in EEPROM */
16514779705SSam Leffler 	uint16_t	checksum;
16614779705SSam Leffler 	uint16_t	length;		/* NB: version in EEPROM */
16714779705SSam Leffler 	uint8_t		opCapFlags;
16814779705SSam Leffler 	uint8_t		eepMisc;
16914779705SSam Leffler 	uint16_t	regDmn[2];
17014779705SSam Leffler 	uint8_t		macAddr[6];
17114779705SSam Leffler 	uint8_t		rxMask;
17214779705SSam Leffler 	uint8_t		txMask;
17314779705SSam Leffler 	uint16_t	rfSilent;
17414779705SSam Leffler 	uint16_t	blueToothOptions;
17514779705SSam Leffler 	uint16_t	deviceCap;
17614779705SSam Leffler 	uint32_t	binBuildNumber;
17714779705SSam Leffler 	uint8_t		deviceType;
17814779705SSam Leffler 	uint8_t		pwdclkind;
17914779705SSam Leffler 	uint8_t		fastClk5g;
18014779705SSam Leffler 	uint8_t		divChain;
18114779705SSam Leffler 	uint8_t		rxGainType;
1821a506b1aSAdrian Chadd 	uint8_t		dacHiPwrMode_5G;/* use the DAC high power mode (MB91) */
18314779705SSam Leffler 	uint8_t		openLoopPwrCntl;/* 1: use open loop power control,
18414779705SSam Leffler 					   0: use closed loop power control */
18514779705SSam Leffler 	uint8_t		dacLpMode;
18614779705SSam Leffler 	uint8_t		txGainType;	/* high power tx gain table support */
18714779705SSam Leffler 	uint8_t		rcChainMask;	/* "1" if the card is an HB93 1x2 */
1881a506b1aSAdrian Chadd 	uint8_t		desiredScaleCCK;
1891a506b1aSAdrian Chadd 	uint8_t		pwr_table_offset;
1907239f9f7SAdrian Chadd 	uint8_t		frac_n_5g;	/*
1917239f9f7SAdrian Chadd 					 * bit 0: indicates that fracN synth
1927239f9f7SAdrian Chadd 					 * mode applies to all 5G channels
1937239f9f7SAdrian Chadd 					 */
1941a506b1aSAdrian Chadd 	uint8_t		futureBase[21];
19514779705SSam Leffler } __packed BASE_EEP_HEADER; // 64 B
19614779705SSam Leffler 
19714779705SSam Leffler typedef struct ModalEepHeader {
19814779705SSam Leffler 	uint32_t	antCtrlChain[AR5416_MAX_CHAINS];	// 12
19914779705SSam Leffler 	uint32_t	antCtrlCommon;				// 4
20014779705SSam Leffler 	int8_t		antennaGainCh[AR5416_MAX_CHAINS];	// 3
20114779705SSam Leffler 	uint8_t		switchSettling;				// 1
20214779705SSam Leffler 	uint8_t		txRxAttenCh[AR5416_MAX_CHAINS];		// 3
20314779705SSam Leffler 	uint8_t		rxTxMarginCh[AR5416_MAX_CHAINS];	// 3
20414779705SSam Leffler 	uint8_t		adcDesiredSize;				// 1
20514779705SSam Leffler 	int8_t		pgaDesiredSize;				// 1
20614779705SSam Leffler 	uint8_t		xlnaGainCh[AR5416_MAX_CHAINS];		// 3
20714779705SSam Leffler 	uint8_t		txEndToXpaOff;				// 1
20814779705SSam Leffler 	uint8_t		txEndToRxOn;				// 1
20914779705SSam Leffler 	uint8_t		txFrameToXpaOn;				// 1
21014779705SSam Leffler 	uint8_t		thresh62;				// 1
21114779705SSam Leffler 	uint8_t		noiseFloorThreshCh[AR5416_MAX_CHAINS];	// 3
21214779705SSam Leffler 	uint8_t		xpdGain;				// 1
21314779705SSam Leffler 	uint8_t		xpd;					// 1
21414779705SSam Leffler 	int8_t		iqCalICh[AR5416_MAX_CHAINS];		// 1
21514779705SSam Leffler 	int8_t		iqCalQCh[AR5416_MAX_CHAINS];		// 1
21614779705SSam Leffler 	uint8_t		pdGainOverlap;				// 1
21714779705SSam Leffler 	uint8_t		ob;					// 1
21814779705SSam Leffler 	uint8_t		db;					// 1
21914779705SSam Leffler 	uint8_t		xpaBiasLvl;				// 1
22014779705SSam Leffler 	uint8_t		pwrDecreaseFor2Chain;			// 1
22114779705SSam Leffler 	uint8_t		pwrDecreaseFor3Chain;			// 1 -> 48 B
22214779705SSam Leffler 	uint8_t		txFrameToDataStart;			// 1
22314779705SSam Leffler 	uint8_t		txFrameToPaOn;				// 1
22414779705SSam Leffler 	uint8_t		ht40PowerIncForPdadc;			// 1
22514779705SSam Leffler 	uint8_t		bswAtten[AR5416_MAX_CHAINS];		// 3
22614779705SSam Leffler 	uint8_t		bswMargin[AR5416_MAX_CHAINS];		// 3
22714779705SSam Leffler 	uint8_t		swSettleHt40;				// 1
22814779705SSam Leffler 	uint8_t		xatten2Db[AR5416_MAX_CHAINS];    	// 3 -> New for AR9280 (0xa20c/b20c 11:6)
22914779705SSam Leffler 	uint8_t		xatten2Margin[AR5416_MAX_CHAINS];	// 3 -> New for AR9280 (0xa20c/b20c 21:17)
23014779705SSam Leffler 	uint8_t		ob_ch1;				// 1 -> ob and db become chain specific from AR9280
23114779705SSam Leffler 	uint8_t		db_ch1;				// 1
23214779705SSam Leffler 	uint8_t		flagBits;			// 1
2337dd51df8SAdrian Chadd #define	AR5416_EEP_FLAG_USEANT1		0x80	/* +1 configured antenna */
2347dd51df8SAdrian Chadd #define	AR5416_EEP_FLAG_FORCEXPAON	0x40	/* force XPA bit for 5G */
2357dd51df8SAdrian Chadd #define	AR5416_EEP_FLAG_LOCALBIAS	0x20	/* enable local bias */
2367dd51df8SAdrian Chadd #define	AR5416_EEP_FLAG_FEMBANDSELECT	0x10	/* FEM band select used */
2377dd51df8SAdrian Chadd #define	AR5416_EEP_FLAG_XLNABUFIN	0x08
2387dd51df8SAdrian Chadd #define	AR5416_EEP_FLAG_XLNAISEL1	0x04
2397dd51df8SAdrian Chadd #define	AR5416_EEP_FLAG_XLNAISEL2	0x02
2407dd51df8SAdrian Chadd #define	AR5416_EEP_FLAG_XLNABUFMODE	0x01
24114779705SSam Leffler 	uint8_t		miscBits;			// [0..1]: bb_tx_dac_scale_cck
24214779705SSam Leffler 	uint16_t	xpaBiasLvlFreq[3];		// 3
24314779705SSam Leffler 	uint8_t		futureModal[6];			// 6
24414779705SSam Leffler 
24514779705SSam Leffler 	SPUR_CHAN spurChans[AR5416_EEPROM_MODAL_SPURS];	// 20 B
24614779705SSam Leffler } __packed MODAL_EEP_HEADER;				// == 100 B
24714779705SSam Leffler 
24814779705SSam Leffler typedef struct calDataPerFreqOpLoop {
24914779705SSam Leffler 	uint8_t		pwrPdg[2][5]; /* power measurement */
25014779705SSam Leffler 	uint8_t		vpdPdg[2][5]; /* pdadc voltage at power measurement */
25114779705SSam Leffler 	uint8_t		pcdac[2][5];  /* pcdac used for power measurement */
25214779705SSam Leffler 	uint8_t		empty[2][5];  /* future use */
25314779705SSam Leffler } __packed CAL_DATA_PER_FREQ_OP_LOOP;
25414779705SSam Leffler 
25514779705SSam Leffler typedef struct CalCtlData {
25614779705SSam Leffler 	CAL_CTL_EDGES		ctlEdges[AR5416_MAX_CHAINS][AR5416_NUM_BAND_EDGES];
25714779705SSam Leffler } __packed CAL_CTL_DATA;
25814779705SSam Leffler 
25914779705SSam Leffler typedef struct calDataPerFreq {
26014779705SSam Leffler 	uint8_t		pwrPdg[AR5416_NUM_PD_GAINS][AR5416_PD_GAIN_ICEPTS];
26114779705SSam Leffler 	uint8_t		vpdPdg[AR5416_NUM_PD_GAINS][AR5416_PD_GAIN_ICEPTS];
26214779705SSam Leffler } __packed CAL_DATA_PER_FREQ;
26314779705SSam Leffler 
26414779705SSam Leffler struct ar5416eeprom {
26514779705SSam Leffler 	BASE_EEP_HEADER		baseEepHeader;         // 64 B
26614779705SSam Leffler 	uint8_t			custData[64];          // 64 B
26714779705SSam Leffler 	MODAL_EEP_HEADER	modalHeader[2];        // 200 B
26814779705SSam Leffler 	uint8_t			calFreqPier5G[AR5416_NUM_5G_CAL_PIERS];
26914779705SSam Leffler 	uint8_t			calFreqPier2G[AR5416_NUM_2G_CAL_PIERS];
27014779705SSam Leffler 	CAL_DATA_PER_FREQ	calPierData5G[AR5416_MAX_CHAINS][AR5416_NUM_5G_CAL_PIERS];
27114779705SSam Leffler 	CAL_DATA_PER_FREQ	calPierData2G[AR5416_MAX_CHAINS][AR5416_NUM_2G_CAL_PIERS];
27214779705SSam Leffler 	CAL_TARGET_POWER_LEG	calTargetPower5G[AR5416_NUM_5G_20_TARGET_POWERS];
27314779705SSam Leffler 	CAL_TARGET_POWER_HT	calTargetPower5GHT20[AR5416_NUM_5G_20_TARGET_POWERS];
27414779705SSam Leffler 	CAL_TARGET_POWER_HT	calTargetPower5GHT40[AR5416_NUM_5G_40_TARGET_POWERS];
27514779705SSam Leffler 	CAL_TARGET_POWER_LEG	calTargetPowerCck[AR5416_NUM_2G_CCK_TARGET_POWERS];
27614779705SSam Leffler 	CAL_TARGET_POWER_LEG	calTargetPower2G[AR5416_NUM_2G_20_TARGET_POWERS];
27714779705SSam Leffler 	CAL_TARGET_POWER_HT	calTargetPower2GHT20[AR5416_NUM_2G_20_TARGET_POWERS];
27814779705SSam Leffler 	CAL_TARGET_POWER_HT	calTargetPower2GHT40[AR5416_NUM_2G_40_TARGET_POWERS];
27914779705SSam Leffler 	uint8_t			ctlIndex[AR5416_NUM_CTLS];
28014779705SSam Leffler 	CAL_CTL_DATA		ctlData[AR5416_NUM_CTLS];
28114779705SSam Leffler 	uint8_t			padding;
28214779705SSam Leffler } __packed;
28314779705SSam Leffler 
28414779705SSam Leffler typedef struct {
28514779705SSam Leffler 	struct ar5416eeprom ee_base;
28614779705SSam Leffler #define NUM_EDGES	 8
28714779705SSam Leffler 	uint16_t	ee_numCtls;
28814779705SSam Leffler 	RD_EDGES_POWER	ee_rdEdgesPower[NUM_EDGES*AR5416_NUM_CTLS];
28914779705SSam Leffler 	/* XXX these are dynamically calculated for use by shared code */
29014779705SSam Leffler 	int8_t		ee_antennaGainMax[2];
29114779705SSam Leffler } HAL_EEPROM_v14;
29214779705SSam Leffler #endif /* _AH_EEPROM_V14_H_ */
293