Index: set.c |
diff --git a/set.c b/set.c |
index 1b16c2194e8b67491805f7fc2edc9b0f8cf6df56..36237889e94ee3527d27dbc966843f44807952af 100644 |
--- a/set.c |
+++ b/set.c |
@@ -50,6 +50,14 @@ |
context->bct); \ |
break |
+#define CASE_SDRAM_VALUE(id) \ |
+ case token_##id: \ |
+ (void)context->bctlib.set_sdram_params(index, \ |
+ nvbct_lib_id_sdram_##id, \ |
+ value, \ |
+ context->bct); \ |
+ break |
+ |
#define DEFAULT() \ |
default: \ |
printf("Unexpected token %d at line %d\n", \ |
@@ -444,3 +452,128 @@ set_spiflash_param(build_image_context *context, |
return 0; |
} |
+ |
+int |
+set_sdram_param(build_image_context *context, |
+ u_int32_t index, |
+ parse_token token, |
+ u_int32_t value) |
+{ |
+ u_int32_t num_sdram_sets; |
+ |
+ assert(context != NULL); |
+ assert(context->bct != NULL); |
+ |
+ // Update the number of SDRAM parameter sets. |
+ GET_VALUE(num_sdram_sets, &num_sdram_sets); |
+ num_sdram_sets = NV_MAX(num_sdram_sets, index + 1); |
+ SET_VALUE(num_sdram_sets, num_sdram_sets); |
+ |
+ switch (token) { |
+ |
+ CASE_SDRAM_VALUE(memory_type); |
+ CASE_SDRAM_VALUE(pllm_charge_pump_setup_ctrl); |
+ CASE_SDRAM_VALUE(pllm_loop_filter_setup_ctrl); |
+ CASE_SDRAM_VALUE(pllm_input_divider); |
+ CASE_SDRAM_VALUE(pllm_feedback_divider); |
+ CASE_SDRAM_VALUE(pllm_post_divider); |
+ CASE_SDRAM_VALUE(pllm_stable_time); |
+ CASE_SDRAM_VALUE(emc_clock_divider); |
+ CASE_SDRAM_VALUE(emc_auto_cal_interval); |
+ CASE_SDRAM_VALUE(emc_auto_cal_config); |
+ CASE_SDRAM_VALUE(emc_auto_cal_wait); |
+ CASE_SDRAM_VALUE(emc_pin_program_wait); |
+ CASE_SDRAM_VALUE(emc_rc); |
+ CASE_SDRAM_VALUE(emc_rfc); |
+ CASE_SDRAM_VALUE(emc_ras); |
+ CASE_SDRAM_VALUE(emc_rp); |
+ CASE_SDRAM_VALUE(emc_r2w); |
+ CASE_SDRAM_VALUE(emc_w2r); |
+ CASE_SDRAM_VALUE(emc_r2p); |
+ CASE_SDRAM_VALUE(emc_w2p); |
+ CASE_SDRAM_VALUE(emc_rd_rcd); |
+ CASE_SDRAM_VALUE(emc_wr_rcd); |
+ CASE_SDRAM_VALUE(emc_rrd); |
+ CASE_SDRAM_VALUE(emc_rext); |
+ CASE_SDRAM_VALUE(emc_wdv); |
+ CASE_SDRAM_VALUE(emc_quse); |
+ CASE_SDRAM_VALUE(emc_qrst); |
+ CASE_SDRAM_VALUE(emc_qsafe); |
+ CASE_SDRAM_VALUE(emc_rdv); |
+ CASE_SDRAM_VALUE(emc_refresh); |
+ CASE_SDRAM_VALUE(emc_burst_refresh_num); |
+ CASE_SDRAM_VALUE(emc_pdex2wr); |
+ CASE_SDRAM_VALUE(emc_pdex2rd); |
+ CASE_SDRAM_VALUE(emc_pchg2pden); |
+ CASE_SDRAM_VALUE(emc_act2pden); |
+ CASE_SDRAM_VALUE(emc_ar2pden); |
+ CASE_SDRAM_VALUE(emc_rw2pden); |
+ CASE_SDRAM_VALUE(emc_txsr); |
+ CASE_SDRAM_VALUE(emc_tcke); |
+ CASE_SDRAM_VALUE(emc_tfaw); |
+ CASE_SDRAM_VALUE(emc_trpab); |
+ CASE_SDRAM_VALUE(emc_tclkstable); |
+ CASE_SDRAM_VALUE(emc_tclkstop); |
+ CASE_SDRAM_VALUE(emc_trefbw); |
+ CASE_SDRAM_VALUE(emc_quse_extra); |
+ CASE_SDRAM_VALUE(emc_fbio_cfg1); |
+ CASE_SDRAM_VALUE(emc_fbio_dqsib_dly); |
+ CASE_SDRAM_VALUE(emc_fbio_dqsib_dly_msb); |
+ CASE_SDRAM_VALUE(emc_fbio_quse_dly); |
+ CASE_SDRAM_VALUE(emc_fbio_quse_dly_msb); |
+ CASE_SDRAM_VALUE(emc_fbio_cfg5); |
+ CASE_SDRAM_VALUE(emc_fbio_cfg6); |
+ CASE_SDRAM_VALUE(emc_fbio_spare); |
+ CASE_SDRAM_VALUE(emc_mrs); |
+ CASE_SDRAM_VALUE(emc_emrs); |
+ CASE_SDRAM_VALUE(emc_mrw1); |
+ CASE_SDRAM_VALUE(emc_mrw2); |
+ CASE_SDRAM_VALUE(emc_mrw3); |
+ CASE_SDRAM_VALUE(emc_mrw_reset_command); |
+ CASE_SDRAM_VALUE(emc_mrw_reset_ninit_wait); |
+ CASE_SDRAM_VALUE(emc_adr_cfg); |
+ CASE_SDRAM_VALUE(emc_adr_cfg1); |
+ CASE_SDRAM_VALUE(mc_emem_Cfg); |
+ CASE_SDRAM_VALUE(mc_lowlatency_config); |
+ CASE_SDRAM_VALUE(emc_cfg); |
+ CASE_SDRAM_VALUE(emc_cfg2); |
+ CASE_SDRAM_VALUE(emc_dbg); |
+ CASE_SDRAM_VALUE(ahb_arbitration_xbar_ctrl); |
+ CASE_SDRAM_VALUE(emc_cfg_dig_dll); |
+ CASE_SDRAM_VALUE(emc_dll_xform_dqs); |
+ CASE_SDRAM_VALUE(emc_dll_xform_quse); |
+ CASE_SDRAM_VALUE(warm_boot_wait); |
+ CASE_SDRAM_VALUE(emc_ctt_term_ctrl); |
+ CASE_SDRAM_VALUE(emc_odt_write); |
+ CASE_SDRAM_VALUE(emc_odt_read); |
+ CASE_SDRAM_VALUE(emc_zcal_ref_cnt); |
+ CASE_SDRAM_VALUE(emc_zcal_wait_cnt); |
+ CASE_SDRAM_VALUE(emc_zcal_mrw_cmd); |
+ CASE_SDRAM_VALUE(emc_mrs_reset_dll); |
+ CASE_SDRAM_VALUE(emc_mrw_zq_init_dev0); |
+ CASE_SDRAM_VALUE(emc_mrw_zq_init_dev1); |
+ CASE_SDRAM_VALUE(emc_mrw_zq_init_wait); |
+ CASE_SDRAM_VALUE(emc_mrs_reset_dll_wait); |
+ CASE_SDRAM_VALUE(emc_emrs_emr2); |
+ CASE_SDRAM_VALUE(emc_emrs_emr3); |
+ CASE_SDRAM_VALUE(emc_emrs_ddr2_dll_enable); |
+ CASE_SDRAM_VALUE(emc_mrs_ddr2_dll_reset); |
+ CASE_SDRAM_VALUE(emc_emrs_ddr2_ocd_calib); |
+ CASE_SDRAM_VALUE(emc_ddr2_wait); |
+ CASE_SDRAM_VALUE(emc_cfg_clktrim0); |
+ CASE_SDRAM_VALUE(emc_cfg_clktrim1); |
+ CASE_SDRAM_VALUE(emc_cfg_clktrim2); |
+ CASE_SDRAM_VALUE(pmc_ddr_pwr); |
+ CASE_SDRAM_VALUE(apb_misc_gp_xm2cfga_pad_ctrl); |
+ CASE_SDRAM_VALUE(apb_misc_gp_xm2cfgc_pad_ctrl); |
+ CASE_SDRAM_VALUE(apb_misc_gp_xm2cfgc_pad_ctrl2); |
+ CASE_SDRAM_VALUE(apb_misc_gp_xm2cfgd_pad_ctrl); |
+ CASE_SDRAM_VALUE(apb_misc_gp_xm2cfgd_pad_ctrl2); |
+ CASE_SDRAM_VALUE(apb_misc_gp_xm2clkcfg_Pad_ctrl); |
+ CASE_SDRAM_VALUE(apb_misc_gp_xm2comp_pad_ctrl); |
+ CASE_SDRAM_VALUE(apb_misc_gp_xm2vttgen_pad_ctrl); |
+ |
+ DEFAULT(); |
+ } |
+ return 0; |
+} |