839 lines
26 KiB
C
839 lines
26 KiB
C
/*
|
|
* Copyright (c) 2012, 2014, 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,
|
|
|
|
//4.9GHz Band
|
|
RF_CHAN_240,
|
|
RF_CHAN_244,
|
|
RF_CHAN_248,
|
|
RF_CHAN_252,
|
|
RF_CHAN_208,
|
|
RF_CHAN_212,
|
|
RF_CHAN_216,
|
|
|
|
//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_242, //4.9GHz Band
|
|
RF_CHAN_BOND_246,
|
|
RF_CHAN_BOND_250,
|
|
RF_CHAN_BOND_210,
|
|
RF_CHAN_BOND_214,
|
|
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_240,
|
|
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_242,
|
|
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
|
|
};
|
|
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
|
|
|