blob: a4d06eac9de75d9e4b97925ba50adedb07506f47 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Jeff Johnson32d95a32012-09-10 13:15:23 -07002 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -07003 *
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.
20 */
21
22/** ------------------------------------------------------------------------- *
23 ------------------------------------------------------------------------- *
24
25
26 \file wlan_nv.h
27
28 \brief Types for NV implementation
29 Anything that needs to be publicly available should
30 be in this file
31
32 $Id$
33
34 Copyright (C) 2006 Airgo Networks, Incorporated
35
36
37 ========================================================================== */
38
39#if !defined( __WLAN_NV_H )
40#define __WLAN_NV_H
41
42#include "halLegacyPalTypes.h"
43#include "halCompiler.h"
44
45//From HAL/inc/halNv.h
46typedef enum
47{
48 //Common Nv Fields
49 NV_COMMON_PRODUCT_ID, // 0
50 NV_COMMON_PRODUCT_BANDS, // 1
51 NV_COMMON_NUM_OF_TX_CHAINS, // 2
52 NV_COMMON_NUM_OF_RX_CHAINS, // 3
53 NV_COMMON_MAC_ADDR, // 4
54 NV_COMMON_MFG_SERIAL_NUMBER, // 5
55 NV_COMMON_WLAN_NV_REV_ID, // 6
56 NV_COMMON_COUPLER_TYPE, // 7
57
58 NUM_NV_FIELDS,
59 NV_MAX_FIELD = 0x7FFFFFFF /* define as 4 bytes data */
60
61}eNvField;
62
63
64#define NV_FIELD_MAC_ADDR_SIZE 6
65#define NV_FIELD_MFG_SN_SIZE 40
66typedef enum
67{
68 PRODUCT_BAND_11_B_G = 0, //Gen6.0 is only this setting
69 PRODUCT_BAND_11_A_B_G = 1,
70 PRODUCT_BAND_11_A = 2,
71
72 NUM_PRODUCT_BANDS,
73 NUM_PRODUCT_BANDS_INVALID = 0x7FFFFFFF /* define as 4 bytes data */
74}eNvProductBands; //NV_COMMON_PRODUCT_BANDS
75
76
77typedef PACKED_PRE union PACKED_POST
78{
79 //common NV fields
80 tANI_U16 productId;
81 tANI_U8 productBands;
82 tANI_U8 wlanNvRevId;
83 tANI_U8 numOfTxChains;
84 tANI_U8 numOfRxChains;
85 tANI_U8 macAddr[NV_FIELD_MAC_ADDR_SIZE]; /* Default, not change name for compatibility */
86 tANI_U8 macAddr2[NV_FIELD_MAC_ADDR_SIZE];
87 tANI_U8 macAddr3[NV_FIELD_MAC_ADDR_SIZE];
88 tANI_U8 macAddr4[NV_FIELD_MAC_ADDR_SIZE];
89 tANI_U8 mfgSN[NV_FIELD_MFG_SN_SIZE];
90 tANI_U8 couplerType; /* 0 : Internal coupler, 1 : External coupler */
91 tANI_U8 reserved; /* Make Byte alignment */
92} uNvFields;
93
94
95
96//format of common part of nv
97typedef PACKED_PRE struct PACKED_POST
98{
99 //always ensure fields are aligned to 32-bit boundaries
100 tANI_U16 productId;
101 tANI_U8 productBands;
102 tANI_U8 wlanNvRevId; //0: WCN1312, 1: WCN1314, 2: WCN3660
103
104 tANI_U8 numOfTxChains;
105 tANI_U8 numOfRxChains;
106 tANI_U8 macAddr[NV_FIELD_MAC_ADDR_SIZE]; /* Default, not change name for compatibility */
107 tANI_U8 macAddr2[NV_FIELD_MAC_ADDR_SIZE];
108 tANI_U8 macAddr3[NV_FIELD_MAC_ADDR_SIZE];
109 tANI_U8 macAddr4[NV_FIELD_MAC_ADDR_SIZE];
110 tANI_U8 mfgSN[NV_FIELD_MFG_SN_SIZE];
111 tANI_U8 couplerType; /* 0 : Internal coupler, 1 : External coupler */
112 tANI_U8 reserved; /* Make Byte alignment */
113} sNvFields;
114
115
116//From wlanfw/inc/halPhyTypes.h
117
118typedef tANI_S8 tPowerdBm; //power in signed 8-bit integer, no decimal places
119
120typedef PACKED_PRE union PACKED_POST
121{
122 tANI_U32 measurement; //measured values can be passed to pttApi, but are maintained to 2 decimal places internally
123 tANI_S16 reported; //used internally only - reported values only maintain 2 decimals places
124}uAbsPwrPrecision;
125
126typedef enum
127{
128 PHY_TX_CHAIN_0 = 0,
129
130 PHY_MAX_TX_CHAINS = 1,
131 PHY_ALL_TX_CHAINS,
132
133 //possible tx chain combinations
134 PHY_NO_TX_CHAINS,
135 PHY_TX_CHAIN_INVALID = 0x7FFFFFFF /* define as 4 bytes data */
136}ePhyTxChains;
137
138//From wlanfw/inc/halRfTypes.h
139
140typedef enum
141{
142 REG_DOMAIN_FCC,
143 REG_DOMAIN_ETSI,
144 REG_DOMAIN_JAPAN,
145 REG_DOMAIN_WORLD,
146 REG_DOMAIN_N_AMER_EXC_FCC,
147 REG_DOMAIN_APAC,
148 REG_DOMAIN_KOREA,
149 REG_DOMAIN_HI_5GHZ,
150 REG_DOMAIN_NO_5GHZ,
151
152 NUM_REG_DOMAINS,
153 NUM_REG_DOMAINS_INVALID = 0x7FFFFFFF /* define as 4 bytes data */
154}eRegDomainId;
155
156typedef enum
157{
158 RF_SUBBAND_2_4_GHZ = 0,
159 RF_SUBBAND_5_LOW_GHZ = 1, //Low & Mid U-NII
160 RF_SUBBAND_5_MID_GHZ = 2, //ETSI
161 RF_SUBBAND_5_HIGH_GHZ = 3, //High U-NII
Madan Mohan Koyyalamudi8cb5dc72012-09-24 12:08:56 -0700162 RF_SUBBAND_4_9_GHZ = 4, //Japanese
Jeff Johnson295189b2012-06-20 16:38:30 -0700163
164
165 NUM_RF_SUBBANDS,
166
167 MAX_RF_SUBBANDS,
168 INVALID_RF_SUBBAND,
169
170 RF_BAND_2_4_GHZ = 0,
171 RF_BAND_5_GHZ = 1,
172 NUM_RF_BANDS,
173 BOTH_RF_BANDS,
174 RF_SUBBAND_INVALID = 0x7FFFFFFF /* define as 4 bytes data */
175}eRfSubBand;
176
177typedef enum
178{
179 //2.4GHz Band
180 RF_CHAN_1 = 0,
181 RF_CHAN_2 = 1,
182 RF_CHAN_3 = 2,
183 RF_CHAN_4 = 3,
184 RF_CHAN_5 = 4,
185 RF_CHAN_6 = 5,
186 RF_CHAN_7 = 6,
187 RF_CHAN_8 = 7,
188 RF_CHAN_9 = 8,
189 RF_CHAN_10 = 9,
190 RF_CHAN_11 = 10,
191 RF_CHAN_12 = 11,
192 RF_CHAN_13 = 12,
193 RF_CHAN_14 = 13,
194
Madan Mohan Koyyalamudi8cb5dc72012-09-24 12:08:56 -0700195 //4.9GHz Band
196 RF_CHAN_240 = 14,
197 RF_CHAN_244 = 15,
198 RF_CHAN_248 = 16,
199 RF_CHAN_252 = 17,
200 RF_CHAN_208 = 18,
201 RF_CHAN_212 = 19,
202 RF_CHAN_216 = 20,
Jeff Johnson295189b2012-06-20 16:38:30 -0700203
204 //5GHz Low & Mid U-NII Band
205 RF_CHAN_36 = 21,
206 RF_CHAN_40 = 22,
207 RF_CHAN_44 = 23,
208 RF_CHAN_48 = 24,
209 RF_CHAN_52 = 25,
210 RF_CHAN_56 = 26,
211 RF_CHAN_60 = 27,
212 RF_CHAN_64 = 28,
213
214 //5GHz Mid Band - ETSI & FCC
215 RF_CHAN_100 = 29,
216 RF_CHAN_104 = 30,
217 RF_CHAN_108 = 31,
218 RF_CHAN_112 = 32,
219 RF_CHAN_116 = 33,
220 RF_CHAN_120 = 34,
221 RF_CHAN_124 = 35,
222 RF_CHAN_128 = 36,
223 RF_CHAN_132 = 37,
224 RF_CHAN_136 = 38,
225 RF_CHAN_140 = 39,
226
227 //5GHz High U-NII Band
228 RF_CHAN_149 = 40,
229 RF_CHAN_153 = 41,
230 RF_CHAN_157 = 42,
231 RF_CHAN_161 = 43,
232 RF_CHAN_165 = 44,
233
234 //CHANNEL BONDED CHANNELS
235 RF_CHAN_BOND_3 = 45,
236 RF_CHAN_BOND_4 = 46,
237 RF_CHAN_BOND_5 = 47,
238 RF_CHAN_BOND_6 = 48,
239 RF_CHAN_BOND_7 = 49,
240 RF_CHAN_BOND_8 = 50,
241 RF_CHAN_BOND_9 = 51,
242 RF_CHAN_BOND_10 = 52,
243 RF_CHAN_BOND_11 = 53,
Madan Mohan Koyyalamudi8cb5dc72012-09-24 12:08:56 -0700244 RF_CHAN_BOND_242 = 54, //4.9GHz Band
245 RF_CHAN_BOND_246 = 55,
246 RF_CHAN_BOND_250 = 56,
247 RF_CHAN_BOND_210 = 57,
248 RF_CHAN_BOND_214 = 58,
Jeff Johnson295189b2012-06-20 16:38:30 -0700249 RF_CHAN_BOND_38 = 59, //5GHz Low & Mid U-NII Band
250 RF_CHAN_BOND_42 = 60,
251 RF_CHAN_BOND_46 = 61,
252 RF_CHAN_BOND_50 = 62,
253 RF_CHAN_BOND_54 = 63,
254 RF_CHAN_BOND_58 = 64,
255 RF_CHAN_BOND_62 = 65,
256 RF_CHAN_BOND_102 = 66, //5GHz Mid Band - ETSI & FCC
257 RF_CHAN_BOND_106 = 67,
258 RF_CHAN_BOND_110 = 68,
259 RF_CHAN_BOND_114 = 69,
260 RF_CHAN_BOND_118 = 70,
261 RF_CHAN_BOND_122 = 71,
262 RF_CHAN_BOND_126 = 72,
263 RF_CHAN_BOND_130 = 73,
264 RF_CHAN_BOND_134 = 74,
265 RF_CHAN_BOND_138 = 75,
266 RF_CHAN_BOND_151 = 76, //5GHz High U-NII Band
267 RF_CHAN_BOND_155 = 77,
268 RF_CHAN_BOND_159 = 78,
269 RF_CHAN_BOND_163 = 79,
270
271 NUM_RF_CHANNELS,
272
273 MIN_2_4GHZ_CHANNEL = RF_CHAN_1,
274 MAX_2_4GHZ_CHANNEL = RF_CHAN_14,
275 NUM_2_4GHZ_CHANNELS = (MAX_2_4GHZ_CHANNEL - MIN_2_4GHZ_CHANNEL + 1),
276
Madan Mohan Koyyalamudi8cb5dc72012-09-24 12:08:56 -0700277 MIN_5GHZ_CHANNEL = RF_CHAN_240,
Jeff Johnson295189b2012-06-20 16:38:30 -0700278 MAX_5GHZ_CHANNEL = RF_CHAN_165,
279 NUM_5GHZ_CHANNELS = (MAX_5GHZ_CHANNEL - MIN_5GHZ_CHANNEL + 1),
280
Madan Mohan Koyyalamudi8cb5dc72012-09-24 12:08:56 -0700281 MIN_20MHZ_RF_CHANNEL = RF_CHAN_1,
Jeff Johnson295189b2012-06-20 16:38:30 -0700282 MAX_20MHZ_RF_CHANNEL = RF_CHAN_165,
283 NUM_20MHZ_RF_CHANNELS = (MAX_20MHZ_RF_CHANNEL - MIN_20MHZ_RF_CHANNEL + 1),
284
285 MIN_40MHZ_RF_CHANNEL = RF_CHAN_BOND_3,
286 MAX_40MHZ_RF_CHANNEL = RF_CHAN_BOND_163,
287 NUM_40MHZ_RF_CHANNELS = (MAX_40MHZ_RF_CHANNEL - MIN_40MHZ_RF_CHANNEL + 1),
288
289 MIN_CB_2_4GHZ_CHANNEL = RF_CHAN_BOND_3,
290 MAX_CB_2_4GHZ_CHANNEL = RF_CHAN_BOND_11,
291
Madan Mohan Koyyalamudi8cb5dc72012-09-24 12:08:56 -0700292 MIN_CB_5GHZ_CHANNEL = RF_CHAN_BOND_242,
Jeff Johnson295189b2012-06-20 16:38:30 -0700293 MAX_CB_5GHZ_CHANNEL = RF_CHAN_BOND_163,
294
295 NUM_TPC_2_4GHZ_CHANNELS = 14,
296 NUM_TPC_5GHZ_CHANNELS = NUM_5GHZ_CHANNELS,
297
298 INVALID_RF_CHANNEL = 0xBAD,
299 RF_CHANNEL_INVALID_MAX_FIELD = 0x7FFFFFFF /* define as 4 bytes data */
300}eRfChannels;
301
302enum
303{
304 NV_CHANNEL_DISABLE,
305 NV_CHANNEL_ENABLE,
306 NV_CHANNEL_DFS,
307 NV_CHANNEL_INVALID
308};
309typedef tANI_U8 eNVChannelEnabledType;
310
311typedef PACKED_PRE struct PACKED_POST
312{
313 eNVChannelEnabledType enabled;
314 tPowerdBm pwrLimit;
315}sRegulatoryChannel;
316
317typedef PACKED_PRE struct PACKED_POST
318{
319 sRegulatoryChannel channels[NUM_RF_CHANNELS];
320 uAbsPwrPrecision antennaGain[NUM_RF_SUBBANDS];
321 uAbsPwrPrecision bRatePowerOffset[NUM_2_4GHZ_CHANNELS];
322 uAbsPwrPrecision gnRatePowerOffset[NUM_RF_CHANNELS];
323}ALIGN_4 sRegulatoryDomains;
324
325typedef PACKED_PRE struct PACKED_POST
326{
327 tANI_S16 bRssiOffset[NUM_RF_CHANNELS];
328 tANI_S16 gnRssiOffset[NUM_RF_CHANNELS];
329}ALIGN_4 sRssiChannelOffsets;
330
331typedef PACKED_PRE struct PACKED_POST
332{
333 tANI_U16 targetFreq; //number in MHz
334 tANI_U16 channelNum; //channel number as in the eRfChannels enumeration
335 eRfSubBand band; //band that this channel belongs to
336}tRfChannelProps;
337
338typedef enum
339{
340 MODE_802_11B = 0,
341 MODE_802_11AG = 1,
342 MODE_802_11N = 2,
343 NUM_802_11_MODES,
344 MODE_802_11_INVALID = 0x7FFFFFFF /* define as 4 bytes data */
345} e80211Modes;
346
347
348//From wlanfw/inc/halPhyCalMemory.h
349typedef PACKED_PRE struct PACKED_POST
350{
351 tANI_U16 process_monitor;
352 tANI_U8 hdet_cal_code;
353 tANI_U8 rxfe_gm_2;
354
355 tANI_U8 tx_bbf_rtune;
356 tANI_U8 pa_rtune_reg;
357 tANI_U8 rt_code;
358 tANI_U8 bias_rtune;
359
360 tANI_U8 bb_bw1;
361 tANI_U8 bb_bw2;
362 tANI_U8 pa_ctune_reg;
363 tANI_U8 reserved1;
364
365 tANI_U8 bb_bw3;
366 tANI_U8 bb_bw4;
367 tANI_U8 bb_bw5;
368 tANI_U8 bb_bw6;
369
370 tANI_U16 rcMeasured;
371 tANI_U8 tx_bbf_ct;
372 tANI_U8 tx_bbf_ctr;
373
374 tANI_U8 csh_maxgain_reg;
375 tANI_U8 csh_0db_reg;
376 tANI_U8 csh_m3db_reg;
377 tANI_U8 csh_m6db_reg;
378
379 tANI_U8 cff_0db_reg;
380 tANI_U8 cff_m3db_reg;
381 tANI_U8 cff_m6db_reg;
382 tANI_U8 rxfe_gpio_ctl_1;
383
384 tANI_U8 mix_bal_cnt_2;
385 tANI_S8 rxfe_lna_highgain_bias_ctl_delta;
386 tANI_U8 rxfe_lna_load_ctune;
387 tANI_U8 rxfe_lna_ngm_rtune;
388
389 tANI_U8 rx_im2_spare0;
390 tANI_U8 rx_im2_spare1;
391 tANI_U16 hdet_dco;
392
393 tANI_U8 pll_vfc_reg3_b0;
394 tANI_U8 pll_vfc_reg3_b1;
395 tANI_U8 pll_vfc_reg3_b2;
396 tANI_U8 pll_vfc_reg3_b3;
397
398 tANI_U16 tempStart;
399 tANI_U16 roomTemp;
400
401 tANI_S16 ambientCalTemp;
402 tANI_U8 ambientCalTempValid;
403 tANI_U8 reserved2;
404
405}sCalData;
406
407typedef PACKED_PRE struct PACKED_POST
408{
409 tANI_U32 calStatus; //use eNvCalID
410 sCalData calData;
411}sRFCalValues;
412
413typedef PACKED_PRE struct PACKED_POST
414{
415 tANI_U32 txFirFilterMode;
416}sTxBbFilterMode;
417
418typedef PACKED_PRE struct PACKED_POST
419{
420 tANI_S16 ofdmPwrOffset;
421 tANI_S16 rsvd;
422}sOfdmCmdPwrOffset;
423
424//From wlanfw/inc/halPhyCfg.h
425typedef tANI_U8 tTpcLutValue;
426
427#define MAX_TPC_CAL_POINTS (8)
428
429typedef tANI_U8 tPowerDetect; //7-bit power detect reading
430
431typedef PACKED_PRE struct PACKED_POST
432{
433 tPowerDetect pwrDetAdc; //= SENSED_PWR register, which reports the 8-bit ADC
434 // the stored ADC value gets shifted to 7-bits as the index to the LUT
435 tPowerDetect adjustedPwrDet; //7-bit value that goes into the LUT at the LUT[pwrDet] location
436 //MSB set if extraPrecision.hi8_adjustedPwrDet is used
437}tTpcCaldPowerPoint;
438
439typedef tTpcCaldPowerPoint tTpcCaldPowerTable[PHY_MAX_TX_CHAINS][MAX_TPC_CAL_POINTS];
440
441typedef PACKED_PRE struct PACKED_POST
442{
443 tTpcCaldPowerTable empirical; //calibrated power points
444}tTpcConfig;
445
446//From wlanfw/inc/phyTxPower.h
447#ifndef TPC_MEM_POWER_LUT_DEPTH
448#define TPC_MEM_POWER_LUT_DEPTH 256
449#endif
450
451typedef tTpcLutValue tTpcPowerTable[PHY_MAX_TX_CHAINS][TPC_MEM_POWER_LUT_DEPTH];
452
453typedef PACKED_PRE struct PACKED_POST
454{
455 tTpcConfig *pwrSampled; //points to CLPC data in calMemory
456}tPhyTxPowerBand;
457
458//From halPhyRates.h
459typedef enum
460{
461 //802.11b Rates
462 HAL_PHY_RATE_11B_LONG_1_MBPS,
463 HAL_PHY_RATE_11B_LONG_2_MBPS,
464 HAL_PHY_RATE_11B_LONG_5_5_MBPS,
465 HAL_PHY_RATE_11B_LONG_11_MBPS,
466 HAL_PHY_RATE_11B_SHORT_2_MBPS,
467 HAL_PHY_RATE_11B_SHORT_5_5_MBPS,
468 HAL_PHY_RATE_11B_SHORT_11_MBPS,
469
470 //Spica_Virgo 11A 20MHz Rates
471 HAL_PHY_RATE_11A_6_MBPS,
472 HAL_PHY_RATE_11A_9_MBPS,
473 HAL_PHY_RATE_11A_12_MBPS,
474 HAL_PHY_RATE_11A_18_MBPS,
475 HAL_PHY_RATE_11A_24_MBPS,
476 HAL_PHY_RATE_11A_36_MBPS,
477 HAL_PHY_RATE_11A_48_MBPS,
478 HAL_PHY_RATE_11A_54_MBPS,
479
480 // 11A 20MHz Rates
481 HAL_PHY_RATE_11A_DUP_6_MBPS,
482 HAL_PHY_RATE_11A_DUP_9_MBPS,
483 HAL_PHY_RATE_11A_DUP_12_MBPS,
484 HAL_PHY_RATE_11A_DUP_18_MBPS,
485 HAL_PHY_RATE_11A_DUP_24_MBPS,
486 HAL_PHY_RATE_11A_DUP_36_MBPS,
487 HAL_PHY_RATE_11A_DUP_48_MBPS,
488 HAL_PHY_RATE_11A_DUP_54_MBPS,
489
490 //MCS Index #0-7 (20/40MHz)
491 HAL_PHY_RATE_MCS_1NSS_6_5_MBPS,
492 HAL_PHY_RATE_MCS_1NSS_13_MBPS,
493 HAL_PHY_RATE_MCS_1NSS_19_5_MBPS,
494 HAL_PHY_RATE_MCS_1NSS_26_MBPS,
495 HAL_PHY_RATE_MCS_1NSS_39_MBPS,
496 HAL_PHY_RATE_MCS_1NSS_52_MBPS,
497 HAL_PHY_RATE_MCS_1NSS_58_5_MBPS,
498 HAL_PHY_RATE_MCS_1NSS_65_MBPS,
499 HAL_PHY_RATE_MCS_1NSS_MM_SG_7_2_MBPS,
500 HAL_PHY_RATE_MCS_1NSS_MM_SG_14_4_MBPS,
501 HAL_PHY_RATE_MCS_1NSS_MM_SG_21_7_MBPS,
502 HAL_PHY_RATE_MCS_1NSS_MM_SG_28_9_MBPS,
503 HAL_PHY_RATE_MCS_1NSS_MM_SG_43_3_MBPS,
504 HAL_PHY_RATE_MCS_1NSS_MM_SG_57_8_MBPS,
505 HAL_PHY_RATE_MCS_1NSS_MM_SG_65_MBPS,
506 HAL_PHY_RATE_MCS_1NSS_MM_SG_72_2_MBPS,
507
508 //MCS Index #8-15 (20/40MHz)
509 HAL_PHY_RATE_MCS_1NSS_CB_13_5_MBPS,
510 HAL_PHY_RATE_MCS_1NSS_CB_27_MBPS,
511 HAL_PHY_RATE_MCS_1NSS_CB_40_5_MBPS,
512 HAL_PHY_RATE_MCS_1NSS_CB_54_MBPS,
513 HAL_PHY_RATE_MCS_1NSS_CB_81_MBPS,
514 HAL_PHY_RATE_MCS_1NSS_CB_108_MBPS,
515 HAL_PHY_RATE_MCS_1NSS_CB_121_5_MBPS,
516 HAL_PHY_RATE_MCS_1NSS_CB_135_MBPS,
517 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_15_MBPS,
518 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_30_MBPS,
519 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_45_MBPS,
520 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_60_MBPS,
521 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_90_MBPS,
522 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_120_MBPS,
523 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_135_MBPS,
524 HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_150_MBPS,
525
Jeff Johnsone7245742012-09-05 17:12:55 -0700526#ifdef WLAN_FEATURE_11AC
527 /*11A duplicate 80MHz Rates*/
528 HAL_PHY_RATE_11AC_DUP_6_MBPS,
529 HAL_PHY_RATE_11AC_DUP_9_MBPS,
530 HAL_PHY_RATE_11AC_DUP_12_MBPS,
531 HAL_PHY_RATE_11AC_DUP_18_MBPS,
532 HAL_PHY_RATE_11AC_DUP_24_MBPS,
533 HAL_PHY_RATE_11AC_DUP_36_MBPS,
534 HAL_PHY_RATE_11AC_DUP_48_MBPS,
535 HAL_PHY_RATE_11AC_DUP_54_MBPS,
536
537 /*11AC rate 20MHZ Normal GI*/
538 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_6_5_MBPS,
539 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_13_MBPS,
540 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_19_5_MBPS,
541 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_26_MBPS,
542 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_39_MBPS,
543 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_52_MBPS,
544 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_58_5_MBPS,
545 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_65_MBPS,
546 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_78_MBPS,
547
548 /*11AC rate 20MHZ Shortl GI*/
549 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_7_2_MBPS,
550 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_14_4_MBPS,
551 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_21_6_MBPS,
552 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_28_8_MBPS,
553 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_43_3_MBPS,
554 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_57_7_MBPS,
555 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_65_MBPS,
556 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_72_2_MBPS,
557 HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_86_6_MBPS,
558
559 /*11AC rates 40MHZ normal GI*/
560 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_13_5_MBPS ,
561 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_27_MBPS,
562 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_40_5_MBPS,
563 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_54_MBPS,
564 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_81_MBPS,
565 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_108_MBPS,
566 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_121_5_MBPS,
567 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_135_MBPS,
568 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_162_MBPS,
569 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_180_MBPS,
570
571 /*11AC rates 40MHZ short GI*/
572 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_15_MBPS ,
573 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_30_MBPS,
574 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_45_MBPS,
575 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_60_MBPS,
576 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_90_MBPS,
577 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_120_MBPS,
578 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_135_MBPS,
579 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_150_MBPS,
580 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_180_MBPS,
581 HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_200_MBPS,
582
583 /*11AC rates 80 MHZ normal GI*/
584 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_29_3_MBPS ,
585 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_58_5_MBPS,
586 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_87_8_MBPS,
587 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_117_MBPS,
588 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_175_5_MBPS,
589 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_234_MBPS,
590 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_263_3_MBPS,
591 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_292_5_MBPS,
592 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_351_MBPS,
593 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_390_MBPS,
594
595 /*11AC rates 80 MHZ short GI*/
596 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_32_5_MBPS ,
597 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_65_MBPS,
598 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_97_5_MBPS,
599 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_130_MBPS,
600 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_195_MBPS,
601 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_260_MBPS,
602 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_292_5_MBPS,
603 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_325_MBPS,
604 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_390_MBPS,
605 HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_433_3_MBPS,
606#endif //WLAN_FEATURE_11AC
607
Jeff Johnson295189b2012-06-20 16:38:30 -0700608 NUM_HAL_PHY_RATES,
609 HAL_PHY_RATE_INVALID,
610 MIN_RATE_INDEX = 0,
Jeff Johnsone7245742012-09-05 17:12:55 -0700611 MAX_RATE_INDEX = NUM_HAL_PHY_RATES - 1,
Jeff Johnson295189b2012-06-20 16:38:30 -0700612 HAL_PHY_RATE_INVALID_MAX_FIELD = 0x7FFFFFFF /* define as 4 bytes data */
613}eHalPhyRates;
614
615
616#define NUM_RATE_POWER_GROUPS NUM_HAL_PHY_RATES //total number of rate power groups including the CB_RATE_POWER_OFFSET
617typedef uAbsPwrPrecision tRateGroupPwr[NUM_RATE_POWER_GROUPS];
618
619//From halNvTables.h
620#define NV_FIELD_COUNTRY_CODE_SIZE 3
621typedef PACKED_PRE struct PACKED_POST
622{
623 tANI_U8 regDomain; //from eRegDomainId
624 tANI_U8 countryCode[NV_FIELD_COUNTRY_CODE_SIZE]; // string identifier
625}sDefaultCountry;
626
627typedef PACKED_PRE struct PACKED_POST
628{
629 tANI_U8 overall;
630 tANI_U8 fwInit;
631 tANI_U8 hdet_dco;
632 tANI_U8 rtuner;
633
634 tANI_U8 ctuner;
635 tANI_U8 insitu;
636 tANI_U8 process_monitor;
637 tANI_U8 pllVcoLinearity;
638
639 tANI_U8 txIQ;
640 tANI_U8 rxIQ;
641 tANI_U8 rxDco;
642 tANI_U8 txLo;
643
644 tANI_U8 lnaBias;
645 tANI_U8 lnaBandTuning;
646 tANI_U8 lnaGainAdjust;
647 tANI_U8 im2UsingNoisePwr;
648
649 tANI_U8 temperature;
650 tANI_U8 clpc;
651 tANI_U8 clpc_temp_adjust;
652 tANI_U8 txDpd;
653
654 tANI_U8 channelTune;
655 tANI_U8 rxGmStageLinearity;
656 tANI_U8 im2UsingToneGen;
657 tANI_U8 rxBbfTuning; // rx baseband filert tuning
658
659 tANI_U8 txBbfTuning; // tx baseband filter tuning
660 tANI_U8 paCTuning; // PA adjustments baed on C-tuner
661 tANI_U8 unused[6];
662}sCalStatus;
663
664#define NUM_RF_VR_RATE 13
665typedef uAbsPwrPrecision tRateGroupPwrVR[NUM_RF_VR_RATE];
666
667typedef PACKED_PRE union PACKED_POST
668{
669 tRateGroupPwr pwrOptimum[NUM_RF_SUBBANDS]; // NV_TABLE_RATE_POWER_SETTINGS
670 sRegulatoryDomains regDomains[NUM_REG_DOMAINS]; // NV_TABLE_REGULATORY_DOMAINS
671 sDefaultCountry defaultCountryTable; // NV_TABLE_DEFAULT_COUNTRY
672 tTpcPowerTable plutCharacterized[NUM_RF_CHANNELS]; // NV_TABLE_TPC_POWER_TABLE
673 tANI_S16 plutPdadcOffset[NUM_RF_CHANNELS]; // NV_TABLE_TPC_PDADC_OFFSETS
674 tRateGroupPwrVR pwrOptimum_virtualRate[NUM_RF_SUBBANDS]; // NV_TABLE_VIRTUAL_RATE
675 //sCalFlashMemory calFlashMemory; // NV_TABLE_CAL_MEMORY
676 sCalStatus calStatus; // NV_TABLE_CAL_STATUS
677 sRssiChannelOffsets rssiChanOffsets[2]; // NV_TABLE_RSSI_CHANNEL_OFFSETS
678 sRFCalValues rFCalValues; // NV_TABLE_RF_CAL_VALUES
679 tANI_S16 antennaPathLoss[NUM_RF_CHANNELS]; // NV_TABLE_ANTENNA_PATH_LOSS
680 tANI_S16 pktTypePwrLimits[NUM_802_11_MODES][NUM_RF_CHANNELS]; // NV_TABLE_PACKET_TYPE_POWER_LIMITS
681 sOfdmCmdPwrOffset ofdmCmdPwrOffset; // NV_TABLE_OFDM_CMD_PWR_OFFSET
682 sTxBbFilterMode txbbFilterMode; // NV_TABLE_TX_BB_FILTER_MODE
683}ALIGN_4 uNvTables;
684
685//From halPhy.h
686typedef tPowerdBm tChannelPwrLimit;
687
688typedef PACKED_PRE struct PACKED_POST
689{
690 tANI_U8 chanId;
691 tChannelPwrLimit pwr;
692} ALIGN_4 tChannelListWithPower;
693
694//From HAL/inc/halNvTables.h
695typedef enum
696{
697 NV_FIELDS_IMAGE = 0, //contains all fields
698
699 NV_TABLE_RATE_POWER_SETTINGS = 2,
700 NV_TABLE_REGULATORY_DOMAINS = 3,
701 NV_TABLE_DEFAULT_COUNTRY = 4,
702 NV_TABLE_TPC_POWER_TABLE = 5,
703 NV_TABLE_TPC_PDADC_OFFSETS = 6,
704 NV_TABLE_RF_CAL_VALUES = 7,
705 NV_TABLE_RSSI_CHANNEL_OFFSETS = 9,
706 NV_TABLE_CAL_MEMORY = 10, //cal memory structure from halPhyCalMemory.h preceded by status
707 NV_TABLE_CAL_STATUS = 11,
708 NV_TABLE_ANTENNA_PATH_LOSS = 12,
709 NV_TABLE_PACKET_TYPE_POWER_LIMITS = 13,
710 NV_TABLE_OFDM_CMD_PWR_OFFSET = 14,
711 NV_TABLE_TX_BB_FILTER_MODE = 15,
712 NV_TABLE_VIRTUAL_RATE = 18,
713
714 NUM_NV_TABLE_IDS,
715 NV_ALL_TABLES = 0xFFF,
716 NV_BINARY_IMAGE = 0x1000,
717 NV_MAX_TABLE = 0x7FFFFFFF /* define as 4 bytes data */
718}eNvTable;
719
720typedef PACKED_PRE struct PACKED_POST
721{
722 tRateGroupPwr pwrOptimum[NUM_RF_SUBBANDS]; // NV_TABLE_RATE_POWER_SETTINGS
723 sRegulatoryDomains regDomains[NUM_REG_DOMAINS]; // NV_TABLE_REGULATORY_DOMAINS
724 sDefaultCountry defaultCountryTable; // NV_TABLE_DEFAULT_COUNTRY
725 tTpcPowerTable plutCharacterized[NUM_RF_CHANNELS]; // NV_TABLE_TPC_POWER_TABLE
726 tANI_S16 plutPdadcOffset[NUM_RF_CHANNELS]; // NV_TABLE_TPC_PDADC_OFFSETS
727 tRateGroupPwrVR pwrOptimum_virtualRate[NUM_RF_SUBBANDS]; // NV_TABLE_VIRTUAL_RATE
728 //sCalFlashMemory calFlashMemory; // NV_TABLE_CAL_MEMORY
729 sCalStatus calStatus; // NV_TABLE_CAL_STATUS
730 sRssiChannelOffsets rssiChanOffsets[2]; // NV_TABLE_RSSI_CHANNEL_OFFSETS
731 sRFCalValues rFCalValues; // NV_TABLE_RF_CAL_VALUES
732 tANI_S16 antennaPathLoss[NUM_RF_CHANNELS]; // NV_TABLE_ANTENNA_PATH_LOSS
733 tANI_S16 pktTypePwrLimits[NUM_802_11_MODES][NUM_RF_CHANNELS]; // NV_TABLE_PACKET_TYPE_POWER_LIMITS
734 sOfdmCmdPwrOffset ofdmCmdPwrOffset; // NV_TABLE_OFDM_CMD_PWR_OFFSET
735 sTxBbFilterMode txbbFilterMode; // NV_TABLE_TX_BB_FILTER_MODE
736}ALIGN_4 sNvTables;
737
738typedef PACKED_PRE struct PACKED_POST
739{
740 sNvFields fields;
741 sNvTables tables;
742}ALIGN_4 sHalNv;
743
744extern const sHalNv nvDefaults;
745
746#endif
747