| Index: nvbctlib_ap20.c
|
| diff --git a/nvbctlib_ap20.c b/nvbctlib_ap20.c
|
| index b1a902472ff5b832f73220aab1ba774d34573a39..c2ba2c26a17e3ae6c4c096374c8ba5ece564a2a6 100644
|
| --- a/nvbctlib_ap20.c
|
| +++ b/nvbctlib_ap20.c
|
| @@ -28,6 +28,16 @@
|
| /* nvbctlib_ap20.c: The implementation of the nvbctlib API for AP20. */
|
|
|
| /* Definitions that simplify the code which follows. */
|
| +#define CASE_GET_SDRAM_PARAM(x) \
|
| +case nvbct_lib_id_sdram_##x:\
|
| + *data = bct_ptr->sdram_params[set].x; \
|
| + break
|
| +
|
| +#define CASE_SET_SDRAM_PARAM(x) \
|
| +case nvbct_lib_id_sdram_##x:\
|
| + bct_ptr->sdram_params[set].x = data; \
|
| + break
|
| +
|
| #define CASE_GET_DEV_PARAM(dev, x) \
|
| case nvbct_lib_id_##dev##_##x:\
|
| *data = bct_ptr->dev_params[set].dev##_params.x; \
|
| @@ -83,6 +93,254 @@ case nvbct_lib_id_##id:\
|
| break
|
|
|
| static int
|
| +get_sdram_params(u_int32_t set,
|
| + nvbct_lib_id id,
|
| + u_int32_t *data,
|
| + u_int8_t *bct)
|
| +{
|
| + nvboot_config_table *bct_ptr = (nvboot_config_table*)bct;
|
| +
|
| + if (set >= NVBOOT_BCT_MAX_SDRAM_SETS)
|
| + return ENODATA;
|
| + if (data == NULL || bct == NULL)
|
| + return -ENODATA;
|
| +
|
| + switch (id) {
|
| +
|
| + CASE_GET_SDRAM_PARAM(memory_type);
|
| + CASE_GET_SDRAM_PARAM(pllm_charge_pump_setup_ctrl);
|
| + CASE_GET_SDRAM_PARAM(pllm_loop_filter_setup_ctrl);
|
| + CASE_GET_SDRAM_PARAM(pllm_input_divider);
|
| + CASE_GET_SDRAM_PARAM(pllm_feedback_divider);
|
| + CASE_GET_SDRAM_PARAM(pllm_post_divider);
|
| + CASE_GET_SDRAM_PARAM(pllm_stable_time);
|
| + CASE_GET_SDRAM_PARAM(emc_clock_divider);
|
| + CASE_GET_SDRAM_PARAM(emc_auto_cal_interval);
|
| + CASE_GET_SDRAM_PARAM(emc_auto_cal_config);
|
| + CASE_GET_SDRAM_PARAM(emc_auto_cal_wait);
|
| + CASE_GET_SDRAM_PARAM(emc_pin_program_wait);
|
| + CASE_GET_SDRAM_PARAM(emc_rc);
|
| + CASE_GET_SDRAM_PARAM(emc_rfc);
|
| + CASE_GET_SDRAM_PARAM(emc_ras);
|
| + CASE_GET_SDRAM_PARAM(emc_rp);
|
| + CASE_GET_SDRAM_PARAM(emc_r2w);
|
| + CASE_GET_SDRAM_PARAM(emc_w2r);
|
| + CASE_GET_SDRAM_PARAM(emc_r2p);
|
| + CASE_GET_SDRAM_PARAM(emc_w2p);
|
| + CASE_GET_SDRAM_PARAM(emc_rd_rcd);
|
| + CASE_GET_SDRAM_PARAM(emc_wr_rcd);
|
| + CASE_GET_SDRAM_PARAM(emc_rrd);
|
| + CASE_GET_SDRAM_PARAM(emc_rext);
|
| + CASE_GET_SDRAM_PARAM(emc_wdv);
|
| + CASE_GET_SDRAM_PARAM(emc_quse);
|
| + CASE_GET_SDRAM_PARAM(emc_qrst);
|
| + CASE_GET_SDRAM_PARAM(emc_qsafe);
|
| + CASE_GET_SDRAM_PARAM(emc_rdv);
|
| + CASE_GET_SDRAM_PARAM(emc_refresh);
|
| + CASE_GET_SDRAM_PARAM(emc_burst_refresh_num);
|
| + CASE_GET_SDRAM_PARAM(emc_pdex2wr);
|
| + CASE_GET_SDRAM_PARAM(emc_pdex2rd);
|
| + CASE_GET_SDRAM_PARAM(emc_pchg2pden);
|
| + CASE_GET_SDRAM_PARAM(emc_act2pden);
|
| + CASE_GET_SDRAM_PARAM(emc_ar2pden);
|
| + CASE_GET_SDRAM_PARAM(emc_rw2pden);
|
| + CASE_GET_SDRAM_PARAM(emc_txsr);
|
| + CASE_GET_SDRAM_PARAM(emc_tcke);
|
| + CASE_GET_SDRAM_PARAM(emc_tfaw);
|
| + CASE_GET_SDRAM_PARAM(emc_trpab);
|
| + CASE_GET_SDRAM_PARAM(emc_tclkstable);
|
| + CASE_GET_SDRAM_PARAM(emc_tclkstop);
|
| + CASE_GET_SDRAM_PARAM(emc_trefbw);
|
| + CASE_GET_SDRAM_PARAM(emc_quse_extra);
|
| + CASE_GET_SDRAM_PARAM(emc_fbio_cfg1);
|
| + CASE_GET_SDRAM_PARAM(emc_fbio_dqsib_dly);
|
| + CASE_GET_SDRAM_PARAM(emc_fbio_dqsib_dly_msb);
|
| + CASE_GET_SDRAM_PARAM(emc_fbio_quse_dly);
|
| + CASE_GET_SDRAM_PARAM(emc_fbio_quse_dly_msb);
|
| + CASE_GET_SDRAM_PARAM(emc_fbio_cfg5);
|
| + CASE_GET_SDRAM_PARAM(emc_fbio_cfg6);
|
| + CASE_GET_SDRAM_PARAM(emc_fbio_spare);
|
| + CASE_GET_SDRAM_PARAM(emc_mrs);
|
| + CASE_GET_SDRAM_PARAM(emc_emrs);
|
| + CASE_GET_SDRAM_PARAM(emc_mrw1);
|
| + CASE_GET_SDRAM_PARAM(emc_mrw2);
|
| + CASE_GET_SDRAM_PARAM(emc_mrw3);
|
| + CASE_GET_SDRAM_PARAM(emc_mrw_reset_command);
|
| + CASE_GET_SDRAM_PARAM(emc_mrw_reset_ninit_wait);
|
| + CASE_GET_SDRAM_PARAM(emc_adr_cfg);
|
| + CASE_GET_SDRAM_PARAM(emc_adr_cfg1);
|
| + CASE_GET_SDRAM_PARAM(mc_emem_Cfg);
|
| + CASE_GET_SDRAM_PARAM(mc_lowlatency_config);
|
| + CASE_GET_SDRAM_PARAM(emc_cfg);
|
| + CASE_GET_SDRAM_PARAM(emc_cfg2);
|
| + CASE_GET_SDRAM_PARAM(emc_dbg);
|
| + CASE_GET_SDRAM_PARAM(ahb_arbitration_xbar_ctrl);
|
| + CASE_GET_SDRAM_PARAM(emc_cfg_dig_dll);
|
| + CASE_GET_SDRAM_PARAM(emc_dll_xform_dqs);
|
| + CASE_GET_SDRAM_PARAM(emc_dll_xform_quse);
|
| + CASE_GET_SDRAM_PARAM(warm_boot_wait);
|
| + CASE_GET_SDRAM_PARAM(emc_ctt_term_ctrl);
|
| + CASE_GET_SDRAM_PARAM(emc_odt_write);
|
| + CASE_GET_SDRAM_PARAM(emc_odt_read);
|
| + CASE_GET_SDRAM_PARAM(emc_zcal_ref_cnt);
|
| + CASE_GET_SDRAM_PARAM(emc_zcal_wait_cnt);
|
| + CASE_GET_SDRAM_PARAM(emc_zcal_mrw_cmd);
|
| + CASE_GET_SDRAM_PARAM(emc_mrs_reset_dll);
|
| + CASE_GET_SDRAM_PARAM(emc_mrw_zq_init_dev0);
|
| + CASE_GET_SDRAM_PARAM(emc_mrw_zq_init_dev1);
|
| + CASE_GET_SDRAM_PARAM(emc_mrw_zq_init_wait);
|
| + CASE_GET_SDRAM_PARAM(emc_mrs_reset_dll_wait);
|
| + CASE_GET_SDRAM_PARAM(emc_emrs_emr2);
|
| + CASE_GET_SDRAM_PARAM(emc_emrs_emr3);
|
| + CASE_GET_SDRAM_PARAM(emc_emrs_ddr2_dll_enable);
|
| + CASE_GET_SDRAM_PARAM(emc_mrs_ddr2_dll_reset);
|
| + CASE_GET_SDRAM_PARAM(emc_emrs_ddr2_ocd_calib);
|
| + CASE_GET_SDRAM_PARAM(emc_ddr2_wait);
|
| + CASE_GET_SDRAM_PARAM(emc_cfg_clktrim0);
|
| + CASE_GET_SDRAM_PARAM(emc_cfg_clktrim1);
|
| + CASE_GET_SDRAM_PARAM(emc_cfg_clktrim2);
|
| + CASE_GET_SDRAM_PARAM(pmc_ddr_pwr);
|
| + CASE_GET_SDRAM_PARAM(apb_misc_gp_xm2cfga_pad_ctrl);
|
| + CASE_GET_SDRAM_PARAM(apb_misc_gp_xm2cfgc_pad_ctrl);
|
| + CASE_GET_SDRAM_PARAM(apb_misc_gp_xm2cfgc_pad_ctrl2);
|
| + CASE_GET_SDRAM_PARAM(apb_misc_gp_xm2cfgd_pad_ctrl);
|
| + CASE_GET_SDRAM_PARAM(apb_misc_gp_xm2cfgd_pad_ctrl2);
|
| + CASE_GET_SDRAM_PARAM(apb_misc_gp_xm2clkcfg_Pad_ctrl);
|
| + CASE_GET_SDRAM_PARAM(apb_misc_gp_xm2comp_pad_ctrl);
|
| + CASE_GET_SDRAM_PARAM(apb_misc_gp_xm2vttgen_pad_ctrl);
|
| +
|
| + default:
|
| + return -ENODATA;
|
| + }
|
| +
|
| + return 0;
|
| +
|
| +}
|
| +
|
| +static int
|
| +set_sdram_params(u_int32_t set,
|
| + nvbct_lib_id id,
|
| + u_int32_t data,
|
| + u_int8_t *bct)
|
| +{
|
| + nvboot_config_table *bct_ptr = (nvboot_config_table*)bct;
|
| +
|
| + if (set >= NVBOOT_BCT_MAX_SDRAM_SETS)
|
| + return ENODATA;
|
| + if (bct == NULL)
|
| + return -ENODATA;
|
| +
|
| + switch (id) {
|
| +
|
| + CASE_SET_SDRAM_PARAM(memory_type);
|
| + CASE_SET_SDRAM_PARAM(pllm_charge_pump_setup_ctrl);
|
| + CASE_SET_SDRAM_PARAM(pllm_loop_filter_setup_ctrl);
|
| + CASE_SET_SDRAM_PARAM(pllm_input_divider);
|
| + CASE_SET_SDRAM_PARAM(pllm_feedback_divider);
|
| + CASE_SET_SDRAM_PARAM(pllm_post_divider);
|
| + CASE_SET_SDRAM_PARAM(pllm_stable_time);
|
| + CASE_SET_SDRAM_PARAM(emc_clock_divider);
|
| + CASE_SET_SDRAM_PARAM(emc_auto_cal_interval);
|
| + CASE_SET_SDRAM_PARAM(emc_auto_cal_config);
|
| + CASE_SET_SDRAM_PARAM(emc_auto_cal_wait);
|
| + CASE_SET_SDRAM_PARAM(emc_pin_program_wait);
|
| + CASE_SET_SDRAM_PARAM(emc_rc);
|
| + CASE_SET_SDRAM_PARAM(emc_rfc);
|
| + CASE_SET_SDRAM_PARAM(emc_ras);
|
| + CASE_SET_SDRAM_PARAM(emc_rp);
|
| + CASE_SET_SDRAM_PARAM(emc_r2w);
|
| + CASE_SET_SDRAM_PARAM(emc_w2r);
|
| + CASE_SET_SDRAM_PARAM(emc_r2p);
|
| + CASE_SET_SDRAM_PARAM(emc_w2p);
|
| + CASE_SET_SDRAM_PARAM(emc_rd_rcd);
|
| + CASE_SET_SDRAM_PARAM(emc_wr_rcd);
|
| + CASE_SET_SDRAM_PARAM(emc_rrd);
|
| + CASE_SET_SDRAM_PARAM(emc_rext);
|
| + CASE_SET_SDRAM_PARAM(emc_wdv);
|
| + CASE_SET_SDRAM_PARAM(emc_quse);
|
| + CASE_SET_SDRAM_PARAM(emc_qrst);
|
| + CASE_SET_SDRAM_PARAM(emc_qsafe);
|
| + CASE_SET_SDRAM_PARAM(emc_rdv);
|
| + CASE_SET_SDRAM_PARAM(emc_refresh);
|
| + CASE_SET_SDRAM_PARAM(emc_burst_refresh_num);
|
| + CASE_SET_SDRAM_PARAM(emc_pdex2wr);
|
| + CASE_SET_SDRAM_PARAM(emc_pdex2rd);
|
| + CASE_SET_SDRAM_PARAM(emc_pchg2pden);
|
| + CASE_SET_SDRAM_PARAM(emc_act2pden);
|
| + CASE_SET_SDRAM_PARAM(emc_ar2pden);
|
| + CASE_SET_SDRAM_PARAM(emc_rw2pden);
|
| + CASE_SET_SDRAM_PARAM(emc_txsr);
|
| + CASE_SET_SDRAM_PARAM(emc_tcke);
|
| + CASE_SET_SDRAM_PARAM(emc_tfaw);
|
| + CASE_SET_SDRAM_PARAM(emc_trpab);
|
| + CASE_SET_SDRAM_PARAM(emc_tclkstable);
|
| + CASE_SET_SDRAM_PARAM(emc_tclkstop);
|
| + CASE_SET_SDRAM_PARAM(emc_trefbw);
|
| + CASE_SET_SDRAM_PARAM(emc_quse_extra);
|
| + CASE_SET_SDRAM_PARAM(emc_fbio_cfg1);
|
| + CASE_SET_SDRAM_PARAM(emc_fbio_dqsib_dly);
|
| + CASE_SET_SDRAM_PARAM(emc_fbio_dqsib_dly_msb);
|
| + CASE_SET_SDRAM_PARAM(emc_fbio_quse_dly);
|
| + CASE_SET_SDRAM_PARAM(emc_fbio_quse_dly_msb);
|
| + CASE_SET_SDRAM_PARAM(emc_fbio_cfg5);
|
| + CASE_SET_SDRAM_PARAM(emc_fbio_cfg6);
|
| + CASE_SET_SDRAM_PARAM(emc_fbio_spare);
|
| + CASE_SET_SDRAM_PARAM(emc_mrs);
|
| + CASE_SET_SDRAM_PARAM(emc_emrs);
|
| + CASE_SET_SDRAM_PARAM(emc_mrw1);
|
| + CASE_SET_SDRAM_PARAM(emc_mrw2);
|
| + CASE_SET_SDRAM_PARAM(emc_mrw3);
|
| + CASE_SET_SDRAM_PARAM(emc_mrw_reset_command);
|
| + CASE_SET_SDRAM_PARAM(emc_mrw_reset_ninit_wait);
|
| + CASE_SET_SDRAM_PARAM(emc_adr_cfg);
|
| + CASE_SET_SDRAM_PARAM(emc_adr_cfg1);
|
| + CASE_SET_SDRAM_PARAM(mc_emem_Cfg);
|
| + CASE_SET_SDRAM_PARAM(mc_lowlatency_config);
|
| + CASE_SET_SDRAM_PARAM(emc_cfg);
|
| + CASE_SET_SDRAM_PARAM(emc_cfg2);
|
| + CASE_SET_SDRAM_PARAM(emc_dbg);
|
| + CASE_SET_SDRAM_PARAM(ahb_arbitration_xbar_ctrl);
|
| + CASE_SET_SDRAM_PARAM(emc_cfg_dig_dll);
|
| + CASE_SET_SDRAM_PARAM(emc_dll_xform_dqs);
|
| + CASE_SET_SDRAM_PARAM(emc_dll_xform_quse);
|
| + CASE_SET_SDRAM_PARAM(warm_boot_wait);
|
| + CASE_SET_SDRAM_PARAM(emc_ctt_term_ctrl);
|
| + CASE_SET_SDRAM_PARAM(emc_odt_write);
|
| + CASE_SET_SDRAM_PARAM(emc_odt_read);
|
| + CASE_SET_SDRAM_PARAM(emc_zcal_ref_cnt);
|
| + CASE_SET_SDRAM_PARAM(emc_zcal_wait_cnt);
|
| + CASE_SET_SDRAM_PARAM(emc_zcal_mrw_cmd);
|
| + CASE_SET_SDRAM_PARAM(emc_mrs_reset_dll);
|
| + CASE_SET_SDRAM_PARAM(emc_mrw_zq_init_dev0);
|
| + CASE_SET_SDRAM_PARAM(emc_mrw_zq_init_dev1);
|
| + CASE_SET_SDRAM_PARAM(emc_mrw_zq_init_wait);
|
| + CASE_SET_SDRAM_PARAM(emc_mrs_reset_dll_wait);
|
| + CASE_SET_SDRAM_PARAM(emc_emrs_emr2);
|
| + CASE_SET_SDRAM_PARAM(emc_emrs_emr3);
|
| + CASE_SET_SDRAM_PARAM(emc_emrs_ddr2_dll_enable);
|
| + CASE_SET_SDRAM_PARAM(emc_mrs_ddr2_dll_reset);
|
| + CASE_SET_SDRAM_PARAM(emc_emrs_ddr2_ocd_calib);
|
| + CASE_SET_SDRAM_PARAM(emc_ddr2_wait);
|
| + CASE_SET_SDRAM_PARAM(emc_cfg_clktrim0);
|
| + CASE_SET_SDRAM_PARAM(emc_cfg_clktrim1);
|
| + CASE_SET_SDRAM_PARAM(emc_cfg_clktrim2);
|
| + CASE_SET_SDRAM_PARAM(pmc_ddr_pwr);
|
| + CASE_SET_SDRAM_PARAM(apb_misc_gp_xm2cfga_pad_ctrl);
|
| + CASE_SET_SDRAM_PARAM(apb_misc_gp_xm2cfgc_pad_ctrl);
|
| + CASE_SET_SDRAM_PARAM(apb_misc_gp_xm2cfgc_pad_ctrl2);
|
| + CASE_SET_SDRAM_PARAM(apb_misc_gp_xm2cfgd_pad_ctrl);
|
| + CASE_SET_SDRAM_PARAM(apb_misc_gp_xm2cfgd_pad_ctrl2);
|
| + CASE_SET_SDRAM_PARAM(apb_misc_gp_xm2clkcfg_Pad_ctrl);
|
| + CASE_SET_SDRAM_PARAM(apb_misc_gp_xm2comp_pad_ctrl);
|
| + CASE_SET_SDRAM_PARAM(apb_misc_gp_xm2vttgen_pad_ctrl);
|
| +
|
| + default:
|
| + return -ENODATA;
|
| + }
|
| +
|
| + return 0;
|
| +}
|
| +static int
|
| getdev_param(u_int32_t set,
|
| nvbct_lib_id id,
|
| u_int32_t *data,
|
| @@ -251,6 +509,7 @@ bct_get_value(nvbct_lib_id id, u_int32_t *data, u_int8_t *bct)
|
| CASE_GET_NVU32(page_size_log2);
|
| CASE_GET_NVU32(partition_size);
|
| CASE_GET_NVU32(num_param_sets);
|
| + CASE_GET_NVU32(num_sdram_sets);
|
| CASE_GET_NVU32(bootloader_used);
|
|
|
| /*
|
| @@ -294,6 +553,12 @@ bct_get_value(nvbct_lib_id id, u_int32_t *data, u_int8_t *bct)
|
| CASE_GET_CONST_PREFIX(spi_clock_source_pllm_out0, nvboot);
|
| CASE_GET_CONST_PREFIX(spi_clock_source_clockm, nvboot);
|
|
|
| + CASE_GET_CONST_PREFIX(memory_type_none, nvboot);
|
| + CASE_GET_CONST_PREFIX(memory_type_ddr, nvboot);
|
| + CASE_GET_CONST_PREFIX(memory_type_lpddr, nvboot);
|
| + CASE_GET_CONST_PREFIX(memory_type_ddr2, nvboot);
|
| + CASE_GET_CONST_PREFIX(memory_type_lpddr2, nvboot);
|
| +
|
| default:
|
| return -ENODATA;
|
| }
|
| @@ -317,6 +582,7 @@ bct_set_value(nvbct_lib_id id, u_int32_t data, u_int8_t *bct)
|
| CASE_SET_NVU32(page_size_log2);
|
| CASE_SET_NVU32(partition_size);
|
| CASE_SET_NVU32(num_param_sets);
|
| + CASE_SET_NVU32(num_sdram_sets);
|
| CASE_SET_NVU32(bootloader_used);
|
|
|
| default:
|
| @@ -379,4 +645,6 @@ nvbct_lib_get_fns(nvbct_lib_fns *fns)
|
| fns->getdev_param = getdev_param;
|
| fns->setdev_param = setdev_param;
|
|
|
| + fns->get_sdram_params = get_sdram_params;
|
| + fns->set_sdram_params = set_sdram_params;
|
| }
|
|
|