blob: 1bf27b58fe8a90413100b66eb32ad2244f090e77 [file] [log] [blame]
Prasanna Kumarf6c94ae2013-04-11 20:05:21 -07001/*
Kiet Lamaa8e15a2014-02-11 23:30:06 -08002 * Copyright (c) 2012-2013 Qualcomm Atheros, Inc.
3 * All Rights Reserved.
4 * Qualcomm Atheros Confidential and Proprietary.
Madan Mohan Koyyalamudia997c1e2013-09-03 12:16:32 -07005 */
Prasanna Kumarf6c94ae2013-04-11 20:05:21 -07006/*===========================================================================
7 EDIT HISTORY FOR FILE
8
9 This section contains comments describing changes made to the module.
10 Notice that changes are listed in reverse chronological order.
11
12 $Header:$ $DateTime: $ $Author: $
13
14 when who what, where, why
15 -------- --- -----------------------------------------------
16 04/10/13 kumarpra nv built in creation
17===========================================================================*/
18
19
20/*
21 -----------------------------------------
22 This file is generated by nvTmplRun Parser
23 -----------------------------------------
24 To be auto-generated, or
25 This is the source file and the header file can be generated from this
26 template file.
27
28 Template constructs
29 1. TABLE_: struct
30 2. INDEX_ENUM: enums, e.g. {RATE_OFDM_6M,RATE_OFDM_54M}
31 3. INDEX_INT: int, e.g.{min, max, increment}
32 3. Basic data types: tANI_U8, tANI_S8, tANI_U32, tANI_S32
33 4. Storage types:
34 4.1 SINGULAR: one element of basic data type
35 4.2 ARRAY_1: one dimensional array, x-axis
36 4.3 ARRAY_2: two dimensional array, (x, y)
37 4.4 ARRAY_3: three dimensional array, (x, y, z)
38 4.5 ARRAY_4: four dimensional array, (x, y, z, t)
39
40 Implementation notes
41 1. Flow of changing NV data format: (TBD) Either change the template and
42 generate the header file, or modify header file and auto-generate
43 the template.
44 2. Flow of writing NV data: encode the template in the data stream, so the
45 NV data is "self-sufficient". No separate template, no compability
46 issue, no need of version control.
47 3. Flow of reading NV data: parse the binary NV data stream based on the
48 template info in the data stream.
49 4. The above NV logic is decoupled from the actual data content, a generic,
50 content ergonostic parser (reading) and encoder (writing).
51 The NV logic is common code shared by tools, s/w
52 (both host and firmware), and off-line utilities.
53 5. NV data parsing and "acceptanace" into an s/w moduel data structure can
54 be "configured" in several ways:
55 5.1 only total matching of all fields, otherwise, reject the whole data
56 stream (a table).
57 5.2 partial matching of fields allowed and the rest fields assume
58 reasonal default values,
59 The choice can be determined later, but the capability is provided.
60 6. We could also design in this selection on an individual table base.
61 To design such capability, reserve some header bits in the data stream.
62 7. The NV data streams can be modified, replaced, or intact with a new data
63 stream of the same table ID added to NV data.
64 The choice can be determined later, but the NV scheme provides such
65 capability.
66 8. The template construct definitions can be common to all tables
67 (tbd: in a common section) or table specific, or updated in a
68 subsequent format section.
69 The use cases are:
70 - An index enum (e.g. RF channels) is common to all tables when the NV
71 data is created. Later new enums are added (e.g.
72 additional channels), one can choose to add the new index enum for new
73 tables appended to the NV data, or replace the
74 old table with new template info and data.
75 The template precedence is table specific then common, and later
76 "common" overwrites "earlier" commmon.
77 - A new field is added to the table, the user decides to replace the
78 old table data, he can simply encode the template info in the
79 data stream.
80 - In the same scenario (a new field is added), the user decides to
81 append a new table, he can encode the template
82 in the new data table and append it to NV data, or write a new common
83 template section and append the data.
84
85 Key "ingredients", (re-iterate the most important features and capabilities)
86 1. How to parse the data is embedded in the NV data itself. It removes the
87 dependency on header file matching,
88 version checking, compatibility among tools, host and firmware.
89 2. Table field ID enables "partial" data acceptance in an s/w module data
90 structure. Whether full matching or reject the whole table, or "partial"
91 acceptance, the capabiilty is in place and further ensures the robust
92 NV data extensibility and compatibility.
93 3. The table granularity, data stream based NV data has variable length
94 and flexibility of modifying an existing table data, replacing the
95 whole data, or leaving the existing data table intact and appending
96 a new table.
97 Misc notes:
98 1. For endianness, support only 4 bytes integer or 4 1-byte
99 2. String identifier needs to be shortened to save storage
100 3. string_field_name, field type, field storage class, storage size
101*/
102
103
104#include "wlan_nv_types.h"
105#include "wlan_nv_stream.h"
106#include "wlan_nv.h"
107#include "wlan_nv_template_internal.h"
108#include "wlan_nv_template_api.h"
109#include "wlan_nv_template_builtin.h"
110
111
112
113static int enumNoOfFieldArray[INDEX_ENUM_BUILTIN_MAX] =
Leo Chang80de3c22013-11-26 10:52:12 -0800114 {7,1,9,5,40,14,3,55};
Prasanna Kumarf6c94ae2013-04-11 20:05:21 -0700115
116_NV_TEMPLATE_ENUM NvEnumsBuiltIn[/*INDEX_ENUM_MAX*/][ENUM_ENTRIES_MAX] = {
117 { // INDEX_ENUM_ALL
118 {"j1",INDEX_ENUM_NUM_PHY_MAX_TX_CHAINS,0,{nul}},
119 {"j2",INDEX_ENUM_NUM_REG_DOMAINS,0,{nul}},
120 {"j3",INDEX_ENUM_NUM_RF_SUBBANDS,0,{nul}},
121 {"j4",INDEX_ENUM_NUM_RF_CHANNELS,0,{nul}},
122 {"j5",INDEX_ENUM_NUM_2_4GHZ_CHANNELS,0,{nul}},
123 {"j6",INDEX_ENUM_NUM_802_11_MODES,0,{nul}},
124 {"j7",INDEX_ENUM_NUM_HAL_PHY_RATES,0,{nul}},
125 {{nul},0, 0,{nul}},
126 }, // INDEX_ENUM_ALL
127
128 { // INDEX_ENUM_NUM_PHY_MAX_TX_CHAINS
129 {"a1",PHY_TX_CHAIN_0,0,{nul}},
130 {{nul},0, 0,{nul}},
131 }, // INDEX_ENUM_NUM_PHY_MAX_TX_CHAINS
132
133 { // INDEX_ENUM_NUM_REG_DOMAINS
134 {"a3",REG_DOMAIN_FCC,0,{nul}},
135 {"a4",REG_DOMAIN_ETSI,0,{nul}},
136 {"a5",REG_DOMAIN_JAPAN,0,{nul}},
137 {"a6",REG_DOMAIN_WORLD,0,{nul}},
138 {"a7",REG_DOMAIN_N_AMER_EXC_FCC,0,{nul}},
139 {"a8",REG_DOMAIN_APAC,0,{nul}},
140 {"a9",REG_DOMAIN_KOREA,0,{nul}},
141 {"ba",REG_DOMAIN_HI_5GHZ,0,{nul}},
142 {"bb",REG_DOMAIN_NO_5GHZ,0,{nul}},
143 {{nul},0, 0,{nul}},
144 }, // INDEX_ENUM_NUM_REG_DOMAINS
145
146 { // INDEX_ENUM_NUM_RF_SUBBANDS
147 {"bd",RF_SUBBAND_2_4_GHZ,0,{nul}},
148 {"be",RF_SUBBAND_5_LOW_GHZ,0,{nul}},
149 {"bf",RF_SUBBAND_5_MID_GHZ,0,{nul}},
150 {"bg",RF_SUBBAND_5_HIGH_GHZ,0,{nul}},
151 {"bh",RF_SUBBAND_4_9_GHZ,0,{nul}},
152 {{nul},0, 0,{nul}},
153 }, // INDEX_ENUM_NUM_RF_SUBBANDS
154
155 { // INDEX_ENUM_NUM_RF_CHANNELS
156 {"bj",RF_CHAN_1,0,{nul}},
157 {"bk",RF_CHAN_2,0,{nul}},
158 {"bl",RF_CHAN_3,0,{nul}},
159 {"bm",RF_CHAN_4,0,{nul}},
160 {"bn",RF_CHAN_5,0,{nul}},
161 {"bo",RF_CHAN_6,0,{nul}},
162 {"bp",RF_CHAN_7,0,{nul}},
163 {"bq",RF_CHAN_8,0,{nul}},
164 {"br",RF_CHAN_9,0,{nul}},
165 {"bs",RF_CHAN_10,0,{nul}},
166 {"bt",RF_CHAN_11,0,{nul}},
167 {"bu",RF_CHAN_12,0,{nul}},
168 {"bv",RF_CHAN_13,0,{nul}},
169 {"bw",RF_CHAN_14,0,{nul}},
170 {"bx",RF_CHAN_240,0,{nul}},
171 {"by",RF_CHAN_244,0,{nul}},
172 {"bz",RF_CHAN_248,0,{nul}},
173 {"b0",RF_CHAN_252,0,{nul}},
174 {"b1",RF_CHAN_208,0,{nul}},
175 {"b2",RF_CHAN_212,0,{nul}},
176 {"b3",RF_CHAN_216,0,{nul}},
177 {"b4",RF_CHAN_36,0,{nul}},
178 {"b5",RF_CHAN_40,0,{nul}},
179 {"b6",RF_CHAN_44,0,{nul}},
180 {"b7",RF_CHAN_48,0,{nul}},
181 {"b8",RF_CHAN_52,0,{nul}},
182 {"b9",RF_CHAN_56,0,{nul}},
183 {"ca",RF_CHAN_60,0,{nul}},
184 {"cb",RF_CHAN_64,0,{nul}},
185 {"cc",RF_CHAN_100,0,{nul}},
186 {"cd",RF_CHAN_104,0,{nul}},
187 {"ce",RF_CHAN_108,0,{nul}},
188 {"cf",RF_CHAN_112,0,{nul}},
189 {"cg",RF_CHAN_116,0,{nul}},
190 {"ch",RF_CHAN_120,0,{nul}},
191 {"ci",RF_CHAN_124,0,{nul}},
192 {"cj",RF_CHAN_128,0,{nul}},
193 {"ck",RF_CHAN_132,0,{nul}},
194 {"cl",RF_CHAN_136,0,{nul}},
195 {"cm",RF_CHAN_140,0,{nul}},
Leo Chang80de3c22013-11-26 10:52:12 -0800196#ifdef FEATURE_WLAN_CH144
197 {"kt",RF_CHAN_144,0,{nul}},
198#endif /* FEATURE_WLAN_CH144 */
Prasanna Kumarf6c94ae2013-04-11 20:05:21 -0700199 {"cn",RF_CHAN_149,0,{nul}},
200 {"co",RF_CHAN_153,0,{nul}},
201 {"cp",RF_CHAN_157,0,{nul}},
202 {"cq",RF_CHAN_161,0,{nul}},
203 {"cr",RF_CHAN_165,0,{nul}},
204 {"cs",RF_CHAN_BOND_3,0,{nul}},
205 {"ct",RF_CHAN_BOND_4,0,{nul}},
206 {"cu",RF_CHAN_BOND_5,0,{nul}},
207 {"cv",RF_CHAN_BOND_6,0,{nul}},
208 {"cw",RF_CHAN_BOND_7,0,{nul}},
209 {"cx",RF_CHAN_BOND_8,0,{nul}},
210 {"cy",RF_CHAN_BOND_9,0,{nul}},
211 {"cz",RF_CHAN_BOND_10,0,{nul}},
212 {"c0",RF_CHAN_BOND_11,0,{nul}},
213 {"c1",RF_CHAN_BOND_242,0,{nul}},
214 {"c2",RF_CHAN_BOND_246,0,{nul}},
215 {"c3",RF_CHAN_BOND_250,0,{nul}},
216 {"c4",RF_CHAN_BOND_210,0,{nul}},
217 {"c5",RF_CHAN_BOND_214,0,{nul}},
218 {"c6",RF_CHAN_BOND_38,0,{nul}},
219 {"c7",RF_CHAN_BOND_42,0,{nul}},
220 {"c8",RF_CHAN_BOND_46,0,{nul}},
221 {"c9",RF_CHAN_BOND_50,0,{nul}},
222 {"da",RF_CHAN_BOND_54,0,{nul}},
223 {"db",RF_CHAN_BOND_58,0,{nul}},
224 {"dc",RF_CHAN_BOND_62,0,{nul}},
225 {"dd",RF_CHAN_BOND_102,0,{nul}},
226 {"de",RF_CHAN_BOND_106,0,{nul}},
227 {"df",RF_CHAN_BOND_110,0,{nul}},
228 {"dg",RF_CHAN_BOND_114,0,{nul}},
229 {"dh",RF_CHAN_BOND_118,0,{nul}},
230 {"di",RF_CHAN_BOND_122,0,{nul}},
231 {"dj",RF_CHAN_BOND_126,0,{nul}},
232 {"dk",RF_CHAN_BOND_130,0,{nul}},
233 {"dl",RF_CHAN_BOND_134,0,{nul}},
234 {"dm",RF_CHAN_BOND_138,0,{nul}},
Leo Chang80de3c22013-11-26 10:52:12 -0800235#ifdef FEATURE_WLAN_CH144
236 {"ku",RF_CHAN_BOND_142,0,{nul}},
237#endif /* FEATURE_WLAN_CH144 */
Prasanna Kumarf6c94ae2013-04-11 20:05:21 -0700238 {"dn",RF_CHAN_BOND_151,0,{nul}},
239 {"do",RF_CHAN_BOND_155,0,{nul}},
240 {"dp",RF_CHAN_BOND_159,0,{nul}},
241 {"dq",RF_CHAN_BOND_163,0,{nul}},
242 {{nul},0, 0,{nul}},
243 }, // INDEX_ENUM_NUM_RF_CHANNELS
244
245 { // INDEX_ENUM_NUM_2_4GHZ_CHANNELS
246 {"ke",RF_CHAN_1_1,0,{nul}},
247 {"kf",RF_CHAN_2_1,0,{nul}},
248 {"kg",RF_CHAN_3_1,0,{nul}},
249 {"kh",RF_CHAN_4_1,0,{nul}},
250 {"ki",RF_CHAN_5_1,0,{nul}},
251 {"kj",RF_CHAN_6_1,0,{nul}},
252 {"kk",RF_CHAN_7_1,0,{nul}},
253 {"kl",RF_CHAN_8_1,0,{nul}},
254 {"km",RF_CHAN_9_1,0,{nul}},
255 {"kn",RF_CHAN_10_1,0,{nul}},
256 {"ko",RF_CHAN_11_1,0,{nul}},
257 {"kp",RF_CHAN_12_1,0,{nul}},
258 {"kq",RF_CHAN_13_1,0,{nul}},
259 {"kr",RF_CHAN_14_1,0,{nul}},
260 {{nul},0, 0,{nul}},
261 }, // INDEX_ENUM_NUM_2_4GHZ_CHANNELS
262
263 { // INDEX_ENUM_NUM_802_11_MODES
264 {"d6",MODE_802_11B,0,{nul}},
265 {"d7",MODE_802_11AG,0,{nul}},
266 {"d8",MODE_802_11N,0,{nul}},
267 {{nul},0, 0,{nul}},
268 }, // INDEX_ENUM_NUM_802_11_MODES
269
270 { // INDEX_ENUM_NUM_HAL_PHY_RATES
271 {"ez",HAL_PHY_RATE_11B_LONG_1_MBPS,0,{nul}},
272 {"e0",HAL_PHY_RATE_11B_LONG_2_MBPS,0,{nul}},
273 {"e1",HAL_PHY_RATE_11B_LONG_5_5_MBPS,0,{nul}},
274 {"e2",HAL_PHY_RATE_11B_LONG_11_MBPS,0,{nul}},
275 {"e3",HAL_PHY_RATE_11B_SHORT_2_MBPS,0,{nul}},
276 {"e4",HAL_PHY_RATE_11B_SHORT_5_5_MBPS,0,{nul}},
277 {"e5",HAL_PHY_RATE_11B_SHORT_11_MBPS,0,{nul}},
278 {"e6",HAL_PHY_RATE_11A_6_MBPS,0,{nul}},
279 {"e7",HAL_PHY_RATE_11A_9_MBPS,0,{nul}},
280 {"e8",HAL_PHY_RATE_11A_12_MBPS,0,{nul}},
281 {"e9",HAL_PHY_RATE_11A_18_MBPS,0,{nul}},
282 {"fa",HAL_PHY_RATE_11A_24_MBPS,0,{nul}},
283 {"fb",HAL_PHY_RATE_11A_36_MBPS,0,{nul}},
284 {"fc",HAL_PHY_RATE_11A_48_MBPS,0,{nul}},
285 {"fd",HAL_PHY_RATE_11A_54_MBPS,0,{nul}},
286 {"fe",HAL_PHY_RATE_11A_DUP_6_MBPS,0,{nul}},
287 {"ff",HAL_PHY_RATE_11A_DUP_9_MBPS,0,{nul}},
288 {"fg",HAL_PHY_RATE_11A_DUP_12_MBPS,0,{nul}},
289 {"fh",HAL_PHY_RATE_11A_DUP_18_MBPS,0,{nul}},
290 {"fi",HAL_PHY_RATE_11A_DUP_24_MBPS,0,{nul}},
291 {"fj",HAL_PHY_RATE_11A_DUP_36_MBPS,0,{nul}},
292 {"fk",HAL_PHY_RATE_11A_DUP_48_MBPS,0,{nul}},
293 {"fl",HAL_PHY_RATE_11A_DUP_54_MBPS,0,{nul}},
294 {"fm",HAL_PHY_RATE_MCS_1NSS_6_5_MBPS,0,{nul}},
295 {"fn",HAL_PHY_RATE_MCS_1NSS_13_MBPS,0,{nul}},
296 {"fo",HAL_PHY_RATE_MCS_1NSS_19_5_MBPS,0,{nul}},
297 {"fp",HAL_PHY_RATE_MCS_1NSS_26_MBPS,0,{nul}},
298 {"fq",HAL_PHY_RATE_MCS_1NSS_39_MBPS,0,{nul}},
299 {"fr",HAL_PHY_RATE_MCS_1NSS_52_MBPS,0,{nul}},
300 {"fs",HAL_PHY_RATE_MCS_1NSS_58_5_MBPS,0,{nul}},
301 {"ft",HAL_PHY_RATE_MCS_1NSS_65_MBPS,0,{nul}},
302 {"fu",HAL_PHY_RATE_MCS_1NSS_MM_SG_7_2_MBPS,0,{nul}},
303 {"fv",HAL_PHY_RATE_MCS_1NSS_MM_SG_14_4_MBPS,0,{nul}},
304 {"fw",HAL_PHY_RATE_MCS_1NSS_MM_SG_21_7_MBPS,0,{nul}},
305 {"fx",HAL_PHY_RATE_MCS_1NSS_MM_SG_28_9_MBPS,0,{nul}},
306 {"fy",HAL_PHY_RATE_MCS_1NSS_MM_SG_43_3_MBPS,0,{nul}},
307 {"fz",HAL_PHY_RATE_MCS_1NSS_MM_SG_57_8_MBPS,0,{nul}},
308 {"f0",HAL_PHY_RATE_MCS_1NSS_MM_SG_65_MBPS,0,{nul}},
309 {"f1",HAL_PHY_RATE_MCS_1NSS_MM_SG_72_2_MBPS,0,{nul}},
310 {"f2",HAL_PHY_RATE_MCS_1NSS_CB_13_5_MBPS,0,{nul}},
311 {"f3",HAL_PHY_RATE_MCS_1NSS_CB_27_MBPS,0,{nul}},
312 {"f4",HAL_PHY_RATE_MCS_1NSS_CB_40_5_MBPS,0,{nul}},
313 {"f5",HAL_PHY_RATE_MCS_1NSS_CB_54_MBPS,0,{nul}},
314 {"f6",HAL_PHY_RATE_MCS_1NSS_CB_81_MBPS,0,{nul}},
315 {"f7",HAL_PHY_RATE_MCS_1NSS_CB_108_MBPS,0,{nul}},
316 {"f8",HAL_PHY_RATE_MCS_1NSS_CB_121_5_MBPS,0,{nul}},
317 {"f9",HAL_PHY_RATE_MCS_1NSS_CB_135_MBPS,0,{nul}},
318 {"ga",HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_15_MBPS,0,{nul}},
319 {"gb",HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_30_MBPS,0,{nul}},
320 {"gc",HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_45_MBPS,0,{nul}},
321 {"gd",HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_60_MBPS,0,{nul}},
322 {"ge",HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_90_MBPS,0,{nul}},
323 {"gf",HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_120_MBPS,0,{nul}},
324 {"gg",HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_135_MBPS,0,{nul}},
325 {"gh",HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_150_MBPS,0,{nul}},
326#ifdef WLAN_FEATURE_11AC
327 {"gj",HAL_PHY_RATE_11AC_DUP_6_MBPS,0,{nul}},
328 {"gk",HAL_PHY_RATE_11AC_DUP_9_MBPS,0,{nul}},
329 {"gl",HAL_PHY_RATE_11AC_DUP_12_MBPS,0,{nul}},
330 {"gm",HAL_PHY_RATE_11AC_DUP_18_MBPS,0,{nul}},
331 {"gn",HAL_PHY_RATE_11AC_DUP_24_MBPS,0,{nul}},
332 {"go",HAL_PHY_RATE_11AC_DUP_36_MBPS,0,{nul}},
333 {"gp",HAL_PHY_RATE_11AC_DUP_48_MBPS,0,{nul}},
334 {"gq",HAL_PHY_RATE_11AC_DUP_54_MBPS,0,{nul}},
335 {"gr",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_6_5_MBPS,0,{nul}},
336 {"gs",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_13_MBPS,0,{nul}},
337 {"gt",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_19_5_MBPS,0,{nul}},
338 {"gu",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_26_MBPS,0,{nul}},
339 {"gv",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_39_MBPS,0,{nul}},
340 {"gw",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_52_MBPS,0,{nul}},
341 {"gx",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_58_5_MBPS,0,{nul}},
342 {"gy",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_65_MBPS,0,{nul}},
343 {"gz",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_78_MBPS,0,{nul}},
344#ifdef WCN_PRONTO
345 {"j8",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_86_5_MBPS,0,{nul}},
346#endif
347 {"g0",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_7_2_MBPS,0,{nul}},
348 {"g1",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_14_4_MBPS,0,{nul}},
349 {"g2",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_21_6_MBPS,0,{nul}},
350 {"g3",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_28_8_MBPS,0,{nul}},
351 {"g4",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_43_3_MBPS,0,{nul}},
352 {"g5",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_57_7_MBPS,0,{nul}},
353 {"g6",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_65_MBPS,0,{nul}},
354 {"g7",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_72_2_MBPS,0,{nul}},
355 {"g8",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_86_6_MBPS,0,{nul}},
356#ifdef WCN_PRONTO
357 {"j9",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_96_1_MBPS,0,{nul}},
358#endif
359 {"g9",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_13_5_MBPS,0,{nul}},
360 {"ha",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_27_MBPS,0,{nul}},
361 {"hb",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_40_5_MBPS,0,{nul}},
362 {"hc",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_54_MBPS,0,{nul}},
363 {"hd",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_81_MBPS,0,{nul}},
364 {"he",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_108_MBPS,0,{nul}},
365 {"hf",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_121_5_MBPS,0,{nul}},
366 {"hg",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_135_MBPS,0,{nul}},
367 {"hh",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_162_MBPS,0,{nul}},
368 {"hi",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_180_MBPS,0,{nul}},
369 {"hj",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_15_MBPS,0,{nul}},
370 {"hk",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_30_MBPS,0,{nul}},
371 {"hl",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_45_MBPS,0,{nul}},
372 {"hm",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_60_MBPS,0,{nul}},
373 {"hn",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_90_MBPS,0,{nul}},
374 {"ho",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_120_MBPS,0,{nul}},
375 {"hp",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_135_MBPS,0,{nul}},
376 {"hq",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_150_MBPS,0,{nul}},
377 {"hr",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_180_MBPS,0,{nul}},
378 {"hs",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_200_MBPS,0,{nul}},
379 {"ht",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_29_3_MBPS,0,{nul}},
380 {"hu",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_58_5_MBPS,0,{nul}},
381 {"hv",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_87_8_MBPS,0,{nul}},
382 {"hw",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_117_MBPS,0,{nul}},
383 {"hx",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_175_5_MBPS,0,{nul}},
384 {"hy",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_234_MBPS,0,{nul}},
385 {"hz",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_263_3_MBPS,0,{nul}},
386 {"h0",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_292_5_MBPS,0,{nul}},
387 {"h1",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_351_MBPS,0,{nul}},
388 {"h2",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_390_MBPS,0,{nul}},
389 {"h3",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_32_5_MBPS,0,{nul}},
390 {"h4",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_65_MBPS,0,{nul}},
391 {"h5",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_97_5_MBPS,0,{nul}},
392 {"h6",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_130_MBPS,0,{nul}},
393 {"h7",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_195_MBPS,0,{nul}},
394 {"h8",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_260_MBPS,0,{nul}},
395 {"h9",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_292_5_MBPS,0,{nul}},
396 {"ia",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_325_MBPS,0,{nul}},
397 {"ib",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_390_MBPS,0,{nul}},
398 {"ic",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_433_3_MBPS,0,{nul}},
399#endif
400 {{nul},0, 0,{nul}},
401 }, // INDEX_ENUM_NUM_HAL_PHY_RATES
402
403 { //INDEX_ENUM_LAST
404 {{nul},0, 0,{nul}},
405 }, //INDEX_ENUM_LAST
406}; // END _NV_TEMPLATE_ENUM
407
408
409int getEnumNoOfFields(int enumIdx){
Leo Chang80de3c22013-11-26 10:52:12 -0800410#ifdef FEATURE_WLAN_CH144
411 enumNoOfFieldArray[4] = enumNoOfFieldArray[4] + 1;
412#endif
413 enumNoOfFieldArray[4] = enumNoOfFieldArray[4] + 36;
414#ifdef FEATURE_WLAN_CH144
415 enumNoOfFieldArray[4] = enumNoOfFieldArray[4] + 1;
416#endif
Prasanna Kumarf6c94ae2013-04-11 20:05:21 -0700417#ifdef WLAN_FEATURE_11AC
418 enumNoOfFieldArray[7] = enumNoOfFieldArray[7] + 17;
419#ifdef WCN_PRONTO
420 enumNoOfFieldArray[7] = enumNoOfFieldArray[7] + 1;
421#endif
422 enumNoOfFieldArray[7] = enumNoOfFieldArray[7] + 9;
423#ifdef WCN_PRONTO
424 enumNoOfFieldArray[7] = enumNoOfFieldArray[7] + 1;
425#endif
426 enumNoOfFieldArray[7] = enumNoOfFieldArray[7] + 40;
427#endif
428
429 return enumNoOfFieldArray[enumIdx];
430}
431
432
433static int tableNoOfFieldArray[TABLE_BUILTIN_MAX] =
434 {14,12,2,2,16,1,2,2,23,1,1,1,4,2,13};
435
436_NV_TEMPLATE_TABLE NvTablesBuiltIn[/*TABLES_MAX*/][TABLE_ENTRIES_MAX] = {
437 { // TABLE_sHalNv
438 {"jz",_TABLE_IDX(TABLE_sNvFields),SINGULAR,0,0,0,
439 ((int)&(nvDefaults.fields) - (int)&nvDefaults),"fields"},
440 {"jm",_TABLE_IDX(TABLE_tRateGroupPwr),(ARRAY_1),
441 ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
442 (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_SUBBANDS))),0,0,
443 ((int)&(nvDefaults.tables.pwrOptimum[0]) - (int)&nvDefaults.tables),
444 "pwrOptimum"},
445 {"dx",_TABLE_IDX(TABLE_sRegulatoryChannel),(ARRAY_1),
446 ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
447 (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0,
448 ((int)&(nvDefaults.tables.regDomains[0].channels[0]) -
449 (int)&nvDefaults.tables.regDomains[0]),"channels"},
450 {"jn",_TABLE_IDX(TABLE_sRegulatoryDomains),(ARRAY_1),
451 ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
452 (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_REG_DOMAINS))),0,0,
453 ((int)&(nvDefaults.tables.regDomains[0]) - (int)&nvDefaults.tables),
454 "regDomains"},
455 {"jo",_TABLE_IDX(TABLE_sDefaultCountry),SINGULAR,0,0,0,
456 ((int)&(nvDefaults.tables.defaultCountryTable) -
457 (int)&nvDefaults.tables),"defaultCountryTable"},
458 {"jp",_TABLE_IDX(TABLE_tTpcPowerTable),(ARRAY_1),
459 ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
460 (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0,
461 ((int)&(nvDefaults.tables.plutCharacterized[0]) -
462 (int)&nvDefaults.tables),"plutCharacterized"},
463 {"jr",_TABLE_IDX(TABLE_tRateGroupPwrVR),(ARRAY_1),
464 ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
465 (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_SUBBANDS))),0,0,
466 ((int)&(nvDefaults.tables.pwrOptimum_virtualRate[0]) -
467 (int)&nvDefaults.tables),"pwrOptimum_virtualRate"},
468 {"js",_TABLE_IDX(TABLE_sFwConfig),SINGULAR,0,0,0,
469 ((int)&(nvDefaults.tables.fwConfig) - (int)&nvDefaults.tables),
470 "fwConfig"},
471 {"jt",_TABLE_IDX(TABLE_sRssiChannelOffsets),(_ADD_SIZE1(2)|ARRAY_1),
472 ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))|(FIELD_SIZE_VALUE_BITS(2))),
473 0,0,((int)&(nvDefaults.tables.rssiChanOffsets[0]) -
474 (int)&nvDefaults.tables),"rssiChanOffsets"},
475 {"er",_TABLE_IDX(TABLE_sCalData),SINGULAR,0,0,0,
476 ((int)&(nvDefaults.tables.hwCalValues.calData) -
477 (int)&nvDefaults.tables.hwCalValues),"calData"},
478 {"ju",_TABLE_IDX(TABLE_sHwCalValues),SINGULAR,0,0,0,
479 ((int)&(nvDefaults.tables.hwCalValues) - (int)&nvDefaults.tables),
480 "hwCalValues"},
481 {"jx",_TABLE_IDX(TABLE_sOfdmCmdPwrOffset),SINGULAR,0,0,0,
482 ((int)&(nvDefaults.tables.ofdmCmdPwrOffset) - (int)&nvDefaults.tables),
483 "ofdmCmdPwrOffset"},
484 {"jy",_TABLE_IDX(TABLE_sTxBbFilterMode),SINGULAR,0,0,0,
485 ((int)&(nvDefaults.tables.txbbFilterMode) - (int)&nvDefaults.tables),
486 "txbbFilterMode"},
487 {"j0",_TABLE_IDX(TABLE_sNvTables),SINGULAR,0,0,0,
488 ((int)&(nvDefaults.tables) - (int)&nvDefaults),"tables"},
489 {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
490 }, // TABLE_sHalNv
491
492 { // TABLE_sNvFields
493 {"ap",_ID_U16,SINGULAR,0,0,0,((int)&(nvDefaults.fields.productId) -
494 (int)&nvDefaults.fields),"productId"},
495 {"aq",_ID_U8,SINGULAR,0,0,0,((int)&(nvDefaults.fields.productBands) -
496 (int)&nvDefaults.fields),"productBands"},
497 {"ar",_ID_U8,SINGULAR,0,0,0,((int)&(nvDefaults.fields.wlanNvRevId) -
498 (int)&nvDefaults.fields),"wlanNvRevId"},
499 {"as",_ID_U8,SINGULAR,0,0,0,((int)&(nvDefaults.fields.numOfTxChains) -
500 (int)&nvDefaults.fields),"numOfTxChains"},
501 {"at",_ID_U8,SINGULAR,0,0,0,((int)&(nvDefaults.fields.numOfRxChains) -
502 (int)&nvDefaults.fields),"numOfRxChains"},
503 {"au",_ID_U8,(_ADD_SIZE1(NV_FIELD_MAC_ADDR_SIZE)|ARRAY_1),
504 ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))|
505 (FIELD_SIZE_VALUE_BITS(NV_FIELD_MAC_ADDR_SIZE))),0,0,
506 ((int)&(nvDefaults.fields.macAddr[0]) - (int)&nvDefaults.fields),
507 "macAddr"},
508 {"av",_ID_U8,(_ADD_SIZE1(NV_FIELD_MAC_ADDR_SIZE)|ARRAY_1),
509 ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))|
510 (FIELD_SIZE_VALUE_BITS(NV_FIELD_MAC_ADDR_SIZE))),0,0,
511 ((int)&(nvDefaults.fields.macAddr2[0]) - (int)&nvDefaults.fields),
512 "macAddr2"},
513 {"aw",_ID_U8,(_ADD_SIZE1(NV_FIELD_MAC_ADDR_SIZE)|ARRAY_1),
514 ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))|
515 (FIELD_SIZE_VALUE_BITS(NV_FIELD_MAC_ADDR_SIZE))),0,0,
516 ((int)&(nvDefaults.fields.macAddr3[0]) - (int)&nvDefaults.fields),
517 "macAddr3"},
518 {"ax",_ID_U8,(_ADD_SIZE1(NV_FIELD_MAC_ADDR_SIZE)|ARRAY_1),
519 ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))|
520 (FIELD_SIZE_VALUE_BITS(NV_FIELD_MAC_ADDR_SIZE))),0,0,
521 ((int)&(nvDefaults.fields.macAddr4[0]) - (int)&nvDefaults.fields),
522 "macAddr4"},
523 {"ay",_ID_U8,(_ADD_SIZE1(NV_FIELD_MFG_SN_SIZE)|ARRAY_1),
524 ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))|
525 (FIELD_SIZE_VALUE_BITS(NV_FIELD_MFG_SN_SIZE))),0,0,
526 ((int)&(nvDefaults.fields.mfgSN[0]) - (int)&nvDefaults.fields),"mfgSN"}
527 ,
528 {"az",_ID_U8,SINGULAR,0,0,0,((int)&(nvDefaults.fields.couplerType) -
529 (int)&nvDefaults.fields),"couplerType"},
530 {"a0",_ID_U8,SINGULAR,0,0,0,((int)&(nvDefaults.fields.nvVersion) -
531 (int)&nvDefaults.fields),"nvVersion"},
532 {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
533 }, // TABLE_sNvFields
534
535 { // TABLE_sRegulatoryChannel
536 {"dv",_ID_U8,SINGULAR,0,0,0,
537 ((int)&(nvDefaults.tables.regDomains[0].channels[0].enabled) -
538 (int)&nvDefaults.tables.regDomains[0].channels[0]),"enabled"},
539 {"dw",_ID_S8,SINGULAR,0,0,0,
540 ((int)&(nvDefaults.tables.regDomains[0].channels[0].pwrLimit) -
541 (int)&nvDefaults.tables.regDomains[0].channels[0]),"pwrLimit"},
542 {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
543 }, // TABLE_sRegulatoryChannel
544
545 { // TABLE_sRssiChannelOffsets
546 {"d1",_ID_S16,(ARRAY_1),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
547 (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0,
548 ((int)&(nvDefaults.tables.rssiChanOffsets[0].bRssiOffset[0]) -
549 (int)&nvDefaults.tables.rssiChanOffsets[0]),"bRssiOffset"},
550 {"d2",_ID_S16,(ARRAY_1),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
551 (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0,
552 ((int)&(nvDefaults.tables.rssiChanOffsets[0].gnRssiOffset[0]) -
553 (int)&nvDefaults.tables.rssiChanOffsets[0]),"gnRssiOffset"},
554 {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
555 }, // TABLE_sRssiChannelOffsets
556
557 { // TABLE_sCalData
558 {"ea",_ID_U16,SINGULAR,0,0,0,
559 ((int)&(nvDefaults.tables.hwCalValues.calData.psSlpTimeOvrHd2G) -
560 (int)&nvDefaults.tables.hwCalValues.calData),"psSlpTimeOvrHd2G"},
561 {"eb",_ID_U16,SINGULAR,0,0,0,
562 ((int)&(nvDefaults.tables.hwCalValues.calData.psSlpTimeOvrHd5G) -
563 (int)&nvDefaults.tables.hwCalValues.calData),"psSlpTimeOvrHd5G"},
564 {"ec",_ID_U16,SINGULAR,0,0,0,
565 ((int)&(nvDefaults.tables.hwCalValues.calData.psSlpTimeOvrHdxLNA5G) -
566 (int)&nvDefaults.tables.hwCalValues.calData),"psSlpTimeOvrHdxLNA5G"},
567 {"ed",_ID_U8,SINGULAR,0,0,0,
568 (((int)&(nvDefaults.tables.hwCalValues.calData.psSlpTimeOvrHdxLNA5G) +
569 sizeof(uint16)) - (int)&nvDefaults.tables.hwCalValues.calData),
570 "nv_TxBBFSel9MHz"},
571 {"ee",_ID_U8,SINGULAR,0,0,0,
572 ((int)&(nvDefaults.tables.hwCalValues.calData.hwParam2) -
573 (int)&nvDefaults.tables.hwCalValues.calData),"hwParam2"},
574 {"ef",_ID_U16,SINGULAR,0,0,0,
575 ((int)&(nvDefaults.tables.hwCalValues.calData.custom_tcxo_reg8) -
576 (int)&nvDefaults.tables.hwCalValues.calData),"custom_tcxo_reg8"},
577 {"eg",_ID_U16,SINGULAR,0,0,0,
578 ((int)&(nvDefaults.tables.hwCalValues.calData.custom_tcxo_reg9) -
579 (int)&nvDefaults.tables.hwCalValues.calData),"custom_tcxo_reg9"},
580 {"eh",_ID_U32,SINGULAR,0,0,0,
581 ((int)&(nvDefaults.tables.hwCalValues.calData.hwParam3) -
582 (int)&nvDefaults.tables.hwCalValues.calData),"hwParam3"},
583 {"ei",_ID_U32,SINGULAR,0,0,0,
584 ((int)&(nvDefaults.tables.hwCalValues.calData.hwParam4) -
585 (int)&nvDefaults.tables.hwCalValues.calData),"hwParam4"},
586 {"ej",_ID_U32,SINGULAR,0,0,0,
587 ((int)&(nvDefaults.tables.hwCalValues.calData.hwParam5) -
588 (int)&nvDefaults.tables.hwCalValues.calData),"hwParam5"},
589 {"ek",_ID_U32,SINGULAR,0,0,0,
590 ((int)&(nvDefaults.tables.hwCalValues.calData.hwParam6) -
591 (int)&nvDefaults.tables.hwCalValues.calData),"hwParam6"},
592 {"el",_ID_U32,SINGULAR,0,0,0,
593 ((int)&(nvDefaults.tables.hwCalValues.calData.hwParam7) -
594 (int)&nvDefaults.tables.hwCalValues.calData),"hwParam7"},
595 {"em",_ID_U32,SINGULAR,0,0,0,
596 ((int)&(nvDefaults.tables.hwCalValues.calData.hwParam8) -
597 (int)&nvDefaults.tables.hwCalValues.calData),"hwParam8"},
598 {"en",_ID_U32,SINGULAR,0,0,0,
599 ((int)&(nvDefaults.tables.hwCalValues.calData.hwParam9) -
600 (int)&nvDefaults.tables.hwCalValues.calData),"hwParam9"},
601 {"eo",_ID_U32,SINGULAR,0,0,0,
602 ((int)&(nvDefaults.tables.hwCalValues.calData.hwParam10) -
603 (int)&nvDefaults.tables.hwCalValues.calData),"hwParam10"},
604 {"ep",_ID_U32,SINGULAR,0,0,0,
605 ((int)&(nvDefaults.tables.hwCalValues.calData.hwParam11) -
606 (int)&nvDefaults.tables.hwCalValues.calData),"hwParam11"},
607 {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
608 }, // TABLE_sCalData
609
610 { // TABLE_sTxBbFilterMode
611 {"es",_ID_U32,SINGULAR,0,0,0,
612 ((int)&(nvDefaults.tables.txbbFilterMode.txFirFilterMode) -
613 (int)&nvDefaults.tables.txbbFilterMode),"txFirFilterMode"},
614 {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
615 }, // TABLE_sTxBbFilterMode
616
617 { // TABLE_sOfdmCmdPwrOffset
618 {"et",_ID_S16,SINGULAR,0,0,0,
619 ((int)&(nvDefaults.tables.ofdmCmdPwrOffset.ofdmPwrOffset) -
620 (int)&nvDefaults.tables.ofdmCmdPwrOffset),"ofdmPwrOffset"},
621 {"eu",_ID_S16,SINGULAR,0,0,0,
622 ((int)&(nvDefaults.tables.ofdmCmdPwrOffset.rsvd) -
623 (int)&nvDefaults.tables.ofdmCmdPwrOffset),"rsvd"},
624 {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
625 }, // TABLE_sOfdmCmdPwrOffset
626
627 { // TABLE_sDefaultCountry
628 {"if",_ID_U8,SINGULAR,0,0,0,
629 ((int)&(nvDefaults.tables.defaultCountryTable.regDomain) -
630 (int)&nvDefaults.tables.defaultCountryTable),"regDomain"},
631 {"ig",_ID_U8,(_ADD_SIZE1(NV_FIELD_COUNTRY_CODE_SIZE)|ARRAY_1),
632 ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))|
633 (FIELD_SIZE_VALUE_BITS(NV_FIELD_COUNTRY_CODE_SIZE))),0,0,
634 ((int)&(nvDefaults.tables.defaultCountryTable.countryCode[0]) -
635 (int)&nvDefaults.tables.defaultCountryTable),"countryCode"},
636 {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
637 }, // TABLE_sDefaultCountry
638
639 { // TABLE_sFwConfig
640 {"ih",_ID_U8,SINGULAR,0,0,0,((int)&(nvDefaults.tables.fwConfig.skuID) -
641 (int)&nvDefaults.tables.fwConfig),"skuID"},
642 {"ii",_ID_U8,SINGULAR,0,0,0,((int)&(nvDefaults.tables.fwConfig.tpcMode2G)
643 - (int)&nvDefaults.tables.fwConfig),"tpcMode2G"},
644 {"ij",_ID_U8,SINGULAR,0,0,0,((int)&(nvDefaults.tables.fwConfig.tpcMode5G)
645 - (int)&nvDefaults.tables.fwConfig),"tpcMode5G"},
Leo Chang80de3c22013-11-26 10:52:12 -0800646 {"ik",_ID_U8,SINGULAR,0,0,0,
647 ((int)&(nvDefaults.tables.fwConfig.configItem1) -
648 (int)&nvDefaults.tables.fwConfig),"configItem1"},
Prasanna Kumarf6c94ae2013-04-11 20:05:21 -0700649 {"il",_ID_U8,SINGULAR,0,0,0,((int)&(nvDefaults.tables.fwConfig.xPA2G) -
650 (int)&nvDefaults.tables.fwConfig),"xPA2G"},
651 {"im",_ID_U8,SINGULAR,0,0,0,((int)&(nvDefaults.tables.fwConfig.xPA5G) -
652 (int)&nvDefaults.tables.fwConfig),"xPA5G"},
653 {"in",_ID_U8,SINGULAR,0,0,0,
654 ((int)&(nvDefaults.tables.fwConfig.extPaCtrl0Polarity) -
655 (int)&nvDefaults.tables.fwConfig),"extPaCtrl0Polarity"},
656 {"io",_ID_U8,SINGULAR,0,0,0,
657 ((int)&(nvDefaults.tables.fwConfig.extPaCtrl1Polarity) -
658 (int)&nvDefaults.tables.fwConfig),"extPaCtrl1Polarity"},
659 {"ip",_ID_U8,SINGULAR,0,0,0,((int)&(nvDefaults.tables.fwConfig.xLNA2G) -
660 (int)&nvDefaults.tables.fwConfig),"xLNA2G"},
661 {"iq",_ID_U8,SINGULAR,0,0,0,((int)&(nvDefaults.tables.fwConfig.xLNA5G) -
662 (int)&nvDefaults.tables.fwConfig),"xLNA5G"},
663 {"ir",_ID_U8,SINGULAR,0,0,0,((int)&(nvDefaults.tables.fwConfig.xCoupler2G)
664 - (int)&nvDefaults.tables.fwConfig),"xCoupler2G"},
665 {"is",_ID_U8,SINGULAR,0,0,0,((int)&(nvDefaults.tables.fwConfig.xCoupler5G)
666 - (int)&nvDefaults.tables.fwConfig),"xCoupler5G"},
667 {"it",_ID_U8,SINGULAR,0,0,0,((int)&(nvDefaults.tables.fwConfig.xPdet2G) -
668 (int)&nvDefaults.tables.fwConfig),"xPdet2G"},
669 {"iu",_ID_U8,SINGULAR,0,0,0,((int)&(nvDefaults.tables.fwConfig.xPdet5G) -
670 (int)&nvDefaults.tables.fwConfig),"xPdet5G"},
671 {"iv",_ID_U8,SINGULAR,0,0,0,
672 ((int)&(nvDefaults.tables.fwConfig.enableDPD2G) -
673 (int)&nvDefaults.tables.fwConfig),"enableDPD2G"},
674 {"iw",_ID_U8,SINGULAR,0,0,0,
675 ((int)&(nvDefaults.tables.fwConfig.enableDPD5G) -
676 (int)&nvDefaults.tables.fwConfig),"enableDPD5G"},
677 {"ix",_ID_U8,SINGULAR,0,0,0,
678 ((int)&(nvDefaults.tables.fwConfig.pdadcSelect2G) -
679 (int)&nvDefaults.tables.fwConfig),"pdadcSelect2G"},
680 {"iy",_ID_U8,SINGULAR,0,0,0,
681 ((int)&(nvDefaults.tables.fwConfig.pdadcSelect5GLow) -
682 (int)&nvDefaults.tables.fwConfig),"pdadcSelect5GLow"},
683 {"iz",_ID_U8,SINGULAR,0,0,0,
684 ((int)&(nvDefaults.tables.fwConfig.pdadcSelect5GMid) -
685 (int)&nvDefaults.tables.fwConfig),"pdadcSelect5GMid"},
686 {"i0",_ID_U8,SINGULAR,0,0,0,
687 ((int)&(nvDefaults.tables.fwConfig.pdadcSelect5GHigh) -
688 (int)&nvDefaults.tables.fwConfig),"pdadcSelect5GHigh"},
Leo Chang80de3c22013-11-26 10:52:12 -0800689 {"i1",_ID_U32,SINGULAR,0,0,0,
690 ((int)&(nvDefaults.tables.fwConfig.configItem2) -
691 (int)&nvDefaults.tables.fwConfig),"configItem2"},
692 {"i2",_ID_U32,SINGULAR,0,0,0,
693 ((int)&(nvDefaults.tables.fwConfig.configItem3) -
694 (int)&nvDefaults.tables.fwConfig),"configItem3"},
695 {"i3",_ID_U32,SINGULAR,0,0,0,
696 ((int)&(nvDefaults.tables.fwConfig.configItem4) -
697 (int)&nvDefaults.tables.fwConfig),"configItem4"},
Prasanna Kumarf6c94ae2013-04-11 20:05:21 -0700698 {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
699 }, // TABLE_sFwConfig
700
701 { // TABLE_tTpcPowerTable
702 {"kc",_ID_U8,(_ADD_SIZE2(TPC_MEM_POWER_LUT_DEPTH)|ARRAY_2),
703 ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
704 (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_PHY_MAX_TX_CHAINS))),
705 ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))|
706 (FIELD_SIZE_VALUE_BITS(TPC_MEM_POWER_LUT_DEPTH))),0,
707 ((int)&(nvDefaults.tables.plutCharacterized[0]) -
708 (int)&nvDefaults.tables.plutCharacterized[0]),"tTpcPowerTable"},
709 {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
710 }, // TABLE_tTpcPowerTable
711
712 { // TABLE_tRateGroupPwr
713 {"kb",_ID_U32,(ARRAY_1),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
714 (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_HAL_PHY_RATES))),0,0,
715 ((int)&(nvDefaults.tables.pwrOptimum[0]) -
716 (int)&nvDefaults.tables.pwrOptimum[0]),"tRateGroupPwr"},
717 {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
718 }, // TABLE_tRateGroupPwr
719
720 { // TABLE_tRateGroupPwrVR
721 {"kd",_ID_U32,(_ADD_SIZE1(NUM_RF_VR_RATE)|ARRAY_1),
722 ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))|
723 (FIELD_SIZE_VALUE_BITS(NUM_RF_VR_RATE))),0,0,
724 ((int)&(nvDefaults.tables.pwrOptimum_virtualRate[0]) -
725 (int)&nvDefaults.tables.pwrOptimum_virtualRate[0]),"tRateGroupPwrVR"},
Leo Chang80de3c22013-11-26 10:52:12 -0800726
Prasanna Kumarf6c94ae2013-04-11 20:05:21 -0700727 {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
728 }, // TABLE_tRateGroupPwrVR
729
730 { // TABLE_sRegulatoryDomains
731 {"dx",_TABLE_IDX(TABLE_sRegulatoryChannel),(ARRAY_1),
732 ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
733 (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0,
734 ((int)&(nvDefaults.tables.regDomains[0].channels[0]) -
735 (int)&nvDefaults.tables.regDomains[0]),"channels"},
736 {"dy",_ID_U32,(ARRAY_1),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
737 (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_SUBBANDS))),0,0,
738 ((int)&(nvDefaults.tables.regDomains[0].antennaGain[0]) -
739 (int)&nvDefaults.tables.regDomains[0]),"antennaGain"},
740 {"dz",_ID_U32,(ARRAY_1),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
741 (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_2_4GHZ_CHANNELS))),0,0,
742 ((int)&(nvDefaults.tables.regDomains[0].bRatePowerOffset[0]) -
743 (int)&nvDefaults.tables.regDomains[0]),"bRatePowerOffset"},
744 {"d0",_ID_U32,(ARRAY_1),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
745 (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0,
746 ((int)&(nvDefaults.tables.regDomains[0].gnRatePowerOffset[0]) -
747 (int)&nvDefaults.tables.regDomains[0]),"gnRatePowerOffset"},
748 {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
749 }, // TABLE_sRegulatoryDomains
750
751 { // TABLE_sHwCalValues
752 {"eq",_ID_U32,SINGULAR,0,0,0,
753 ((int)&(nvDefaults.tables.hwCalValues.validBmap) -
754 (int)&nvDefaults.tables.hwCalValues),"validBmap"},
755 {"er",_TABLE_IDX(TABLE_sCalData),SINGULAR,0,0,0,
756 ((int)&(nvDefaults.tables.hwCalValues.calData) -
757 (int)&nvDefaults.tables.hwCalValues),"calData"},
758 {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
759 }, // TABLE_sHwCalValues
760
761 { // TABLE_sNvTables
762 {"jm",_TABLE_IDX(TABLE_tRateGroupPwr),(ARRAY_1),
763 ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
764 (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_SUBBANDS))),0,0,
765 ((int)&(nvDefaults.tables.pwrOptimum[0]) - (int)&nvDefaults.tables),
766 "pwrOptimum"},
767 {"jn",_TABLE_IDX(TABLE_sRegulatoryDomains),(ARRAY_1),
768 ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
769 (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_REG_DOMAINS))),0,0,
770 ((int)&(nvDefaults.tables.regDomains[0]) - (int)&nvDefaults.tables),
771 "regDomains"},
772 {"jo",_TABLE_IDX(TABLE_sDefaultCountry),SINGULAR,0,0,0,
773 ((int)&(nvDefaults.tables.defaultCountryTable) -
774 (int)&nvDefaults.tables),"defaultCountryTable"},
775 {"jp",_TABLE_IDX(TABLE_tTpcPowerTable),(ARRAY_1),
776 ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
777 (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0,
778 ((int)&(nvDefaults.tables.plutCharacterized[0]) -
779 (int)&nvDefaults.tables),"plutCharacterized"},
780 {"jq",_ID_S16,(ARRAY_1),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
781 (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0,
782 ((int)&(nvDefaults.tables.plutPdadcOffset[0]) -
783 (int)&nvDefaults.tables),"plutPdadcOffset"},
784 {"jr",_TABLE_IDX(TABLE_tRateGroupPwrVR),(ARRAY_1),
785 ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
786 (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_SUBBANDS))),0,0,
787 ((int)&(nvDefaults.tables.pwrOptimum_virtualRate[0]) -
788 (int)&nvDefaults.tables),"pwrOptimum_virtualRate"},
789 {"js",_TABLE_IDX(TABLE_sFwConfig),SINGULAR,0,0,0,
790 ((int)&(nvDefaults.tables.fwConfig) - (int)&nvDefaults.tables),
791 "fwConfig"},
792 {"jt",_TABLE_IDX(TABLE_sRssiChannelOffsets),(_ADD_SIZE1(2)|ARRAY_1),
793 ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))|(FIELD_SIZE_VALUE_BITS(2))),
794 0,0,((int)&(nvDefaults.tables.rssiChanOffsets[0]) -
795 (int)&nvDefaults.tables),"rssiChanOffsets"},
796 {"ju",_TABLE_IDX(TABLE_sHwCalValues),SINGULAR,0,0,0,
797 ((int)&(nvDefaults.tables.hwCalValues) - (int)&nvDefaults.tables),
798 "hwCalValues"},
799 {"jv",_ID_S16,(ARRAY_1),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
800 (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0,
801 ((int)&(nvDefaults.tables.antennaPathLoss[0]) -
802 (int)&nvDefaults.tables),"antennaPathLoss"},
803 {"jw",_ID_S16,(ARRAY_2),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
804 (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_802_11_MODES))),
805 ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
806 (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,
807 ((int)&(nvDefaults.tables.pktTypePwrLimits[0][0]) -
808 (int)&nvDefaults.tables),"pktTypePwrLimits"},
809 {"jx",_TABLE_IDX(TABLE_sOfdmCmdPwrOffset),SINGULAR,0,0,0,
810 ((int)&(nvDefaults.tables.ofdmCmdPwrOffset) - (int)&nvDefaults.tables),
811 "ofdmCmdPwrOffset"},
812 {"jy",_TABLE_IDX(TABLE_sTxBbFilterMode),SINGULAR,0,0,0,
813 ((int)&(nvDefaults.tables.txbbFilterMode) - (int)&nvDefaults.tables),
814 "txbbFilterMode"},
815 {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
816 }, // TABLE_sNvTables
817
818 { //INDEX_TABLE_LAST
819 {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
820 }, //INDEX_TABLE_LAST
821}; // END _NV_TEMPLATE_TABLE
822
823int getTableNoOfFields(int tblIdx)
824{
825 return tableNoOfFieldArray[tblIdx];
826}