blob: cb2953034a5ec66ca509d144c711a7c53ef21abc [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -08002* Copyright (c) 2012 Qualcomm Atheros, Inc.
3* All Rights Reserved.
4* Qualcomm Atheros Confidential and Proprietary.
5*/
Jeff Johnson295189b2012-06-20 16:38:30 -07006
7/** ------------------------------------------------------------------------- *
8 ------------------------------------------------------------------------- *
9
10
11 \file wlan_nv.h
12
13 \brief Types for NV implementation
14 Anything that needs to be publicly available should
15 be in this file
16
17 $Id$
18
19 Copyright (C) 2006 Airgo Networks, Incorporated
20
21
22 ========================================================================== */
23
24#if !defined( __WLAN_NV_H )
25#define __WLAN_NV_H
26
27#include "halLegacyPalTypes.h"
28#include "halCompiler.h"
29
30//From HAL/inc/halNv.h
31typedef enum
32{
33 //Common Nv Fields
34 NV_COMMON_PRODUCT_ID, // 0
35 NV_COMMON_PRODUCT_BANDS, // 1
36 NV_COMMON_NUM_OF_TX_CHAINS, // 2
37 NV_COMMON_NUM_OF_RX_CHAINS, // 3
38 NV_COMMON_MAC_ADDR, // 4
39 NV_COMMON_MFG_SERIAL_NUMBER, // 5
40 NV_COMMON_WLAN_NV_REV_ID, // 6
41 NV_COMMON_COUPLER_TYPE, // 7
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -080042 NV_COMMON_NV_VERSION, // 8
43 NV_COMMON_RESERVED, // 9
Jeff Johnson295189b2012-06-20 16:38:30 -070044
45 NUM_NV_FIELDS,
46 NV_MAX_FIELD = 0x7FFFFFFF /* define as 4 bytes data */
47
48}eNvField;
49
50
51#define NV_FIELD_MAC_ADDR_SIZE 6
52#define NV_FIELD_MFG_SN_SIZE 40
53typedef enum
54{
55 PRODUCT_BAND_11_B_G = 0, //Gen6.0 is only this setting
56 PRODUCT_BAND_11_A_B_G = 1,
57 PRODUCT_BAND_11_A = 2,
58
59 NUM_PRODUCT_BANDS,
60 NUM_PRODUCT_BANDS_INVALID = 0x7FFFFFFF /* define as 4 bytes data */
61}eNvProductBands; //NV_COMMON_PRODUCT_BANDS
62
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -080063#define EXTERNAL_PA 1
64#define INTERNAL_PA 0
65
66#define EXTERNAL_LNA 1
67#define INTERNAL_LNA 0
68
69#define EXTERNAL_COUPLER 1
70#define INTERNAL_COUPLER 0
71
72#define EXTERNAL_PDET 1
73#define INTERNAL_PDET 0
74
75#define DPD_ENABLED 1
76#define DPD_DISABLED 0
77
78#define TPC_MODE_OPEN_LOOP 0
79#define TPC_MODE_SCPC 1
80#define TPC_MODE_CLPC_MODE2 2
81#define TPC_MODE_CLPC_MODE3 3
82
83#define PA_POLARITY_TX_UNUSED 0
84#define PA_POLARITY_TX_POSITIVE 1
85#define PA_POLARITY_TX_NEGATIVE 2
86#define PA_POLARITY_RX_UNUSED 0
87#define PA_POLARITY_RX_POSITIVE 1
88#define PA_POLARITY_RX_NEGATIVE 2
89
90#define NV_VERSION_INVALID 0xFF
91#define NV_VERSION_11N_11AC_COUPER_TYPE 0
92#define NV_VERSION_11N_11AC_FW_CONFIG 1
93#define NV_VERSION_LPDC_FW_CONFIG 2
94
95#ifdef WCN_PRONTO
96#define WLAN_NV_VERSION NV_VERSION_LPDC_FW_CONFIG
97#else //WCN_PRONTO
98#define WLAN_NV_VERSION NV_VERSION_11N_11AC_FW_CONFIG
99#endif //WCN_PRONTO
Jeff Johnson295189b2012-06-20 16:38:30 -0700100
101typedef PACKED_PRE union PACKED_POST
102{
103 //common NV fields
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800104 uint16 productId;
105 uint8 productBands;
106 uint8 wlanNvRevId;
107 uint8 numOfTxChains;
108 uint8 numOfRxChains;
109 uint8 macAddr[NV_FIELD_MAC_ADDR_SIZE]; /* Default, not change name for compatibility */
110 uint8 macAddr2[NV_FIELD_MAC_ADDR_SIZE];
111 uint8 macAddr3[NV_FIELD_MAC_ADDR_SIZE];
112 uint8 macAddr4[NV_FIELD_MAC_ADDR_SIZE];
113 uint8 mfgSN[NV_FIELD_MFG_SN_SIZE];
114 uint8 couplerType;
115 uint8 nvVersion;
Jeff Johnson295189b2012-06-20 16:38:30 -0700116} uNvFields;
117
118
Jeff Johnson295189b2012-06-20 16:38:30 -0700119//format of common part of nv
120typedef PACKED_PRE struct PACKED_POST
121{
122 //always ensure fields are aligned to 32-bit boundaries
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800123 uint16 productId;
124 uint8 productBands;
125 uint8 wlanNvRevId; //0: WCN1312, 1: WCN1314, 2: WCN3660
Jeff Johnson295189b2012-06-20 16:38:30 -0700126
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800127 uint8 numOfTxChains;
128 uint8 numOfRxChains;
129 uint8 macAddr[NV_FIELD_MAC_ADDR_SIZE]; /* Default, not change name for compatibility */
130 uint8 macAddr2[NV_FIELD_MAC_ADDR_SIZE];
131 uint8 macAddr3[NV_FIELD_MAC_ADDR_SIZE];
132 uint8 macAddr4[NV_FIELD_MAC_ADDR_SIZE];
133 uint8 mfgSN[NV_FIELD_MFG_SN_SIZE];
134 uint8 couplerType;
135 uint8 nvVersion;
Jeff Johnson295189b2012-06-20 16:38:30 -0700136} sNvFields;
137
138
139//From wlanfw/inc/halPhyTypes.h
140
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800141typedef int8 tPowerdBm; //power in signed 8-bit integer, no decimal places
Jeff Johnson295189b2012-06-20 16:38:30 -0700142
143typedef PACKED_PRE union PACKED_POST
144{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800145 uint32 measurement; //measured values can be passed to pttApi, but are maintained to 2 decimal places internally
146 int16 reported; //used internally only - reported values only maintain 2 decimals places
Jeff Johnson295189b2012-06-20 16:38:30 -0700147}uAbsPwrPrecision;
148
149typedef enum
150{
151 PHY_TX_CHAIN_0 = 0,
152
153 PHY_MAX_TX_CHAINS = 1,
154 PHY_ALL_TX_CHAINS,
155
156 //possible tx chain combinations
157 PHY_NO_TX_CHAINS,
158 PHY_TX_CHAIN_INVALID = 0x7FFFFFFF /* define as 4 bytes data */
159}ePhyTxChains;
160
161//From wlanfw/inc/halRfTypes.h
162
163typedef enum
164{
165 REG_DOMAIN_FCC,
166 REG_DOMAIN_ETSI,
167 REG_DOMAIN_JAPAN,
168 REG_DOMAIN_WORLD,
169 REG_DOMAIN_N_AMER_EXC_FCC,
170 REG_DOMAIN_APAC,
171 REG_DOMAIN_KOREA,
172 REG_DOMAIN_HI_5GHZ,
173 REG_DOMAIN_NO_5GHZ,
174
175 NUM_REG_DOMAINS,
176 NUM_REG_DOMAINS_INVALID = 0x7FFFFFFF /* define as 4 bytes data */
177}eRegDomainId;
178
179typedef enum
180{
181 RF_SUBBAND_2_4_GHZ = 0,
182 RF_SUBBAND_5_LOW_GHZ = 1, //Low & Mid U-NII
183 RF_SUBBAND_5_MID_GHZ = 2, //ETSI
184 RF_SUBBAND_5_HIGH_GHZ = 3, //High U-NII
Madan Mohan Koyyalamudi8cb5dc72012-09-24 12:08:56 -0700185 RF_SUBBAND_4_9_GHZ = 4, //Japanese
Jeff Johnson295189b2012-06-20 16:38:30 -0700186
187
188 NUM_RF_SUBBANDS,
189
190 MAX_RF_SUBBANDS,
191 INVALID_RF_SUBBAND,
192
193 RF_BAND_2_4_GHZ = 0,
194 RF_BAND_5_GHZ = 1,
195 NUM_RF_BANDS,
196 BOTH_RF_BANDS,
197 RF_SUBBAND_INVALID = 0x7FFFFFFF /* define as 4 bytes data */
198}eRfSubBand;
199
200typedef enum
201{
202 //2.4GHz Band
203 RF_CHAN_1 = 0,
204 RF_CHAN_2 = 1,
205 RF_CHAN_3 = 2,
206 RF_CHAN_4 = 3,
207 RF_CHAN_5 = 4,
208 RF_CHAN_6 = 5,
209 RF_CHAN_7 = 6,
210 RF_CHAN_8 = 7,
211 RF_CHAN_9 = 8,
212 RF_CHAN_10 = 9,
213 RF_CHAN_11 = 10,
214 RF_CHAN_12 = 11,
215 RF_CHAN_13 = 12,
216 RF_CHAN_14 = 13,
217
Madan Mohan Koyyalamudi8cb5dc72012-09-24 12:08:56 -0700218 //4.9GHz Band
219 RF_CHAN_240 = 14,
220 RF_CHAN_244 = 15,
221 RF_CHAN_248 = 16,
222 RF_CHAN_252 = 17,
223 RF_CHAN_208 = 18,
224 RF_CHAN_212 = 19,
225 RF_CHAN_216 = 20,
Jeff Johnson295189b2012-06-20 16:38:30 -0700226
227 //5GHz Low & Mid U-NII Band
228 RF_CHAN_36 = 21,
229 RF_CHAN_40 = 22,
230 RF_CHAN_44 = 23,
231 RF_CHAN_48 = 24,
232 RF_CHAN_52 = 25,
233 RF_CHAN_56 = 26,
234 RF_CHAN_60 = 27,
235 RF_CHAN_64 = 28,
236
237 //5GHz Mid Band - ETSI & FCC
238 RF_CHAN_100 = 29,
239 RF_CHAN_104 = 30,
240 RF_CHAN_108 = 31,
241 RF_CHAN_112 = 32,
242 RF_CHAN_116 = 33,
243 RF_CHAN_120 = 34,
244 RF_CHAN_124 = 35,
245 RF_CHAN_128 = 36,
246 RF_CHAN_132 = 37,
247 RF_CHAN_136 = 38,
248 RF_CHAN_140 = 39,
249
250 //5GHz High U-NII Band
251 RF_CHAN_149 = 40,
252 RF_CHAN_153 = 41,
253 RF_CHAN_157 = 42,
254 RF_CHAN_161 = 43,
255 RF_CHAN_165 = 44,
256
257 //CHANNEL BONDED CHANNELS
258 RF_CHAN_BOND_3 = 45,
259 RF_CHAN_BOND_4 = 46,
260 RF_CHAN_BOND_5 = 47,
261 RF_CHAN_BOND_6 = 48,
262 RF_CHAN_BOND_7 = 49,
263 RF_CHAN_BOND_8 = 50,
264 RF_CHAN_BOND_9 = 51,
265 RF_CHAN_BOND_10 = 52,
266 RF_CHAN_BOND_11 = 53,
Madan Mohan Koyyalamudi8cb5dc72012-09-24 12:08:56 -0700267 RF_CHAN_BOND_242 = 54, //4.9GHz Band
268 RF_CHAN_BOND_246 = 55,
269 RF_CHAN_BOND_250 = 56,
270 RF_CHAN_BOND_210 = 57,
271 RF_CHAN_BOND_214 = 58,
Jeff Johnson295189b2012-06-20 16:38:30 -0700272 RF_CHAN_BOND_38 = 59, //5GHz Low & Mid U-NII Band
273 RF_CHAN_BOND_42 = 60,
274 RF_CHAN_BOND_46 = 61,
275 RF_CHAN_BOND_50 = 62,
276 RF_CHAN_BOND_54 = 63,
277 RF_CHAN_BOND_58 = 64,
278 RF_CHAN_BOND_62 = 65,
279 RF_CHAN_BOND_102 = 66, //5GHz Mid Band - ETSI & FCC
280 RF_CHAN_BOND_106 = 67,
281 RF_CHAN_BOND_110 = 68,
282 RF_CHAN_BOND_114 = 69,
283 RF_CHAN_BOND_118 = 70,
284 RF_CHAN_BOND_122 = 71,
285 RF_CHAN_BOND_126 = 72,
286 RF_CHAN_BOND_130 = 73,
287 RF_CHAN_BOND_134 = 74,
288 RF_CHAN_BOND_138 = 75,
289 RF_CHAN_BOND_151 = 76, //5GHz High U-NII Band
290 RF_CHAN_BOND_155 = 77,
291 RF_CHAN_BOND_159 = 78,
292 RF_CHAN_BOND_163 = 79,
293
294 NUM_RF_CHANNELS,
295
296 MIN_2_4GHZ_CHANNEL = RF_CHAN_1,
297 MAX_2_4GHZ_CHANNEL = RF_CHAN_14,
298 NUM_2_4GHZ_CHANNELS = (MAX_2_4GHZ_CHANNEL - MIN_2_4GHZ_CHANNEL + 1),
299
Madan Mohan Koyyalamudi8cb5dc72012-09-24 12:08:56 -0700300 MIN_5GHZ_CHANNEL = RF_CHAN_240,
Jeff Johnson295189b2012-06-20 16:38:30 -0700301 MAX_5GHZ_CHANNEL = RF_CHAN_165,
302 NUM_5GHZ_CHANNELS = (MAX_5GHZ_CHANNEL - MIN_5GHZ_CHANNEL + 1),
303
Madan Mohan Koyyalamudi8cb5dc72012-09-24 12:08:56 -0700304 MIN_20MHZ_RF_CHANNEL = RF_CHAN_1,
Jeff Johnson295189b2012-06-20 16:38:30 -0700305 MAX_20MHZ_RF_CHANNEL = RF_CHAN_165,
306 NUM_20MHZ_RF_CHANNELS = (MAX_20MHZ_RF_CHANNEL - MIN_20MHZ_RF_CHANNEL + 1),
307
308 MIN_40MHZ_RF_CHANNEL = RF_CHAN_BOND_3,
309 MAX_40MHZ_RF_CHANNEL = RF_CHAN_BOND_163,
310 NUM_40MHZ_RF_CHANNELS = (MAX_40MHZ_RF_CHANNEL - MIN_40MHZ_RF_CHANNEL + 1),
311
312 MIN_CB_2_4GHZ_CHANNEL = RF_CHAN_BOND_3,
313 MAX_CB_2_4GHZ_CHANNEL = RF_CHAN_BOND_11,
314
Madan Mohan Koyyalamudi8cb5dc72012-09-24 12:08:56 -0700315 MIN_CB_5GHZ_CHANNEL = RF_CHAN_BOND_242,
Jeff Johnson295189b2012-06-20 16:38:30 -0700316 MAX_CB_5GHZ_CHANNEL = RF_CHAN_BOND_163,
317
318 NUM_TPC_2_4GHZ_CHANNELS = 14,
319 NUM_TPC_5GHZ_CHANNELS = NUM_5GHZ_CHANNELS,
320
321 INVALID_RF_CHANNEL = 0xBAD,
322 RF_CHANNEL_INVALID_MAX_FIELD = 0x7FFFFFFF /* define as 4 bytes data */
323}eRfChannels;
324
325enum
326{
327 NV_CHANNEL_DISABLE,
328 NV_CHANNEL_ENABLE,
329 NV_CHANNEL_DFS,
330 NV_CHANNEL_INVALID
331};
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800332typedef uint8 eNVChannelEnabledType;
Jeff Johnson295189b2012-06-20 16:38:30 -0700333
334typedef PACKED_PRE struct PACKED_POST
335{
336 eNVChannelEnabledType enabled;
337 tPowerdBm pwrLimit;
338}sRegulatoryChannel;
339
340typedef PACKED_PRE struct PACKED_POST
341{
342 sRegulatoryChannel channels[NUM_RF_CHANNELS];
343 uAbsPwrPrecision antennaGain[NUM_RF_SUBBANDS];
344 uAbsPwrPrecision bRatePowerOffset[NUM_2_4GHZ_CHANNELS];
345 uAbsPwrPrecision gnRatePowerOffset[NUM_RF_CHANNELS];
346}ALIGN_4 sRegulatoryDomains;
347
348typedef PACKED_PRE struct PACKED_POST
349{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800350 int16 bRssiOffset[NUM_RF_CHANNELS];
351 int16 gnRssiOffset[NUM_RF_CHANNELS];
Jeff Johnson295189b2012-06-20 16:38:30 -0700352}ALIGN_4 sRssiChannelOffsets;
353
354typedef PACKED_PRE struct PACKED_POST
355{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800356 uint16 targetFreq; //number in MHz
357 uint16 channelNum; //channel number as in the eRfChannels enumeration
Jeff Johnson295189b2012-06-20 16:38:30 -0700358 eRfSubBand band; //band that this channel belongs to
359}tRfChannelProps;
360
361typedef enum
362{
363 MODE_802_11B = 0,
364 MODE_802_11AG = 1,
365 MODE_802_11N = 2,
366 NUM_802_11_MODES,
367 MODE_802_11_INVALID = 0x7FFFFFFF /* define as 4 bytes data */
368} e80211Modes;
369
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800370#define HW_CAL_VALUES_VALID_BMAP_UNUSED 0 //Value
371//Bit mask
372#define HW_VAL_VALUES_VALID_BMAP_SLEEP_TIME_OVERHEAD_2G_MASK 0x1
373#define HW_VAL_VALUES_VALID_BMAP_SLEEP_TIME_OVERHEAD_5G_MASK 0x2
374#define HW_VAL_VALUES_VALID_BMAP_SLEEP_TIME_OVERHEAD_xLNA_5G_MASK 0x4
375#define HW_VAL_VALUES_VALID_TXBBF_SEL_9MHZ_MASK 0x8
376#define HW_VAL_VALUES_VALID_CUSTOM_TCXO_REG8_MASK 0x10
377#define HW_VAL_VALUES_VALID_CUSTOM_TCXO_REG9_MASK 0x20
378
379
380#define HAL_PWR_SAVE_FW_BMPS_SLEEP_TIME_OVERHEADS_US 1400 //(2.4Ghz operation)
381#define HAL_PWR_SAVE_FW_BMPS_SLEEP_TIME_OVERHEADS_5GHZ_US 1400 //(5Ghz operation)
382#define HAL_PWR_SAVE_FW_BMPS_SLEEP_TIME_OVERHEADS_XPA_US 1600 //(xLNA operation)
383
Jeff Johnson295189b2012-06-20 16:38:30 -0700384
385//From wlanfw/inc/halPhyCalMemory.h
386typedef PACKED_PRE struct PACKED_POST
387{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800388 uint16 psSlpTimeOvrHd2G;
389 uint16 psSlpTimeOvrHd5G;
Jeff Johnson295189b2012-06-20 16:38:30 -0700390
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800391 uint16 psSlpTimeOvrHdxLNA5G;
392 uint8 nv_TxBBFSel9MHz : 1;
393 uint8 hwParam1 : 7;
394 uint8 hwParam2;
395
396 uint16 custom_tcxo_reg8;
397 uint16 custom_tcxo_reg9;
398
399 uint32 hwParam3;
400 uint32 hwParam4;
401 uint32 hwParam5;
402 uint32 hwParam6;
403 uint32 hwParam7;
404 uint32 hwParam8;
405 uint32 hwParam9;
406 uint32 hwParam10;
407 uint32 hwParam11;
Jeff Johnson295189b2012-06-20 16:38:30 -0700408}sCalData;
409
410typedef PACKED_PRE struct PACKED_POST
411{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800412 uint32 validBmap; //use eNvCalID
Jeff Johnson295189b2012-06-20 16:38:30 -0700413 sCalData calData;
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800414}sHwCalValues;
Jeff Johnson295189b2012-06-20 16:38:30 -0700415
416typedef PACKED_PRE struct PACKED_POST
417{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800418 uint32 txFirFilterMode;
Jeff Johnson295189b2012-06-20 16:38:30 -0700419}sTxBbFilterMode;
420
421typedef PACKED_PRE struct PACKED_POST
422{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800423 int16 ofdmPwrOffset;
424 int16 rsvd;
Jeff Johnson295189b2012-06-20 16:38:30 -0700425}sOfdmCmdPwrOffset;
426
427//From wlanfw/inc/halPhyCfg.h
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800428typedef uint8 tTpcLutValue;
Jeff Johnson295189b2012-06-20 16:38:30 -0700429
430#define MAX_TPC_CAL_POINTS (8)
431
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800432typedef uint8 tPowerDetect; //7-bit power detect reading
Jeff Johnson295189b2012-06-20 16:38:30 -0700433
434typedef PACKED_PRE struct PACKED_POST
435{
436 tPowerDetect pwrDetAdc; //= SENSED_PWR register, which reports the 8-bit ADC
437 // the stored ADC value gets shifted to 7-bits as the index to the LUT
438 tPowerDetect adjustedPwrDet; //7-bit value that goes into the LUT at the LUT[pwrDet] location
439 //MSB set if extraPrecision.hi8_adjustedPwrDet is used
440}tTpcCaldPowerPoint;
441
442typedef tTpcCaldPowerPoint tTpcCaldPowerTable[PHY_MAX_TX_CHAINS][MAX_TPC_CAL_POINTS];
443
444typedef PACKED_PRE struct PACKED_POST
445{
446 tTpcCaldPowerTable empirical; //calibrated power points
447}tTpcConfig;
448
449//From wlanfw/inc/phyTxPower.h
450#ifndef TPC_MEM_POWER_LUT_DEPTH
451#define TPC_MEM_POWER_LUT_DEPTH 256
452#endif
453
454typedef tTpcLutValue tTpcPowerTable[PHY_MAX_TX_CHAINS][TPC_MEM_POWER_LUT_DEPTH];
455
456typedef PACKED_PRE struct PACKED_POST
457{
458 tTpcConfig *pwrSampled; //points to CLPC data in calMemory
459}tPhyTxPowerBand;
460
461//From halPhyRates.h
462typedef enum
463{
464 //802.11b Rates
465 HAL_PHY_RATE_11B_LONG_1_MBPS,
466 HAL_PHY_RATE_11B_LONG_2_MBPS,
467 HAL_PHY_RATE_11B_LONG_5_5_MBPS,
468 HAL_PHY_RATE_11B_LONG_11_MBPS,
469 HAL_PHY_RATE_11B_SHORT_2_MBPS,
470 HAL_PHY_RATE_11B_SHORT_5_5_MBPS,
471 HAL_PHY_RATE_11B_SHORT_11_MBPS,
472
473 //Spica_Virgo 11A 20MHz Rates
474 HAL_PHY_RATE_11A_6_MBPS,
475 HAL_PHY_RATE_11A_9_MBPS,
476 HAL_PHY_RATE_11A_12_MBPS,
477 HAL_PHY_RATE_11A_18_MBPS,
478 HAL_PHY_RATE_11A_24_MBPS,
479 HAL_PHY_RATE_11A_36_MBPS,
480 HAL_PHY_RATE_11A_48_MBPS,
481 HAL_PHY_RATE_11A_54_MBPS,
482
483 // 11A 20MHz Rates
484 HAL_PHY_RATE_11A_DUP_6_MBPS,
485 HAL_PHY_RATE_11A_DUP_9_MBPS,
486 HAL_PHY_RATE_11A_DUP_12_MBPS,
487 HAL_PHY_RATE_11A_DUP_18_MBPS,
488 HAL_PHY_RATE_11A_DUP_24_MBPS,
489 HAL_PHY_RATE_11A_DUP_36_MBPS,
490 HAL_PHY_RATE_11A_DUP_48_MBPS,
491 HAL_PHY_RATE_11A_DUP_54_MBPS,
492
493 //MCS Index #0-7 (20/40MHz)
494 HAL_PHY_RATE_MCS_1NSS_6_5_MBPS,
495 HAL_PHY_RATE_MCS_1NSS_13_MBPS,
496 HAL_PHY_RATE_MCS_1NSS_19_5_MBPS,
497 HAL_PHY_RATE_MCS_1NSS_26_MBPS,
498 HAL_PHY_RATE_MCS_1NSS_39_MBPS,
499 HAL_PHY_RATE_MCS_1NSS_52_MBPS,
500 HAL_PHY_RATE_MCS_1NSS_58_5_MBPS,
501 HAL_PHY_RATE_MCS_1NSS_65_MBPS,
502 HAL_PHY_RATE_MCS_1NSS_MM_SG_7_2_MBPS,
503 HAL_PHY_RATE_MCS_1NSS_MM_SG_14_4_MBPS,
504 HAL_PHY_RATE_MCS_1NSS_MM_SG_21_7_MBPS,
505 HAL_PHY_RATE_MCS_1NSS_MM_SG_28_9_MBPS,
506 HAL_PHY_RATE_MCS_1NSS_MM_SG_43_3_MBPS,
507 HAL_PHY_RATE_MCS_1NSS_MM_SG_57_8_MBPS,
508 HAL_PHY_RATE_MCS_1NSS_MM_SG_65_MBPS,
509 HAL_PHY_RATE_MCS_1NSS_MM_SG_72_2_MBPS,
510
511 //MCS Index #8-15 (20/40MHz)
512 HAL_PHY_RATE_MCS_1NSS_CB_13_5_MBPS,
513 HAL_PHY_RATE_MCS_1NSS_CB_27_MBPS,
514 HAL_PHY_RATE_MCS_1NSS_CB_40_5_MBPS,
515 HAL_PHY_RATE_MCS_1NSS_CB_54_MBPS,
516 HAL_PHY_RATE_MCS_1NSS_CB_81_MBPS,
517 HAL_PHY_RATE_MCS_1NSS_CB_108_MBPS,
518 HAL_PHY_RATE_MCS_1NSS_CB_121_5_MBPS,
519 HAL_PHY_RATE_MCS_1NSS_CB_135_MBPS,
520 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_15_MBPS,
521 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_30_MBPS,
522 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_45_MBPS,
523 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_60_MBPS,
524 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_90_MBPS,
525 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_120_MBPS,
526 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_135_MBPS,
527 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_150_MBPS,
528
Jeff Johnsone7245742012-09-05 17:12:55 -0700529#ifdef WLAN_FEATURE_11AC
530 /*11A duplicate 80MHz Rates*/
531 HAL_PHY_RATE_11AC_DUP_6_MBPS,
532 HAL_PHY_RATE_11AC_DUP_9_MBPS,
533 HAL_PHY_RATE_11AC_DUP_12_MBPS,
534 HAL_PHY_RATE_11AC_DUP_18_MBPS,
535 HAL_PHY_RATE_11AC_DUP_24_MBPS,
536 HAL_PHY_RATE_11AC_DUP_36_MBPS,
537 HAL_PHY_RATE_11AC_DUP_48_MBPS,
538 HAL_PHY_RATE_11AC_DUP_54_MBPS,
539
540 /*11AC rate 20MHZ Normal GI*/
541 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_6_5_MBPS,
542 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_13_MBPS,
543 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_19_5_MBPS,
544 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_26_MBPS,
545 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_39_MBPS,
546 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_52_MBPS,
547 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_58_5_MBPS,
548 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_65_MBPS,
549 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_78_MBPS,
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800550#ifdef WCN_PRONTO
551 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_86_5_MBPS,
552#endif
Jeff Johnsone7245742012-09-05 17:12:55 -0700553
554 /*11AC rate 20MHZ Shortl GI*/
555 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_7_2_MBPS,
556 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_14_4_MBPS,
557 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_21_6_MBPS,
558 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_28_8_MBPS,
559 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_43_3_MBPS,
560 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_57_7_MBPS,
561 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_65_MBPS,
562 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_72_2_MBPS,
563 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_86_6_MBPS,
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800564#ifdef WCN_PRONTO
565 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_96_1_MBPS,
566#endif
Jeff Johnsone7245742012-09-05 17:12:55 -0700567
568 /*11AC rates 40MHZ normal GI*/
569 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_13_5_MBPS ,
570 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_27_MBPS,
571 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_40_5_MBPS,
572 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_54_MBPS,
573 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_81_MBPS,
574 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_108_MBPS,
575 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_121_5_MBPS,
576 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_135_MBPS,
577 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_162_MBPS,
578 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_180_MBPS,
579
580 /*11AC rates 40MHZ short GI*/
581 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_15_MBPS ,
582 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_30_MBPS,
583 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_45_MBPS,
584 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_60_MBPS,
585 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_90_MBPS,
586 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_120_MBPS,
587 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_135_MBPS,
588 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_150_MBPS,
589 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_180_MBPS,
590 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_200_MBPS,
591
592 /*11AC rates 80 MHZ normal GI*/
593 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_29_3_MBPS ,
594 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_58_5_MBPS,
595 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_87_8_MBPS,
596 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_117_MBPS,
597 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_175_5_MBPS,
598 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_234_MBPS,
599 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_263_3_MBPS,
600 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_292_5_MBPS,
601 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_351_MBPS,
602 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_390_MBPS,
603
604 /*11AC rates 80 MHZ short GI*/
605 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_32_5_MBPS ,
606 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_65_MBPS,
607 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_97_5_MBPS,
608 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_130_MBPS,
609 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_195_MBPS,
610 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_260_MBPS,
611 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_292_5_MBPS,
612 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_325_MBPS,
613 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_390_MBPS,
614 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_433_3_MBPS,
615#endif //WLAN_FEATURE_11AC
616
Jeff Johnson295189b2012-06-20 16:38:30 -0700617 NUM_HAL_PHY_RATES,
618 HAL_PHY_RATE_INVALID,
619 MIN_RATE_INDEX = 0,
Jeff Johnsone7245742012-09-05 17:12:55 -0700620 MAX_RATE_INDEX = NUM_HAL_PHY_RATES - 1,
Jeff Johnson295189b2012-06-20 16:38:30 -0700621 HAL_PHY_RATE_INVALID_MAX_FIELD = 0x7FFFFFFF /* define as 4 bytes data */
622}eHalPhyRates;
623
Jeff Johnson295189b2012-06-20 16:38:30 -0700624#define NUM_RATE_POWER_GROUPS NUM_HAL_PHY_RATES //total number of rate power groups including the CB_RATE_POWER_OFFSET
625typedef uAbsPwrPrecision tRateGroupPwr[NUM_RATE_POWER_GROUPS];
626
627//From halNvTables.h
628#define NV_FIELD_COUNTRY_CODE_SIZE 3
629typedef PACKED_PRE struct PACKED_POST
630{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800631 uint8 regDomain; //from eRegDomainId
632 uint8 countryCode[NV_FIELD_COUNTRY_CODE_SIZE]; // string identifier
Jeff Johnson295189b2012-06-20 16:38:30 -0700633}sDefaultCountry;
634
635typedef PACKED_PRE struct PACKED_POST
636{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800637 uint8 skuID;
638 uint8 tpcMode2G;
639 uint8 tpcMode5G;
640 uint8 reserved1;
Jeff Johnson295189b2012-06-20 16:38:30 -0700641
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800642 uint8 xPA2G;
643 uint8 xPA5G;
644 uint8 paPolarityTx;
645 uint8 paPolarityRx;
Jeff Johnson295189b2012-06-20 16:38:30 -0700646
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800647 uint8 xLNA2G;
648 uint8 xLNA5G;
649 uint8 xCoupler2G;
650 uint8 xCoupler5G;
Jeff Johnson295189b2012-06-20 16:38:30 -0700651
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800652 uint8 xPdet2G;
653 uint8 xPdet5G;
654 uint8 enableDPD2G;
655 uint8 enableDPD5G;
Jeff Johnson295189b2012-06-20 16:38:30 -0700656
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800657 uint8 pdadcSelect2G;
658 uint8 pdadcSelect5GLow;
659 uint8 pdadcSelect5GMid;
660 uint8 pdadcSelect5GHigh;
Jeff Johnson295189b2012-06-20 16:38:30 -0700661
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800662 uint32 reserved2;
663 uint32 resreved3;
664 uint32 resreved4;
665}sFwConfig;
Jeff Johnson295189b2012-06-20 16:38:30 -0700666
Jeff Johnson295189b2012-06-20 16:38:30 -0700667
668#define NUM_RF_VR_RATE 13
669typedef uAbsPwrPrecision tRateGroupPwrVR[NUM_RF_VR_RATE];
670
671typedef PACKED_PRE union PACKED_POST
672{
673 tRateGroupPwr pwrOptimum[NUM_RF_SUBBANDS]; // NV_TABLE_RATE_POWER_SETTINGS
674 sRegulatoryDomains regDomains[NUM_REG_DOMAINS]; // NV_TABLE_REGULATORY_DOMAINS
675 sDefaultCountry defaultCountryTable; // NV_TABLE_DEFAULT_COUNTRY
676 tTpcPowerTable plutCharacterized[NUM_RF_CHANNELS]; // NV_TABLE_TPC_POWER_TABLE
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800677 int16 plutPdadcOffset[NUM_RF_CHANNELS]; // NV_TABLE_TPC_PDADC_OFFSETS
Jeff Johnson295189b2012-06-20 16:38:30 -0700678 tRateGroupPwrVR pwrOptimum_virtualRate[NUM_RF_SUBBANDS]; // NV_TABLE_VIRTUAL_RATE
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800679 sFwConfig fwConfig; // NV_TABLE_FW_CONFIG
Jeff Johnson295189b2012-06-20 16:38:30 -0700680 sRssiChannelOffsets rssiChanOffsets[2]; // NV_TABLE_RSSI_CHANNEL_OFFSETS
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800681 sHwCalValues hwCalValues; // NV_TABLE_HW_CAL_VALUES
682 int16 antennaPathLoss[NUM_RF_CHANNELS]; // NV_TABLE_ANTENNA_PATH_LOSS
683 int16 pktTypePwrLimits[NUM_802_11_MODES][NUM_RF_CHANNELS]; // NV_TABLE_PACKET_TYPE_POWER_LIMITS
Jeff Johnson295189b2012-06-20 16:38:30 -0700684 sOfdmCmdPwrOffset ofdmCmdPwrOffset; // NV_TABLE_OFDM_CMD_PWR_OFFSET
685 sTxBbFilterMode txbbFilterMode; // NV_TABLE_TX_BB_FILTER_MODE
686}ALIGN_4 uNvTables;
687
688//From halPhy.h
689typedef tPowerdBm tChannelPwrLimit;
690
691typedef PACKED_PRE struct PACKED_POST
692{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800693 uint8 chanId;
Jeff Johnson295189b2012-06-20 16:38:30 -0700694 tChannelPwrLimit pwr;
695} ALIGN_4 tChannelListWithPower;
696
697//From HAL/inc/halNvTables.h
698typedef enum
699{
700 NV_FIELDS_IMAGE = 0, //contains all fields
701
702 NV_TABLE_RATE_POWER_SETTINGS = 2,
703 NV_TABLE_REGULATORY_DOMAINS = 3,
704 NV_TABLE_DEFAULT_COUNTRY = 4,
705 NV_TABLE_TPC_POWER_TABLE = 5,
706 NV_TABLE_TPC_PDADC_OFFSETS = 6,
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800707 NV_TABLE_HW_CAL_VALUES = 7,
Jeff Johnson295189b2012-06-20 16:38:30 -0700708 NV_TABLE_RSSI_CHANNEL_OFFSETS = 9,
709 NV_TABLE_CAL_MEMORY = 10, //cal memory structure from halPhyCalMemory.h preceded by status
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800710 NV_TABLE_FW_CONFIG = 11,
Jeff Johnson295189b2012-06-20 16:38:30 -0700711 NV_TABLE_ANTENNA_PATH_LOSS = 12,
712 NV_TABLE_PACKET_TYPE_POWER_LIMITS = 13,
713 NV_TABLE_OFDM_CMD_PWR_OFFSET = 14,
714 NV_TABLE_TX_BB_FILTER_MODE = 15,
715 NV_TABLE_VIRTUAL_RATE = 18,
716
717 NUM_NV_TABLE_IDS,
718 NV_ALL_TABLES = 0xFFF,
719 NV_BINARY_IMAGE = 0x1000,
720 NV_MAX_TABLE = 0x7FFFFFFF /* define as 4 bytes data */
721}eNvTable;
722
723typedef PACKED_PRE struct PACKED_POST
724{
725 tRateGroupPwr pwrOptimum[NUM_RF_SUBBANDS]; // NV_TABLE_RATE_POWER_SETTINGS
726 sRegulatoryDomains regDomains[NUM_REG_DOMAINS]; // NV_TABLE_REGULATORY_DOMAINS
727 sDefaultCountry defaultCountryTable; // NV_TABLE_DEFAULT_COUNTRY
728 tTpcPowerTable plutCharacterized[NUM_RF_CHANNELS]; // NV_TABLE_TPC_POWER_TABLE
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800729 int16 plutPdadcOffset[NUM_RF_CHANNELS]; // NV_TABLE_TPC_PDADC_OFFSETS
Jeff Johnson295189b2012-06-20 16:38:30 -0700730 tRateGroupPwrVR pwrOptimum_virtualRate[NUM_RF_SUBBANDS]; // NV_TABLE_VIRTUAL_RATE
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800731 sFwConfig fwConfig; // NV_TABLE_FW_CONFIG
Jeff Johnson295189b2012-06-20 16:38:30 -0700732 sRssiChannelOffsets rssiChanOffsets[2]; // NV_TABLE_RSSI_CHANNEL_OFFSETS
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800733 sHwCalValues hwCalValues; // NV_TABLE_HW_CAL_VALUES
734 int16 antennaPathLoss[NUM_RF_CHANNELS]; // NV_TABLE_ANTENNA_PATH_LOSS
735 int16 pktTypePwrLimits[NUM_802_11_MODES][NUM_RF_CHANNELS]; // NV_TABLE_PACKET_TYPE_POWER_LIMITS
Jeff Johnson295189b2012-06-20 16:38:30 -0700736 sOfdmCmdPwrOffset ofdmCmdPwrOffset; // NV_TABLE_OFDM_CMD_PWR_OFFSET
737 sTxBbFilterMode txbbFilterMode; // NV_TABLE_TX_BB_FILTER_MODE
738}ALIGN_4 sNvTables;
739
740typedef PACKED_PRE struct PACKED_POST
741{
742 sNvFields fields;
743 sNvTables tables;
744}ALIGN_4 sHalNv;
745
746extern const sHalNv nvDefaults;
747
748#endif
749