blob: dc765efae86a336079f51194585fe74f4f6153e5 [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
Jeff Johnson295189b2012-06-20 16:38:30 -0700380//From wlanfw/inc/halPhyCalMemory.h
381typedef PACKED_PRE struct PACKED_POST
382{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800383 uint16 psSlpTimeOvrHd2G;
384 uint16 psSlpTimeOvrHd5G;
Jeff Johnson295189b2012-06-20 16:38:30 -0700385
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800386 uint16 psSlpTimeOvrHdxLNA5G;
387 uint8 nv_TxBBFSel9MHz : 1;
388 uint8 hwParam1 : 7;
389 uint8 hwParam2;
390
391 uint16 custom_tcxo_reg8;
392 uint16 custom_tcxo_reg9;
393
394 uint32 hwParam3;
395 uint32 hwParam4;
396 uint32 hwParam5;
397 uint32 hwParam6;
398 uint32 hwParam7;
399 uint32 hwParam8;
400 uint32 hwParam9;
401 uint32 hwParam10;
402 uint32 hwParam11;
Jeff Johnson295189b2012-06-20 16:38:30 -0700403}sCalData;
404
405typedef PACKED_PRE struct PACKED_POST
406{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800407 uint32 validBmap; //use eNvCalID
Jeff Johnson295189b2012-06-20 16:38:30 -0700408 sCalData calData;
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800409}sHwCalValues;
Jeff Johnson295189b2012-06-20 16:38:30 -0700410
411typedef PACKED_PRE struct PACKED_POST
412{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800413 uint32 txFirFilterMode;
Jeff Johnson295189b2012-06-20 16:38:30 -0700414}sTxBbFilterMode;
415
416typedef PACKED_PRE struct PACKED_POST
417{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800418 int16 ofdmPwrOffset;
419 int16 rsvd;
Jeff Johnson295189b2012-06-20 16:38:30 -0700420}sOfdmCmdPwrOffset;
421
422//From wlanfw/inc/halPhyCfg.h
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800423typedef uint8 tTpcLutValue;
Jeff Johnson295189b2012-06-20 16:38:30 -0700424
425#define MAX_TPC_CAL_POINTS (8)
426
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800427typedef uint8 tPowerDetect; //7-bit power detect reading
Jeff Johnson295189b2012-06-20 16:38:30 -0700428
429typedef PACKED_PRE struct PACKED_POST
430{
431 tPowerDetect pwrDetAdc; //= SENSED_PWR register, which reports the 8-bit ADC
432 // the stored ADC value gets shifted to 7-bits as the index to the LUT
433 tPowerDetect adjustedPwrDet; //7-bit value that goes into the LUT at the LUT[pwrDet] location
434 //MSB set if extraPrecision.hi8_adjustedPwrDet is used
435}tTpcCaldPowerPoint;
436
437typedef tTpcCaldPowerPoint tTpcCaldPowerTable[PHY_MAX_TX_CHAINS][MAX_TPC_CAL_POINTS];
438
439typedef PACKED_PRE struct PACKED_POST
440{
441 tTpcCaldPowerTable empirical; //calibrated power points
442}tTpcConfig;
443
444//From wlanfw/inc/phyTxPower.h
445#ifndef TPC_MEM_POWER_LUT_DEPTH
446#define TPC_MEM_POWER_LUT_DEPTH 256
447#endif
448
449typedef tTpcLutValue tTpcPowerTable[PHY_MAX_TX_CHAINS][TPC_MEM_POWER_LUT_DEPTH];
450
451typedef PACKED_PRE struct PACKED_POST
452{
453 tTpcConfig *pwrSampled; //points to CLPC data in calMemory
454}tPhyTxPowerBand;
455
456//From halPhyRates.h
457typedef enum
458{
459 //802.11b Rates
460 HAL_PHY_RATE_11B_LONG_1_MBPS,
461 HAL_PHY_RATE_11B_LONG_2_MBPS,
462 HAL_PHY_RATE_11B_LONG_5_5_MBPS,
463 HAL_PHY_RATE_11B_LONG_11_MBPS,
464 HAL_PHY_RATE_11B_SHORT_2_MBPS,
465 HAL_PHY_RATE_11B_SHORT_5_5_MBPS,
466 HAL_PHY_RATE_11B_SHORT_11_MBPS,
467
468 //Spica_Virgo 11A 20MHz Rates
469 HAL_PHY_RATE_11A_6_MBPS,
470 HAL_PHY_RATE_11A_9_MBPS,
471 HAL_PHY_RATE_11A_12_MBPS,
472 HAL_PHY_RATE_11A_18_MBPS,
473 HAL_PHY_RATE_11A_24_MBPS,
474 HAL_PHY_RATE_11A_36_MBPS,
475 HAL_PHY_RATE_11A_48_MBPS,
476 HAL_PHY_RATE_11A_54_MBPS,
477
478 // 11A 20MHz Rates
479 HAL_PHY_RATE_11A_DUP_6_MBPS,
480 HAL_PHY_RATE_11A_DUP_9_MBPS,
481 HAL_PHY_RATE_11A_DUP_12_MBPS,
482 HAL_PHY_RATE_11A_DUP_18_MBPS,
483 HAL_PHY_RATE_11A_DUP_24_MBPS,
484 HAL_PHY_RATE_11A_DUP_36_MBPS,
485 HAL_PHY_RATE_11A_DUP_48_MBPS,
486 HAL_PHY_RATE_11A_DUP_54_MBPS,
487
488 //MCS Index #0-7 (20/40MHz)
489 HAL_PHY_RATE_MCS_1NSS_6_5_MBPS,
490 HAL_PHY_RATE_MCS_1NSS_13_MBPS,
491 HAL_PHY_RATE_MCS_1NSS_19_5_MBPS,
492 HAL_PHY_RATE_MCS_1NSS_26_MBPS,
493 HAL_PHY_RATE_MCS_1NSS_39_MBPS,
494 HAL_PHY_RATE_MCS_1NSS_52_MBPS,
495 HAL_PHY_RATE_MCS_1NSS_58_5_MBPS,
496 HAL_PHY_RATE_MCS_1NSS_65_MBPS,
497 HAL_PHY_RATE_MCS_1NSS_MM_SG_7_2_MBPS,
498 HAL_PHY_RATE_MCS_1NSS_MM_SG_14_4_MBPS,
499 HAL_PHY_RATE_MCS_1NSS_MM_SG_21_7_MBPS,
500 HAL_PHY_RATE_MCS_1NSS_MM_SG_28_9_MBPS,
501 HAL_PHY_RATE_MCS_1NSS_MM_SG_43_3_MBPS,
502 HAL_PHY_RATE_MCS_1NSS_MM_SG_57_8_MBPS,
503 HAL_PHY_RATE_MCS_1NSS_MM_SG_65_MBPS,
504 HAL_PHY_RATE_MCS_1NSS_MM_SG_72_2_MBPS,
505
506 //MCS Index #8-15 (20/40MHz)
507 HAL_PHY_RATE_MCS_1NSS_CB_13_5_MBPS,
508 HAL_PHY_RATE_MCS_1NSS_CB_27_MBPS,
509 HAL_PHY_RATE_MCS_1NSS_CB_40_5_MBPS,
510 HAL_PHY_RATE_MCS_1NSS_CB_54_MBPS,
511 HAL_PHY_RATE_MCS_1NSS_CB_81_MBPS,
512 HAL_PHY_RATE_MCS_1NSS_CB_108_MBPS,
513 HAL_PHY_RATE_MCS_1NSS_CB_121_5_MBPS,
514 HAL_PHY_RATE_MCS_1NSS_CB_135_MBPS,
515 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_15_MBPS,
516 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_30_MBPS,
517 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_45_MBPS,
518 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_60_MBPS,
519 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_90_MBPS,
520 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_120_MBPS,
521 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_135_MBPS,
522 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_150_MBPS,
523
Jeff Johnsone7245742012-09-05 17:12:55 -0700524#ifdef WLAN_FEATURE_11AC
525 /*11A duplicate 80MHz Rates*/
526 HAL_PHY_RATE_11AC_DUP_6_MBPS,
527 HAL_PHY_RATE_11AC_DUP_9_MBPS,
528 HAL_PHY_RATE_11AC_DUP_12_MBPS,
529 HAL_PHY_RATE_11AC_DUP_18_MBPS,
530 HAL_PHY_RATE_11AC_DUP_24_MBPS,
531 HAL_PHY_RATE_11AC_DUP_36_MBPS,
532 HAL_PHY_RATE_11AC_DUP_48_MBPS,
533 HAL_PHY_RATE_11AC_DUP_54_MBPS,
534
535 /*11AC rate 20MHZ Normal GI*/
536 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_6_5_MBPS,
537 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_13_MBPS,
538 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_19_5_MBPS,
539 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_26_MBPS,
540 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_39_MBPS,
541 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_52_MBPS,
542 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_58_5_MBPS,
543 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_65_MBPS,
544 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_78_MBPS,
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800545#ifdef WCN_PRONTO
546 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_86_5_MBPS,
547#endif
Jeff Johnsone7245742012-09-05 17:12:55 -0700548
549 /*11AC rate 20MHZ Shortl GI*/
550 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_7_2_MBPS,
551 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_14_4_MBPS,
552 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_21_6_MBPS,
553 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_28_8_MBPS,
554 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_43_3_MBPS,
555 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_57_7_MBPS,
556 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_65_MBPS,
557 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_72_2_MBPS,
558 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_86_6_MBPS,
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800559#ifdef WCN_PRONTO
560 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_96_1_MBPS,
561#endif
Jeff Johnsone7245742012-09-05 17:12:55 -0700562
563 /*11AC rates 40MHZ normal GI*/
564 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_13_5_MBPS ,
565 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_27_MBPS,
566 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_40_5_MBPS,
567 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_54_MBPS,
568 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_81_MBPS,
569 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_108_MBPS,
570 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_121_5_MBPS,
571 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_135_MBPS,
572 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_162_MBPS,
573 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_180_MBPS,
574
575 /*11AC rates 40MHZ short GI*/
576 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_15_MBPS ,
577 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_30_MBPS,
578 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_45_MBPS,
579 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_60_MBPS,
580 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_90_MBPS,
581 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_120_MBPS,
582 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_135_MBPS,
583 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_150_MBPS,
584 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_180_MBPS,
585 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_200_MBPS,
586
587 /*11AC rates 80 MHZ normal GI*/
588 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_29_3_MBPS ,
589 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_58_5_MBPS,
590 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_87_8_MBPS,
591 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_117_MBPS,
592 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_175_5_MBPS,
593 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_234_MBPS,
594 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_263_3_MBPS,
595 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_292_5_MBPS,
596 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_351_MBPS,
597 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_390_MBPS,
598
599 /*11AC rates 80 MHZ short GI*/
600 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_32_5_MBPS ,
601 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_65_MBPS,
602 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_97_5_MBPS,
603 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_130_MBPS,
604 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_195_MBPS,
605 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_260_MBPS,
606 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_292_5_MBPS,
607 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_325_MBPS,
608 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_390_MBPS,
609 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_433_3_MBPS,
610#endif //WLAN_FEATURE_11AC
611
Jeff Johnson295189b2012-06-20 16:38:30 -0700612 NUM_HAL_PHY_RATES,
613 HAL_PHY_RATE_INVALID,
614 MIN_RATE_INDEX = 0,
Jeff Johnsone7245742012-09-05 17:12:55 -0700615 MAX_RATE_INDEX = NUM_HAL_PHY_RATES - 1,
Jeff Johnson295189b2012-06-20 16:38:30 -0700616 HAL_PHY_RATE_INVALID_MAX_FIELD = 0x7FFFFFFF /* define as 4 bytes data */
617}eHalPhyRates;
618
Jeff Johnson295189b2012-06-20 16:38:30 -0700619#define NUM_RATE_POWER_GROUPS NUM_HAL_PHY_RATES //total number of rate power groups including the CB_RATE_POWER_OFFSET
620typedef uAbsPwrPrecision tRateGroupPwr[NUM_RATE_POWER_GROUPS];
621
622//From halNvTables.h
623#define NV_FIELD_COUNTRY_CODE_SIZE 3
624typedef PACKED_PRE struct PACKED_POST
625{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800626 uint8 regDomain; //from eRegDomainId
627 uint8 countryCode[NV_FIELD_COUNTRY_CODE_SIZE]; // string identifier
Jeff Johnson295189b2012-06-20 16:38:30 -0700628}sDefaultCountry;
629
630typedef PACKED_PRE struct PACKED_POST
631{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800632 uint8 skuID;
633 uint8 tpcMode2G;
634 uint8 tpcMode5G;
635 uint8 reserved1;
Jeff Johnson295189b2012-06-20 16:38:30 -0700636
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800637 uint8 xPA2G;
638 uint8 xPA5G;
639 uint8 paPolarityTx;
640 uint8 paPolarityRx;
Jeff Johnson295189b2012-06-20 16:38:30 -0700641
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800642 uint8 xLNA2G;
643 uint8 xLNA5G;
644 uint8 xCoupler2G;
645 uint8 xCoupler5G;
Jeff Johnson295189b2012-06-20 16:38:30 -0700646
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800647 uint8 xPdet2G;
648 uint8 xPdet5G;
649 uint8 enableDPD2G;
650 uint8 enableDPD5G;
Jeff Johnson295189b2012-06-20 16:38:30 -0700651
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800652 uint8 pdadcSelect2G;
653 uint8 pdadcSelect5GLow;
654 uint8 pdadcSelect5GMid;
655 uint8 pdadcSelect5GHigh;
Jeff Johnson295189b2012-06-20 16:38:30 -0700656
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800657 uint32 reserved2;
658 uint32 resreved3;
659 uint32 resreved4;
660}sFwConfig;
Jeff Johnson295189b2012-06-20 16:38:30 -0700661
Jeff Johnson295189b2012-06-20 16:38:30 -0700662
663#define NUM_RF_VR_RATE 13
664typedef uAbsPwrPrecision tRateGroupPwrVR[NUM_RF_VR_RATE];
665
666typedef PACKED_PRE union PACKED_POST
667{
668 tRateGroupPwr pwrOptimum[NUM_RF_SUBBANDS]; // NV_TABLE_RATE_POWER_SETTINGS
669 sRegulatoryDomains regDomains[NUM_REG_DOMAINS]; // NV_TABLE_REGULATORY_DOMAINS
670 sDefaultCountry defaultCountryTable; // NV_TABLE_DEFAULT_COUNTRY
671 tTpcPowerTable plutCharacterized[NUM_RF_CHANNELS]; // NV_TABLE_TPC_POWER_TABLE
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800672 int16 plutPdadcOffset[NUM_RF_CHANNELS]; // NV_TABLE_TPC_PDADC_OFFSETS
Jeff Johnson295189b2012-06-20 16:38:30 -0700673 tRateGroupPwrVR pwrOptimum_virtualRate[NUM_RF_SUBBANDS]; // NV_TABLE_VIRTUAL_RATE
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800674 sFwConfig fwConfig; // NV_TABLE_FW_CONFIG
Jeff Johnson295189b2012-06-20 16:38:30 -0700675 sRssiChannelOffsets rssiChanOffsets[2]; // NV_TABLE_RSSI_CHANNEL_OFFSETS
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800676 sHwCalValues hwCalValues; // NV_TABLE_HW_CAL_VALUES
677 int16 antennaPathLoss[NUM_RF_CHANNELS]; // NV_TABLE_ANTENNA_PATH_LOSS
678 int16 pktTypePwrLimits[NUM_802_11_MODES][NUM_RF_CHANNELS]; // NV_TABLE_PACKET_TYPE_POWER_LIMITS
Jeff Johnson295189b2012-06-20 16:38:30 -0700679 sOfdmCmdPwrOffset ofdmCmdPwrOffset; // NV_TABLE_OFDM_CMD_PWR_OFFSET
680 sTxBbFilterMode txbbFilterMode; // NV_TABLE_TX_BB_FILTER_MODE
681}ALIGN_4 uNvTables;
682
683//From halPhy.h
684typedef tPowerdBm tChannelPwrLimit;
685
686typedef PACKED_PRE struct PACKED_POST
687{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800688 uint8 chanId;
Jeff Johnson295189b2012-06-20 16:38:30 -0700689 tChannelPwrLimit pwr;
690} ALIGN_4 tChannelListWithPower;
691
692//From HAL/inc/halNvTables.h
693typedef enum
694{
695 NV_FIELDS_IMAGE = 0, //contains all fields
696
697 NV_TABLE_RATE_POWER_SETTINGS = 2,
698 NV_TABLE_REGULATORY_DOMAINS = 3,
699 NV_TABLE_DEFAULT_COUNTRY = 4,
700 NV_TABLE_TPC_POWER_TABLE = 5,
701 NV_TABLE_TPC_PDADC_OFFSETS = 6,
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800702 NV_TABLE_HW_CAL_VALUES = 7,
Jeff Johnson295189b2012-06-20 16:38:30 -0700703 NV_TABLE_RSSI_CHANNEL_OFFSETS = 9,
704 NV_TABLE_CAL_MEMORY = 10, //cal memory structure from halPhyCalMemory.h preceded by status
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800705 NV_TABLE_FW_CONFIG = 11,
Jeff Johnson295189b2012-06-20 16:38:30 -0700706 NV_TABLE_ANTENNA_PATH_LOSS = 12,
707 NV_TABLE_PACKET_TYPE_POWER_LIMITS = 13,
708 NV_TABLE_OFDM_CMD_PWR_OFFSET = 14,
709 NV_TABLE_TX_BB_FILTER_MODE = 15,
710 NV_TABLE_VIRTUAL_RATE = 18,
711
712 NUM_NV_TABLE_IDS,
713 NV_ALL_TABLES = 0xFFF,
714 NV_BINARY_IMAGE = 0x1000,
715 NV_MAX_TABLE = 0x7FFFFFFF /* define as 4 bytes data */
716}eNvTable;
717
718typedef PACKED_PRE struct PACKED_POST
719{
720 tRateGroupPwr pwrOptimum[NUM_RF_SUBBANDS]; // NV_TABLE_RATE_POWER_SETTINGS
721 sRegulatoryDomains regDomains[NUM_REG_DOMAINS]; // NV_TABLE_REGULATORY_DOMAINS
722 sDefaultCountry defaultCountryTable; // NV_TABLE_DEFAULT_COUNTRY
723 tTpcPowerTable plutCharacterized[NUM_RF_CHANNELS]; // NV_TABLE_TPC_POWER_TABLE
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800724 int16 plutPdadcOffset[NUM_RF_CHANNELS]; // NV_TABLE_TPC_PDADC_OFFSETS
Jeff Johnson295189b2012-06-20 16:38:30 -0700725 tRateGroupPwrVR pwrOptimum_virtualRate[NUM_RF_SUBBANDS]; // NV_TABLE_VIRTUAL_RATE
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800726 sFwConfig fwConfig; // NV_TABLE_FW_CONFIG
Jeff Johnson295189b2012-06-20 16:38:30 -0700727 sRssiChannelOffsets rssiChanOffsets[2]; // NV_TABLE_RSSI_CHANNEL_OFFSETS
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800728 sHwCalValues hwCalValues; // NV_TABLE_HW_CAL_VALUES
729 int16 antennaPathLoss[NUM_RF_CHANNELS]; // NV_TABLE_ANTENNA_PATH_LOSS
730 int16 pktTypePwrLimits[NUM_802_11_MODES][NUM_RF_CHANNELS]; // NV_TABLE_PACKET_TYPE_POWER_LIMITS
Jeff Johnson295189b2012-06-20 16:38:30 -0700731 sOfdmCmdPwrOffset ofdmCmdPwrOffset; // NV_TABLE_OFDM_CMD_PWR_OFFSET
732 sTxBbFilterMode txbbFilterMode; // NV_TABLE_TX_BB_FILTER_MODE
733}ALIGN_4 sNvTables;
734
735typedef PACKED_PRE struct PACKED_POST
736{
737 sNvFields fields;
738 sNvTables tables;
739}ALIGN_4 sHalNv;
740
741extern const sHalNv nvDefaults;
742
743#endif
744