| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |