blob: b99666c2bb301fbcfea84a3c59dcc9ceee6c1957 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Abhishek Singh32078fa2016-02-18 16:36:31 +05302 * Copyright (c) 2012, 2016 The Linux Foundation. All rights reserved.
Prakash Dhavali0573c4d2014-02-12 13:19:04 -08003 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
Kiet Lamaa8e15a2014-02-11 23:30:06 -080020 */
Prakash Dhavali0573c4d2014-02-12 13:19:04 -080021
22/*
23 * This file was originally distributed by Qualcomm Atheros, Inc.
24 * under proprietary terms before Copyright ownership was assigned
25 * to the Linux Foundation.
26 */
27
Jeff Johnson295189b2012-06-20 16:38:30 -070028/** ------------------------------------------------------------------------- *
29 ------------------------------------------------------------------------- *
30
31
32 \file wlan_nv.h
33
34 \brief Types for NV implementation
35 Anything that needs to be publicly available should
36 be in this file
37
38 $Id$
39
Jeff Johnson295189b2012-06-20 16:38:30 -070040
41 ========================================================================== */
42
43#if !defined( __WLAN_NV_H )
44#define __WLAN_NV_H
45
46#include "halLegacyPalTypes.h"
47#include "halCompiler.h"
48
49//From HAL/inc/halNv.h
50typedef enum
51{
52 //Common Nv Fields
53 NV_COMMON_PRODUCT_ID, // 0
54 NV_COMMON_PRODUCT_BANDS, // 1
55 NV_COMMON_NUM_OF_TX_CHAINS, // 2
56 NV_COMMON_NUM_OF_RX_CHAINS, // 3
57 NV_COMMON_MAC_ADDR, // 4
58 NV_COMMON_MFG_SERIAL_NUMBER, // 5
59 NV_COMMON_WLAN_NV_REV_ID, // 6
60 NV_COMMON_COUPLER_TYPE, // 7
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -080061 NV_COMMON_NV_VERSION, // 8
62 NV_COMMON_RESERVED, // 9
Jeff Johnson295189b2012-06-20 16:38:30 -070063
64 NUM_NV_FIELDS,
65 NV_MAX_FIELD = 0x7FFFFFFF /* define as 4 bytes data */
66
67}eNvField;
68
69
70#define NV_FIELD_MAC_ADDR_SIZE 6
71#define NV_FIELD_MFG_SN_SIZE 40
72typedef enum
73{
74 PRODUCT_BAND_11_B_G = 0, //Gen6.0 is only this setting
75 PRODUCT_BAND_11_A_B_G = 1,
76 PRODUCT_BAND_11_A = 2,
77
78 NUM_PRODUCT_BANDS,
79 NUM_PRODUCT_BANDS_INVALID = 0x7FFFFFFF /* define as 4 bytes data */
80}eNvProductBands; //NV_COMMON_PRODUCT_BANDS
81
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -080082#define EXTERNAL_PA 1
83#define INTERNAL_PA 0
84
85#define EXTERNAL_LNA 1
86#define INTERNAL_LNA 0
87
88#define EXTERNAL_COUPLER 1
89#define INTERNAL_COUPLER 0
90
91#define EXTERNAL_PDET 1
92#define INTERNAL_PDET 0
93
94#define DPD_ENABLED 1
95#define DPD_DISABLED 0
96
97#define TPC_MODE_OPEN_LOOP 0
98#define TPC_MODE_SCPC 1
99#define TPC_MODE_CLPC_MODE2 2
100#define TPC_MODE_CLPC_MODE3 3
101
102#define PA_POLARITY_TX_UNUSED 0
103#define PA_POLARITY_TX_POSITIVE 1
104#define PA_POLARITY_TX_NEGATIVE 2
105#define PA_POLARITY_RX_UNUSED 0
106#define PA_POLARITY_RX_POSITIVE 1
107#define PA_POLARITY_RX_NEGATIVE 2
108
109#define NV_VERSION_INVALID 0xFF
110#define NV_VERSION_11N_11AC_COUPER_TYPE 0
111#define NV_VERSION_11N_11AC_FW_CONFIG 1
112#define NV_VERSION_LPDC_FW_CONFIG 2
Leo Chang09a60182013-12-04 18:12:10 -0800113#ifdef FEATURE_WLAN_CH144
114#define NV_VERSION_CH144_CONFIG 3
115#endif /* FEATURE_WLAN_CH144 */
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800116
117#ifdef WCN_PRONTO
Leo Chang09a60182013-12-04 18:12:10 -0800118#ifdef FEATURE_WLAN_CH144
119#define WLAN_NV_VERSION NV_VERSION_CH144_CONFIG
120#else
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800121#define WLAN_NV_VERSION NV_VERSION_LPDC_FW_CONFIG
Leo Chang09a60182013-12-04 18:12:10 -0800122#endif /* FEATURE_WLAN_CH144 */
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800123#else //WCN_PRONTO
124#define WLAN_NV_VERSION NV_VERSION_11N_11AC_FW_CONFIG
125#endif //WCN_PRONTO
Jeff Johnson295189b2012-06-20 16:38:30 -0700126
Shailender Karmuchi07f514b2013-06-25 01:14:09 -0700127typedef PACKED_PRE struct PACKED_POST
128{
129 uint8 macAddr1[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} sMacAddr;
134
Jeff Johnson295189b2012-06-20 16:38:30 -0700135typedef PACKED_PRE union PACKED_POST
136{
137 //common NV fields
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800138 uint16 productId;
139 uint8 productBands;
140 uint8 wlanNvRevId;
141 uint8 numOfTxChains;
142 uint8 numOfRxChains;
Shailender Karmuchi07f514b2013-06-25 01:14:09 -0700143 sMacAddr macAddr;
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800144 uint8 mfgSN[NV_FIELD_MFG_SN_SIZE];
145 uint8 couplerType;
146 uint8 nvVersion;
Jeff Johnson295189b2012-06-20 16:38:30 -0700147} uNvFields;
148
149
Jeff Johnson295189b2012-06-20 16:38:30 -0700150//format of common part of nv
151typedef PACKED_PRE struct PACKED_POST
152{
153 //always ensure fields are aligned to 32-bit boundaries
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800154 uint16 productId;
155 uint8 productBands;
156 uint8 wlanNvRevId; //0: WCN1312, 1: WCN1314, 2: WCN3660
Jeff Johnson295189b2012-06-20 16:38:30 -0700157
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800158 uint8 numOfTxChains;
159 uint8 numOfRxChains;
160 uint8 macAddr[NV_FIELD_MAC_ADDR_SIZE]; /* Default, not change name for compatibility */
161 uint8 macAddr2[NV_FIELD_MAC_ADDR_SIZE];
162 uint8 macAddr3[NV_FIELD_MAC_ADDR_SIZE];
163 uint8 macAddr4[NV_FIELD_MAC_ADDR_SIZE];
164 uint8 mfgSN[NV_FIELD_MFG_SN_SIZE];
165 uint8 couplerType;
166 uint8 nvVersion;
Jeff Johnson295189b2012-06-20 16:38:30 -0700167} sNvFields;
168
169
170//From wlanfw/inc/halPhyTypes.h
171
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800172typedef int8 tPowerdBm; //power in signed 8-bit integer, no decimal places
Jeff Johnson295189b2012-06-20 16:38:30 -0700173
174typedef PACKED_PRE union PACKED_POST
175{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800176 uint32 measurement; //measured values can be passed to pttApi, but are maintained to 2 decimal places internally
177 int16 reported; //used internally only - reported values only maintain 2 decimals places
Jeff Johnson295189b2012-06-20 16:38:30 -0700178}uAbsPwrPrecision;
179
180typedef enum
181{
182 PHY_TX_CHAIN_0 = 0,
183
Prasanna Kumarc322b652013-07-18 16:22:45 -0700184 NUM_PHY_MAX_TX_CHAINS = 1,
185 PHY_MAX_TX_CHAINS = NUM_PHY_MAX_TX_CHAINS,
Jeff Johnson295189b2012-06-20 16:38:30 -0700186 PHY_ALL_TX_CHAINS,
187
188 //possible tx chain combinations
189 PHY_NO_TX_CHAINS,
190 PHY_TX_CHAIN_INVALID = 0x7FFFFFFF /* define as 4 bytes data */
191}ePhyTxChains;
192
193//From wlanfw/inc/halRfTypes.h
194
195typedef enum
196{
197 REG_DOMAIN_FCC,
198 REG_DOMAIN_ETSI,
199 REG_DOMAIN_JAPAN,
200 REG_DOMAIN_WORLD,
201 REG_DOMAIN_N_AMER_EXC_FCC,
202 REG_DOMAIN_APAC,
203 REG_DOMAIN_KOREA,
204 REG_DOMAIN_HI_5GHZ,
205 REG_DOMAIN_NO_5GHZ,
206
207 NUM_REG_DOMAINS,
208 NUM_REG_DOMAINS_INVALID = 0x7FFFFFFF /* define as 4 bytes data */
209}eRegDomainId;
210
211typedef enum
212{
213 RF_SUBBAND_2_4_GHZ = 0,
214 RF_SUBBAND_5_LOW_GHZ = 1, //Low & Mid U-NII
215 RF_SUBBAND_5_MID_GHZ = 2, //ETSI
216 RF_SUBBAND_5_HIGH_GHZ = 3, //High U-NII
Madan Mohan Koyyalamudi8cb5dc72012-09-24 12:08:56 -0700217 RF_SUBBAND_4_9_GHZ = 4, //Japanese
Jeff Johnson295189b2012-06-20 16:38:30 -0700218
219
220 NUM_RF_SUBBANDS,
221
222 MAX_RF_SUBBANDS,
223 INVALID_RF_SUBBAND,
224
225 RF_BAND_2_4_GHZ = 0,
226 RF_BAND_5_GHZ = 1,
227 NUM_RF_BANDS,
228 BOTH_RF_BANDS,
229 RF_SUBBAND_INVALID = 0x7FFFFFFF /* define as 4 bytes data */
230}eRfSubBand;
231
Abhishek Singh32078fa2016-02-18 16:36:31 +0530232struct chan_to_ht_40_index_map {
233 uint16 ht_40_minus_index;
234 uint16 ht_40_plus_index;
235};
Abhishek Singh28a41a72014-12-24 15:41:10 +0530236
237typedef enum
238{
239 RF_CHAN_BOND_HT40_MINUS = 0,
240 RF_CHAN_BOND_HT40_PLUS
241}eChannnelBondingTypes;
242
Jeff Johnson295189b2012-06-20 16:38:30 -0700243typedef enum
244{
245 //2.4GHz Band
246 RF_CHAN_1 = 0,
Leo Chang09a60182013-12-04 18:12:10 -0800247 RF_CHAN_2,
248 RF_CHAN_3,
249 RF_CHAN_4,
250 RF_CHAN_5,
251 RF_CHAN_6,
252 RF_CHAN_7,
253 RF_CHAN_8,
254 RF_CHAN_9,
255 RF_CHAN_10,
256 RF_CHAN_11,
257 RF_CHAN_12,
258 RF_CHAN_13,
259 RF_CHAN_14,
Jeff Johnson295189b2012-06-20 16:38:30 -0700260
Madan Mohan Koyyalamudi8cb5dc72012-09-24 12:08:56 -0700261 //4.9GHz Band
Leo Chang09a60182013-12-04 18:12:10 -0800262 RF_CHAN_240,
263 RF_CHAN_244,
264 RF_CHAN_248,
265 RF_CHAN_252,
266 RF_CHAN_208,
267 RF_CHAN_212,
268 RF_CHAN_216,
Jeff Johnson295189b2012-06-20 16:38:30 -0700269
270 //5GHz Low & Mid U-NII Band
Leo Chang09a60182013-12-04 18:12:10 -0800271 RF_CHAN_36,
272 RF_CHAN_40,
273 RF_CHAN_44,
274 RF_CHAN_48,
275 RF_CHAN_52,
276 RF_CHAN_56,
277 RF_CHAN_60,
278 RF_CHAN_64,
Jeff Johnson295189b2012-06-20 16:38:30 -0700279
280 //5GHz Mid Band - ETSI & FCC
Leo Chang09a60182013-12-04 18:12:10 -0800281 RF_CHAN_100,
282 RF_CHAN_104,
283 RF_CHAN_108,
284 RF_CHAN_112,
285 RF_CHAN_116,
286 RF_CHAN_120,
287 RF_CHAN_124,
288 RF_CHAN_128,
289 RF_CHAN_132,
290 RF_CHAN_136,
291 RF_CHAN_140,
292#ifdef FEATURE_WLAN_CH144
293 RF_CHAN_144,
294#endif /* FEATURE_WLAN_CH144 */
Jeff Johnson295189b2012-06-20 16:38:30 -0700295 //5GHz High U-NII Band
Leo Chang09a60182013-12-04 18:12:10 -0800296 RF_CHAN_149,
297 RF_CHAN_153,
298 RF_CHAN_157,
299 RF_CHAN_161,
300 RF_CHAN_165,
Jeff Johnson295189b2012-06-20 16:38:30 -0700301
302 //CHANNEL BONDED CHANNELS
Leo Chang09a60182013-12-04 18:12:10 -0800303 RF_CHAN_BOND_3,
304 RF_CHAN_BOND_4,
305 RF_CHAN_BOND_5,
306 RF_CHAN_BOND_6,
307 RF_CHAN_BOND_7,
308 RF_CHAN_BOND_8,
309 RF_CHAN_BOND_9,
310 RF_CHAN_BOND_10,
311 RF_CHAN_BOND_11,
312 RF_CHAN_BOND_242, //4.9GHz Band
313 RF_CHAN_BOND_246,
314 RF_CHAN_BOND_250,
315 RF_CHAN_BOND_210,
316 RF_CHAN_BOND_214,
317 RF_CHAN_BOND_38, //5GHz Low & Mid U-NII Band
318 RF_CHAN_BOND_42,
319 RF_CHAN_BOND_46,
320 RF_CHAN_BOND_50,
321 RF_CHAN_BOND_54,
322 RF_CHAN_BOND_58,
323 RF_CHAN_BOND_62,
324 RF_CHAN_BOND_102, //5GHz Mid Band - ETSI & FCC
325 RF_CHAN_BOND_106,
326 RF_CHAN_BOND_110,
327 RF_CHAN_BOND_114,
328 RF_CHAN_BOND_118,
329 RF_CHAN_BOND_122,
330 RF_CHAN_BOND_126,
331 RF_CHAN_BOND_130,
332 RF_CHAN_BOND_134,
333 RF_CHAN_BOND_138,
334#ifdef FEATURE_WLAN_CH144
335 RF_CHAN_BOND_142,
336#endif /* FEATURE_WLAN_CH144 */
337 RF_CHAN_BOND_151, //5GHz High U-NII Band
338 RF_CHAN_BOND_155,
339 RF_CHAN_BOND_159,
340 RF_CHAN_BOND_163,
Jeff Johnson295189b2012-06-20 16:38:30 -0700341
342 NUM_RF_CHANNELS,
343
344 MIN_2_4GHZ_CHANNEL = RF_CHAN_1,
345 MAX_2_4GHZ_CHANNEL = RF_CHAN_14,
Jeff Johnson295189b2012-06-20 16:38:30 -0700346
Madan Mohan Koyyalamudi8cb5dc72012-09-24 12:08:56 -0700347 MIN_5GHZ_CHANNEL = RF_CHAN_240,
Jeff Johnson295189b2012-06-20 16:38:30 -0700348 MAX_5GHZ_CHANNEL = RF_CHAN_165,
349 NUM_5GHZ_CHANNELS = (MAX_5GHZ_CHANNEL - MIN_5GHZ_CHANNEL + 1),
350
Madan Mohan Koyyalamudi8cb5dc72012-09-24 12:08:56 -0700351 MIN_20MHZ_RF_CHANNEL = RF_CHAN_1,
Jeff Johnson295189b2012-06-20 16:38:30 -0700352 MAX_20MHZ_RF_CHANNEL = RF_CHAN_165,
353 NUM_20MHZ_RF_CHANNELS = (MAX_20MHZ_RF_CHANNEL - MIN_20MHZ_RF_CHANNEL + 1),
354
355 MIN_40MHZ_RF_CHANNEL = RF_CHAN_BOND_3,
356 MAX_40MHZ_RF_CHANNEL = RF_CHAN_BOND_163,
357 NUM_40MHZ_RF_CHANNELS = (MAX_40MHZ_RF_CHANNEL - MIN_40MHZ_RF_CHANNEL + 1),
358
359 MIN_CB_2_4GHZ_CHANNEL = RF_CHAN_BOND_3,
360 MAX_CB_2_4GHZ_CHANNEL = RF_CHAN_BOND_11,
361
Madan Mohan Koyyalamudi8cb5dc72012-09-24 12:08:56 -0700362 MIN_CB_5GHZ_CHANNEL = RF_CHAN_BOND_242,
Jeff Johnson295189b2012-06-20 16:38:30 -0700363 MAX_CB_5GHZ_CHANNEL = RF_CHAN_BOND_163,
364
365 NUM_TPC_2_4GHZ_CHANNELS = 14,
366 NUM_TPC_5GHZ_CHANNELS = NUM_5GHZ_CHANNELS,
367
368 INVALID_RF_CHANNEL = 0xBAD,
369 RF_CHANNEL_INVALID_MAX_FIELD = 0x7FFFFFFF /* define as 4 bytes data */
370}eRfChannels;
371
Prasanna Kumarc322b652013-07-18 16:22:45 -0700372typedef enum
373{
374 RF_CHAN_1_1 = RF_CHAN_1,
375 RF_CHAN_2_1 = RF_CHAN_2,
376 RF_CHAN_3_1 = RF_CHAN_3,
377 RF_CHAN_4_1 = RF_CHAN_4,
378 RF_CHAN_5_1 = RF_CHAN_5,
379 RF_CHAN_6_1 = RF_CHAN_6,
380 RF_CHAN_7_1 = RF_CHAN_7,
381 RF_CHAN_8_1 = RF_CHAN_8,
382 RF_CHAN_9_1 = RF_CHAN_9,
383 RF_CHAN_10_1 = RF_CHAN_10,
384 RF_CHAN_11_1 = RF_CHAN_11,
385 RF_CHAN_12_1 = RF_CHAN_12,
386 RF_CHAN_13_1 = RF_CHAN_13,
387 RF_CHAN_14_1 = RF_CHAN_14,
388// The above params are used for scripts.
389 NUM_2_4GHZ_CHANNELS,
390}eRfChannels_2_4GHz;
391
Jeff Johnson295189b2012-06-20 16:38:30 -0700392enum
393{
394 NV_CHANNEL_DISABLE,
395 NV_CHANNEL_ENABLE,
396 NV_CHANNEL_DFS,
397 NV_CHANNEL_INVALID
398};
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800399typedef uint8 eNVChannelEnabledType;
Jeff Johnson295189b2012-06-20 16:38:30 -0700400
401typedef PACKED_PRE struct PACKED_POST
402{
403 eNVChannelEnabledType enabled;
404 tPowerdBm pwrLimit;
405}sRegulatoryChannel;
406
407typedef PACKED_PRE struct PACKED_POST
408{
409 sRegulatoryChannel channels[NUM_RF_CHANNELS];
410 uAbsPwrPrecision antennaGain[NUM_RF_SUBBANDS];
411 uAbsPwrPrecision bRatePowerOffset[NUM_2_4GHZ_CHANNELS];
412 uAbsPwrPrecision gnRatePowerOffset[NUM_RF_CHANNELS];
413}ALIGN_4 sRegulatoryDomains;
414
415typedef PACKED_PRE struct PACKED_POST
416{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800417 int16 bRssiOffset[NUM_RF_CHANNELS];
418 int16 gnRssiOffset[NUM_RF_CHANNELS];
Jeff Johnson295189b2012-06-20 16:38:30 -0700419}ALIGN_4 sRssiChannelOffsets;
420
421typedef PACKED_PRE struct PACKED_POST
422{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800423 uint16 targetFreq; //number in MHz
424 uint16 channelNum; //channel number as in the eRfChannels enumeration
Jeff Johnson295189b2012-06-20 16:38:30 -0700425 eRfSubBand band; //band that this channel belongs to
426}tRfChannelProps;
427
428typedef enum
429{
430 MODE_802_11B = 0,
431 MODE_802_11AG = 1,
432 MODE_802_11N = 2,
433 NUM_802_11_MODES,
434 MODE_802_11_INVALID = 0x7FFFFFFF /* define as 4 bytes data */
435} e80211Modes;
436
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800437#define HW_CAL_VALUES_VALID_BMAP_UNUSED 0 //Value
438//Bit mask
Leo Chang09a60182013-12-04 18:12:10 -0800439#define HW_CAL_VALUES_VALID_BMAP_SLEEP_TIME_OVERHEAD_2G_MASK 0x1
440#define HW_CAL_VALUES_VALID_BMAP_SLEEP_TIME_OVERHEAD_5G_MASK 0x2
441#define HW_CAL_VALUES_VALID_BMAP_SLEEP_TIME_OVERHEAD_xLNA_5G_MASK 0x4
442#define HW_CAL_VALUES_VALID_TXBBF_SEL_9MHZ_MASK 0x8
443#define HW_CAL_VALUES_VALID_CUSTOM_TCXO_REG8_MASK 0x10
444#define HW_CAL_VALUES_VALID_CUSTOM_TCXO_REG9_MASK 0x20
445#define HW_CAL_VALUES_VALID_ANTENNA_DIVERSITY_ENABLED_MASK 0x40
446#define HW_CAL_VALUES_VALID_CUSTOM_RC_DELAY_MASK 0x80
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800447
Jeff Johnson295189b2012-06-20 16:38:30 -0700448//From wlanfw/inc/halPhyCalMemory.h
449typedef PACKED_PRE struct PACKED_POST
450{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800451 uint16 psSlpTimeOvrHd2G;
452 uint16 psSlpTimeOvrHd5G;
Jeff Johnson295189b2012-06-20 16:38:30 -0700453
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800454 uint16 psSlpTimeOvrHdxLNA5G;
455 uint8 nv_TxBBFSel9MHz : 1;
456 uint8 hwParam1 : 7;
457 uint8 hwParam2;
458
459 uint16 custom_tcxo_reg8;
460 uint16 custom_tcxo_reg9;
461
462 uint32 hwParam3;
463 uint32 hwParam4;
464 uint32 hwParam5;
465 uint32 hwParam6;
466 uint32 hwParam7;
467 uint32 hwParam8;
468 uint32 hwParam9;
469 uint32 hwParam10;
470 uint32 hwParam11;
Jeff Johnson295189b2012-06-20 16:38:30 -0700471}sCalData;
472
473typedef PACKED_PRE struct PACKED_POST
474{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800475 uint32 validBmap; //use eNvCalID
Jeff Johnson295189b2012-06-20 16:38:30 -0700476 sCalData calData;
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800477}sHwCalValues;
Jeff Johnson295189b2012-06-20 16:38:30 -0700478
479typedef PACKED_PRE struct PACKED_POST
480{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800481 uint32 txFirFilterMode;
Jeff Johnson295189b2012-06-20 16:38:30 -0700482}sTxBbFilterMode;
483
484typedef PACKED_PRE struct PACKED_POST
485{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800486 int16 ofdmPwrOffset;
487 int16 rsvd;
Jeff Johnson295189b2012-06-20 16:38:30 -0700488}sOfdmCmdPwrOffset;
489
490//From wlanfw/inc/halPhyCfg.h
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800491typedef uint8 tTpcLutValue;
Jeff Johnson295189b2012-06-20 16:38:30 -0700492
493#define MAX_TPC_CAL_POINTS (8)
494
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800495typedef uint8 tPowerDetect; //7-bit power detect reading
Jeff Johnson295189b2012-06-20 16:38:30 -0700496
497typedef PACKED_PRE struct PACKED_POST
498{
499 tPowerDetect pwrDetAdc; //= SENSED_PWR register, which reports the 8-bit ADC
500 // the stored ADC value gets shifted to 7-bits as the index to the LUT
501 tPowerDetect adjustedPwrDet; //7-bit value that goes into the LUT at the LUT[pwrDet] location
502 //MSB set if extraPrecision.hi8_adjustedPwrDet is used
503}tTpcCaldPowerPoint;
504
Prasanna Kumarc322b652013-07-18 16:22:45 -0700505typedef tTpcCaldPowerPoint tTpcCaldPowerTable[NUM_PHY_MAX_TX_CHAINS][MAX_TPC_CAL_POINTS];
Jeff Johnson295189b2012-06-20 16:38:30 -0700506
507typedef PACKED_PRE struct PACKED_POST
508{
509 tTpcCaldPowerTable empirical; //calibrated power points
510}tTpcConfig;
511
512//From wlanfw/inc/phyTxPower.h
513#ifndef TPC_MEM_POWER_LUT_DEPTH
514#define TPC_MEM_POWER_LUT_DEPTH 256
515#endif
516
Prasanna Kumarc322b652013-07-18 16:22:45 -0700517typedef tTpcLutValue tTpcPowerTable[NUM_PHY_MAX_TX_CHAINS][TPC_MEM_POWER_LUT_DEPTH];
Jeff Johnson295189b2012-06-20 16:38:30 -0700518
519typedef PACKED_PRE struct PACKED_POST
520{
521 tTpcConfig *pwrSampled; //points to CLPC data in calMemory
522}tPhyTxPowerBand;
523
524//From halPhyRates.h
525typedef enum
526{
527 //802.11b Rates
528 HAL_PHY_RATE_11B_LONG_1_MBPS,
529 HAL_PHY_RATE_11B_LONG_2_MBPS,
530 HAL_PHY_RATE_11B_LONG_5_5_MBPS,
531 HAL_PHY_RATE_11B_LONG_11_MBPS,
532 HAL_PHY_RATE_11B_SHORT_2_MBPS,
533 HAL_PHY_RATE_11B_SHORT_5_5_MBPS,
534 HAL_PHY_RATE_11B_SHORT_11_MBPS,
535
536 //Spica_Virgo 11A 20MHz Rates
537 HAL_PHY_RATE_11A_6_MBPS,
538 HAL_PHY_RATE_11A_9_MBPS,
539 HAL_PHY_RATE_11A_12_MBPS,
540 HAL_PHY_RATE_11A_18_MBPS,
541 HAL_PHY_RATE_11A_24_MBPS,
542 HAL_PHY_RATE_11A_36_MBPS,
543 HAL_PHY_RATE_11A_48_MBPS,
544 HAL_PHY_RATE_11A_54_MBPS,
545
546 // 11A 20MHz Rates
547 HAL_PHY_RATE_11A_DUP_6_MBPS,
548 HAL_PHY_RATE_11A_DUP_9_MBPS,
549 HAL_PHY_RATE_11A_DUP_12_MBPS,
550 HAL_PHY_RATE_11A_DUP_18_MBPS,
551 HAL_PHY_RATE_11A_DUP_24_MBPS,
552 HAL_PHY_RATE_11A_DUP_36_MBPS,
553 HAL_PHY_RATE_11A_DUP_48_MBPS,
554 HAL_PHY_RATE_11A_DUP_54_MBPS,
555
556 //MCS Index #0-7 (20/40MHz)
557 HAL_PHY_RATE_MCS_1NSS_6_5_MBPS,
558 HAL_PHY_RATE_MCS_1NSS_13_MBPS,
559 HAL_PHY_RATE_MCS_1NSS_19_5_MBPS,
560 HAL_PHY_RATE_MCS_1NSS_26_MBPS,
561 HAL_PHY_RATE_MCS_1NSS_39_MBPS,
562 HAL_PHY_RATE_MCS_1NSS_52_MBPS,
563 HAL_PHY_RATE_MCS_1NSS_58_5_MBPS,
564 HAL_PHY_RATE_MCS_1NSS_65_MBPS,
565 HAL_PHY_RATE_MCS_1NSS_MM_SG_7_2_MBPS,
566 HAL_PHY_RATE_MCS_1NSS_MM_SG_14_4_MBPS,
567 HAL_PHY_RATE_MCS_1NSS_MM_SG_21_7_MBPS,
568 HAL_PHY_RATE_MCS_1NSS_MM_SG_28_9_MBPS,
569 HAL_PHY_RATE_MCS_1NSS_MM_SG_43_3_MBPS,
570 HAL_PHY_RATE_MCS_1NSS_MM_SG_57_8_MBPS,
571 HAL_PHY_RATE_MCS_1NSS_MM_SG_65_MBPS,
572 HAL_PHY_RATE_MCS_1NSS_MM_SG_72_2_MBPS,
573
574 //MCS Index #8-15 (20/40MHz)
575 HAL_PHY_RATE_MCS_1NSS_CB_13_5_MBPS,
576 HAL_PHY_RATE_MCS_1NSS_CB_27_MBPS,
577 HAL_PHY_RATE_MCS_1NSS_CB_40_5_MBPS,
578 HAL_PHY_RATE_MCS_1NSS_CB_54_MBPS,
579 HAL_PHY_RATE_MCS_1NSS_CB_81_MBPS,
580 HAL_PHY_RATE_MCS_1NSS_CB_108_MBPS,
581 HAL_PHY_RATE_MCS_1NSS_CB_121_5_MBPS,
582 HAL_PHY_RATE_MCS_1NSS_CB_135_MBPS,
583 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_15_MBPS,
584 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_30_MBPS,
585 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_45_MBPS,
586 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_60_MBPS,
587 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_90_MBPS,
588 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_120_MBPS,
589 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_135_MBPS,
590 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_150_MBPS,
591
Jeff Johnsone7245742012-09-05 17:12:55 -0700592#ifdef WLAN_FEATURE_11AC
593 /*11A duplicate 80MHz Rates*/
594 HAL_PHY_RATE_11AC_DUP_6_MBPS,
595 HAL_PHY_RATE_11AC_DUP_9_MBPS,
596 HAL_PHY_RATE_11AC_DUP_12_MBPS,
597 HAL_PHY_RATE_11AC_DUP_18_MBPS,
598 HAL_PHY_RATE_11AC_DUP_24_MBPS,
599 HAL_PHY_RATE_11AC_DUP_36_MBPS,
600 HAL_PHY_RATE_11AC_DUP_48_MBPS,
601 HAL_PHY_RATE_11AC_DUP_54_MBPS,
602
603 /*11AC rate 20MHZ Normal GI*/
604 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_6_5_MBPS,
605 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_13_MBPS,
606 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_19_5_MBPS,
607 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_26_MBPS,
608 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_39_MBPS,
609 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_52_MBPS,
610 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_58_5_MBPS,
611 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_65_MBPS,
612 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_78_MBPS,
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800613#ifdef WCN_PRONTO
614 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_86_5_MBPS,
615#endif
Jeff Johnsone7245742012-09-05 17:12:55 -0700616
617 /*11AC rate 20MHZ Shortl GI*/
618 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_7_2_MBPS,
619 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_14_4_MBPS,
620 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_21_6_MBPS,
621 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_28_8_MBPS,
622 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_43_3_MBPS,
623 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_57_7_MBPS,
624 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_65_MBPS,
625 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_72_2_MBPS,
626 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_86_6_MBPS,
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800627#ifdef WCN_PRONTO
628 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_96_1_MBPS,
629#endif
Jeff Johnsone7245742012-09-05 17:12:55 -0700630
631 /*11AC rates 40MHZ normal GI*/
632 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_13_5_MBPS ,
633 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_27_MBPS,
634 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_40_5_MBPS,
635 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_54_MBPS,
636 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_81_MBPS,
637 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_108_MBPS,
638 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_121_5_MBPS,
639 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_135_MBPS,
640 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_162_MBPS,
641 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_180_MBPS,
642
643 /*11AC rates 40MHZ short GI*/
644 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_15_MBPS ,
645 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_30_MBPS,
646 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_45_MBPS,
647 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_60_MBPS,
648 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_90_MBPS,
649 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_120_MBPS,
650 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_135_MBPS,
651 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_150_MBPS,
652 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_180_MBPS,
653 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_200_MBPS,
654
655 /*11AC rates 80 MHZ normal GI*/
656 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_29_3_MBPS ,
657 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_58_5_MBPS,
658 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_87_8_MBPS,
659 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_117_MBPS,
660 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_175_5_MBPS,
661 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_234_MBPS,
662 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_263_3_MBPS,
663 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_292_5_MBPS,
664 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_351_MBPS,
665 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_390_MBPS,
666
667 /*11AC rates 80 MHZ short GI*/
668 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_32_5_MBPS ,
669 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_65_MBPS,
670 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_97_5_MBPS,
671 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_130_MBPS,
672 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_195_MBPS,
673 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_260_MBPS,
674 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_292_5_MBPS,
675 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_325_MBPS,
676 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_390_MBPS,
677 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_433_3_MBPS,
678#endif //WLAN_FEATURE_11AC
679
Jeff Johnson295189b2012-06-20 16:38:30 -0700680 NUM_HAL_PHY_RATES,
681 HAL_PHY_RATE_INVALID,
682 MIN_RATE_INDEX = 0,
Jeff Johnsone7245742012-09-05 17:12:55 -0700683 MAX_RATE_INDEX = NUM_HAL_PHY_RATES - 1,
Jeff Johnson295189b2012-06-20 16:38:30 -0700684 HAL_PHY_RATE_INVALID_MAX_FIELD = 0x7FFFFFFF /* define as 4 bytes data */
685}eHalPhyRates;
686
Jeff Johnson295189b2012-06-20 16:38:30 -0700687#define NUM_RATE_POWER_GROUPS NUM_HAL_PHY_RATES //total number of rate power groups including the CB_RATE_POWER_OFFSET
Prasanna Kumarc322b652013-07-18 16:22:45 -0700688typedef uAbsPwrPrecision tRateGroupPwr[NUM_HAL_PHY_RATES];
Jeff Johnson295189b2012-06-20 16:38:30 -0700689
690//From halNvTables.h
691#define NV_FIELD_COUNTRY_CODE_SIZE 3
692typedef PACKED_PRE struct PACKED_POST
693{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800694 uint8 regDomain; //from eRegDomainId
695 uint8 countryCode[NV_FIELD_COUNTRY_CODE_SIZE]; // string identifier
Jeff Johnson295189b2012-06-20 16:38:30 -0700696}sDefaultCountry;
697
Shailender Karmuchi07f514b2013-06-25 01:14:09 -0700698
699#define GF_PA_BIAS_SELECT_MASK 0X7 //(3 bits)
700#define TSMC_PA_BIAS_SELECT_MASK 0x7 //(3 bits)
701
702#define GF_PA_BIAS_SELECT_1 0X0
703#define GF_PA_BIAS_SELECT_2 0X1
704
705#define TSMC_PA_BIAS_SELECT_1 0X0
706#define TSMC_PA_BIAS_SELECT_2 0X1
707#define TSMC_PA_BIAS_SELECT_3 0x2
708
709
710#define EXT_PA_CTRL_POLARITY_DEFAULT 0X0
711#define EXT_PA_CTRL_POLARITY_VALID 0X80
712
713#define EXT_PA_CTRL0_POLARITY_MASK 0X3
714#define EXT_PA_CTRL0_POLARITY_OFFSET 0X0
715#define EXT_PA_CTRL1_POLARITY_MASK 0XC
716#define EXT_PA_CTRL1_POLARITY_OFFSET 0X2
717
718#define EXT_PA_CTRL_POLARITY_ZERO 0X1
719#define EXT_PA_CTRL_POLARITY_ONE 0X2
720
Leo Chang09a60182013-12-04 18:12:10 -0800721#define GF_TX_PWR_ADJUST_2G_MASK 0XF0000
722#define GF_TX_PWR_ADJUST_2G_OFFSET 16
723#define GF_TX_PWR_ADJUST_5G_LOW_MASK 0XF00000
724#define GF_TX_PWR_ADJUST_5G_LOW_OFFSET 20
725#define GF_TX_PWR_ADJUST_5G_MID_MASK 0XF000000
726#define GF_TX_PWR_ADJUST_5G_MID_OFFSET 24
727#define GF_TX_PWR_ADJUST_5G_HIGH_MASK 0XF0000000
728#define GF_TX_PWR_ADJUST_5G_HIGH_OFFSET 28
729
730
Jeff Johnson295189b2012-06-20 16:38:30 -0700731typedef PACKED_PRE struct PACKED_POST
732{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800733 uint8 skuID;
734 uint8 tpcMode2G;
735 uint8 tpcMode5G;
Shailender Karmuchi07f514b2013-06-25 01:14:09 -0700736 uint8 configItem1;
Jeff Johnson295189b2012-06-20 16:38:30 -0700737
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800738 uint8 xPA2G;
739 uint8 xPA5G;
Shailender Karmuchi07f514b2013-06-25 01:14:09 -0700740 uint8 extPaCtrl0Polarity;
741 uint8 extPaCtrl1Polarity;
Jeff Johnson295189b2012-06-20 16:38:30 -0700742
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800743 uint8 xLNA2G;
744 uint8 xLNA5G;
745 uint8 xCoupler2G;
746 uint8 xCoupler5G;
Jeff Johnson295189b2012-06-20 16:38:30 -0700747
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800748 uint8 xPdet2G;
749 uint8 xPdet5G;
750 uint8 enableDPD2G;
751 uint8 enableDPD5G;
Jeff Johnson295189b2012-06-20 16:38:30 -0700752
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800753 uint8 pdadcSelect2G;
754 uint8 pdadcSelect5GLow;
755 uint8 pdadcSelect5GMid;
756 uint8 pdadcSelect5GHigh;
Jeff Johnson295189b2012-06-20 16:38:30 -0700757
Shailender Karmuchi07f514b2013-06-25 01:14:09 -0700758 uint32 configItem2;
759 uint32 configItem3;
760 uint32 configItem4;
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800761}sFwConfig;
Jeff Johnson295189b2012-06-20 16:38:30 -0700762
Jeff Johnson295189b2012-06-20 16:38:30 -0700763
764#define NUM_RF_VR_RATE 13
765typedef uAbsPwrPrecision tRateGroupPwrVR[NUM_RF_VR_RATE];
766
767typedef PACKED_PRE union PACKED_POST
768{
769 tRateGroupPwr pwrOptimum[NUM_RF_SUBBANDS]; // NV_TABLE_RATE_POWER_SETTINGS
770 sRegulatoryDomains regDomains[NUM_REG_DOMAINS]; // NV_TABLE_REGULATORY_DOMAINS
771 sDefaultCountry defaultCountryTable; // NV_TABLE_DEFAULT_COUNTRY
772 tTpcPowerTable plutCharacterized[NUM_RF_CHANNELS]; // NV_TABLE_TPC_POWER_TABLE
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800773 int16 plutPdadcOffset[NUM_RF_CHANNELS]; // NV_TABLE_TPC_PDADC_OFFSETS
Jeff Johnson295189b2012-06-20 16:38:30 -0700774 tRateGroupPwrVR pwrOptimum_virtualRate[NUM_RF_SUBBANDS]; // NV_TABLE_VIRTUAL_RATE
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800775 sFwConfig fwConfig; // NV_TABLE_FW_CONFIG
Jeff Johnson295189b2012-06-20 16:38:30 -0700776 sRssiChannelOffsets rssiChanOffsets[2]; // NV_TABLE_RSSI_CHANNEL_OFFSETS
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800777 sHwCalValues hwCalValues; // NV_TABLE_HW_CAL_VALUES
778 int16 antennaPathLoss[NUM_RF_CHANNELS]; // NV_TABLE_ANTENNA_PATH_LOSS
779 int16 pktTypePwrLimits[NUM_802_11_MODES][NUM_RF_CHANNELS]; // NV_TABLE_PACKET_TYPE_POWER_LIMITS
Jeff Johnson295189b2012-06-20 16:38:30 -0700780 sOfdmCmdPwrOffset ofdmCmdPwrOffset; // NV_TABLE_OFDM_CMD_PWR_OFFSET
781 sTxBbFilterMode txbbFilterMode; // NV_TABLE_TX_BB_FILTER_MODE
782}ALIGN_4 uNvTables;
783
784//From halPhy.h
785typedef tPowerdBm tChannelPwrLimit;
786
787typedef PACKED_PRE struct PACKED_POST
788{
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800789 uint8 chanId;
Jeff Johnson295189b2012-06-20 16:38:30 -0700790 tChannelPwrLimit pwr;
791} ALIGN_4 tChannelListWithPower;
792
793//From HAL/inc/halNvTables.h
794typedef enum
795{
796 NV_FIELDS_IMAGE = 0, //contains all fields
797
798 NV_TABLE_RATE_POWER_SETTINGS = 2,
799 NV_TABLE_REGULATORY_DOMAINS = 3,
800 NV_TABLE_DEFAULT_COUNTRY = 4,
801 NV_TABLE_TPC_POWER_TABLE = 5,
802 NV_TABLE_TPC_PDADC_OFFSETS = 6,
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800803 NV_TABLE_HW_CAL_VALUES = 7,
Jeff Johnson295189b2012-06-20 16:38:30 -0700804 NV_TABLE_RSSI_CHANNEL_OFFSETS = 9,
805 NV_TABLE_CAL_MEMORY = 10, //cal memory structure from halPhyCalMemory.h preceded by status
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800806 NV_TABLE_FW_CONFIG = 11,
Jeff Johnson295189b2012-06-20 16:38:30 -0700807 NV_TABLE_ANTENNA_PATH_LOSS = 12,
808 NV_TABLE_PACKET_TYPE_POWER_LIMITS = 13,
809 NV_TABLE_OFDM_CMD_PWR_OFFSET = 14,
810 NV_TABLE_TX_BB_FILTER_MODE = 15,
811 NV_TABLE_VIRTUAL_RATE = 18,
812
813 NUM_NV_TABLE_IDS,
814 NV_ALL_TABLES = 0xFFF,
815 NV_BINARY_IMAGE = 0x1000,
816 NV_MAX_TABLE = 0x7FFFFFFF /* define as 4 bytes data */
817}eNvTable;
818
819typedef PACKED_PRE struct PACKED_POST
820{
821 tRateGroupPwr pwrOptimum[NUM_RF_SUBBANDS]; // NV_TABLE_RATE_POWER_SETTINGS
822 sRegulatoryDomains regDomains[NUM_REG_DOMAINS]; // NV_TABLE_REGULATORY_DOMAINS
823 sDefaultCountry defaultCountryTable; // NV_TABLE_DEFAULT_COUNTRY
824 tTpcPowerTable plutCharacterized[NUM_RF_CHANNELS]; // NV_TABLE_TPC_POWER_TABLE
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800825 int16 plutPdadcOffset[NUM_RF_CHANNELS]; // NV_TABLE_TPC_PDADC_OFFSETS
Jeff Johnson295189b2012-06-20 16:38:30 -0700826 tRateGroupPwrVR pwrOptimum_virtualRate[NUM_RF_SUBBANDS]; // NV_TABLE_VIRTUAL_RATE
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800827 sFwConfig fwConfig; // NV_TABLE_FW_CONFIG
Jeff Johnson295189b2012-06-20 16:38:30 -0700828 sRssiChannelOffsets rssiChanOffsets[2]; // NV_TABLE_RSSI_CHANNEL_OFFSETS
Gopichand Nakkala90bcf7a2013-01-04 11:45:31 -0800829 sHwCalValues hwCalValues; // NV_TABLE_HW_CAL_VALUES
830 int16 antennaPathLoss[NUM_RF_CHANNELS]; // NV_TABLE_ANTENNA_PATH_LOSS
831 int16 pktTypePwrLimits[NUM_802_11_MODES][NUM_RF_CHANNELS]; // NV_TABLE_PACKET_TYPE_POWER_LIMITS
Jeff Johnson295189b2012-06-20 16:38:30 -0700832 sOfdmCmdPwrOffset ofdmCmdPwrOffset; // NV_TABLE_OFDM_CMD_PWR_OFFSET
833 sTxBbFilterMode txbbFilterMode; // NV_TABLE_TX_BB_FILTER_MODE
834}ALIGN_4 sNvTables;
835
836typedef PACKED_PRE struct PACKED_POST
837{
838 sNvFields fields;
839 sNvTables tables;
840}ALIGN_4 sHalNv;
841
842extern const sHalNv nvDefaults;
843
844#endif
845