apalis-imx6: use dynamic DDR calibration

Enable dynamic DDR calibration to have a reliable behavior on edge
temperatures conditions.

Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
This commit is contained in:
Francesco Dolcini 2021-08-31 11:46:06 +02:00 committed by Stefano Babic
parent 1194d17117
commit a591e75fbc
2 changed files with 20 additions and 0 deletions

View file

@ -1076,6 +1076,24 @@ static void ddr_init(int *table, int size)
writel(table[2 * i + 1], table[2 * i]);
}
/* Perform DDR DRAM calibration */
static void spl_dram_perform_cal(void)
{
#ifdef CONFIG_MX6_DDRCAL
int err;
struct mx6_ddr_sysinfo ddr_sysinfo = {
.dsize = 2,
};
err = mmdc_do_write_level_calibration(&ddr_sysinfo);
if (err)
printf("error %d from write level calibration\n", err);
err = mmdc_do_dqs_calibration(&ddr_sysinfo);
if (err)
printf("error %d from dqs calibration\n", err);
#endif
}
static void spl_dram_init(void)
{
int minc, maxc;
@ -1094,6 +1112,7 @@ static void spl_dram_init(void)
break;
};
udelay(100);
spl_dram_perform_cal();
}
void board_init_f(ulong dummy)

View file

@ -10,6 +10,7 @@ CONFIG_SYS_MEMTEST_END=0x10010000
CONFIG_ENV_SIZE=0x2000
CONFIG_ENV_OFFSET=0xFFFFDE00
CONFIG_MX6Q=y
CONFIG_MX6_DDRCAL=y
CONFIG_TARGET_APALIS_IMX6=y
CONFIG_SYS_I2C_MXC_I2C1=y
CONFIG_SYS_I2C_MXC_I2C2=y