If you want to use fixed DDR registers configurations to initialize DDR controller, you need to define CONFIG_STATIC_DDR in platform_def.h, define function board_static_ddr and structure ddr_cfg_regs in plat/nxp/soc-ls1088/ls1088ardb/ddr_init.c in atf folder. You could refer to plat/nxp/soc-ls1046/ls1046ardb/ddr_init.c.
For example
In plat/nxp/soc-ls1088/ls1088ardb/platform_def.h
#define NXP_DDRCLK_FREQ 100000000
#define NUM_OF_DDRC 2
#define DDRC_NUM_DIMM 2
#define CONFIG_STATIC_DDR
In plat/nxp/soc-ls1088/ls1088ardb/ddr_init.c
#ifdef CONFIG_STATIC_DDR
const struct ddr_cfg_regs static_1600 = {
.cs[0].config = 0x80040322,
.cs[0].bnds = 0x1FF,
.cs[1].config = 0x80000322,
.cs[1].bnds = 0x1FF,
.sdram_cfg[0] = 0xE5004000,
.sdram_cfg[1] = 0x401151,
.sdram_cfg[2] = 0x0,
.timing_cfg[0] = 0x91550018,
.timing_cfg[1] = 0xBAB48E44,
.timing_cfg[2] = 0x490111,
.timing_cfg[3] = 0x10C1000,
.timing_cfg[4] = 0x220002,
.timing_cfg[5] = 0x3401400,
.timing_cfg[6] = 0x0,
.timing_cfg[7] = 0x13300000,
.timing_cfg[8] = 0x1224800,
.timing_cfg[9] = 0x0,
.dq_map[0] = 0x32C57554,
.dq_map[1] = 0xD4BB0BD4,
.dq_map[2] = 0x2EC2F554,
.dq_map[3] = 0xD95D4001,
.sdram_mode[0] = 0x3010211,
.sdram_mode[1] = 0x0,
.sdram_mode[9] = 0x400000,
.sdram_mode[8] = 0x500,
.sdram_mode[2] = 0x10211,
.sdram_mode[3] = 0x0,
.sdram_mode[10] = 0x400,
.sdram_mode[11] = 0x400000,
.sdram_mode[4] = 0x10211,
.sdram_mode[5] = 0x0,
.sdram_mode[12] = 0x400,
.sdram_mode[13] = 0x400000,
.sdram_mode[6] = 0x10211,
.sdram_mode[7] = 0x0,
.sdram_mode[14] = 0x400,
.sdram_mode[15] = 0x400000,
.interval = 0x18600618,
.zq_cntl = 0x8A090705,
.ddr_sr_cntr = 0x0,
.clk_cntl = 0x2000000,
.cdr[0] = 0x80040000,
.cdr[1] = 0xC1,
.wrlvl_cntl[0] = 0x86750607,
.wrlvl_cntl[1] = 0x8090A0B,
.wrlvl_cntl[2] = 0xD0E0F0C,
};
long long board_static_ddr(struct ddr_info *priv)
{
memcpy(&priv->ddr_reg, &static_1600, sizeof(static_1600));
return 0x100000000; /*hardcoded DDR size 4GB*/
}