Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(133)

Side by Side Diff: parse.c

Issue 6677007: Expose and augment parser enum and field name tables to bct_dump. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/cbootimage.git@master
Patch Set: Address Vincent's comments. Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « parse.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /** 1 /**
2 * Copyright (c) 2011 NVIDIA Corporation. All rights reserved. 2 * Copyright (c) 2011 NVIDIA Corporation. All rights reserved.
3 * 3 *
4 * See file CREDITS for list of people who contributed to this 4 * See file CREDITS for list of people who contributed to this
5 * project. 5 * project.
6 * 6 *
7 * This program is free software; you can redistribute it and/or 7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License as 8 * modify it under the terms of the GNU General Public License as
9 * published by the Free Software Foundation; either version 2 of 9 * published by the Free Software Foundation; either version 2 of
10 * the License, or (at your option) any later version. 10 * the License, or (at your option) any later version.
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 static char *parse_u32(char *statement, u_int32_t *val); 54 static char *parse_u32(char *statement, u_int32_t *val);
55 static char *parse_u8(char *statement, u_int32_t *val); 55 static char *parse_u8(char *statement, u_int32_t *val);
56 static char *parse_filename(char *statement, char *name, int chars_remaining); 56 static char *parse_filename(char *statement, char *name, int chars_remaining);
57 static char *parse_enum(build_image_context *context, 57 static char *parse_enum(build_image_context *context,
58 char *statement, 58 char *statement,
59 enum_item *table, 59 enum_item *table,
60 u_int32_t *val); 60 u_int32_t *val);
61 static char 61 static char
62 *parse_field_name(char *rest, field_item *field_table, field_item **field); 62 *parse_field_name(char *rest, field_item *field_table, field_item **field);
63 static char 63 static char
64 *parse_field_value(build_image_context *context, 64 *parse_field_value(build_image_context *context,
65 char *rest, 65 char *rest,
66 field_item *field, 66 field_item *field,
67 u_int32_t *value); 67 u_int32_t *value);
68 static int 68 static int
69 parse_array(build_image_context *context, parse_token token, char *rest); 69 parse_array(build_image_context *context, parse_token token, char *rest);
70 static int 70 static int
71 parse_bootloader(build_image_context *context, parse_token token, char *rest); 71 parse_bootloader(build_image_context *context, parse_token token, char *rest);
72 static int 72 static int
73 parse_value_u32(build_image_context *context, parse_token token, char *rest); 73 parse_value_u32(build_image_context *context, parse_token token, char *rest);
74 static int 74 static int
75 parse_bct_file(build_image_context *context, parse_token token, char *rest); 75 parse_bct_file(build_image_context *context, parse_token token, char *rest);
76 static int 76 static int
77 parse_addon(build_image_context *context, parse_token token, char *rest); 77 parse_addon(build_image_context *context, parse_token token, char *rest);
78 static char *parse_string(char *statement, char *uname, int chars_remaining); 78 static char *parse_string(char *statement, char *uname, int chars_remaining);
79 static char 79 static char
80 *parse_end_state(char *statement, char *uname, int chars_remaining); 80 *parse_end_state(char *statement, char *uname, int chars_remaining);
81 static int 81 static int
82 parse_dev_param(build_image_context *context, parse_token token, char *rest); 82 parse_dev_param(build_image_context *context, parse_token token, char *rest);
83 static int 83 static int
84 parse_sdram_param(build_image_context *context, parse_token token, char *rest); 84 parse_sdram_param(build_image_context *context, parse_token token, char *rest);
85 85
86 static int process_statement(build_image_context *context, char *statement); 86 static int process_statement(build_image_context *context, char *statement);
87 87
88 static enum_item s_devtype_table[] = 88 enum_item s_devtype_table[] =
89 { 89 {
90 { "NvBootDevType_Sdmmc", nvbct_lib_id_dev_type_sdmmc }, 90 { "NvBootDevType_Sdmmc", nvbct_lib_id_dev_type_sdmmc },
91 { "NvBootDevType_Spi", nvbct_lib_id_dev_type_spi }, 91 { "NvBootDevType_Spi", nvbct_lib_id_dev_type_spi },
92 { "NvBootDevType_Nand", nvbct_lib_id_dev_type_nand }, 92 { "NvBootDevType_Nand", nvbct_lib_id_dev_type_nand },
93 { "Sdmmc", nvbct_lib_id_dev_type_sdmmc }, 93 { "Sdmmc", nvbct_lib_id_dev_type_sdmmc },
94 { "Spi", nvbct_lib_id_dev_type_spi }, 94 { "Spi", nvbct_lib_id_dev_type_spi },
95 { "Nand", nvbct_lib_id_dev_type_nand }, 95 { "Nand", nvbct_lib_id_dev_type_nand },
96 96
97 { NULL, 0 } 97 { NULL, 0 }
98 }; 98 };
99 99
100 static enum_item s_sdmmc_data_width_table[] = 100 enum_item s_sdmmc_data_width_table[] =
101 { 101 {
102 { 102 {
103 "NvBootSdmmcDataWidth_4Bit", 103 "NvBootSdmmcDataWidth_4Bit",
104 nvbct_lib_id_sdmmc_data_width_4bit 104 nvbct_lib_id_sdmmc_data_width_4bit
105 }, 105 },
106 { 106 {
107 "NvBootSdmmcDataWidth_8Bit", 107 "NvBootSdmmcDataWidth_8Bit",
108 nvbct_lib_id_sdmmc_data_width_8bit 108 nvbct_lib_id_sdmmc_data_width_8bit
109 }, 109 },
110 { "4Bit", nvbct_lib_id_sdmmc_data_width_4bit }, 110 { "4Bit", nvbct_lib_id_sdmmc_data_width_4bit },
111 { "8Bit", nvbct_lib_id_sdmmc_data_width_8bit }, 111 { "8Bit", nvbct_lib_id_sdmmc_data_width_8bit },
112 { NULL, 0 } 112 { NULL, 0 }
113 }; 113 };
114 114
115 static enum_item s_spi_clock_source_table[] = 115 enum_item s_spi_clock_source_table[] =
116 { 116 {
117 { 117 {
118 "NvBootSpiClockSource_PllPOut0", 118 "NvBootSpiClockSource_PllPOut0",
119 nvbct_lib_id_spi_clock_source_pllp_out0 119 nvbct_lib_id_spi_clock_source_pllp_out0
120 }, 120 },
121 { 121 {
122 "NvBootSpiClockSource_PllCOut0", 122 "NvBootSpiClockSource_PllCOut0",
123 nvbct_lib_id_spi_clock_source_pllc_out0 123 nvbct_lib_id_spi_clock_source_pllc_out0
124 }, 124 },
125 { 125 {
(...skipping 12 matching lines...) Expand all
138 138
139 139
140 { "PllPOut0", nvbct_lib_id_spi_clock_source_pllp_out0 }, 140 { "PllPOut0", nvbct_lib_id_spi_clock_source_pllp_out0 },
141 { "PllCOut0", nvbct_lib_id_spi_clock_source_pllc_out0 }, 141 { "PllCOut0", nvbct_lib_id_spi_clock_source_pllc_out0 },
142 { "PllMOut0", nvbct_lib_id_spi_clock_source_pllm_out0 }, 142 { "PllMOut0", nvbct_lib_id_spi_clock_source_pllm_out0 },
143 { "ClockM", nvbct_lib_id_spi_clock_source_clockm }, 143 { "ClockM", nvbct_lib_id_spi_clock_source_clockm },
144 144
145 { NULL, 0 } 145 { NULL, 0 }
146 }; 146 };
147 147
148 static enum_item s_nvboot_memory_type_table[] = 148 enum_item s_nvboot_memory_type_table[] =
149 { 149 {
150 { "NvBootMemoryType_None", nvbct_lib_id_memory_type_none }, 150 { "NvBootMemoryType_None", nvbct_lib_id_memory_type_none },
151 { "NvBootMemoryType_Ddr2", nvbct_lib_id_memory_type_ddr2 }, 151 { "NvBootMemoryType_Ddr2", nvbct_lib_id_memory_type_ddr2 },
152 { "NvBootMemoryType_Ddr", nvbct_lib_id_memory_type_ddr }, 152 { "NvBootMemoryType_Ddr", nvbct_lib_id_memory_type_ddr },
153 { "NvBootMemoryType_LpDdr2", nvbct_lib_id_memory_type_lpddr2 }, 153 { "NvBootMemoryType_LpDdr2", nvbct_lib_id_memory_type_lpddr2 },
154 { "NvBootMemoryType_LpDdr", nvbct_lib_id_memory_type_lpddr }, 154 { "NvBootMemoryType_LpDdr", nvbct_lib_id_memory_type_lpddr },
155 155
156 { "None", nvbct_lib_id_memory_type_none }, 156 { "None", nvbct_lib_id_memory_type_none },
157 { "Ddr2", nvbct_lib_id_memory_type_ddr2 }, 157 { "Ddr2", nvbct_lib_id_memory_type_ddr2 },
158 { "Ddr", nvbct_lib_id_memory_type_ddr }, 158 { "Ddr", nvbct_lib_id_memory_type_ddr },
159 { "LpDdr2", nvbct_lib_id_memory_type_lpddr2 }, 159 { "LpDdr2", nvbct_lib_id_memory_type_lpddr2 },
160 { "LpDdr", nvbct_lib_id_memory_type_lpddr }, 160 { "LpDdr", nvbct_lib_id_memory_type_lpddr },
161 161
162 { NULL, 0 } 162 { NULL, 0 }
163 }; 163 };
164 164
165 static field_item s_sdram_field_table[] = 165 #define TOKEN(name)» » » » » » \
166 » token_##name, nvbct_lib_id_sdram_##name, field_type_u32, NULL
167
168 field_item s_sdram_field_table[] =
166 { 169 {
167 » { "MemoryType", token_memory_type, 170 » { "MemoryType", token_memory_type, nvbct_lib_id_sdram_memory_type,
168 » » field_type_enum, s_nvboot_memory_type_table }, 171 » field_type_enum, s_nvboot_memory_type_table },
169 » { "PllMChargePumpSetupControl", token_pllm_charge_pump_setup_ctrl,
170 » » field_type_u32, NULL },
171 » { "PllMLoopFilterSetupControl", token_pllm_loop_filter_setup_ctrl,
172 » » field_type_u32, NULL },
173 » { "PllMInputDivider", token_pllm_input_divider,
174 » » field_type_u32, NULL },
175 » { "PllMFeedbackDivider", token_pllm_feedback_divider,
176 » » field_type_u32, NULL },
177 » { "PllMPostDivider", token_pllm_post_divider,
178 » » field_type_u32, NULL },
179 » { "PllMStableTime", token_pllm_stable_time,
180 » » field_type_u32, NULL },
181 » { "EmcClockDivider", token_emc_clock_divider,
182 » » field_type_u32, NULL },
183 » { "EmcAutoCalInterval", token_emc_auto_cal_interval,
184 » » field_type_u32, NULL },
185 » { "EmcAutoCalConfig", token_emc_auto_cal_config,
186 » » field_type_u32, NULL },
187 » { "EmcAutoCalWait", token_emc_auto_cal_wait,
188 » » field_type_u32, NULL },
189 » { "EmcPinProgramWait", token_emc_pin_program_wait,
190 » » field_type_u32, NULL },
191 » { "EmcRc", token_emc_rc,
192 » » field_type_u32, NULL },
193 » { "EmcRfc", token_emc_rfc,
194 » » field_type_u32, NULL },
195 » { "EmcRas", token_emc_ras,
196 » » field_type_u32, NULL },
197 » { "EmcRp", token_emc_rp,
198 » » field_type_u32, NULL },
199 » { "EmcR2w", token_emc_r2w,
200 » » field_type_u32, NULL },
201 » { "EmcW2r", token_emc_w2r,
202 » » field_type_u32, NULL },
203 » { "EmcR2p", token_emc_r2p,
204 » » field_type_u32, NULL },
205 » { "EmcW2p", token_emc_w2p,
206 » » field_type_u32, NULL },
207 » { "EmcRrd", token_emc_rrd,
208 » » field_type_u32, NULL },
209 » { "EmcRdRcd", token_emc_rd_rcd,
210 » » field_type_u32, NULL },
211 » { "EmcWrRcd", token_emc_wr_rcd,
212 » » field_type_u32, NULL },
213 » { "EmcRext", token_emc_rext,
214 » » field_type_u32, NULL },
215 » { "EmcWdv", token_emc_wdv,
216 » » field_type_u32, NULL },
217 » { "EmcQUseExtra", token_emc_quse_extra,
218 » » field_type_u32, NULL },
219 » { "EmcQUse", token_emc_quse,
220 » » field_type_u32, NULL },
221 » { "EmcQRst", token_emc_qrst,
222 » » field_type_u32, NULL },
223 » { "EmcQSafe", token_emc_qsafe,
224 » » field_type_u32, NULL },
225 » { "EmcRdv", token_emc_rdv,
226 » » field_type_u32, NULL },
227 » { "EmcRefresh", token_emc_refresh,
228 » » field_type_u32, NULL },
229 » { "EmcBurstRefreshNum", token_emc_burst_refresh_num,
230 » » field_type_u32, NULL },
231 » { "EmcPdEx2Wr", token_emc_pdex2wr,
232 » » field_type_u32, NULL },
233 » { "EmcPdEx2Rd", token_emc_pdex2rd,
234 » » field_type_u32, NULL },
235 » { "EmcPChg2Pden", token_emc_pchg2pden,
236 » » field_type_u32, NULL },
237 » { "EmcAct2Pden", token_emc_act2pden,
238 » » field_type_u32, NULL },
239 » { "EmcAr2Pden", token_emc_ar2pden,
240 » » field_type_u32, NULL },
241 » { "EmcRw2Pden", token_emc_rw2pden,
242 » » field_type_u32, NULL },
243 » { "EmcTxsr", token_emc_txsr,
244 » » field_type_u32, NULL },
245 » { "EmcTcke", token_emc_tcke,
246 » » field_type_u32, NULL },
247 » { "EmcTfaw", token_emc_tfaw,
248 » » field_type_u32, NULL },
249 » { "EmcTrpab", token_emc_trpab,
250 » » field_type_u32, NULL },
251 » { "EmcTClkStable", token_emc_tclkstable,
252 » » field_type_u32, NULL },
253 » { "EmcTClkStop", token_emc_tclkstop,
254 » » field_type_u32, NULL },
255 » { "EmcTRefBw", token_emc_trefbw,
256 » » field_type_u32, NULL },
257 » { "EmcFbioCfg1", token_emc_fbio_cfg1,
258 » » field_type_u32, NULL },
259 » { "EmcFbioDqsibDlyMsb", token_emc_fbio_dqsib_dly_msb,
260 » » field_type_u32, NULL },
261 » { "EmcFbioDqsibDly", token_emc_fbio_dqsib_dly,
262 » » field_type_u32, NULL },
263 » { "EmcFbioQuseDlyMsb", token_emc_fbio_quse_dly_msb,
264 » » field_type_u32, NULL },
265 » { "EmcFbioQuseDly", token_emc_fbio_quse_dly,
266 » » field_type_u32, NULL },
267 » { "EmcFbioCfg5", token_emc_fbio_cfg5,
268 » » field_type_u32, NULL },
269 » { "EmcFbioCfg6", token_emc_fbio_cfg6,
270 » » field_type_u32, NULL },
271 » { "EmcFbioSpare", token_emc_fbio_spare,
272 » » field_type_u32, NULL },
273 » { "EmcMrsResetDllWait", token_emc_mrs_reset_dll_wait,
274 » » field_type_u32, NULL },
275 » { "EmcMrsResetDll", token_emc_mrs_reset_dll,
276 » » field_type_u32, NULL },
277 » { "EmcMrsDdr2DllReset", token_emc_mrs_ddr2_dll_reset,
278 » » field_type_u32, NULL },
279 » { "EmcMrs", token_emc_mrs,
280 » » field_type_u32, NULL },
281 » { "EmcEmrsEmr2", token_emc_emrs_emr2,
282 » » field_type_u32, NULL },
283 » { "EmcEmrsEmr3", token_emc_emrs_emr3,
284 » » field_type_u32, NULL },
285 » { "EmcEmrsDdr2DllEnable", token_emc_emrs_ddr2_dll_enable,
286 » » field_type_u32, NULL },
287 » { "EmcEmrsDdr2OcdCalib", token_emc_emrs_ddr2_ocd_calib,
288 » » field_type_u32, NULL },
289 » { "EmcEmrs", token_emc_emrs,
290 » » field_type_u32, NULL },
291 » { "EmcMrw1", token_emc_mrw1,
292 » » field_type_u32, NULL },
293 » { "EmcMrw2", token_emc_mrw2,
294 » » field_type_u32, NULL },
295 » { "EmcMrw3", token_emc_mrw3,
296 » » field_type_u32, NULL },
297 » { "EmcMrwResetCommand", token_emc_mrw_reset_command,
298 » » field_type_u32, NULL },
299 » { "EmcMrwResetNInitWait", token_emc_mrw_reset_ninit_wait,
300 » » field_type_u32, NULL },
301 » { "EmcAdrCfg1", token_emc_adr_cfg1,
302 » » field_type_u32, NULL },
303 » { "EmcAdrCfg", token_emc_adr_cfg,
304 » » field_type_u32, NULL },
305 » { "McEmemCfg", token_mc_emem_Cfg,
306 » » field_type_u32, NULL },
307 » { "McLowLatencyConfig", token_mc_lowlatency_config,
308 » » field_type_u32, NULL },
309 » { "EmcCfg2", token_emc_cfg2,
310 » » field_type_u32, NULL },
311 » { "EmcCfgDigDll", token_emc_cfg_dig_dll,
312 » » field_type_u32, NULL },
313 » { "EmcCfgClktrim0", token_emc_cfg_clktrim0,
314 » » field_type_u32, NULL },
315 » { "EmcCfgClktrim1", token_emc_cfg_clktrim1,
316 » » field_type_u32, NULL },
317 » { "EmcCfgClktrim2", token_emc_cfg_clktrim2,
318 » » field_type_u32, NULL },
319 » { "EmcCfg", token_emc_cfg,
320 » » field_type_u32, NULL },
321 » { "EmcDbg", token_emc_dbg,
322 » » field_type_u32, NULL },
323 » { "AhbArbitrationXbarCtrl", token_ahb_arbitration_xbar_ctrl,
324 » » field_type_u32, NULL },
325 » { "EmcDllXformDqs", token_emc_dll_xform_dqs,
326 » » field_type_u32, NULL },
327 » { "EmcDllXformQUse", token_emc_dll_xform_quse,
328 » » field_type_u32, NULL },
329 » { "WarmBootWait", token_warm_boot_wait,
330 » » field_type_u32, NULL },
331 » { "EmcCttTermCtrl", token_emc_ctt_term_ctrl,
332 » » field_type_u32, NULL },
333 » { "EmcOdtWrite", token_emc_odt_write,
334 » » field_type_u32, NULL },
335 » { "EmcOdtRead", token_emc_odt_read,
336 » » field_type_u32, NULL },
337 » { "EmcZcalRefCnt", token_emc_zcal_ref_cnt,
338 » » field_type_u32, NULL },
339 » { "EmcZcalWaitCnt", token_emc_zcal_wait_cnt,
340 » » field_type_u32, NULL },
341 » { "EmcZcalMrwCmd", token_emc_zcal_mrw_cmd,
342 » » field_type_u32, NULL },
343 » { "EmcMrwZqInitDev0", token_emc_mrw_zq_init_dev0,
344 » » field_type_u32, NULL },
345 » { "EmcMrwZqInitDev1", token_emc_mrw_zq_init_dev1,
346 » » field_type_u32, NULL },
347 » { "EmcMrwZqInitWait", token_emc_mrw_zq_init_wait,
348 » » field_type_u32, NULL },
349 » { "EmcDdr2Wait", token_emc_ddr2_wait,
350 » » field_type_u32, NULL },
351 » { "PmcDdrPwr", token_pmc_ddr_pwr,
352 » » field_type_u32, NULL },
353 » { "ApbMiscGpXm2CfgAPadCtrl", token_apb_misc_gp_xm2cfga_pad_ctrl,
354 » » field_type_u32, NULL },
355 » { "ApbMiscGpXm2CfgCPadCtrl2", token_apb_misc_gp_xm2cfgc_pad_ctrl2,
356 » » field_type_u32, NULL },
357 » { "ApbMiscGpXm2CfgCPadCtrl", token_apb_misc_gp_xm2cfgc_pad_ctrl,
358 » » field_type_u32, NULL },
359 » { "ApbMiscGpXm2CfgDPadCtrl2", token_apb_misc_gp_xm2cfgd_pad_ctrl2,
360 » » field_type_u32, NULL },
361 » { "ApbMiscGpXm2CfgDPadCtrl", token_apb_misc_gp_xm2cfgd_pad_ctrl,
362 » » field_type_u32, NULL },
363 » { "ApbMiscGpXm2ClkCfgPadCtrl", token_apb_misc_gp_xm2clkcfg_Pad_ctrl,
364 » » field_type_u32, NULL },
365 » { "ApbMiscGpXm2CompPadCtrl", token_apb_misc_gp_xm2comp_pad_ctrl,
366 » » field_type_u32, NULL },
367 » { "ApbMiscGpXm2VttGenPadCtrl", token_apb_misc_gp_xm2vttgen_pad_ctrl
368 » » ,field_type_u32, NULL },
369 172
370 » { NULL, 0, 0, NULL } 173 » { "PllMChargePumpSetupControl", TOKEN(pllm_charge_pump_setup_ctrl) },
174 » { "PllMLoopFilterSetupControl", TOKEN(pllm_loop_filter_setup_ctrl) },
175 » { "PllMInputDivider", TOKEN(pllm_input_divider) },
176 » { "PllMFeedbackDivider", TOKEN(pllm_feedback_divider) },
177 » { "PllMPostDivider", TOKEN(pllm_post_divider) },
178 » { "PllMStableTime", TOKEN(pllm_stable_time) },
179 » { "EmcClockDivider", TOKEN(emc_clock_divider) },
180 » { "EmcAutoCalInterval", TOKEN(emc_auto_cal_interval) },
181 » { "EmcAutoCalConfig", TOKEN(emc_auto_cal_config) },
182 » { "EmcAutoCalWait", TOKEN(emc_auto_cal_wait) },
183 » { "EmcPinProgramWait", TOKEN(emc_pin_program_wait) },
184 » { "EmcRc", TOKEN(emc_rc) },
185 » { "EmcRfc", TOKEN(emc_rfc) },
186 » { "EmcRas", TOKEN(emc_ras) },
187 » { "EmcRp", TOKEN(emc_rp) },
188 » { "EmcR2w", TOKEN(emc_r2w) },
189 » { "EmcW2r", TOKEN(emc_w2r) },
190 » { "EmcR2p", TOKEN(emc_r2p) },
191 » { "EmcW2p", TOKEN(emc_w2p) },
192 » { "EmcRrd", TOKEN(emc_rrd) },
193 » { "EmcRdRcd", TOKEN(emc_rd_rcd) },
194 » { "EmcWrRcd", TOKEN(emc_wr_rcd) },
195 » { "EmcRext", TOKEN(emc_rext) },
196 » { "EmcWdv", TOKEN(emc_wdv) },
197 » { "EmcQUseExtra", TOKEN(emc_quse_extra) },
198 » { "EmcQUse", TOKEN(emc_quse) },
199 » { "EmcQRst", TOKEN(emc_qrst) },
200 » { "EmcQSafe", TOKEN(emc_qsafe) },
201 » { "EmcRdv", TOKEN(emc_rdv) },
202 » { "EmcRefresh", TOKEN(emc_refresh) },
203 » { "EmcBurstRefreshNum", TOKEN(emc_burst_refresh_num) },
204 » { "EmcPdEx2Wr", TOKEN(emc_pdex2wr) },
205 » { "EmcPdEx2Rd", TOKEN(emc_pdex2rd) },
206 » { "EmcPChg2Pden", TOKEN(emc_pchg2pden) },
207 » { "EmcAct2Pden", TOKEN(emc_act2pden) },
208 » { "EmcAr2Pden", TOKEN(emc_ar2pden) },
209 » { "EmcRw2Pden", TOKEN(emc_rw2pden) },
210 » { "EmcTxsr", TOKEN(emc_txsr) },
211 » { "EmcTcke", TOKEN(emc_tcke) },
212 » { "EmcTfaw", TOKEN(emc_tfaw) },
213 » { "EmcTrpab", TOKEN(emc_trpab) },
214 » { "EmcTClkStable", TOKEN(emc_tclkstable) },
215 » { "EmcTClkStop", TOKEN(emc_tclkstop) },
216 » { "EmcTRefBw", TOKEN(emc_trefbw) },
217 » { "EmcFbioCfg1", TOKEN(emc_fbio_cfg1) },
218 » { "EmcFbioDqsibDlyMsb", TOKEN(emc_fbio_dqsib_dly_msb) },
219 » { "EmcFbioDqsibDly", TOKEN(emc_fbio_dqsib_dly) },
220 » { "EmcFbioQuseDlyMsb", TOKEN(emc_fbio_quse_dly_msb) },
221 » { "EmcFbioQuseDly", TOKEN(emc_fbio_quse_dly) },
222 » { "EmcFbioCfg5", TOKEN(emc_fbio_cfg5) },
223 » { "EmcFbioCfg6", TOKEN(emc_fbio_cfg6) },
224 » { "EmcFbioSpare", TOKEN(emc_fbio_spare) },
225 » { "EmcMrsResetDllWait", TOKEN(emc_mrs_reset_dll_wait) },
226 » { "EmcMrsResetDll", TOKEN(emc_mrs_reset_dll) },
227 » { "EmcMrsDdr2DllReset", TOKEN(emc_mrs_ddr2_dll_reset) },
228 » { "EmcMrs", TOKEN(emc_mrs) },
229 » { "EmcEmrsEmr2", TOKEN(emc_emrs_emr2) },
230 » { "EmcEmrsEmr3", TOKEN(emc_emrs_emr3) },
231 » { "EmcEmrsDdr2DllEnable", TOKEN(emc_emrs_ddr2_dll_enable) },
232 » { "EmcEmrsDdr2OcdCalib", TOKEN(emc_emrs_ddr2_ocd_calib) },
233 » { "EmcEmrs", TOKEN(emc_emrs) },
234 » { "EmcMrw1", TOKEN(emc_mrw1) },
235 » { "EmcMrw2", TOKEN(emc_mrw2) },
236 » { "EmcMrw3", TOKEN(emc_mrw3) },
237 » { "EmcMrwResetCommand", TOKEN(emc_mrw_reset_command) },
238 » { "EmcMrwResetNInitWait", TOKEN(emc_mrw_reset_ninit_wait) },
239 » { "EmcAdrCfg1", TOKEN(emc_adr_cfg1) },
240 » { "EmcAdrCfg", TOKEN(emc_adr_cfg) },
241 » { "McEmemCfg", TOKEN(mc_emem_Cfg) },
242 » { "McLowLatencyConfig", TOKEN(mc_lowlatency_config) },
243 » { "EmcCfg2", TOKEN(emc_cfg2) },
244 » { "EmcCfgDigDll", TOKEN(emc_cfg_dig_dll) },
245 » { "EmcCfgClktrim0", TOKEN(emc_cfg_clktrim0) },
246 » { "EmcCfgClktrim1", TOKEN(emc_cfg_clktrim1) },
247 » { "EmcCfgClktrim2", TOKEN(emc_cfg_clktrim2) },
248 » { "EmcCfg", TOKEN(emc_cfg) },
249 » { "EmcDbg", TOKEN(emc_dbg) },
250 » { "AhbArbitrationXbarCtrl", TOKEN(ahb_arbitration_xbar_ctrl) },
251 » { "EmcDllXformDqs", TOKEN(emc_dll_xform_dqs) },
252 » { "EmcDllXformQUse", TOKEN(emc_dll_xform_quse) },
253 » { "WarmBootWait", TOKEN(warm_boot_wait) },
254 » { "EmcCttTermCtrl", TOKEN(emc_ctt_term_ctrl) },
255 » { "EmcOdtWrite", TOKEN(emc_odt_write) },
256 » { "EmcOdtRead", TOKEN(emc_odt_read) },
257 » { "EmcZcalRefCnt", TOKEN(emc_zcal_ref_cnt) },
258 » { "EmcZcalWaitCnt", TOKEN(emc_zcal_wait_cnt) },
259 » { "EmcZcalMrwCmd", TOKEN(emc_zcal_mrw_cmd) },
260 » { "EmcMrwZqInitDev0", TOKEN(emc_mrw_zq_init_dev0) },
261 » { "EmcMrwZqInitDev1", TOKEN(emc_mrw_zq_init_dev1) },
262 » { "EmcMrwZqInitWait", TOKEN(emc_mrw_zq_init_wait) },
263 » { "EmcDdr2Wait", TOKEN(emc_ddr2_wait) },
264 » { "PmcDdrPwr", TOKEN(pmc_ddr_pwr) },
265 » { "ApbMiscGpXm2CfgAPadCtrl", TOKEN(apb_misc_gp_xm2cfga_pad_ctrl) },
266 » { "ApbMiscGpXm2CfgCPadCtrl2", TOKEN(apb_misc_gp_xm2cfgc_pad_ctrl2) },
267 » { "ApbMiscGpXm2CfgCPadCtrl", TOKEN(apb_misc_gp_xm2cfgc_pad_ctrl) },
268 » { "ApbMiscGpXm2CfgDPadCtrl2", TOKEN(apb_misc_gp_xm2cfgd_pad_ctrl2) },
269 » { "ApbMiscGpXm2CfgDPadCtrl", TOKEN(apb_misc_gp_xm2cfgd_pad_ctrl) },
270 » { "ApbMiscGpXm2ClkCfgPadCtrl", TOKEN(apb_misc_gp_xm2clkcfg_Pad_ctrl)},
271 » { "ApbMiscGpXm2CompPadCtrl", TOKEN(apb_misc_gp_xm2comp_pad_ctrl) },
272 » { "ApbMiscGpXm2VttGenPadCtrl", TOKEN(apb_misc_gp_xm2vttgen_pad_ctrl)},
273 » { NULL, 0, 0, 0, NULL }
371 }; 274 };
372 275
373 static field_item s_nand_table[] = 276 #undef TOKEN
277 #define TOKEN(name)» » » » » » » \
278 » token_##name, nvbct_lib_id_nand_##name, field_type_u32, NULL
279
280 field_item s_nand_table[] =
374 { 281 {
375 » { "ClockDivider", token_clock_divider, field_type_u32, NULL }, 282 » { "ClockDivider", TOKEN(clock_divider) },
376 /* Note: NandTiming2 must appear before NandTiming, because NandTiming 283 /* Note: NandTiming2 must appear before NandTiming, because NandTiming
377 * is a prefix of NandTiming2 and would otherwise match first. 284 * is a prefix of NandTiming2 and would otherwise match first.
378 */ 285 */
379 » { "NandTiming2", token_nand_timing2, field_type_u32, NULL }, 286 » { "NandTiming2", TOKEN(nand_timing2) },
380 » { "NandTiming", token_nand_timing, field_type_u32, NULL }, 287 » { "NandTiming", TOKEN(nand_timing) },
381 » { "BlockSizeLog2", token_block_size_log2, field_type_u32, NULL }, 288 » { "BlockSizeLog2", TOKEN(block_size_log2) },
382 » { "PageSizeLog2", token_page_size_log2, field_type_u32, NULL }, 289 » { "PageSizeLog2", TOKEN(page_size_log2) },
383 » { NULL, 0, 0, NULL } 290 » { NULL, 0, 0, 0, NULL }
384 }; 291 };
385 292
386 static field_item s_sdmmc_table[] = 293 #undef TOKEN
294 #define TOKEN(name)» » » » » » » \
295 » token_##name, nvbct_lib_id_sdmmc_##name, field_type_u32, NULL
296
297 field_item s_sdmmc_table[] =
387 { 298 {
388 » { "ClockDivider", token_clock_divider, field_type_u32, NULL }, 299 » { "ClockDivider", TOKEN(clock_divider) },
389 » { "DataWidth", token_data_width, 300 » { "DataWidth",
390 » » field_type_enum, s_sdmmc_data_width_table }, 301 » token_data_width,
391 » { "MaxPowerClassSupported", token_max_power_class_supported, 302 » nvbct_lib_id_sdmmc_data_width,
392 » » field_type_u32, NULL }, 303 » field_type_enum,
393 304 » s_sdmmc_data_width_table },
394 » { NULL, 0, 0, NULL } 305 » { "MaxPowerClassSupported", TOKEN(max_power_class_supported) },
306 » { NULL, 0, 0, 0, NULL }
395 }; 307 };
396 308
397 static field_item s_spiflash_table[] = 309 #undef TOKEN
310 #define TOKEN(name)» » » » » » » \
311 » token_##name, nvbct_lib_id_spiflash_##name, field_type_u8, NULL
312
313 field_item s_spiflash_table[] =
398 { 314 {
399 » { "ReadCommandTypeFast", token_read_command_type_fast, 315 » { "ReadCommandTypeFast", TOKEN(read_command_type_fast) },
400 » » field_type_u8, NULL }, 316 » { "ClockDivider", TOKEN(clock_divider) },
401 » { "ClockDivider", token_clock_divider, field_type_u8, NULL }, 317 » { "ClockSource",
402 » { "ClockSource", token_clock_source, 318 » token_clock_source,
403 » » field_type_enum, s_spi_clock_source_table }, 319 » nvbct_lib_id_spiflash_clock_source,
404 320 » field_type_enum,
405 » { NULL, 0, 0, NULL } 321 » s_spi_clock_source_table },
322 » { NULL, 0, 0, 0, NULL }
406 }; 323 };
407 324
408 static parse_subfield_item s_device_type_table[] = 325 static parse_subfield_item s_device_type_table[] =
409 { 326 {
410 { "NandParams.", token_nand_params, 327 { "NandParams.", token_nand_params,
411 s_nand_table, set_nand_param }, 328 s_nand_table, set_nand_param },
412 { "SdmmcParams.", token_sdmmc_params, 329 { "SdmmcParams.", token_sdmmc_params,
413 s_sdmmc_table, set_sdmmc_param }, 330 s_sdmmc_table, set_sdmmc_param },
414 { "SpiFlashParams.", token_spiflash_params, 331 { "SpiFlashParams.", token_spiflash_params,
415 s_spiflash_table, set_spiflash_param }, 332 s_spiflash_table, set_spiflash_param },
(...skipping 677 matching lines...) Expand 10 before | Expand all | Expand 10 after
1093 break; 1010 break;
1094 } 1011 }
1095 } 1012 }
1096 1013
1097 return; 1014 return;
1098 1015
1099 error: 1016 error:
1100 printf("Error parsing: %s\n", buffer); 1017 printf("Error parsing: %s\n", buffer);
1101 exit(1); 1018 exit(1);
1102 } 1019 }
OLDNEW
« no previous file with comments | « parse.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698