rockchip: rv1126: tpl support thunder boot
If CONFIG_ROCKCHIP_THUNDER_BOOT=y, it will enable ddr fast boot. Change-Id: Ia43039dd1247ebb937aaa8b6d9a9103df2dfe1f5 Signed-off-by: Tang Yun ping <typ@rock-chips.com>
This commit is contained in:
parent
0b4032fdb0
commit
d3f5f12c3c
|
|
@ -721,6 +721,12 @@ config ROCKCHIP_PRELOADER_SERIAL
|
||||||
This enable U-Boot using pre-loader atags serial configure to initialize console.
|
This enable U-Boot using pre-loader atags serial configure to initialize console.
|
||||||
It denpends on serial aliases to find pre-loader serial number.
|
It denpends on serial aliases to find pre-loader serial number.
|
||||||
|
|
||||||
|
config ROCKCHIP_THUNDER_BOOT
|
||||||
|
bool "Rockchip thunder boot"
|
||||||
|
help
|
||||||
|
This enable rockchip thunder boot. The thunder boot is mainly used for
|
||||||
|
booting system fastly.
|
||||||
|
|
||||||
config ROCKCHIP_FIT_IMAGE_PACK
|
config ROCKCHIP_FIT_IMAGE_PACK
|
||||||
bool "Rockchip fit image pack of U-Boot and TEE"
|
bool "Rockchip fit image pack of U-Boot and TEE"
|
||||||
depends on ROCKCHIP_FIT_IMAGE
|
depends on ROCKCHIP_FIT_IMAGE
|
||||||
|
|
|
||||||
|
|
@ -996,7 +996,8 @@ static void set_ds_odt(struct dram_info *dram,
|
||||||
|
|
||||||
/* RAM VREF */
|
/* RAM VREF */
|
||||||
writel(vref_out, PHY_REG(phy_base, 0x105));
|
writel(vref_out, PHY_REG(phy_base, 0x105));
|
||||||
udelay(8000);
|
if (dramtype == LPDDR3)
|
||||||
|
udelay(100);
|
||||||
|
|
||||||
if (dramtype == LPDDR4)
|
if (dramtype == LPDDR4)
|
||||||
set_lp4_vref(dram, lp4_info, freq, dst_fsp);
|
set_lp4_vref(dram, lp4_info, freq, dst_fsp);
|
||||||
|
|
@ -2696,11 +2697,13 @@ static void save_fsp_param(struct dram_info *dram, u32 dst_fsp,
|
||||||
p_fsp_param->flag = FSP_FLAG;
|
p_fsp_param->flag = FSP_FLAG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef CONFIG_ROCKCHIP_THUNDER_BOOT
|
||||||
static void copy_fsp_param_to_ddr(void)
|
static void copy_fsp_param_to_ddr(void)
|
||||||
{
|
{
|
||||||
memcpy((void *)FSP_PARAM_STORE_ADDR, (void *)&fsp_param,
|
memcpy((void *)FSP_PARAM_STORE_ADDR, (void *)&fsp_param,
|
||||||
sizeof(fsp_param));
|
sizeof(fsp_param));
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void ddr_set_rate(struct dram_info *dram,
|
void ddr_set_rate(struct dram_info *dram,
|
||||||
struct rv1126_sdram_params *sdram_params,
|
struct rv1126_sdram_params *sdram_params,
|
||||||
|
|
@ -2899,27 +2902,35 @@ static void ddr_set_rate_for_fsp(struct dram_info *dram,
|
||||||
struct rv1126_sdram_params *sdram_params)
|
struct rv1126_sdram_params *sdram_params)
|
||||||
{
|
{
|
||||||
struct ddr2_3_4_lp2_3_info *ddr_info;
|
struct ddr2_3_4_lp2_3_info *ddr_info;
|
||||||
u32 f0, f1, f2, f3;
|
u32 f0;
|
||||||
u32 dramtype = sdram_params->base.dramtype;
|
u32 dramtype = sdram_params->base.dramtype;
|
||||||
|
#ifndef CONFIG_ROCKCHIP_THUNDER_BOOT
|
||||||
|
u32 f1, f2, f3;
|
||||||
|
#endif
|
||||||
|
|
||||||
ddr_info = get_ddr_drv_odt_info(dramtype);
|
ddr_info = get_ddr_drv_odt_info(dramtype);
|
||||||
if (!ddr_info)
|
if (!ddr_info)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
f0 = (ddr_info->ddr_freq0_1 >> DDR_FREQ_F0_SHIFT) &
|
||||||
|
DDR_FREQ_MASK;
|
||||||
|
|
||||||
|
#ifndef CONFIG_ROCKCHIP_THUNDER_BOOT
|
||||||
memset((void *)FSP_PARAM_STORE_ADDR, 0, sizeof(fsp_param));
|
memset((void *)FSP_PARAM_STORE_ADDR, 0, sizeof(fsp_param));
|
||||||
memset((void *)&fsp_param, 0, sizeof(fsp_param));
|
memset((void *)&fsp_param, 0, sizeof(fsp_param));
|
||||||
|
|
||||||
f0 = (ddr_info->ddr_freq0_1 >> DDR_FREQ_F0_SHIFT) &
|
|
||||||
DDR_FREQ_MASK;
|
|
||||||
f1 = (ddr_info->ddr_freq0_1 >> DDR_FREQ_F1_SHIFT) &
|
f1 = (ddr_info->ddr_freq0_1 >> DDR_FREQ_F1_SHIFT) &
|
||||||
DDR_FREQ_MASK;
|
DDR_FREQ_MASK;
|
||||||
f2 = (ddr_info->ddr_freq2_3 >> DDR_FREQ_F2_SHIFT) &
|
f2 = (ddr_info->ddr_freq2_3 >> DDR_FREQ_F2_SHIFT) &
|
||||||
DDR_FREQ_MASK;
|
DDR_FREQ_MASK;
|
||||||
f3 = (ddr_info->ddr_freq2_3 >> DDR_FREQ_F3_SHIFT) &
|
f3 = (ddr_info->ddr_freq2_3 >> DDR_FREQ_F3_SHIFT) &
|
||||||
DDR_FREQ_MASK;
|
DDR_FREQ_MASK;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (get_wrlvl_val(dram, sdram_params))
|
if (get_wrlvl_val(dram, sdram_params))
|
||||||
printascii("get wrlvl value fail\n");
|
printascii("get wrlvl value fail\n");
|
||||||
|
|
||||||
|
#ifndef CONFIG_ROCKCHIP_THUNDER_BOOT
|
||||||
printascii("change to: ");
|
printascii("change to: ");
|
||||||
printdec(f1);
|
printdec(f1);
|
||||||
printascii("MHz\n");
|
printascii("MHz\n");
|
||||||
|
|
@ -2933,10 +2944,15 @@ static void ddr_set_rate_for_fsp(struct dram_info *dram,
|
||||||
printdec(f3);
|
printdec(f3);
|
||||||
printascii("MHz\n");
|
printascii("MHz\n");
|
||||||
ddr_set_rate(&dram_info, sdram_params, f3, f2, 3, 1, 1);
|
ddr_set_rate(&dram_info, sdram_params, f3, f2, 3, 1, 1);
|
||||||
|
#endif
|
||||||
printascii("change to: ");
|
printascii("change to: ");
|
||||||
printdec(f0);
|
printdec(f0);
|
||||||
printascii("MHz(final freq)\n");
|
printascii("MHz(final freq)\n");
|
||||||
|
#ifndef CONFIG_ROCKCHIP_THUNDER_BOOT
|
||||||
ddr_set_rate(&dram_info, sdram_params, f0, f3, 0, 0, 1);
|
ddr_set_rate(&dram_info, sdram_params, f0, f3, 0, 0, 1);
|
||||||
|
#else
|
||||||
|
ddr_set_rate(&dram_info, sdram_params, f0, sdram_params->base.ddr_freq, 1, 1, 1);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
int get_uart_config(void)
|
int get_uart_config(void)
|
||||||
|
|
@ -3013,7 +3029,9 @@ int sdram_init(void)
|
||||||
print_ddr_info(sdram_params);
|
print_ddr_info(sdram_params);
|
||||||
|
|
||||||
ddr_set_rate_for_fsp(&dram_info, sdram_params);
|
ddr_set_rate_for_fsp(&dram_info, sdram_params);
|
||||||
|
#ifndef CONFIG_ROCKCHIP_THUNDER_BOOT
|
||||||
copy_fsp_param_to_ddr();
|
copy_fsp_param_to_ddr();
|
||||||
|
#endif
|
||||||
|
|
||||||
ddr_set_atags(&dram_info, sdram_params);
|
ddr_set_atags(&dram_info, sdram_params);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue