blob: de4ec1777a72d5ee7c6fd99e1cc689bde4a1ec7b [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
2 * Copyright (c) 2012, Code Aurora Forum. All rights reserved.
3 *
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
162 RF_SUBBAND_4_9_GHZ = 4, //Japanese
163
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
195 //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,
203
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,
244 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,
249 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
277 MIN_5GHZ_CHANNEL = RF_CHAN_240,
278 MAX_5GHZ_CHANNEL = RF_CHAN_165,
279 NUM_5GHZ_CHANNELS = (MAX_5GHZ_CHANNEL - MIN_5GHZ_CHANNEL + 1),
280
281 MIN_20MHZ_RF_CHANNEL = RF_CHAN_1,
282 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
292 MIN_CB_5GHZ_CHANNEL = RF_CHAN_BOND_242,
293 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
526 NUM_HAL_PHY_RATES,
527 HAL_PHY_RATE_INVALID,
528 MIN_RATE_INDEX = 0,
529 MAX_RATE_INDEX = HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_150_MBPS,
530 HAL_PHY_RATE_INVALID_MAX_FIELD = 0x7FFFFFFF /* define as 4 bytes data */
531}eHalPhyRates;
532
533
534#define NUM_RATE_POWER_GROUPS NUM_HAL_PHY_RATES //total number of rate power groups including the CB_RATE_POWER_OFFSET
535typedef uAbsPwrPrecision tRateGroupPwr[NUM_RATE_POWER_GROUPS];
536
537//From halNvTables.h
538#define NV_FIELD_COUNTRY_CODE_SIZE 3
539typedef PACKED_PRE struct PACKED_POST
540{
541 tANI_U8 regDomain; //from eRegDomainId
542 tANI_U8 countryCode[NV_FIELD_COUNTRY_CODE_SIZE]; // string identifier
543}sDefaultCountry;
544
545typedef PACKED_PRE struct PACKED_POST
546{
547 tANI_U8 overall;
548 tANI_U8 fwInit;
549 tANI_U8 hdet_dco;
550 tANI_U8 rtuner;
551
552 tANI_U8 ctuner;
553 tANI_U8 insitu;
554 tANI_U8 process_monitor;
555 tANI_U8 pllVcoLinearity;
556
557 tANI_U8 txIQ;
558 tANI_U8 rxIQ;
559 tANI_U8 rxDco;
560 tANI_U8 txLo;
561
562 tANI_U8 lnaBias;
563 tANI_U8 lnaBandTuning;
564 tANI_U8 lnaGainAdjust;
565 tANI_U8 im2UsingNoisePwr;
566
567 tANI_U8 temperature;
568 tANI_U8 clpc;
569 tANI_U8 clpc_temp_adjust;
570 tANI_U8 txDpd;
571
572 tANI_U8 channelTune;
573 tANI_U8 rxGmStageLinearity;
574 tANI_U8 im2UsingToneGen;
575 tANI_U8 rxBbfTuning; // rx baseband filert tuning
576
577 tANI_U8 txBbfTuning; // tx baseband filter tuning
578 tANI_U8 paCTuning; // PA adjustments baed on C-tuner
579 tANI_U8 unused[6];
580}sCalStatus;
581
582#define NUM_RF_VR_RATE 13
583typedef uAbsPwrPrecision tRateGroupPwrVR[NUM_RF_VR_RATE];
584
585typedef PACKED_PRE union PACKED_POST
586{
587 tRateGroupPwr pwrOptimum[NUM_RF_SUBBANDS]; // NV_TABLE_RATE_POWER_SETTINGS
588 sRegulatoryDomains regDomains[NUM_REG_DOMAINS]; // NV_TABLE_REGULATORY_DOMAINS
589 sDefaultCountry defaultCountryTable; // NV_TABLE_DEFAULT_COUNTRY
590 tTpcPowerTable plutCharacterized[NUM_RF_CHANNELS]; // NV_TABLE_TPC_POWER_TABLE
591 tANI_S16 plutPdadcOffset[NUM_RF_CHANNELS]; // NV_TABLE_TPC_PDADC_OFFSETS
592 tRateGroupPwrVR pwrOptimum_virtualRate[NUM_RF_SUBBANDS]; // NV_TABLE_VIRTUAL_RATE
593 //sCalFlashMemory calFlashMemory; // NV_TABLE_CAL_MEMORY
594 sCalStatus calStatus; // NV_TABLE_CAL_STATUS
595 sRssiChannelOffsets rssiChanOffsets[2]; // NV_TABLE_RSSI_CHANNEL_OFFSETS
596 sRFCalValues rFCalValues; // NV_TABLE_RF_CAL_VALUES
597 tANI_S16 antennaPathLoss[NUM_RF_CHANNELS]; // NV_TABLE_ANTENNA_PATH_LOSS
598 tANI_S16 pktTypePwrLimits[NUM_802_11_MODES][NUM_RF_CHANNELS]; // NV_TABLE_PACKET_TYPE_POWER_LIMITS
599 sOfdmCmdPwrOffset ofdmCmdPwrOffset; // NV_TABLE_OFDM_CMD_PWR_OFFSET
600 sTxBbFilterMode txbbFilterMode; // NV_TABLE_TX_BB_FILTER_MODE
601}ALIGN_4 uNvTables;
602
603//From halPhy.h
604typedef tPowerdBm tChannelPwrLimit;
605
606typedef PACKED_PRE struct PACKED_POST
607{
608 tANI_U8 chanId;
609 tChannelPwrLimit pwr;
610} ALIGN_4 tChannelListWithPower;
611
612//From HAL/inc/halNvTables.h
613typedef enum
614{
615 NV_FIELDS_IMAGE = 0, //contains all fields
616
617 NV_TABLE_RATE_POWER_SETTINGS = 2,
618 NV_TABLE_REGULATORY_DOMAINS = 3,
619 NV_TABLE_DEFAULT_COUNTRY = 4,
620 NV_TABLE_TPC_POWER_TABLE = 5,
621 NV_TABLE_TPC_PDADC_OFFSETS = 6,
622 NV_TABLE_RF_CAL_VALUES = 7,
623 NV_TABLE_RSSI_CHANNEL_OFFSETS = 9,
624 NV_TABLE_CAL_MEMORY = 10, //cal memory structure from halPhyCalMemory.h preceded by status
625 NV_TABLE_CAL_STATUS = 11,
626 NV_TABLE_ANTENNA_PATH_LOSS = 12,
627 NV_TABLE_PACKET_TYPE_POWER_LIMITS = 13,
628 NV_TABLE_OFDM_CMD_PWR_OFFSET = 14,
629 NV_TABLE_TX_BB_FILTER_MODE = 15,
630 NV_TABLE_VIRTUAL_RATE = 18,
631
632 NUM_NV_TABLE_IDS,
633 NV_ALL_TABLES = 0xFFF,
634 NV_BINARY_IMAGE = 0x1000,
635 NV_MAX_TABLE = 0x7FFFFFFF /* define as 4 bytes data */
636}eNvTable;
637
638typedef PACKED_PRE struct PACKED_POST
639{
640 tRateGroupPwr pwrOptimum[NUM_RF_SUBBANDS]; // NV_TABLE_RATE_POWER_SETTINGS
641 sRegulatoryDomains regDomains[NUM_REG_DOMAINS]; // NV_TABLE_REGULATORY_DOMAINS
642 sDefaultCountry defaultCountryTable; // NV_TABLE_DEFAULT_COUNTRY
643 tTpcPowerTable plutCharacterized[NUM_RF_CHANNELS]; // NV_TABLE_TPC_POWER_TABLE
644 tANI_S16 plutPdadcOffset[NUM_RF_CHANNELS]; // NV_TABLE_TPC_PDADC_OFFSETS
645 tRateGroupPwrVR pwrOptimum_virtualRate[NUM_RF_SUBBANDS]; // NV_TABLE_VIRTUAL_RATE
646 //sCalFlashMemory calFlashMemory; // NV_TABLE_CAL_MEMORY
647 sCalStatus calStatus; // NV_TABLE_CAL_STATUS
648 sRssiChannelOffsets rssiChanOffsets[2]; // NV_TABLE_RSSI_CHANNEL_OFFSETS
649 sRFCalValues rFCalValues; // NV_TABLE_RF_CAL_VALUES
650 tANI_S16 antennaPathLoss[NUM_RF_CHANNELS]; // NV_TABLE_ANTENNA_PATH_LOSS
651 tANI_S16 pktTypePwrLimits[NUM_802_11_MODES][NUM_RF_CHANNELS]; // NV_TABLE_PACKET_TYPE_POWER_LIMITS
652 sOfdmCmdPwrOffset ofdmCmdPwrOffset; // NV_TABLE_OFDM_CMD_PWR_OFFSET
653 sTxBbFilterMode txbbFilterMode; // NV_TABLE_TX_BB_FILTER_MODE
654}ALIGN_4 sNvTables;
655
656typedef PACKED_PRE struct PACKED_POST
657{
658 sNvFields fields;
659 sNvTables tables;
660}ALIGN_4 sHalNv;
661
662extern const sHalNv nvDefaults;
663
664#endif
665