Path: blob/main/sys/dev/ath/ath_hal/ah_eeprom_9287.h
39536 views
/*-1* SPDX-License-Identifier: ISC2*3* Copyright (c) 2008-2009 Atheros Communications Inc.4*5* Permission to use, copy, modify, and/or distribute this software for any6* purpose with or without fee is hereby granted, provided that the above7* copyright notice and this permission notice appear in all copies.8*9* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES10* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF11* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR12* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES13* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN14* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF15* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.16*/1718#ifndef __AH_EEPROM_9287_H__19#define __AH_EEPROM_9287_H__2021#define OLC_FOR_AR9287_10_LATER (AR_SREV_9287_11_OR_LATER(ah) && \22ah->eep_ops->get_eeprom(ah, EEP_OL_PWRCTRL))2324#define AR9287_EEP_VER 0xE25#define AR9287_EEP_VER_MINOR_MASK 0xFFF26#define AR9287_EEP_MINOR_VER_1 0x127#define AR9287_EEP_MINOR_VER_2 0x228#define AR9287_EEP_MINOR_VER_3 0x329#define AR9287_EEP_MINOR_VER AR9287_EEP_MINOR_VER_330#define AR9287_EEP_MINOR_VER_b AR9287_EEP_MINOR_VER31#define AR9287_EEP_NO_BACK_VER AR9287_EEP_MINOR_VER_13233#define AR9287_RDEXT_DEFAULT 0x1F3435#define AR9287_EEP_START_LOC 12836#define AR9287_HTC_EEP_START_LOC 25637#define AR9287_NUM_2G_CAL_PIERS 338#define AR9287_NUM_2G_CCK_TARGET_POWERS 339#define AR9287_NUM_2G_20_TARGET_POWERS 340#define AR9287_NUM_2G_40_TARGET_POWERS 341#define AR9287_NUM_CTLS 1242#define AR9287_NUM_BAND_EDGES 443#define AR9287_PD_GAIN_ICEPTS 144#define AR9287_EEPMISC_BIG_ENDIAN 0x0145#define AR9287_EEPMISC_WOW 0x0246#define AR9287_MAX_CHAINS 247#define AR9287_ANT_16S 324849#define AR9287_DATA_SZ 325051#define AR9287_PWR_TABLE_OFFSET_DB -55253#define AR9287_CHECKSUM_LOCATION (AR9287_EEP_START_LOC + 1)5455struct base_eep_ar9287_header {56uint16_t version; /* Swapped w/ length; check ah_eeprom_v14.h */57uint16_t checksum;58uint16_t length;59uint8_t opCapFlags;60uint8_t eepMisc;61uint16_t regDmn[2];62uint8_t macAddr[6];63uint8_t rxMask;64uint8_t txMask;65uint16_t rfSilent;66uint16_t blueToothOptions;67uint16_t deviceCap;68uint32_t binBuildNumber;69uint8_t deviceType;70uint8_t openLoopPwrCntl;71int8_t pwrTableOffset;72int8_t tempSensSlope;73int8_t tempSensSlopePalOn;74uint8_t futureBase[29];75} __packed;7677struct modal_eep_ar9287_header {78uint32_t antCtrlChain[AR9287_MAX_CHAINS];79uint32_t antCtrlCommon;80int8_t antennaGainCh[AR9287_MAX_CHAINS];81uint8_t switchSettling;82uint8_t txRxAttenCh[AR9287_MAX_CHAINS];83uint8_t rxTxMarginCh[AR9287_MAX_CHAINS];84int8_t adcDesiredSize;85uint8_t txEndToXpaOff;86uint8_t txEndToRxOn;87uint8_t txFrameToXpaOn;88uint8_t thresh62;89int8_t noiseFloorThreshCh[AR9287_MAX_CHAINS];90uint8_t xpdGain;91uint8_t xpd;92int8_t iqCalICh[AR9287_MAX_CHAINS];93int8_t iqCalQCh[AR9287_MAX_CHAINS];94uint8_t pdGainOverlap;95uint8_t xpaBiasLvl;96uint8_t txFrameToDataStart;97uint8_t txFrameToPaOn;98uint8_t ht40PowerIncForPdadc;99uint8_t bswAtten[AR9287_MAX_CHAINS];100uint8_t bswMargin[AR9287_MAX_CHAINS];101uint8_t swSettleHt40;102uint8_t version;103uint8_t db1;104uint8_t db2;105uint8_t ob_cck;106uint8_t ob_psk;107uint8_t ob_qam;108uint8_t ob_pal_off;109uint8_t futureModal[30];110SPUR_CHAN spurChans[AR5416_EEPROM_MODAL_SPURS];111} __packed;112113struct cal_data_op_loop_ar9287 {114uint8_t pwrPdg[2][5];115uint8_t vpdPdg[2][5];116uint8_t pcdac[2][5];117uint8_t empty[2][5];118} __packed;119120struct cal_data_per_freq_ar9287 {121uint8_t pwrPdg[AR5416_NUM_PD_GAINS][AR9287_PD_GAIN_ICEPTS];122uint8_t vpdPdg[AR5416_NUM_PD_GAINS][AR9287_PD_GAIN_ICEPTS];123} __packed;124125union cal_data_per_freq_ar9287_u {126struct cal_data_op_loop_ar9287 calDataOpen;127struct cal_data_per_freq_ar9287 calDataClose;128} __packed;129130struct cal_ctl_data_ar9287 {131CAL_CTL_EDGES ctlEdges[AR9287_MAX_CHAINS][AR9287_NUM_BAND_EDGES];132} __packed;133134struct ar9287_eeprom {135struct base_eep_ar9287_header baseEepHeader;136uint8_t custData[AR9287_DATA_SZ];137struct modal_eep_ar9287_header modalHeader;138uint8_t calFreqPier2G[AR9287_NUM_2G_CAL_PIERS];139union cal_data_per_freq_ar9287_u140calPierData2G[AR9287_MAX_CHAINS][AR9287_NUM_2G_CAL_PIERS];141CAL_TARGET_POWER_LEG142calTargetPowerCck[AR9287_NUM_2G_CCK_TARGET_POWERS];143CAL_TARGET_POWER_LEG144calTargetPower2G[AR9287_NUM_2G_20_TARGET_POWERS];145CAL_TARGET_POWER_HT146calTargetPower2GHT20[AR9287_NUM_2G_20_TARGET_POWERS];147CAL_TARGET_POWER_HT148calTargetPower2GHT40[AR9287_NUM_2G_40_TARGET_POWERS];149uint8_t ctlIndex[AR9287_NUM_CTLS];150struct cal_ctl_data_ar9287 ctlData[AR9287_NUM_CTLS];151uint8_t padding;152} __packed;153154typedef struct {155struct ar9287_eeprom ee_base;156#define NUM_EDGES 8157uint16_t ee_numCtls;158RD_EDGES_POWER ee_rdEdgesPower[NUM_EDGES*AR9287_NUM_CTLS];159/* XXX these are dynamically calculated for use by shared code */160int8_t ee_antennaGainMax[2];161} HAL_EEPROM_9287;162163typedef struct modal_eep_ar9287_header MODAL_EEP_9287_HEADER;164typedef struct base_eep_ar9287_header BASE_EEP_9287_HEADER;165166#endif /* __AH_EEPROM_9287_H__ */167168169