| /* |
| * Copyright (c) 2012, 2016 The Linux Foundation. All rights reserved. |
| * |
| * Previously licensed under the ISC license by Qualcomm Atheros, Inc. |
| * |
| * |
| * Permission to use, copy, modify, and/or distribute this software for |
| * any purpose with or without fee is hereby granted, provided that the |
| * above copyright notice and this permission notice appear in all |
| * copies. |
| * |
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL |
| * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED |
| * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE |
| * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL |
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR |
| * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER |
| * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR |
| * PERFORMANCE OF THIS SOFTWARE. |
| */ |
| |
| /* |
| * This file was originally distributed by Qualcomm Atheros, Inc. |
| * under proprietary terms before Copyright ownership was assigned |
| * to the Linux Foundation. |
| */ |
| |
| /** ------------------------------------------------------------------------- * |
| ------------------------------------------------------------------------- * |
| |
| |
| \file wlan_nv.h |
| |
| \brief Types for NV implementation |
| Anything that needs to be publicly available should |
| be in this file |
| |
| $Id$========================================================================== */ |
| |
| #if !defined( __WLAN_NV_H ) |
| #define __WLAN_NV_H |
| |
| #include "halLegacyPalTypes.h" |
| #include "halCompiler.h" |
| |
| //From HAL/inc/halNv.h |
| typedef enum |
| { |
| //Common Nv Fields |
| NV_COMMON_PRODUCT_ID, // 0 |
| NV_COMMON_PRODUCT_BANDS, // 1 |
| NV_COMMON_NUM_OF_TX_CHAINS, // 2 |
| NV_COMMON_NUM_OF_RX_CHAINS, // 3 |
| NV_COMMON_MAC_ADDR, // 4 |
| NV_COMMON_MFG_SERIAL_NUMBER, // 5 |
| NV_COMMON_WLAN_NV_REV_ID, // 6 |
| NV_COMMON_COUPLER_TYPE, // 7 |
| NV_COMMON_NV_VERSION, // 8 |
| NV_COMMON_RESERVED, // 9 |
| |
| NUM_NV_FIELDS, |
| NV_MAX_FIELD = 0x7FFFFFFF /* define as 4 bytes data */ |
| |
| }eNvField; |
| |
| |
| #define NV_FIELD_MAC_ADDR_SIZE 6 |
| #define NV_FIELD_MFG_SN_SIZE 40 |
| typedef enum |
| { |
| PRODUCT_BAND_11_B_G = 0, //Gen6.0 is only this setting |
| PRODUCT_BAND_11_A_B_G = 1, |
| PRODUCT_BAND_11_A = 2, |
| |
| NUM_PRODUCT_BANDS, |
| NUM_PRODUCT_BANDS_INVALID = 0x7FFFFFFF /* define as 4 bytes data */ |
| }eNvProductBands; //NV_COMMON_PRODUCT_BANDS |
| |
| #define EXTERNAL_PA 1 |
| #define INTERNAL_PA 0 |
| |
| #define EXTERNAL_LNA 1 |
| #define INTERNAL_LNA 0 |
| |
| #define EXTERNAL_COUPLER 1 |
| #define INTERNAL_COUPLER 0 |
| |
| #define EXTERNAL_PDET 1 |
| #define INTERNAL_PDET 0 |
| |
| #define DPD_ENABLED 1 |
| #define DPD_DISABLED 0 |
| |
| #define TPC_MODE_OPEN_LOOP 0 |
| #define TPC_MODE_SCPC 1 |
| #define TPC_MODE_CLPC_MODE2 2 |
| #define TPC_MODE_CLPC_MODE3 3 |
| |
| #define PA_POLARITY_TX_UNUSED 0 |
| #define PA_POLARITY_TX_POSITIVE 1 |
| #define PA_POLARITY_TX_NEGATIVE 2 |
| #define PA_POLARITY_RX_UNUSED 0 |
| #define PA_POLARITY_RX_POSITIVE 1 |
| #define PA_POLARITY_RX_NEGATIVE 2 |
| |
| #define NV_VERSION_INVALID 0xFF |
| #define NV_VERSION_11N_11AC_COUPER_TYPE 0 |
| #define NV_VERSION_11N_11AC_FW_CONFIG 1 |
| #define NV_VERSION_LPDC_FW_CONFIG 2 |
| #ifdef FEATURE_WLAN_CH144 |
| #define NV_VERSION_CH144_CONFIG 3 |
| #endif /* FEATURE_WLAN_CH144 */ |
| |
| #ifdef WCN_PRONTO |
| #ifdef FEATURE_WLAN_CH144 |
| #define WLAN_NV_VERSION NV_VERSION_CH144_CONFIG |
| #else |
| #define WLAN_NV_VERSION NV_VERSION_LPDC_FW_CONFIG |
| #endif /* FEATURE_WLAN_CH144 */ |
| #else //WCN_PRONTO |
| #define WLAN_NV_VERSION NV_VERSION_11N_11AC_FW_CONFIG |
| #endif //WCN_PRONTO |
| |
| typedef PACKED_PRE struct PACKED_POST |
| { |
| uint8 macAddr1[NV_FIELD_MAC_ADDR_SIZE]; /* Default, not change name for compatibility */ |
| uint8 macAddr2[NV_FIELD_MAC_ADDR_SIZE]; |
| uint8 macAddr3[NV_FIELD_MAC_ADDR_SIZE]; |
| uint8 macAddr4[NV_FIELD_MAC_ADDR_SIZE]; |
| } sMacAddr; |
| |
| typedef PACKED_PRE union PACKED_POST |
| { |
| //common NV fields |
| uint16 productId; |
| uint8 productBands; |
| uint8 wlanNvRevId; |
| uint8 numOfTxChains; |
| uint8 numOfRxChains; |
| sMacAddr macAddr; |
| uint8 mfgSN[NV_FIELD_MFG_SN_SIZE]; |
| uint8 couplerType; |
| uint8 nvVersion; |
| } uNvFields; |
| |
| |
| //format of common part of nv |
| typedef PACKED_PRE struct PACKED_POST |
| { |
| //always ensure fields are aligned to 32-bit boundaries |
| uint16 productId; |
| uint8 productBands; |
| uint8 wlanNvRevId; //0: WCN1312, 1: WCN1314, 2: WCN3660 |
| |
| uint8 numOfTxChains; |
| uint8 numOfRxChains; |
| uint8 macAddr[NV_FIELD_MAC_ADDR_SIZE]; /* Default, not change name for compatibility */ |
| uint8 macAddr2[NV_FIELD_MAC_ADDR_SIZE]; |
| uint8 macAddr3[NV_FIELD_MAC_ADDR_SIZE]; |
| uint8 macAddr4[NV_FIELD_MAC_ADDR_SIZE]; |
| uint8 mfgSN[NV_FIELD_MFG_SN_SIZE]; |
| uint8 couplerType; |
| uint8 nvVersion; |
| } sNvFields; |
| |
| |
| //From wlanfw/inc/halPhyTypes.h |
| |
| typedef int8 tPowerdBm; //power in signed 8-bit integer, no decimal places |
| |
| typedef PACKED_PRE union PACKED_POST |
| { |
| uint32 measurement; //measured values can be passed to pttApi, but are maintained to 2 decimal places internally |
| int16 reported; //used internally only - reported values only maintain 2 decimals places |
| }uAbsPwrPrecision; |
| |
| typedef enum |
| { |
| PHY_TX_CHAIN_0 = 0, |
| |
| NUM_PHY_MAX_TX_CHAINS = 1, |
| PHY_MAX_TX_CHAINS = NUM_PHY_MAX_TX_CHAINS, |
| PHY_ALL_TX_CHAINS, |
| |
| //possible tx chain combinations |
| PHY_NO_TX_CHAINS, |
| PHY_TX_CHAIN_INVALID = 0x7FFFFFFF /* define as 4 bytes data */ |
| }ePhyTxChains; |
| |
| //From wlanfw/inc/halRfTypes.h |
| |
| typedef enum |
| { |
| REG_DOMAIN_FCC, |
| REG_DOMAIN_ETSI, |
| REG_DOMAIN_JAPAN, |
| REG_DOMAIN_WORLD, |
| REG_DOMAIN_N_AMER_EXC_FCC, |
| REG_DOMAIN_APAC, |
| REG_DOMAIN_KOREA, |
| REG_DOMAIN_HI_5GHZ, |
| REG_DOMAIN_NO_5GHZ, |
| |
| NUM_REG_DOMAINS, |
| NUM_REG_DOMAINS_INVALID = 0x7FFFFFFF /* define as 4 bytes data */ |
| }eRegDomainId; |
| |
| typedef enum |
| { |
| RF_SUBBAND_2_4_GHZ = 0, |
| RF_SUBBAND_5_LOW_GHZ = 1, //Low & Mid U-NII |
| RF_SUBBAND_5_MID_GHZ = 2, //ETSI |
| RF_SUBBAND_5_HIGH_GHZ = 3, //High U-NII |
| RF_SUBBAND_4_9_GHZ = 4, //Japanese |
| |
| |
| NUM_RF_SUBBANDS, |
| |
| MAX_RF_SUBBANDS, |
| INVALID_RF_SUBBAND, |
| |
| RF_BAND_2_4_GHZ = 0, |
| RF_BAND_5_GHZ = 1, |
| NUM_RF_BANDS, |
| BOTH_RF_BANDS, |
| RF_SUBBAND_INVALID = 0x7FFFFFFF /* define as 4 bytes data */ |
| }eRfSubBand; |
| |
| typedef enum |
| { |
| //2.4GHz Band |
| RF_CHAN_1 = 0, |
| RF_CHAN_2, |
| RF_CHAN_3, |
| RF_CHAN_4, |
| RF_CHAN_5, |
| RF_CHAN_6, |
| RF_CHAN_7, |
| RF_CHAN_8, |
| RF_CHAN_9, |
| RF_CHAN_10, |
| RF_CHAN_11, |
| RF_CHAN_12, |
| RF_CHAN_13, |
| RF_CHAN_14, |
| |
| //5GHz Low & Mid U-NII Band |
| RF_CHAN_36, |
| RF_CHAN_40, |
| RF_CHAN_44, |
| RF_CHAN_48, |
| RF_CHAN_52, |
| RF_CHAN_56, |
| RF_CHAN_60, |
| RF_CHAN_64, |
| |
| //5GHz Mid Band - ETSI & FCC |
| RF_CHAN_100, |
| RF_CHAN_104, |
| RF_CHAN_108, |
| RF_CHAN_112, |
| RF_CHAN_116, |
| RF_CHAN_120, |
| RF_CHAN_124, |
| RF_CHAN_128, |
| RF_CHAN_132, |
| RF_CHAN_136, |
| RF_CHAN_140, |
| #ifdef FEATURE_WLAN_CH144 |
| RF_CHAN_144, |
| #endif /* FEATURE_WLAN_CH144 */ |
| |
| //5GHz High U-NII Band |
| RF_CHAN_149, |
| RF_CHAN_153, |
| RF_CHAN_157, |
| RF_CHAN_161, |
| RF_CHAN_165, |
| |
| // 802.11p |
| RF_CHAN_170, |
| RF_CHAN_171, |
| RF_CHAN_172, |
| RF_CHAN_173, |
| RF_CHAN_174, |
| RF_CHAN_175, |
| RF_CHAN_176, |
| RF_CHAN_177, |
| RF_CHAN_178, |
| RF_CHAN_179, |
| RF_CHAN_180, |
| RF_CHAN_181, |
| RF_CHAN_182, |
| RF_CHAN_183, |
| RF_CHAN_184, |
| |
| //CHANNEL BONDED CHANNELS |
| RF_CHAN_BOND_3, |
| RF_CHAN_BOND_4, |
| RF_CHAN_BOND_5, |
| RF_CHAN_BOND_6, |
| RF_CHAN_BOND_7, |
| RF_CHAN_BOND_8, |
| RF_CHAN_BOND_9, |
| RF_CHAN_BOND_10, |
| RF_CHAN_BOND_11, |
| RF_CHAN_BOND_38, //5GHz Low & Mid U-NII Band |
| RF_CHAN_BOND_42, |
| RF_CHAN_BOND_46, |
| RF_CHAN_BOND_50, |
| RF_CHAN_BOND_54, |
| RF_CHAN_BOND_58, |
| RF_CHAN_BOND_62, |
| RF_CHAN_BOND_102, //5GHz Mid Band - ETSI & FCC |
| RF_CHAN_BOND_106, |
| RF_CHAN_BOND_110, |
| RF_CHAN_BOND_114, |
| RF_CHAN_BOND_118, |
| RF_CHAN_BOND_122, |
| RF_CHAN_BOND_126, |
| RF_CHAN_BOND_130, |
| RF_CHAN_BOND_134, |
| RF_CHAN_BOND_138, |
| #ifdef FEATURE_WLAN_CH144 |
| RF_CHAN_BOND_142, |
| #endif /* FEATURE_WLAN_CH144 */ |
| RF_CHAN_BOND_151, //5GHz High U-NII Band |
| RF_CHAN_BOND_155, |
| RF_CHAN_BOND_159, |
| RF_CHAN_BOND_163, |
| |
| NUM_RF_CHANNELS, |
| |
| MIN_2_4GHZ_CHANNEL = RF_CHAN_1, |
| MAX_2_4GHZ_CHANNEL = RF_CHAN_14, |
| |
| MIN_5GHZ_CHANNEL = RF_CHAN_36, |
| MAX_5GHZ_CHANNEL = RF_CHAN_184, |
| NUM_5GHZ_CHANNELS = (MAX_5GHZ_CHANNEL - MIN_5GHZ_CHANNEL + 1), |
| |
| MIN_20MHZ_RF_CHANNEL = RF_CHAN_1, |
| MAX_20MHZ_RF_CHANNEL = RF_CHAN_184, |
| NUM_20MHZ_RF_CHANNELS = (MAX_20MHZ_RF_CHANNEL - MIN_20MHZ_RF_CHANNEL + 1), |
| |
| MIN_40MHZ_RF_CHANNEL = RF_CHAN_BOND_3, |
| MAX_40MHZ_RF_CHANNEL = RF_CHAN_BOND_163, |
| NUM_40MHZ_RF_CHANNELS = (MAX_40MHZ_RF_CHANNEL - MIN_40MHZ_RF_CHANNEL + 1), |
| |
| MIN_CB_2_4GHZ_CHANNEL = RF_CHAN_BOND_3, |
| MAX_CB_2_4GHZ_CHANNEL = RF_CHAN_BOND_11, |
| |
| MIN_CB_5GHZ_CHANNEL = RF_CHAN_BOND_38, |
| MAX_CB_5GHZ_CHANNEL = RF_CHAN_BOND_163, |
| |
| NUM_TPC_2_4GHZ_CHANNELS = 14, |
| NUM_TPC_5GHZ_CHANNELS = NUM_5GHZ_CHANNELS, |
| |
| INVALID_RF_CHANNEL = 0xBAD, |
| RF_CHANNEL_INVALID_MAX_FIELD = 0x7FFFFFFF /* define as 4 bytes data */ |
| }eRfChannels; |
| |
| typedef enum |
| { |
| RF_CHAN_1_1 = RF_CHAN_1, |
| RF_CHAN_2_1 = RF_CHAN_2, |
| RF_CHAN_3_1 = RF_CHAN_3, |
| RF_CHAN_4_1 = RF_CHAN_4, |
| RF_CHAN_5_1 = RF_CHAN_5, |
| RF_CHAN_6_1 = RF_CHAN_6, |
| RF_CHAN_7_1 = RF_CHAN_7, |
| RF_CHAN_8_1 = RF_CHAN_8, |
| RF_CHAN_9_1 = RF_CHAN_9, |
| RF_CHAN_10_1 = RF_CHAN_10, |
| RF_CHAN_11_1 = RF_CHAN_11, |
| RF_CHAN_12_1 = RF_CHAN_12, |
| RF_CHAN_13_1 = RF_CHAN_13, |
| RF_CHAN_14_1 = RF_CHAN_14, |
| // The above params are used for scripts. |
| NUM_2_4GHZ_CHANNELS, |
| }eRfChannels_2_4GHz; |
| |
| enum |
| { |
| NV_CHANNEL_DISABLE, |
| NV_CHANNEL_ENABLE, |
| NV_CHANNEL_DFS, |
| NV_CHANNEL_INVALID, |
| NV_CHANNEL_SKIP_DSRC, |
| NV_CHANNEL_SKIP_2G |
| }; |
| typedef uint8 eNVChannelEnabledType; |
| |
| typedef PACKED_PRE struct PACKED_POST |
| { |
| uint32_t enabled:4; |
| uint32_t flags:28; |
| tPowerdBm pwrLimit; |
| }sRegulatoryChannel; |
| |
| typedef PACKED_PRE struct PACKED_POST |
| { |
| sRegulatoryChannel channels[NUM_RF_CHANNELS]; |
| uAbsPwrPrecision antennaGain[NUM_RF_SUBBANDS]; |
| uAbsPwrPrecision bRatePowerOffset[NUM_2_4GHZ_CHANNELS]; |
| uAbsPwrPrecision gnRatePowerOffset[NUM_RF_CHANNELS]; |
| }ALIGN_4 sRegulatoryDomains; |
| |
| typedef PACKED_PRE struct PACKED_POST |
| { |
| int16 bRssiOffset[NUM_RF_CHANNELS]; |
| int16 gnRssiOffset[NUM_RF_CHANNELS]; |
| }ALIGN_4 sRssiChannelOffsets; |
| |
| typedef PACKED_PRE struct PACKED_POST |
| { |
| uint16 targetFreq; //number in MHz |
| uint16 channelNum; //channel number as in the eRfChannels enumeration |
| eRfSubBand band; //band that this channel belongs to |
| }tRfChannelProps; |
| |
| typedef enum |
| { |
| MODE_802_11B = 0, |
| MODE_802_11AG = 1, |
| MODE_802_11N = 2, |
| NUM_802_11_MODES, |
| MODE_802_11_INVALID = 0x7FFFFFFF /* define as 4 bytes data */ |
| } e80211Modes; |
| |
| #define HW_CAL_VALUES_VALID_BMAP_UNUSED 0 //Value |
| //Bit mask |
| #define HW_VAL_VALUES_VALID_BMAP_SLEEP_TIME_OVERHEAD_2G_MASK 0x1 |
| #define HW_VAL_VALUES_VALID_BMAP_SLEEP_TIME_OVERHEAD_5G_MASK 0x2 |
| #define HW_VAL_VALUES_VALID_BMAP_SLEEP_TIME_OVERHEAD_xLNA_5G_MASK 0x4 |
| #define HW_VAL_VALUES_VALID_TXBBF_SEL_9MHZ_MASK 0x8 |
| #define HW_VAL_VALUES_VALID_CUSTOM_TCXO_REG8_MASK 0x10 |
| #define HW_VAL_VALUES_VALID_CUSTOM_TCXO_REG9_MASK 0x20 |
| |
| //From wlanfw/inc/halPhyCalMemory.h |
| typedef PACKED_PRE struct PACKED_POST |
| { |
| uint16 psSlpTimeOvrHd2G; |
| uint16 psSlpTimeOvrHd5G; |
| |
| uint16 psSlpTimeOvrHdxLNA5G; |
| uint8 nv_TxBBFSel9MHz : 1; |
| uint8 hwParam1 : 7; |
| uint8 hwParam2; |
| |
| uint16 custom_tcxo_reg8; |
| uint16 custom_tcxo_reg9; |
| |
| uint32 hwParam3; |
| uint32 hwParam4; |
| uint32 hwParam5; |
| uint32 hwParam6; |
| uint32 hwParam7; |
| uint32 hwParam8; |
| uint32 hwParam9; |
| uint32 hwParam10; |
| uint32 hwParam11; |
| }sCalData; |
| |
| typedef PACKED_PRE struct PACKED_POST |
| { |
| uint32 validBmap; //use eNvCalID |
| sCalData calData; |
| }sHwCalValues; |
| |
| typedef PACKED_PRE struct PACKED_POST |
| { |
| uint32 txFirFilterMode; |
| }sTxBbFilterMode; |
| |
| typedef PACKED_PRE struct PACKED_POST |
| { |
| int16 ofdmPwrOffset; |
| int16 rsvd; |
| }sOfdmCmdPwrOffset; |
| |
| //From wlanfw/inc/halPhyCfg.h |
| typedef uint8 tTpcLutValue; |
| |
| #define MAX_TPC_CAL_POINTS (8) |
| |
| typedef uint8 tPowerDetect; //7-bit power detect reading |
| |
| typedef PACKED_PRE struct PACKED_POST |
| { |
| tPowerDetect pwrDetAdc; //= SENSED_PWR register, which reports the 8-bit ADC |
| // the stored ADC value gets shifted to 7-bits as the index to the LUT |
| tPowerDetect adjustedPwrDet; //7-bit value that goes into the LUT at the LUT[pwrDet] location |
| //MSB set if extraPrecision.hi8_adjustedPwrDet is used |
| }tTpcCaldPowerPoint; |
| |
| typedef tTpcCaldPowerPoint tTpcCaldPowerTable[NUM_PHY_MAX_TX_CHAINS][MAX_TPC_CAL_POINTS]; |
| |
| typedef PACKED_PRE struct PACKED_POST |
| { |
| tTpcCaldPowerTable empirical; //calibrated power points |
| }tTpcConfig; |
| |
| //From wlanfw/inc/phyTxPower.h |
| #ifndef TPC_MEM_POWER_LUT_DEPTH |
| #define TPC_MEM_POWER_LUT_DEPTH 256 |
| #endif |
| |
| typedef tTpcLutValue tTpcPowerTable[NUM_PHY_MAX_TX_CHAINS][TPC_MEM_POWER_LUT_DEPTH]; |
| |
| typedef PACKED_PRE struct PACKED_POST |
| { |
| tTpcConfig *pwrSampled; //points to CLPC data in calMemory |
| }tPhyTxPowerBand; |
| |
| //From halPhyRates.h |
| typedef enum |
| { |
| //802.11b Rates |
| HAL_PHY_RATE_11B_LONG_1_MBPS, |
| HAL_PHY_RATE_11B_LONG_2_MBPS, |
| HAL_PHY_RATE_11B_LONG_5_5_MBPS, |
| HAL_PHY_RATE_11B_LONG_11_MBPS, |
| HAL_PHY_RATE_11B_SHORT_2_MBPS, |
| HAL_PHY_RATE_11B_SHORT_5_5_MBPS, |
| HAL_PHY_RATE_11B_SHORT_11_MBPS, |
| |
| //Spica_Virgo 11A 20MHz Rates |
| HAL_PHY_RATE_11A_6_MBPS, |
| HAL_PHY_RATE_11A_9_MBPS, |
| HAL_PHY_RATE_11A_12_MBPS, |
| HAL_PHY_RATE_11A_18_MBPS, |
| HAL_PHY_RATE_11A_24_MBPS, |
| HAL_PHY_RATE_11A_36_MBPS, |
| HAL_PHY_RATE_11A_48_MBPS, |
| HAL_PHY_RATE_11A_54_MBPS, |
| |
| // 11A 20MHz Rates |
| HAL_PHY_RATE_11A_DUP_6_MBPS, |
| HAL_PHY_RATE_11A_DUP_9_MBPS, |
| HAL_PHY_RATE_11A_DUP_12_MBPS, |
| HAL_PHY_RATE_11A_DUP_18_MBPS, |
| HAL_PHY_RATE_11A_DUP_24_MBPS, |
| HAL_PHY_RATE_11A_DUP_36_MBPS, |
| HAL_PHY_RATE_11A_DUP_48_MBPS, |
| HAL_PHY_RATE_11A_DUP_54_MBPS, |
| |
| //MCS Index #0-7 (20/40MHz) |
| HAL_PHY_RATE_MCS_1NSS_6_5_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_13_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_19_5_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_26_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_39_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_52_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_58_5_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_65_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_MM_SG_7_2_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_MM_SG_14_4_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_MM_SG_21_7_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_MM_SG_28_9_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_MM_SG_43_3_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_MM_SG_57_8_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_MM_SG_65_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_MM_SG_72_2_MBPS, |
| |
| //MCS Index #8-15 (20/40MHz) |
| HAL_PHY_RATE_MCS_1NSS_CB_13_5_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_CB_27_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_CB_40_5_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_CB_54_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_CB_81_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_CB_108_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_CB_121_5_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_CB_135_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_15_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_30_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_45_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_60_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_90_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_120_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_135_MBPS, |
| HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_150_MBPS, |
| |
| #ifdef WLAN_FEATURE_11AC |
| /*11A duplicate 80MHz Rates*/ |
| HAL_PHY_RATE_11AC_DUP_6_MBPS, |
| HAL_PHY_RATE_11AC_DUP_9_MBPS, |
| HAL_PHY_RATE_11AC_DUP_12_MBPS, |
| HAL_PHY_RATE_11AC_DUP_18_MBPS, |
| HAL_PHY_RATE_11AC_DUP_24_MBPS, |
| HAL_PHY_RATE_11AC_DUP_36_MBPS, |
| HAL_PHY_RATE_11AC_DUP_48_MBPS, |
| HAL_PHY_RATE_11AC_DUP_54_MBPS, |
| |
| /*11AC rate 20MHZ Normal GI*/ |
| HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_6_5_MBPS, |
| HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_13_MBPS, |
| HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_19_5_MBPS, |
| HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_26_MBPS, |
| HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_39_MBPS, |
| HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_52_MBPS, |
| HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_58_5_MBPS, |
| HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_65_MBPS, |
| HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_78_MBPS, |
| #ifdef WCN_PRONTO |
| HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_86_5_MBPS, |
| #endif |
| |
| /*11AC rate 20MHZ Shortl GI*/ |
| HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_7_2_MBPS, |
| HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_14_4_MBPS, |
| HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_21_6_MBPS, |
| HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_28_8_MBPS, |
| HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_43_3_MBPS, |
| HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_57_7_MBPS, |
| HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_65_MBPS, |
| HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_72_2_MBPS, |
| HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_86_6_MBPS, |
| #ifdef WCN_PRONTO |
| HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_96_1_MBPS, |
| #endif |
| |
| /*11AC rates 40MHZ normal GI*/ |
| HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_13_5_MBPS , |
| HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_27_MBPS, |
| HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_40_5_MBPS, |
| HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_54_MBPS, |
| HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_81_MBPS, |
| HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_108_MBPS, |
| HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_121_5_MBPS, |
| HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_135_MBPS, |
| HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_162_MBPS, |
| HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_180_MBPS, |
| |
| /*11AC rates 40MHZ short GI*/ |
| HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_15_MBPS , |
| HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_30_MBPS, |
| HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_45_MBPS, |
| HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_60_MBPS, |
| HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_90_MBPS, |
| HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_120_MBPS, |
| HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_135_MBPS, |
| HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_150_MBPS, |
| HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_180_MBPS, |
| HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_200_MBPS, |
| |
| /*11AC rates 80 MHZ normal GI*/ |
| HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_29_3_MBPS , |
| HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_58_5_MBPS, |
| HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_87_8_MBPS, |
| HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_117_MBPS, |
| HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_175_5_MBPS, |
| HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_234_MBPS, |
| HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_263_3_MBPS, |
| HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_292_5_MBPS, |
| HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_351_MBPS, |
| HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_390_MBPS, |
| |
| /*11AC rates 80 MHZ short GI*/ |
| HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_32_5_MBPS , |
| HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_65_MBPS, |
| HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_97_5_MBPS, |
| HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_130_MBPS, |
| HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_195_MBPS, |
| HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_260_MBPS, |
| HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_292_5_MBPS, |
| HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_325_MBPS, |
| HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_390_MBPS, |
| HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_433_3_MBPS, |
| #endif //WLAN_FEATURE_11AC |
| |
| NUM_HAL_PHY_RATES, |
| HAL_PHY_RATE_INVALID, |
| MIN_RATE_INDEX = 0, |
| MAX_RATE_INDEX = NUM_HAL_PHY_RATES - 1, |
| HAL_PHY_RATE_INVALID_MAX_FIELD = 0x7FFFFFFF /* define as 4 bytes data */ |
| }eHalPhyRates; |
| |
| #define NUM_RATE_POWER_GROUPS NUM_HAL_PHY_RATES //total number of rate power groups including the CB_RATE_POWER_OFFSET |
| typedef uAbsPwrPrecision tRateGroupPwr[NUM_HAL_PHY_RATES]; |
| |
| //From halNvTables.h |
| #define NV_FIELD_COUNTRY_CODE_SIZE 3 |
| typedef PACKED_PRE struct PACKED_POST |
| { |
| uint8 regDomain; //from eRegDomainId |
| uint8 countryCode[NV_FIELD_COUNTRY_CODE_SIZE]; // string identifier |
| }sDefaultCountry; |
| |
| |
| #define GF_PA_BIAS_SELECT_MASK 0X7 //(3 bits) |
| #define TSMC_PA_BIAS_SELECT_MASK 0x7 //(3 bits) |
| |
| #define GF_PA_BIAS_SELECT_1 0X0 |
| #define GF_PA_BIAS_SELECT_2 0X1 |
| |
| #define TSMC_PA_BIAS_SELECT_1 0X0 |
| #define TSMC_PA_BIAS_SELECT_2 0X1 |
| #define TSMC_PA_BIAS_SELECT_3 0x2 |
| |
| |
| #define EXT_PA_CTRL_POLARITY_DEFAULT 0X0 |
| #define EXT_PA_CTRL_POLARITY_VALID 0X80 |
| |
| #define EXT_PA_CTRL0_POLARITY_MASK 0X3 |
| #define EXT_PA_CTRL0_POLARITY_OFFSET 0X0 |
| #define EXT_PA_CTRL1_POLARITY_MASK 0XC |
| #define EXT_PA_CTRL1_POLARITY_OFFSET 0X2 |
| |
| #define EXT_PA_CTRL_POLARITY_ZERO 0X1 |
| #define EXT_PA_CTRL_POLARITY_ONE 0X2 |
| |
| typedef PACKED_PRE struct PACKED_POST |
| { |
| uint8 skuID; |
| uint8 tpcMode2G; |
| uint8 tpcMode5G; |
| uint8 configItem1; |
| |
| uint8 xPA2G; |
| uint8 xPA5G; |
| uint8 extPaCtrl0Polarity; |
| uint8 extPaCtrl1Polarity; |
| |
| uint8 xLNA2G; |
| uint8 xLNA5G; |
| uint8 xCoupler2G; |
| uint8 xCoupler5G; |
| |
| uint8 xPdet2G; |
| uint8 xPdet5G; |
| uint8 enableDPD2G; |
| uint8 enableDPD5G; |
| |
| uint8 pdadcSelect2G; |
| uint8 pdadcSelect5GLow; |
| uint8 pdadcSelect5GMid; |
| uint8 pdadcSelect5GHigh; |
| |
| uint32 configItem2; |
| uint32 configItem3; |
| uint32 configItem4; |
| }sFwConfig; |
| |
| |
| #define NUM_RF_VR_RATE 13 |
| typedef uAbsPwrPrecision tRateGroupPwrVR[NUM_RF_VR_RATE]; |
| |
| typedef PACKED_PRE union PACKED_POST |
| { |
| tRateGroupPwr pwrOptimum[NUM_RF_SUBBANDS]; // NV_TABLE_RATE_POWER_SETTINGS |
| sRegulatoryDomains regDomains[NUM_REG_DOMAINS]; // NV_TABLE_REGULATORY_DOMAINS |
| sDefaultCountry defaultCountryTable; // NV_TABLE_DEFAULT_COUNTRY |
| tTpcPowerTable plutCharacterized[NUM_RF_CHANNELS]; // NV_TABLE_TPC_POWER_TABLE |
| int16 plutPdadcOffset[NUM_RF_CHANNELS]; // NV_TABLE_TPC_PDADC_OFFSETS |
| tRateGroupPwrVR pwrOptimum_virtualRate[NUM_RF_SUBBANDS]; // NV_TABLE_VIRTUAL_RATE |
| sFwConfig fwConfig; // NV_TABLE_FW_CONFIG |
| sRssiChannelOffsets rssiChanOffsets[2]; // NV_TABLE_RSSI_CHANNEL_OFFSETS |
| sHwCalValues hwCalValues; // NV_TABLE_HW_CAL_VALUES |
| int16 antennaPathLoss[NUM_RF_CHANNELS]; // NV_TABLE_ANTENNA_PATH_LOSS |
| int16 pktTypePwrLimits[NUM_802_11_MODES][NUM_RF_CHANNELS]; // NV_TABLE_PACKET_TYPE_POWER_LIMITS |
| sOfdmCmdPwrOffset ofdmCmdPwrOffset; // NV_TABLE_OFDM_CMD_PWR_OFFSET |
| sTxBbFilterMode txbbFilterMode; // NV_TABLE_TX_BB_FILTER_MODE |
| }ALIGN_4 uNvTables; |
| |
| //From halPhy.h |
| typedef tPowerdBm tChannelPwrLimit; |
| |
| typedef PACKED_PRE struct PACKED_POST |
| { |
| uint8 chanId; |
| tChannelPwrLimit pwr; |
| } ALIGN_4 tChannelListWithPower; |
| |
| //From HAL/inc/halNvTables.h |
| typedef enum |
| { |
| NV_FIELDS_IMAGE = 0, //contains all fields |
| |
| NV_TABLE_RATE_POWER_SETTINGS = 2, |
| NV_TABLE_REGULATORY_DOMAINS = 3, |
| NV_TABLE_DEFAULT_COUNTRY = 4, |
| NV_TABLE_TPC_POWER_TABLE = 5, |
| NV_TABLE_TPC_PDADC_OFFSETS = 6, |
| NV_TABLE_HW_CAL_VALUES = 7, |
| NV_TABLE_RSSI_CHANNEL_OFFSETS = 9, |
| NV_TABLE_CAL_MEMORY = 10, //cal memory structure from halPhyCalMemory.h preceded by status |
| NV_TABLE_FW_CONFIG = 11, |
| NV_TABLE_ANTENNA_PATH_LOSS = 12, |
| NV_TABLE_PACKET_TYPE_POWER_LIMITS = 13, |
| NV_TABLE_OFDM_CMD_PWR_OFFSET = 14, |
| NV_TABLE_TX_BB_FILTER_MODE = 15, |
| NV_TABLE_VIRTUAL_RATE = 18, |
| |
| NUM_NV_TABLE_IDS, |
| NV_ALL_TABLES = 0xFFF, |
| NV_BINARY_IMAGE = 0x1000, |
| NV_MAX_TABLE = 0x7FFFFFFF /* define as 4 bytes data */ |
| }eNvTable; |
| |
| typedef PACKED_PRE struct PACKED_POST |
| { |
| tRateGroupPwr pwrOptimum[NUM_RF_SUBBANDS]; // NV_TABLE_RATE_POWER_SETTINGS |
| sRegulatoryDomains regDomains[NUM_REG_DOMAINS]; // NV_TABLE_REGULATORY_DOMAINS |
| sDefaultCountry defaultCountryTable; // NV_TABLE_DEFAULT_COUNTRY |
| tTpcPowerTable plutCharacterized[NUM_RF_CHANNELS]; // NV_TABLE_TPC_POWER_TABLE |
| int16 plutPdadcOffset[NUM_RF_CHANNELS]; // NV_TABLE_TPC_PDADC_OFFSETS |
| tRateGroupPwrVR pwrOptimum_virtualRate[NUM_RF_SUBBANDS]; // NV_TABLE_VIRTUAL_RATE |
| sFwConfig fwConfig; // NV_TABLE_FW_CONFIG |
| sRssiChannelOffsets rssiChanOffsets[2]; // NV_TABLE_RSSI_CHANNEL_OFFSETS |
| sHwCalValues hwCalValues; // NV_TABLE_HW_CAL_VALUES |
| int16 antennaPathLoss[NUM_RF_CHANNELS]; // NV_TABLE_ANTENNA_PATH_LOSS |
| int16 pktTypePwrLimits[NUM_802_11_MODES][NUM_RF_CHANNELS]; // NV_TABLE_PACKET_TYPE_POWER_LIMITS |
| sOfdmCmdPwrOffset ofdmCmdPwrOffset; // NV_TABLE_OFDM_CMD_PWR_OFFSET |
| sTxBbFilterMode txbbFilterMode; // NV_TABLE_TX_BB_FILTER_MODE |
| }ALIGN_4 sNvTables; |
| |
| typedef PACKED_PRE struct PACKED_POST |
| { |
| sNvFields fields; |
| sNvTables tables; |
| }ALIGN_4 sHalNv; |
| |
| extern const sHalNv nvDefaults; |
| |
| #endif |
| |