Merge tag 'u-boot-imx-20231214' of https://gitlab.denx.de/u-boot/custodians/u-boot-imx
- Fix for i.MX8M Plus eDM SBC DDR timings with inline ECC - Switch to FPWM mode on Data Modul i.MX8M Plus eDM SBC so that DRAM EDAC detects more correctable errors - Fix for imx8mp-venice board DDR initialization
This commit is contained in:
commit
3ac22891cf
|
@ -1510,6 +1510,8 @@ targets += $(dtb-y)
|
|||
# Add any required device tree compiler flags here
|
||||
DTC_FLAGS += -a 0x8
|
||||
|
||||
DTC_FLAGS_imx8mp-dhcom-pdk3-overlay-rev100 += -Wno-avoid_default_addr_size -Wno-reg_format
|
||||
|
||||
PHONY += dtbs
|
||||
dtbs: $(addprefix $(obj)/, $(dtb-y))
|
||||
@:
|
||||
|
|
|
@ -56,6 +56,7 @@ int enable_i2c_clk(unsigned char enable, unsigned i2c_num)
|
|||
static struct imx_int_pll_rate_table imx8mm_fracpll_tbl[] = {
|
||||
PLL_1443X_RATE(1000000000U, 250, 3, 1, 0),
|
||||
PLL_1443X_RATE(933000000U, 311, 4, 1, 0),
|
||||
PLL_1443X_RATE(900000000U, 300, 8, 0, 0),
|
||||
PLL_1443X_RATE(800000000U, 300, 9, 0, 0),
|
||||
PLL_1443X_RATE(750000000U, 250, 8, 0, 0),
|
||||
PLL_1443X_RATE(650000000U, 325, 3, 2, 0),
|
||||
|
|
|
@ -30,6 +30,8 @@ DECLARE_GLOBAL_DATA_PTR;
|
|||
|
||||
#define WDOG_PAD_CTRL (PAD_CTL_DSE6 | PAD_CTL_ODE | PAD_CTL_PUE | PAD_CTL_PE)
|
||||
|
||||
#define DDRC_ECCCFG0_ECC_MODE_MASK 0x7
|
||||
|
||||
u8 dmo_get_memcfg(void)
|
||||
{
|
||||
struct gpio_desc gpio[4];
|
||||
|
@ -58,8 +60,16 @@ u8 dmo_get_memcfg(void)
|
|||
int board_phys_sdram_size(phys_size_t *size)
|
||||
{
|
||||
u8 memcfg = dmo_get_memcfg();
|
||||
u8 ecc = 0;
|
||||
|
||||
*size = (4ULL >> ((memcfg >> 1) & 0x3)) * SZ_1G;
|
||||
*size = 4ULL >> ((memcfg >> 1) & 0x3);
|
||||
|
||||
if (IS_ENABLED(CONFIG_IMX8M_DRAM_INLINE_ECC)) {
|
||||
/* 896 MiB, i.e. 1 GiB without 12.5% reserved for in-band ECC */
|
||||
ecc = readl(DDRC_ECCCFG0(0)) & DDRC_ECCCFG0_ECC_MODE_MASK;
|
||||
}
|
||||
|
||||
*size *= SZ_1G - (ecc ? (SZ_1G / 8) : 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -100,6 +110,12 @@ static void spl_dram_init(struct dram_timing_info *dram_timing_info[8])
|
|||
}
|
||||
|
||||
ddr_init(dram_timing_info[memcfg]);
|
||||
|
||||
if (IS_ENABLED(CONFIG_IMX8M_DRAM_INLINE_ECC)) {
|
||||
printf("DDR: Inline ECC %sabled\n",
|
||||
(readl(DDRC_ECCCFG0(0)) & DDRC_ECCCFG0_ECC_MODE_MASK) ?
|
||||
"en" : "dis");
|
||||
}
|
||||
}
|
||||
|
||||
void dmo_board_init_f(const iomux_v3_cfg_t wdog_pad,
|
||||
|
|
|
@ -19,47 +19,66 @@ static struct dram_cfg_param ddr_ddrc_cfg[] = {
|
|||
{ 0x3d400030, 0x1 },
|
||||
{ 0x3d400000, 0xa3080020 },
|
||||
{ 0x3d400020, 0x1303 },
|
||||
{ 0x3d400024, 0x1c79100 },
|
||||
{ 0x3d400024, 0x1c7cf80 },
|
||||
{ 0x3d400064, 0x710106 },
|
||||
#if IS_ENABLED(CONFIG_IMX8M_DRAM_INLINE_ECC)
|
||||
{ 0x3d400070, 0x7027fd4 },
|
||||
#else
|
||||
{ 0x3d400070, 0x7027f90 },
|
||||
#endif
|
||||
{ 0x3d400074, 0x790 },
|
||||
{ 0x3d4000d0, 0xc0030720 },
|
||||
{ 0x3d4000d0, 0xc0030721 },
|
||||
{ 0x3d4000d4, 0xb80000 },
|
||||
{ 0x3d4000dc, 0xe40036 },
|
||||
{ 0x3d4000e0, 0x330000 },
|
||||
{ 0x3d4000dc, 0xf4003f },
|
||||
{ 0x3d4000e0, 0xf30000 },
|
||||
{ 0x3d4000e8, 0x660048 },
|
||||
{ 0x3d4000ec, 0x160048 },
|
||||
{ 0x3d400100, 0x1e262028 },
|
||||
{ 0x3d400104, 0x7073b },
|
||||
{ 0x3d400100, 0x1f262028 },
|
||||
{ 0x3d400104, 0x8083b },
|
||||
{ 0x3d40010c, 0xe0e000 },
|
||||
{ 0x3d400110, 0x11040a11 },
|
||||
{ 0x3d400114, 0x2050e0e },
|
||||
{ 0x3d400118, 0x1010008 },
|
||||
{ 0x3d40011c, 0x501 },
|
||||
{ 0x3d400130, 0x20700 },
|
||||
{ 0x3d400114, 0x2050f0f },
|
||||
{ 0x3d400118, 0x1010009 },
|
||||
{ 0x3d40011c, 0x502 },
|
||||
{ 0x3d400130, 0x20800 },
|
||||
{ 0x3d400134, 0xe100002 },
|
||||
{ 0x3d400138, 0x10d },
|
||||
{ 0x3d400144, 0xbb005e },
|
||||
{ 0x3d400180, 0x3a5001c },
|
||||
{ 0x3d400184, 0x2f071e5 },
|
||||
{ 0x3d400180, 0x3a6001d },
|
||||
{ 0x3d400184, 0x2f071f4 },
|
||||
{ 0x3d400188, 0x0 },
|
||||
{ 0x3d400190, 0x49b820c },
|
||||
{ 0x3d400190, 0x4a3820e },
|
||||
{ 0x3d400194, 0x80303 },
|
||||
{ 0x3d4001b4, 0x1b0c },
|
||||
{ 0x3d4001b4, 0x230e },
|
||||
{ 0x3d4001a0, 0xe0400018 },
|
||||
{ 0x3d4001a4, 0xdf00e4 },
|
||||
{ 0x3d4001a8, 0x80000000 },
|
||||
{ 0x3d4001b0, 0x11 },
|
||||
{ 0x3d4001c0, 0x1 },
|
||||
{ 0x3d4001c0, 0x7 },
|
||||
{ 0x3d4001c4, 0x1 },
|
||||
{ 0x3d4000f4, 0xc99 },
|
||||
{ 0x3d400108, 0x810191a },
|
||||
{ 0x3d4000f4, 0x799 },
|
||||
{ 0x3d400108, 0x9141c1c },
|
||||
#if IS_ENABLED(CONFIG_IMX8M_DRAM_INLINE_ECC)
|
||||
{ 0x3d400200, 0x14 },
|
||||
#else
|
||||
{ 0x3d400200, 0x17 },
|
||||
#endif
|
||||
{ 0x3d400208, 0x0 },
|
||||
#if IS_ENABLED(CONFIG_IMX8M_DRAM_INLINE_ECC)
|
||||
{ 0x3d40020c, 0x14141400 },
|
||||
#else
|
||||
{ 0x3d40020c, 0x0 },
|
||||
#endif
|
||||
{ 0x3d400210, 0x1f1f },
|
||||
#if IS_ENABLED(CONFIG_IMX8M_DRAM_INLINE_ECC)
|
||||
{ 0x3d400204, 0x50505 },
|
||||
{ 0x3d400214, 0x4040404 },
|
||||
{ 0x3d400218, 0x4040404 },
|
||||
#else
|
||||
{ 0x3d400204, 0x80808 },
|
||||
{ 0x3d400214, 0x7070707 },
|
||||
{ 0x3d400218, 0x7070707 },
|
||||
#endif
|
||||
{ 0x3d40021c, 0xf0f },
|
||||
{ 0x3d400250, 0x1705 },
|
||||
{ 0x3d400254, 0x2c },
|
||||
|
@ -78,7 +97,7 @@ static struct dram_cfg_param ddr_ddrc_cfg[] = {
|
|||
{ 0x3d402050, 0x20d000 },
|
||||
{ 0x3d402064, 0xc001c },
|
||||
{ 0x3d4020dc, 0x840000 },
|
||||
{ 0x3d4020e0, 0x330000 },
|
||||
{ 0x3d4020e0, 0xf30000 },
|
||||
{ 0x3d4020e8, 0x660048 },
|
||||
{ 0x3d4020ec, 0x160048 },
|
||||
{ 0x3d402100, 0xa040305 },
|
||||
|
@ -88,7 +107,7 @@ static struct dram_cfg_param ddr_ddrc_cfg[] = {
|
|||
{ 0x3d402110, 0x2040202 },
|
||||
{ 0x3d402114, 0x2030202 },
|
||||
{ 0x3d402118, 0x1010004 },
|
||||
{ 0x3d40211c, 0x301 },
|
||||
{ 0x3d40211c, 0x302 },
|
||||
{ 0x3d402130, 0x20300 },
|
||||
{ 0x3d402134, 0xa100002 },
|
||||
{ 0x3d402138, 0x1d },
|
||||
|
@ -97,13 +116,13 @@ static struct dram_cfg_param ddr_ddrc_cfg[] = {
|
|||
{ 0x3d402190, 0x3818200 },
|
||||
{ 0x3d402194, 0x80303 },
|
||||
{ 0x3d4021b4, 0x100 },
|
||||
{ 0x3d4020f4, 0xc99 },
|
||||
{ 0x3d4020f4, 0x599 },
|
||||
{ 0x3d403020, 0x1001 },
|
||||
{ 0x3d403024, 0xc3500 },
|
||||
{ 0x3d403050, 0x20d000 },
|
||||
{ 0x3d403064, 0x30007 },
|
||||
{ 0x3d4030dc, 0x840000 },
|
||||
{ 0x3d4030e0, 0x330000 },
|
||||
{ 0x3d4030e0, 0xf30000 },
|
||||
{ 0x3d4030e8, 0x660048 },
|
||||
{ 0x3d4030ec, 0x160048 },
|
||||
{ 0x3d403100, 0xa010102 },
|
||||
|
@ -113,7 +132,7 @@ static struct dram_cfg_param ddr_ddrc_cfg[] = {
|
|||
{ 0x3d403110, 0x2040202 },
|
||||
{ 0x3d403114, 0x2030202 },
|
||||
{ 0x3d403118, 0x1010004 },
|
||||
{ 0x3d40311c, 0x301 },
|
||||
{ 0x3d40311c, 0x302 },
|
||||
{ 0x3d403130, 0x20300 },
|
||||
{ 0x3d403134, 0xa100002 },
|
||||
{ 0x3d403138, 0x8 },
|
||||
|
@ -122,7 +141,7 @@ static struct dram_cfg_param ddr_ddrc_cfg[] = {
|
|||
{ 0x3d403190, 0x3818200 },
|
||||
{ 0x3d403194, 0x80303 },
|
||||
{ 0x3d4031b4, 0x100 },
|
||||
{ 0x3d4030f4, 0xc99 },
|
||||
{ 0x3d4030f4, 0x599 },
|
||||
{ 0x3d400028, 0x0 },
|
||||
};
|
||||
|
||||
|
@ -260,16 +279,16 @@ static struct dram_cfg_param ddr_ddrphy_cfg[] = {
|
|||
{ 0x212149, 0xeba },
|
||||
{ 0x213049, 0xeba },
|
||||
{ 0x213149, 0xeba },
|
||||
{ 0x43, 0xe7 },
|
||||
{ 0x1043, 0xe7 },
|
||||
{ 0x2043, 0xe7 },
|
||||
{ 0x3043, 0xe7 },
|
||||
{ 0x4043, 0xe7 },
|
||||
{ 0x5043, 0xe7 },
|
||||
{ 0x6043, 0xe7 },
|
||||
{ 0x7043, 0xe7 },
|
||||
{ 0x8043, 0xe7 },
|
||||
{ 0x9043, 0xe7 },
|
||||
{ 0x43, 0x3ff },
|
||||
{ 0x1043, 0x3ff },
|
||||
{ 0x2043, 0x3ff },
|
||||
{ 0x3043, 0x3ff },
|
||||
{ 0x4043, 0x3ff },
|
||||
{ 0x5043, 0x3ff },
|
||||
{ 0x6043, 0x3ff },
|
||||
{ 0x7043, 0x3ff },
|
||||
{ 0x8043, 0x3ff },
|
||||
{ 0x9043, 0x3ff },
|
||||
{ 0x20018, 0x3 },
|
||||
{ 0x20075, 0x4 },
|
||||
{ 0x20050, 0x0 },
|
||||
|
@ -319,19 +338,15 @@ static struct dram_cfg_param ddr_ddrphy_cfg[] = {
|
|||
{ 0x200f6, 0x0 },
|
||||
{ 0x200f7, 0xf000 },
|
||||
{ 0x20025, 0x0 },
|
||||
{ 0x2002d, 0x0 },
|
||||
{ 0x12002d, 0x0 },
|
||||
{ 0x22002d, 0x0 },
|
||||
{ 0x2002d, 0x1 },
|
||||
{ 0x12002d, 0x1 },
|
||||
{ 0x22002d, 0x1 },
|
||||
{ 0x2007d, 0x212 },
|
||||
{ 0x12007d, 0x212 },
|
||||
{ 0x22007d, 0x212 },
|
||||
{ 0x2007c, 0x61 },
|
||||
{ 0x12007c, 0x61 },
|
||||
{ 0x22007c, 0x61 },
|
||||
{ 0x1004a, 0x500 },
|
||||
{ 0x1104a, 0x500 },
|
||||
{ 0x1204a, 0x500 },
|
||||
{ 0x1304a, 0x500 },
|
||||
{ 0x2002c, 0x0 },
|
||||
};
|
||||
|
||||
|
@ -1061,7 +1076,7 @@ static struct dram_cfg_param ddr_ddrphy_trained_csr[] = {
|
|||
/* P0 message block paremeter for training firmware */
|
||||
static struct dram_cfg_param ddr_fsp0_cfg[] = {
|
||||
{ 0xd0000, 0x0 },
|
||||
{ 0x54003, 0xe94 },
|
||||
{ 0x54003, 0xe96 },
|
||||
{ 0x54004, 0x2 },
|
||||
{ 0x54005, 0x2228 },
|
||||
{ 0x54006, 0x14 },
|
||||
|
@ -1070,26 +1085,26 @@ static struct dram_cfg_param ddr_fsp0_cfg[] = {
|
|||
{ 0x5400b, 0x2 },
|
||||
{ 0x5400f, 0x100 },
|
||||
{ 0x54012, 0x310 },
|
||||
{ 0x54019, 0x36e4 },
|
||||
{ 0x5401a, 0x33 },
|
||||
{ 0x54019, 0x3ff4 },
|
||||
{ 0x5401a, 0xf3 },
|
||||
{ 0x5401b, 0x4866 },
|
||||
{ 0x5401c, 0x4800 },
|
||||
{ 0x5401e, 0x16 },
|
||||
{ 0x5401f, 0x36e4 },
|
||||
{ 0x54020, 0x33 },
|
||||
{ 0x5401f, 0x3ff4 },
|
||||
{ 0x54020, 0xf3 },
|
||||
{ 0x54021, 0x4866 },
|
||||
{ 0x54022, 0x4800 },
|
||||
{ 0x54024, 0x16 },
|
||||
{ 0x5402b, 0x1000 },
|
||||
{ 0x5402c, 0x3 },
|
||||
{ 0x54032, 0xe400 },
|
||||
{ 0x54033, 0x3336 },
|
||||
{ 0x54032, 0xf400 },
|
||||
{ 0x54033, 0xf33f },
|
||||
{ 0x54034, 0x6600 },
|
||||
{ 0x54035, 0x48 },
|
||||
{ 0x54036, 0x48 },
|
||||
{ 0x54037, 0x1600 },
|
||||
{ 0x54038, 0xe400 },
|
||||
{ 0x54039, 0x3336 },
|
||||
{ 0x54038, 0xf400 },
|
||||
{ 0x54039, 0xf33f },
|
||||
{ 0x5403a, 0x6600 },
|
||||
{ 0x5403b, 0x48 },
|
||||
{ 0x5403c, 0x48 },
|
||||
|
@ -1111,25 +1126,25 @@ static struct dram_cfg_param ddr_fsp1_cfg[] = {
|
|||
{ 0x5400f, 0x100 },
|
||||
{ 0x54012, 0x310 },
|
||||
{ 0x54019, 0x84 },
|
||||
{ 0x5401a, 0x33 },
|
||||
{ 0x5401a, 0xf3 },
|
||||
{ 0x5401b, 0x4866 },
|
||||
{ 0x5401c, 0x4800 },
|
||||
{ 0x5401e, 0x16 },
|
||||
{ 0x5401f, 0x84 },
|
||||
{ 0x54020, 0x33 },
|
||||
{ 0x54020, 0xf3 },
|
||||
{ 0x54021, 0x4866 },
|
||||
{ 0x54022, 0x4800 },
|
||||
{ 0x54024, 0x16 },
|
||||
{ 0x5402b, 0x1000 },
|
||||
{ 0x5402c, 0x3 },
|
||||
{ 0x54032, 0x8400 },
|
||||
{ 0x54033, 0x3300 },
|
||||
{ 0x54033, 0xf300 },
|
||||
{ 0x54034, 0x6600 },
|
||||
{ 0x54035, 0x48 },
|
||||
{ 0x54036, 0x48 },
|
||||
{ 0x54037, 0x1600 },
|
||||
{ 0x54038, 0x8400 },
|
||||
{ 0x54039, 0x3300 },
|
||||
{ 0x54039, 0xf300 },
|
||||
{ 0x5403a, 0x6600 },
|
||||
{ 0x5403b, 0x48 },
|
||||
{ 0x5403c, 0x48 },
|
||||
|
@ -1151,25 +1166,25 @@ static struct dram_cfg_param ddr_fsp2_cfg[] = {
|
|||
{ 0x5400f, 0x100 },
|
||||
{ 0x54012, 0x310 },
|
||||
{ 0x54019, 0x84 },
|
||||
{ 0x5401a, 0x33 },
|
||||
{ 0x5401a, 0xf3 },
|
||||
{ 0x5401b, 0x4866 },
|
||||
{ 0x5401c, 0x4800 },
|
||||
{ 0x5401e, 0x16 },
|
||||
{ 0x5401f, 0x84 },
|
||||
{ 0x54020, 0x33 },
|
||||
{ 0x54020, 0xf3 },
|
||||
{ 0x54021, 0x4866 },
|
||||
{ 0x54022, 0x4800 },
|
||||
{ 0x54024, 0x16 },
|
||||
{ 0x5402b, 0x1000 },
|
||||
{ 0x5402c, 0x3 },
|
||||
{ 0x54032, 0x8400 },
|
||||
{ 0x54033, 0x3300 },
|
||||
{ 0x54033, 0xf300 },
|
||||
{ 0x54034, 0x6600 },
|
||||
{ 0x54035, 0x48 },
|
||||
{ 0x54036, 0x48 },
|
||||
{ 0x54037, 0x1600 },
|
||||
{ 0x54038, 0x8400 },
|
||||
{ 0x54039, 0x3300 },
|
||||
{ 0x54039, 0xf300 },
|
||||
{ 0x5403a, 0x6600 },
|
||||
{ 0x5403b, 0x48 },
|
||||
{ 0x5403c, 0x48 },
|
||||
|
@ -1180,7 +1195,7 @@ static struct dram_cfg_param ddr_fsp2_cfg[] = {
|
|||
/* P0 2D message block paremeter for training firmware */
|
||||
static struct dram_cfg_param ddr_fsp0_2d_cfg[] = {
|
||||
{ 0xd0000, 0x0 },
|
||||
{ 0x54003, 0xe94 },
|
||||
{ 0x54003, 0xe96 },
|
||||
{ 0x54004, 0x2 },
|
||||
{ 0x54005, 0x2228 },
|
||||
{ 0x54006, 0x14 },
|
||||
|
@ -1190,26 +1205,26 @@ static struct dram_cfg_param ddr_fsp0_2d_cfg[] = {
|
|||
{ 0x5400f, 0x100 },
|
||||
{ 0x54010, 0x1f7f },
|
||||
{ 0x54012, 0x310 },
|
||||
{ 0x54019, 0x36e4 },
|
||||
{ 0x5401a, 0x33 },
|
||||
{ 0x54019, 0x3ff4 },
|
||||
{ 0x5401a, 0xf3 },
|
||||
{ 0x5401b, 0x4866 },
|
||||
{ 0x5401c, 0x4800 },
|
||||
{ 0x5401e, 0x16 },
|
||||
{ 0x5401f, 0x36e4 },
|
||||
{ 0x54020, 0x33 },
|
||||
{ 0x5401f, 0x3ff4 },
|
||||
{ 0x54020, 0xf3 },
|
||||
{ 0x54021, 0x4866 },
|
||||
{ 0x54022, 0x4800 },
|
||||
{ 0x54024, 0x16 },
|
||||
{ 0x5402b, 0x1000 },
|
||||
{ 0x5402c, 0x3 },
|
||||
{ 0x54032, 0xe400 },
|
||||
{ 0x54033, 0x3336 },
|
||||
{ 0x54032, 0xf400 },
|
||||
{ 0x54033, 0xf33f },
|
||||
{ 0x54034, 0x6600 },
|
||||
{ 0x54035, 0x48 },
|
||||
{ 0x54036, 0x48 },
|
||||
{ 0x54037, 0x1600 },
|
||||
{ 0x54038, 0xe400 },
|
||||
{ 0x54039, 0x3336 },
|
||||
{ 0x54038, 0xf400 },
|
||||
{ 0x54039, 0xf33f },
|
||||
{ 0x5403a, 0x6600 },
|
||||
{ 0x5403b, 0x48 },
|
||||
{ 0x5403c, 0x48 },
|
||||
|
@ -1699,9 +1714,9 @@ static struct dram_cfg_param ddr_phy_pie[] = {
|
|||
{ 0x400d7, 0x20b },
|
||||
{ 0x2003a, 0x2 },
|
||||
{ 0x200be, 0x3 },
|
||||
{ 0x2000b, 0x419 },
|
||||
{ 0x2000b, 0x41a },
|
||||
{ 0x2000c, 0xe9 },
|
||||
{ 0x2000d, 0x91c },
|
||||
{ 0x2000d, 0x91d },
|
||||
{ 0x2000e, 0x2c },
|
||||
{ 0x12000b, 0x70 },
|
||||
{ 0x12000c, 0x19 },
|
||||
|
@ -1804,8 +1819,8 @@ static struct dram_cfg_param ddr_phy_pie[] = {
|
|||
|
||||
static struct dram_fsp_msg ddr_dram_fsp_msg[] = {
|
||||
{
|
||||
/* P0 3733mts 1D */
|
||||
.drate = 3733,
|
||||
/* P0 3600mts 1D */
|
||||
.drate = 3600,
|
||||
.fw_type = FW_1D_IMAGE,
|
||||
.fsp_cfg = ddr_fsp0_cfg,
|
||||
.fsp_cfg_num = ARRAY_SIZE(ddr_fsp0_cfg),
|
||||
|
@ -1825,8 +1840,8 @@ static struct dram_fsp_msg ddr_dram_fsp_msg[] = {
|
|||
.fsp_cfg_num = ARRAY_SIZE(ddr_fsp2_cfg),
|
||||
},
|
||||
{
|
||||
/* P0 3733mts 2D */
|
||||
.drate = 3733,
|
||||
/* P0 3600mts 2D */
|
||||
.drate = 3600,
|
||||
.fw_type = FW_2D_IMAGE,
|
||||
.fsp_cfg = ddr_fsp0_2d_cfg,
|
||||
.fsp_cfg_num = ARRAY_SIZE(ddr_fsp0_2d_cfg),
|
||||
|
@ -1845,5 +1860,19 @@ struct dram_timing_info dmo_imx8mp_sbc_dram_timing_32_32 = {
|
|||
.ddrphy_trained_csr_num = ARRAY_SIZE(ddr_ddrphy_trained_csr),
|
||||
.ddrphy_pie = ddr_phy_pie,
|
||||
.ddrphy_pie_num = ARRAY_SIZE(ddr_phy_pie),
|
||||
.fsp_table = { 3733, 400, 100, },
|
||||
.fsp_table = { 3600, 400, 100, },
|
||||
};
|
||||
|
||||
#if IS_ENABLED(CONFIG_IMX8M_DRAM_INLINE_ECC)
|
||||
void board_dram_ecc_scrub(void)
|
||||
{
|
||||
ddrc_inline_ecc_scrub(0x0,0x7ffffff);
|
||||
ddrc_inline_ecc_scrub(0x8000000,0xfffffff);
|
||||
ddrc_inline_ecc_scrub(0x10000000,0x17ffffff);
|
||||
ddrc_inline_ecc_scrub(0x18000000,0x1fffffff);
|
||||
ddrc_inline_ecc_scrub(0x20000000,0x27ffffff);
|
||||
ddrc_inline_ecc_scrub(0x28000000,0x2fffffff);
|
||||
ddrc_inline_ecc_scrub(0x30000000,0x37ffffff);
|
||||
ddrc_inline_ecc_scrub_end(0x0,0x3fffffff);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -68,6 +68,11 @@ int data_modul_imx_edm_sbc_board_power_init(void)
|
|||
/* To avoid timing risk from SoC to ARM, increase VDD_ARM to OD voltage 0.95V */
|
||||
pmic_reg_write(dev, PCA9450_BUCK2OUT_DVS0, 0x1c);
|
||||
|
||||
/* DRAM Vdd1 always FPWM */
|
||||
pmic_reg_write(dev, PCA9450_BUCK5CTRL, 0x0d);
|
||||
/* DRAM Vdd2/Vddq always FPWM */
|
||||
pmic_reg_write(dev, PCA9450_BUCK6CTRL, 0x0d);
|
||||
|
||||
/* Set LDO4 and CONFIG2 to enable the I2C level translator. */
|
||||
pmic_reg_write(dev, PCA9450_LDO4CTRL, 0x59);
|
||||
pmic_reg_write(dev, PCA9450_CONFIG2, 0x1);
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1211,9 +1211,9 @@ static struct dram_cfg_param ddr_phy_pie[] = {
|
|||
{ 0x400d7, 0x20b },
|
||||
{ 0x2003a, 0x2 },
|
||||
{ 0x200be, 0x3 },
|
||||
{ 0x2000b, 0x34b },
|
||||
{ 0x2000c, 0xbb },
|
||||
{ 0x2000d, 0x753 },
|
||||
{ 0x2000b, 0x465 },
|
||||
{ 0x2000c, 0xfa },
|
||||
{ 0x2000d, 0x9c4 },
|
||||
{ 0x2000e, 0x2c },
|
||||
{ 0x12000b, 0x70 },
|
||||
{ 0x12000c, 0x19 },
|
||||
|
@ -1323,42 +1323,42 @@ struct dram_cfg_param ddr_ddrc_cfg_1gb_single_die[] = {
|
|||
{ 0x3d400304, 0x1 },
|
||||
{ 0x3d400030, 0x1 },
|
||||
{ 0x3d400000, 0xa1080020 },
|
||||
{ 0x3d400020, 0x1203 },
|
||||
{ 0x3d400024, 0x16e3600 },
|
||||
{ 0x3d400064, 0x5b0087 },
|
||||
{ 0x3d400020, 0x1323 },
|
||||
{ 0x3d400024, 0x1e84800 },
|
||||
{ 0x3d400064, 0x7a00b4 },
|
||||
{ 0x3d400070, 0x7027f90 },
|
||||
{ 0x3d400074, 0x790 },
|
||||
{ 0x3d4000d0, 0xc00305ba },
|
||||
{ 0x3d4000d4, 0x940000 },
|
||||
{ 0x3d4000dc, 0xd4002d },
|
||||
{ 0x3d4000e0, 0x310000 },
|
||||
{ 0x3d4000d0, 0xc00307a3 },
|
||||
{ 0x3d4000d4, 0xc50000 },
|
||||
{ 0x3d4000dc, 0xf4003f },
|
||||
{ 0x3d4000e0, 0x330000 },
|
||||
{ 0x3d4000e8, 0x660048 },
|
||||
{ 0x3d4000ec, 0x160048 },
|
||||
{ 0x3d400100, 0x191e1920 },
|
||||
{ 0x3d400104, 0x60630 },
|
||||
{ 0x3d40010c, 0xb0b000 },
|
||||
{ 0x3d400110, 0xe04080e },
|
||||
{ 0x3d400114, 0x2040c0c },
|
||||
{ 0x3d400118, 0x1010007 },
|
||||
{ 0x3d40011c, 0x402 },
|
||||
{ 0x3d400130, 0x20600 },
|
||||
{ 0x3d400134, 0xc100002 },
|
||||
{ 0x3d400138, 0x8d },
|
||||
{ 0x3d400144, 0x96004b },
|
||||
{ 0x3d400180, 0x2ee0017 },
|
||||
{ 0x3d400184, 0x2605b8e },
|
||||
{ 0x3d400100, 0x2028222a },
|
||||
{ 0x3d400104, 0x8083f },
|
||||
{ 0x3d40010c, 0xe0e000 },
|
||||
{ 0x3d400110, 0x12040a12 },
|
||||
{ 0x3d400114, 0x2050f0f },
|
||||
{ 0x3d400118, 0x1010009 },
|
||||
{ 0x3d40011c, 0x502 },
|
||||
{ 0x3d400130, 0x20800 },
|
||||
{ 0x3d400134, 0xe100002 },
|
||||
{ 0x3d400138, 0xbc },
|
||||
{ 0x3d400144, 0xc80064 },
|
||||
{ 0x3d400180, 0x3e8001e },
|
||||
{ 0x3d400184, 0x3207a12 },
|
||||
{ 0x3d400188, 0x0 },
|
||||
{ 0x3d400190, 0x497820a },
|
||||
{ 0x3d400190, 0x49f820e },
|
||||
{ 0x3d400194, 0x80303 },
|
||||
{ 0x3d4001b4, 0x170a },
|
||||
{ 0x3d4001b4, 0x1f0e },
|
||||
{ 0x3d4001a0, 0xe0400018 },
|
||||
{ 0x3d4001a4, 0xdf00e4 },
|
||||
{ 0x3d4001a8, 0x80000000 },
|
||||
{ 0x3d4001b0, 0x11 },
|
||||
{ 0x3d4001c0, 0x1 },
|
||||
{ 0x3d4001c4, 0x1 },
|
||||
{ 0x3d4000f4, 0x699 },
|
||||
{ 0x3d400108, 0x70e1617 },
|
||||
{ 0x3d4000f4, 0x799 },
|
||||
{ 0x3d400108, 0x9121b1c },
|
||||
{ 0x3d400200, 0x1f },
|
||||
{ 0x3d400208, 0x0 },
|
||||
{ 0x3d40020c, 0x0 },
|
||||
|
@ -1379,7 +1379,7 @@ struct dram_cfg_param ddr_ddrc_cfg_1gb_single_die[] = {
|
|||
{ 0x3d400498, 0x620096 },
|
||||
{ 0x3d40049c, 0x1100e07 },
|
||||
{ 0x3d4004a0, 0xc8012c },
|
||||
{ 0x3d402020, 0x1001 },
|
||||
{ 0x3d402020, 0x1021 },
|
||||
{ 0x3d402024, 0x30d400 },
|
||||
{ 0x3d402050, 0x20d000 },
|
||||
{ 0x3d402064, 0xc0012 },
|
||||
|
@ -1404,7 +1404,7 @@ struct dram_cfg_param ddr_ddrc_cfg_1gb_single_die[] = {
|
|||
{ 0x3d402194, 0x80303 },
|
||||
{ 0x3d4021b4, 0x100 },
|
||||
{ 0x3d4020f4, 0x599 },
|
||||
{ 0x3d403020, 0x1001 },
|
||||
{ 0x3d403020, 0x1021 },
|
||||
{ 0x3d403024, 0xc3500 },
|
||||
{ 0x3d403050, 0x20d000 },
|
||||
{ 0x3d403064, 0x30005 },
|
||||
|
@ -1436,36 +1436,36 @@ struct dram_cfg_param ddr_ddrc_cfg_1gb_single_die[] = {
|
|||
struct dram_cfg_param ddr_ddrphy_cfg_1gb_single_die[] = {
|
||||
{ 0x100a0, 0x0 },
|
||||
{ 0x100a1, 0x1 },
|
||||
{ 0x100a2, 0x3 },
|
||||
{ 0x100a3, 0x2 },
|
||||
{ 0x100a4, 0x5 },
|
||||
{ 0x100a5, 0x4 },
|
||||
{ 0x100a6, 0x7 },
|
||||
{ 0x100a7, 0x6 },
|
||||
{ 0x100a2, 0x2 },
|
||||
{ 0x100a3, 0x3 },
|
||||
{ 0x100a4, 0x4 },
|
||||
{ 0x100a5, 0x5 },
|
||||
{ 0x100a6, 0x6 },
|
||||
{ 0x100a7, 0x7 },
|
||||
{ 0x110a0, 0x0 },
|
||||
{ 0x110a1, 0x1 },
|
||||
{ 0x110a2, 0x2 },
|
||||
{ 0x110a3, 0x3 },
|
||||
{ 0x110a4, 0x4 },
|
||||
{ 0x110a5, 0x5 },
|
||||
{ 0x110a6, 0x6 },
|
||||
{ 0x110a7, 0x7 },
|
||||
{ 0x110a2, 0x3 },
|
||||
{ 0x110a3, 0x4 },
|
||||
{ 0x110a4, 0x5 },
|
||||
{ 0x110a5, 0x2 },
|
||||
{ 0x110a6, 0x7 },
|
||||
{ 0x110a7, 0x6 },
|
||||
{ 0x120a0, 0x0 },
|
||||
{ 0x120a1, 0x1 },
|
||||
{ 0x120a2, 0x2 },
|
||||
{ 0x120a3, 0x3 },
|
||||
{ 0x120a4, 0x4 },
|
||||
{ 0x120a5, 0x5 },
|
||||
{ 0x120a6, 0x6 },
|
||||
{ 0x120a7, 0x7 },
|
||||
{ 0x120a2, 0x3 },
|
||||
{ 0x120a3, 0x2 },
|
||||
{ 0x120a4, 0x5 },
|
||||
{ 0x120a5, 0x4 },
|
||||
{ 0x120a6, 0x7 },
|
||||
{ 0x120a7, 0x6 },
|
||||
{ 0x130a0, 0x0 },
|
||||
{ 0x130a1, 0x1 },
|
||||
{ 0x130a2, 0x3 },
|
||||
{ 0x130a3, 0x4 },
|
||||
{ 0x130a4, 0x5 },
|
||||
{ 0x130a5, 0x2 },
|
||||
{ 0x130a6, 0x7 },
|
||||
{ 0x130a7, 0x6 },
|
||||
{ 0x130a2, 0x2 },
|
||||
{ 0x130a3, 0x3 },
|
||||
{ 0x130a4, 0x4 },
|
||||
{ 0x130a5, 0x5 },
|
||||
{ 0x130a6, 0x6 },
|
||||
{ 0x130a7, 0x7 },
|
||||
{ 0x1005f, 0x1ff },
|
||||
{ 0x1015f, 0x1ff },
|
||||
{ 0x1105f, 0x1ff },
|
||||
|
@ -1500,7 +1500,7 @@ struct dram_cfg_param ddr_ddrphy_cfg_1gb_single_die[] = {
|
|||
{ 0x7055, 0x1ff },
|
||||
{ 0x8055, 0x1ff },
|
||||
{ 0x9055, 0x1ff },
|
||||
{ 0x200c5, 0x19 },
|
||||
{ 0x200c5, 0x18 },
|
||||
{ 0x1200c5, 0x7 },
|
||||
{ 0x2200c5, 0x7 },
|
||||
{ 0x2002e, 0x2 },
|
||||
|
@ -1509,11 +1509,11 @@ struct dram_cfg_param ddr_ddrphy_cfg_1gb_single_die[] = {
|
|||
{ 0x90204, 0x0 },
|
||||
{ 0x190204, 0x0 },
|
||||
{ 0x290204, 0x0 },
|
||||
{ 0x20024, 0x1a3 },
|
||||
{ 0x20024, 0x1e3 },
|
||||
{ 0x2003a, 0x2 },
|
||||
{ 0x120024, 0x1a3 },
|
||||
{ 0x120024, 0x1e3 },
|
||||
{ 0x2003a, 0x2 },
|
||||
{ 0x220024, 0x1a3 },
|
||||
{ 0x220024, 0x1e3 },
|
||||
{ 0x2003a, 0x2 },
|
||||
{ 0x20056, 0x3 },
|
||||
{ 0x120056, 0x3 },
|
||||
|
@ -1579,7 +1579,7 @@ struct dram_cfg_param ddr_ddrphy_cfg_1gb_single_die[] = {
|
|||
{ 0x20018, 0x3 },
|
||||
{ 0x20075, 0x4 },
|
||||
{ 0x20050, 0x0 },
|
||||
{ 0x20008, 0x2ee },
|
||||
{ 0x20008, 0x3e8 },
|
||||
{ 0x120008, 0x64 },
|
||||
{ 0x220008, 0x19 },
|
||||
{ 0x20088, 0x9 },
|
||||
|
@ -1644,7 +1644,7 @@ struct dram_cfg_param ddr_ddrphy_cfg_1gb_single_die[] = {
|
|||
/* P0 message block paremeter for training firmware */
|
||||
struct dram_cfg_param ddr_fsp0_cfg_1gb_single_die[] = {
|
||||
{ 0xd0000, 0x0 },
|
||||
{ 0x54003, 0xbb8 },
|
||||
{ 0x54003, 0xfa0 },
|
||||
{ 0x54004, 0x2 },
|
||||
{ 0x54005, 0x2228 },
|
||||
{ 0x54006, 0x14 },
|
||||
|
@ -1653,26 +1653,26 @@ struct dram_cfg_param ddr_fsp0_cfg_1gb_single_die[] = {
|
|||
{ 0x5400b, 0x2 },
|
||||
{ 0x5400f, 0x100 },
|
||||
{ 0x54012, 0x110 },
|
||||
{ 0x54019, 0x2dd4 },
|
||||
{ 0x5401a, 0x31 },
|
||||
{ 0x54019, 0x3ff4 },
|
||||
{ 0x5401a, 0x33 },
|
||||
{ 0x5401b, 0x4866 },
|
||||
{ 0x5401c, 0x4800 },
|
||||
{ 0x5401e, 0x16 },
|
||||
{ 0x5401f, 0x2dd4 },
|
||||
{ 0x54020, 0x31 },
|
||||
{ 0x5401f, 0x3ff4 },
|
||||
{ 0x54020, 0x33 },
|
||||
{ 0x54021, 0x4866 },
|
||||
{ 0x54022, 0x4800 },
|
||||
{ 0x54024, 0x16 },
|
||||
{ 0x5402b, 0x1000 },
|
||||
{ 0x5402c, 0x1 },
|
||||
{ 0x54032, 0xd400 },
|
||||
{ 0x54033, 0x312d },
|
||||
{ 0x54032, 0xf400 },
|
||||
{ 0x54033, 0x333f },
|
||||
{ 0x54034, 0x6600 },
|
||||
{ 0x54035, 0x48 },
|
||||
{ 0x54036, 0x48 },
|
||||
{ 0x54037, 0x1600 },
|
||||
{ 0x54038, 0xd400 },
|
||||
{ 0x54039, 0x312d },
|
||||
{ 0x54038, 0xf400 },
|
||||
{ 0x54039, 0x333f },
|
||||
{ 0x5403a, 0x6600 },
|
||||
{ 0x5403b, 0x48 },
|
||||
{ 0x5403c, 0x48 },
|
||||
|
@ -1763,7 +1763,7 @@ struct dram_cfg_param ddr_fsp2_cfg_1gb_single_die[] = {
|
|||
/* P0 2D message block paremeter for training firmware */
|
||||
struct dram_cfg_param ddr_fsp0_2d_cfg_1gb_single_die[] = {
|
||||
{ 0xd0000, 0x0 },
|
||||
{ 0x54003, 0xbb8 },
|
||||
{ 0x54003, 0xfa0 },
|
||||
{ 0x54004, 0x2 },
|
||||
{ 0x54005, 0x2228 },
|
||||
{ 0x54006, 0x14 },
|
||||
|
@ -1773,26 +1773,26 @@ struct dram_cfg_param ddr_fsp0_2d_cfg_1gb_single_die[] = {
|
|||
{ 0x5400f, 0x100 },
|
||||
{ 0x54010, 0x1f7f },
|
||||
{ 0x54012, 0x110 },
|
||||
{ 0x54019, 0x2dd4 },
|
||||
{ 0x5401a, 0x31 },
|
||||
{ 0x54019, 0x3ff4 },
|
||||
{ 0x5401a, 0x33 },
|
||||
{ 0x5401b, 0x4866 },
|
||||
{ 0x5401c, 0x4800 },
|
||||
{ 0x5401e, 0x16 },
|
||||
{ 0x5401f, 0x2dd4 },
|
||||
{ 0x54020, 0x31 },
|
||||
{ 0x5401f, 0x3ff4 },
|
||||
{ 0x54020, 0x33 },
|
||||
{ 0x54021, 0x4866 },
|
||||
{ 0x54022, 0x4800 },
|
||||
{ 0x54024, 0x16 },
|
||||
{ 0x5402b, 0x1000 },
|
||||
{ 0x5402c, 0x1 },
|
||||
{ 0x54032, 0xd400 },
|
||||
{ 0x54033, 0x312d },
|
||||
{ 0x54032, 0xf400 },
|
||||
{ 0x54033, 0x333f },
|
||||
{ 0x54034, 0x6600 },
|
||||
{ 0x54035, 0x48 },
|
||||
{ 0x54036, 0x48 },
|
||||
{ 0x54037, 0x1600 },
|
||||
{ 0x54038, 0xd400 },
|
||||
{ 0x54039, 0x312d },
|
||||
{ 0x54038, 0xf400 },
|
||||
{ 0x54039, 0x333f },
|
||||
{ 0x5403a, 0x6600 },
|
||||
{ 0x5403b, 0x48 },
|
||||
{ 0x5403c, 0x48 },
|
||||
|
@ -1802,8 +1802,8 @@ struct dram_cfg_param ddr_fsp0_2d_cfg_1gb_single_die[] = {
|
|||
|
||||
struct dram_fsp_msg ddr_dram_fsp_msg_1gb_single_die[] = {
|
||||
{
|
||||
/* P0 3000mts 1D */
|
||||
.drate = 3000,
|
||||
/* P0 4000mts 1D */
|
||||
.drate = 4000,
|
||||
.fw_type = FW_1D_IMAGE,
|
||||
.fsp_cfg = ddr_fsp0_cfg_1gb_single_die,
|
||||
.fsp_cfg_num = ARRAY_SIZE(ddr_fsp0_cfg_1gb_single_die),
|
||||
|
@ -1823,8 +1823,8 @@ struct dram_fsp_msg ddr_dram_fsp_msg_1gb_single_die[] = {
|
|||
.fsp_cfg_num = ARRAY_SIZE(ddr_fsp2_cfg_1gb_single_die),
|
||||
},
|
||||
{
|
||||
/* P0 3000mts 2D */
|
||||
.drate = 3000,
|
||||
/* P0 4000mts 2D */
|
||||
.drate = 4000,
|
||||
.fw_type = FW_2D_IMAGE,
|
||||
.fsp_cfg = ddr_fsp0_2d_cfg_1gb_single_die,
|
||||
.fsp_cfg_num = ARRAY_SIZE(ddr_fsp0_2d_cfg_1gb_single_die),
|
||||
|
@ -1843,7 +1843,7 @@ struct dram_timing_info dram_timing_1gb_single_die = {
|
|||
.ddrphy_trained_csr_num = ARRAY_SIZE(ddr_ddrphy_trained_csr),
|
||||
.ddrphy_pie = ddr_phy_pie,
|
||||
.ddrphy_pie_num = ARRAY_SIZE(ddr_phy_pie),
|
||||
.fsp_table = { 3000, 400, 100, },
|
||||
.fsp_table = { 4000, 400, 100, },
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -1856,43 +1856,44 @@ static struct dram_cfg_param ddr_ddrc_cfg_4gb_dual_die[] = {
|
|||
{ 0x3d400304, 0x1 },
|
||||
{ 0x3d400030, 0x1 },
|
||||
{ 0x3d400000, 0xa3080020 },
|
||||
{ 0x3d400020, 0x1203 },
|
||||
{ 0x3d400024, 0x16e3600 },
|
||||
{ 0x3d400064, 0x5b00d2 },
|
||||
{ 0x3d400020, 0x1323 },
|
||||
{ 0x3d400024, 0x1e84800 },
|
||||
{ 0x3d400064, 0x7a0118 },
|
||||
{ 0x3d400070, 0x7027f90 },
|
||||
{ 0x3d400074, 0x790 },
|
||||
{ 0x3d4000d0, 0xc00305ba },
|
||||
{ 0x3d4000d4, 0x940000 },
|
||||
{ 0x3d4000dc, 0xd4002d },
|
||||
{ 0x3d4000e0, 0x310000 },
|
||||
{ 0x3d4000d0, 0xc00307a3 },
|
||||
{ 0x3d4000d4, 0xc50000 },
|
||||
{ 0x3d4000dc, 0xf4003f },
|
||||
{ 0x3d4000e0, 0x330000 },
|
||||
{ 0x3d4000e8, 0x660048 },
|
||||
{ 0x3d4000ec, 0x160048 },
|
||||
{ 0x3d400100, 0x191e1920 },
|
||||
{ 0x3d400104, 0x60630 },
|
||||
{ 0x3d40010c, 0xb0b000 },
|
||||
{ 0x3d400110, 0xe04080e },
|
||||
{ 0x3d400114, 0x2040c0c },
|
||||
{ 0x3d400118, 0x1010007 },
|
||||
{ 0x3d40011c, 0x401 },
|
||||
{ 0x3d400130, 0x20600 },
|
||||
{ 0x3d400134, 0xc100002 },
|
||||
{ 0x3d400138, 0xd8 },
|
||||
{ 0x3d400144, 0x96004b },
|
||||
{ 0x3d400180, 0x2ee0017 },
|
||||
{ 0x3d400184, 0x2605b8e },
|
||||
{ 0x3d400100, 0x2028222a },
|
||||
{ 0x3d400104, 0x8083f },
|
||||
{ 0x3d40010c, 0xe0e000 },
|
||||
{ 0x3d400110, 0x12040a12 },
|
||||
{ 0x3d400114, 0x2050f0f },
|
||||
{ 0x3d400118, 0x1010009 },
|
||||
{ 0x3d40011c, 0x502 },
|
||||
{ 0x3d400130, 0x20800 },
|
||||
{ 0x3d400134, 0xe100002 },
|
||||
{ 0x3d400138, 0x120 },
|
||||
{ 0x3d400144, 0xc80064 },
|
||||
{ 0x3d400180, 0x3e8001e },
|
||||
{ 0x3d400184, 0x3207a12 },
|
||||
{ 0x3d400188, 0x0 },
|
||||
{ 0x3d400190, 0x497820a },
|
||||
{ 0x3d400190, 0x49f820e},
|
||||
{ 0x3d400194, 0x80303 },
|
||||
{ 0x3d4001b4, 0x170a },
|
||||
{ 0x3d4001b4, 0x1f0e },
|
||||
{ 0x3d4001a0, 0xe0400018 },
|
||||
{ 0x3d4001a4, 0xdf00e4 },
|
||||
{ 0x3d4001a8, 0x80000000 },
|
||||
{ 0x3d4001b0, 0x11 },
|
||||
{ 0x3d4001c0, 0x1 },
|
||||
{ 0x3d4001c4, 0x1 },
|
||||
{ 0x3d4000f4, 0xc99 },
|
||||
{ 0x3d400108, 0x70e1617 },
|
||||
{ 0x3d4000f4, 0x799 },
|
||||
{ 0x3d400108, 0x9121b1c },
|
||||
{ 0x3d400200, 0x17 },
|
||||
{ 0x3d400208, 0x0 },
|
||||
{ 0x3d40020c, 0x0 },
|
||||
{ 0x3d400210, 0x1f1f },
|
||||
{ 0x3d400204, 0x80808 },
|
||||
|
@ -1911,7 +1912,7 @@ static struct dram_cfg_param ddr_ddrc_cfg_4gb_dual_die[] = {
|
|||
{ 0x3d400498, 0x620096 },
|
||||
{ 0x3d40049c, 0x1100e07 },
|
||||
{ 0x3d4004a0, 0xc8012c },
|
||||
{ 0x3d402020, 0x1001 },
|
||||
{ 0x3d402020, 0x1021 },
|
||||
{ 0x3d402024, 0x30d400 },
|
||||
{ 0x3d402050, 0x20d000 },
|
||||
{ 0x3d402064, 0xc001c },
|
||||
|
@ -1926,7 +1927,7 @@ static struct dram_cfg_param ddr_ddrc_cfg_4gb_dual_die[] = {
|
|||
{ 0x3d402110, 0x2040202 },
|
||||
{ 0x3d402114, 0x2030202 },
|
||||
{ 0x3d402118, 0x1010004 },
|
||||
{ 0x3d40211c, 0x301 },
|
||||
{ 0x3d40211c, 0x302 },
|
||||
{ 0x3d402130, 0x20300 },
|
||||
{ 0x3d402134, 0xa100002 },
|
||||
{ 0x3d402138, 0x1d },
|
||||
|
@ -1935,8 +1936,8 @@ static struct dram_cfg_param ddr_ddrc_cfg_4gb_dual_die[] = {
|
|||
{ 0x3d402190, 0x3818200 },
|
||||
{ 0x3d402194, 0x80303 },
|
||||
{ 0x3d4021b4, 0x100 },
|
||||
{ 0x3d4020f4, 0xc99 },
|
||||
{ 0x3d403020, 0x1001 },
|
||||
{ 0x3d4020f4, 0x599 },
|
||||
{ 0x3d403020, 0x1021 },
|
||||
{ 0x3d403024, 0xc3500 },
|
||||
{ 0x3d403050, 0x20d000 },
|
||||
{ 0x3d403064, 0x30007 },
|
||||
|
@ -1951,7 +1952,7 @@ static struct dram_cfg_param ddr_ddrc_cfg_4gb_dual_die[] = {
|
|||
{ 0x3d403110, 0x2040202 },
|
||||
{ 0x3d403114, 0x2030202 },
|
||||
{ 0x3d403118, 0x1010004 },
|
||||
{ 0x3d40311c, 0x301 },
|
||||
{ 0x3d40311c, 0x302 },
|
||||
{ 0x3d403130, 0x20300 },
|
||||
{ 0x3d403134, 0xa100002 },
|
||||
{ 0x3d403138, 0x8 },
|
||||
|
@ -1960,7 +1961,7 @@ static struct dram_cfg_param ddr_ddrc_cfg_4gb_dual_die[] = {
|
|||
{ 0x3d403190, 0x3818200 },
|
||||
{ 0x3d403194, 0x80303 },
|
||||
{ 0x3d4031b4, 0x100 },
|
||||
{ 0x3d4030f4, 0xc99 },
|
||||
{ 0x3d4030f4, 0x599 },
|
||||
{ 0x3d400028, 0x0 },
|
||||
};
|
||||
|
||||
|
@ -1968,36 +1969,36 @@ static struct dram_cfg_param ddr_ddrc_cfg_4gb_dual_die[] = {
|
|||
static struct dram_cfg_param ddr_ddrphy_cfg_4gb_dual_die[] = {
|
||||
{ 0x100a0, 0x0 },
|
||||
{ 0x100a1, 0x1 },
|
||||
{ 0x100a2, 0x3 },
|
||||
{ 0x100a3, 0x2 },
|
||||
{ 0x100a4, 0x5 },
|
||||
{ 0x100a5, 0x4 },
|
||||
{ 0x100a6, 0x7 },
|
||||
{ 0x100a7, 0x6 },
|
||||
{ 0x100a2, 0x2 },
|
||||
{ 0x100a3, 0x3 },
|
||||
{ 0x100a4, 0x4 },
|
||||
{ 0x100a5, 0x5 },
|
||||
{ 0x100a6, 0x6 },
|
||||
{ 0x100a7, 0x7 },
|
||||
{ 0x110a0, 0x0 },
|
||||
{ 0x110a1, 0x1 },
|
||||
{ 0x110a2, 0x2 },
|
||||
{ 0x110a3, 0x3 },
|
||||
{ 0x110a4, 0x4 },
|
||||
{ 0x110a5, 0x5 },
|
||||
{ 0x110a6, 0x6 },
|
||||
{ 0x110a7, 0x7 },
|
||||
{ 0x110a2, 0x3 },
|
||||
{ 0x110a3, 0x4 },
|
||||
{ 0x110a4, 0x5 },
|
||||
{ 0x110a5, 0x2 },
|
||||
{ 0x110a6, 0x7 },
|
||||
{ 0x110a7, 0x6 },
|
||||
{ 0x120a0, 0x0 },
|
||||
{ 0x120a1, 0x1 },
|
||||
{ 0x120a2, 0x2 },
|
||||
{ 0x120a3, 0x3 },
|
||||
{ 0x120a4, 0x4 },
|
||||
{ 0x120a5, 0x5 },
|
||||
{ 0x120a6, 0x6 },
|
||||
{ 0x120a7, 0x7 },
|
||||
{ 0x120a2, 0x3 },
|
||||
{ 0x120a3, 0x2 },
|
||||
{ 0x120a4, 0x5 },
|
||||
{ 0x120a5, 0x4 },
|
||||
{ 0x120a6, 0x7 },
|
||||
{ 0x120a7, 0x6 },
|
||||
{ 0x130a0, 0x0 },
|
||||
{ 0x130a1, 0x1 },
|
||||
{ 0x130a2, 0x3 },
|
||||
{ 0x130a3, 0x4 },
|
||||
{ 0x130a4, 0x5 },
|
||||
{ 0x130a5, 0x2 },
|
||||
{ 0x130a6, 0x7 },
|
||||
{ 0x130a7, 0x6 },
|
||||
{ 0x130a2, 0x2 },
|
||||
{ 0x130a3, 0x3 },
|
||||
{ 0x130a4, 0x4 },
|
||||
{ 0x130a5, 0x5 },
|
||||
{ 0x130a6, 0x6 },
|
||||
{ 0x130a7, 0x7 },
|
||||
{ 0x1005f, 0x1ff },
|
||||
{ 0x1015f, 0x1ff },
|
||||
{ 0x1105f, 0x1ff },
|
||||
|
@ -2032,7 +2033,7 @@ static struct dram_cfg_param ddr_ddrphy_cfg_4gb_dual_die[] = {
|
|||
{ 0x7055, 0x1ff },
|
||||
{ 0x8055, 0x1ff },
|
||||
{ 0x9055, 0x1ff },
|
||||
{ 0x200c5, 0x19 },
|
||||
{ 0x200c5, 0x18 },
|
||||
{ 0x1200c5, 0x7 },
|
||||
{ 0x2200c5, 0x7 },
|
||||
{ 0x2002e, 0x2 },
|
||||
|
@ -2041,11 +2042,11 @@ static struct dram_cfg_param ddr_ddrphy_cfg_4gb_dual_die[] = {
|
|||
{ 0x90204, 0x0 },
|
||||
{ 0x190204, 0x0 },
|
||||
{ 0x290204, 0x0 },
|
||||
{ 0x20024, 0x1a3 },
|
||||
{ 0x20024, 0x1e3 },
|
||||
{ 0x2003a, 0x2 },
|
||||
{ 0x120024, 0x1a3 },
|
||||
{ 0x120024, 0x1e3 },
|
||||
{ 0x2003a, 0x2 },
|
||||
{ 0x220024, 0x1a3 },
|
||||
{ 0x220024, 0x1e3 },
|
||||
{ 0x2003a, 0x2 },
|
||||
{ 0x20056, 0x3 },
|
||||
{ 0x120056, 0x3 },
|
||||
|
@ -2111,7 +2112,7 @@ static struct dram_cfg_param ddr_ddrphy_cfg_4gb_dual_die[] = {
|
|||
{ 0x20018, 0x3 },
|
||||
{ 0x20075, 0x4 },
|
||||
{ 0x20050, 0x0 },
|
||||
{ 0x20008, 0x2ee },
|
||||
{ 0x20008, 0x3e8 },
|
||||
{ 0x120008, 0x64 },
|
||||
{ 0x220008, 0x19 },
|
||||
{ 0x20088, 0x9 },
|
||||
|
@ -2175,7 +2176,7 @@ static struct dram_cfg_param ddr_ddrphy_cfg_4gb_dual_die[] = {
|
|||
|
||||
static struct dram_cfg_param ddr_fsp0_cfg_4gb_dual_die[] = {
|
||||
{ 0xd0000, 0x0 },
|
||||
{ 0x54003, 0xbb8 },
|
||||
{ 0x54003, 0xfa0 },
|
||||
{ 0x54004, 0x2 },
|
||||
{ 0x54005, 0x2228 },
|
||||
{ 0x54006, 0x14 },
|
||||
|
@ -2184,26 +2185,26 @@ static struct dram_cfg_param ddr_fsp0_cfg_4gb_dual_die[] = {
|
|||
{ 0x5400b, 0x2 },
|
||||
{ 0x5400f, 0x100 },
|
||||
{ 0x54012, 0x310 },
|
||||
{ 0x54019, 0x2dd4 },
|
||||
{ 0x5401a, 0x31 },
|
||||
{ 0x54019, 0x3ff4 },
|
||||
{ 0x5401a, 0x33 },
|
||||
{ 0x5401b, 0x4866 },
|
||||
{ 0x5401c, 0x4800 },
|
||||
{ 0x5401e, 0x16 },
|
||||
{ 0x5401f, 0x2dd4 },
|
||||
{ 0x54020, 0x31 },
|
||||
{ 0x5401f, 0x3ff4 },
|
||||
{ 0x54020, 0x33 },
|
||||
{ 0x54021, 0x4866 },
|
||||
{ 0x54022, 0x4800 },
|
||||
{ 0x54024, 0x16 },
|
||||
{ 0x5402b, 0x1000 },
|
||||
{ 0x5402c, 0x3 },
|
||||
{ 0x54032, 0xd400 },
|
||||
{ 0x54033, 0x312d },
|
||||
{ 0x54032, 0xf400 },
|
||||
{ 0x54033, 0x333f },
|
||||
{ 0x54034, 0x6600 },
|
||||
{ 0x54035, 0x48 },
|
||||
{ 0x54036, 0x48 },
|
||||
{ 0x54037, 0x1600 },
|
||||
{ 0x54038, 0xd400 },
|
||||
{ 0x54039, 0x312d },
|
||||
{ 0x54038, 0xf400 },
|
||||
{ 0x54039, 0x333f },
|
||||
{ 0x5403a, 0x6600 },
|
||||
{ 0x5403b, 0x48 },
|
||||
{ 0x5403c, 0x48 },
|
||||
|
@ -2294,7 +2295,7 @@ static struct dram_cfg_param ddr_fsp2_cfg_4gb_dual_die[] = {
|
|||
/* P0 2D message block paremeter for training firmware */
|
||||
static struct dram_cfg_param ddr_fsp0_2d_cfg_4gb_dual_die[] = {
|
||||
{ 0xd0000, 0x0 },
|
||||
{ 0x54003, 0xbb8 },
|
||||
{ 0x54003, 0xfa0 },
|
||||
{ 0x54004, 0x2 },
|
||||
{ 0x54005, 0x2228 },
|
||||
{ 0x54006, 0x14 },
|
||||
|
@ -2304,26 +2305,26 @@ static struct dram_cfg_param ddr_fsp0_2d_cfg_4gb_dual_die[] = {
|
|||
{ 0x5400f, 0x100 },
|
||||
{ 0x54010, 0x1f7f },
|
||||
{ 0x54012, 0x310 },
|
||||
{ 0x54019, 0x2dd4 },
|
||||
{ 0x5401a, 0x31 },
|
||||
{ 0x54019, 0x3ff4 },
|
||||
{ 0x5401a, 0x33 },
|
||||
{ 0x5401b, 0x4866 },
|
||||
{ 0x5401c, 0x4800 },
|
||||
{ 0x5401e, 0x16 },
|
||||
{ 0x5401f, 0x2dd4 },
|
||||
{ 0x54020, 0x31 },
|
||||
{ 0x5401f, 0x3ff4 },
|
||||
{ 0x54020, 0x33 },
|
||||
{ 0x54021, 0x4866 },
|
||||
{ 0x54022, 0x4800 },
|
||||
{ 0x54024, 0x16 },
|
||||
{ 0x5402b, 0x1000 },
|
||||
{ 0x5402c, 0x3 },
|
||||
{ 0x54032, 0xd400 },
|
||||
{ 0x54033, 0x312d },
|
||||
{ 0x54032, 0xf400 },
|
||||
{ 0x54033, 0x333f },
|
||||
{ 0x54034, 0x6600 },
|
||||
{ 0x54035, 0x48 },
|
||||
{ 0x54036, 0x48 },
|
||||
{ 0x54037, 0x1600 },
|
||||
{ 0x54038, 0xd400 },
|
||||
{ 0x54039, 0x312d },
|
||||
{ 0x54038, 0xf400 },
|
||||
{ 0x54039, 0x333f },
|
||||
{ 0x5403a, 0x6600 },
|
||||
{ 0x5403b, 0x48 },
|
||||
{ 0x5403c, 0x48 },
|
||||
|
@ -2333,8 +2334,8 @@ static struct dram_cfg_param ddr_fsp0_2d_cfg_4gb_dual_die[] = {
|
|||
|
||||
static struct dram_fsp_msg ddr_dram_fsp_msg_4gb_dual_die[] = {
|
||||
{
|
||||
/* P0 3000mts 1D */
|
||||
.drate = 3000,
|
||||
/* P0 4000mts 1D */
|
||||
.drate = 4000,
|
||||
.fw_type = FW_1D_IMAGE,
|
||||
.fsp_cfg = ddr_fsp0_cfg_4gb_dual_die,
|
||||
.fsp_cfg_num = ARRAY_SIZE(ddr_fsp0_cfg_4gb_dual_die),
|
||||
|
@ -2354,8 +2355,8 @@ static struct dram_fsp_msg ddr_dram_fsp_msg_4gb_dual_die[] = {
|
|||
.fsp_cfg_num = ARRAY_SIZE(ddr_fsp2_cfg_4gb_dual_die),
|
||||
},
|
||||
{
|
||||
/* P0 3000mts 2D */
|
||||
.drate = 3000,
|
||||
/* P0 4000mts 2D */
|
||||
.drate = 4000,
|
||||
.fw_type = FW_2D_IMAGE,
|
||||
.fsp_cfg = ddr_fsp0_2d_cfg_4gb_dual_die,
|
||||
.fsp_cfg_num = ARRAY_SIZE(ddr_fsp0_2d_cfg_4gb_dual_die),
|
||||
|
@ -2374,5 +2375,5 @@ struct dram_timing_info dram_timing_4gb_dual_die = {
|
|||
.ddrphy_trained_csr_num = ARRAY_SIZE(ddr_ddrphy_trained_csr),
|
||||
.ddrphy_pie = ddr_phy_pie,
|
||||
.ddrphy_pie_num = ARRAY_SIZE(ddr_phy_pie),
|
||||
.fsp_table = { 3000, 400, 100, },
|
||||
.fsp_table = { 4000, 400, 100, },
|
||||
};
|
||||
|
|
|
@ -157,6 +157,7 @@ CONFIG_SPL_CLK_COMPOSITE_CCF=y
|
|||
CONFIG_CLK_COMPOSITE_CCF=y
|
||||
CONFIG_SPL_CLK_IMX8MM=y
|
||||
CONFIG_CLK_IMX8MM=y
|
||||
CONFIG_FSL_CAAM=y
|
||||
CONFIG_DFU_TFTP=y
|
||||
CONFIG_DFU_TIMEOUT=y
|
||||
CONFIG_DFU_MMC=y
|
||||
|
|
|
@ -164,6 +164,8 @@ CONFIG_SPL_CLK_COMPOSITE_CCF=y
|
|||
CONFIG_CLK_COMPOSITE_CCF=y
|
||||
CONFIG_SPL_CLK_IMX8MP=y
|
||||
CONFIG_CLK_IMX8MP=y
|
||||
CONFIG_FSL_CAAM=y
|
||||
CONFIG_IMX8M_DRAM_INLINE_ECC=y
|
||||
CONFIG_DFU_TFTP=y
|
||||
CONFIG_DFU_TIMEOUT=y
|
||||
CONFIG_DFU_MMC=y
|
||||
|
|
|
@ -160,6 +160,7 @@ CONFIG_SPL_CLK_COMPOSITE_CCF=y
|
|||
CONFIG_CLK_COMPOSITE_CCF=y
|
||||
CONFIG_SPL_CLK_IMX8MP=y
|
||||
CONFIG_CLK_IMX8MP=y
|
||||
CONFIG_FSL_CAAM=y
|
||||
CONFIG_DFU_TFTP=y
|
||||
CONFIG_DFU_TIMEOUT=y
|
||||
CONFIG_DFU_MMC=y
|
||||
|
|
|
@ -162,6 +162,7 @@ CONFIG_SPL_CLK_COMPOSITE_CCF=y
|
|||
CONFIG_CLK_COMPOSITE_CCF=y
|
||||
CONFIG_SPL_CLK_IMX8MP=y
|
||||
CONFIG_CLK_IMX8MP=y
|
||||
CONFIG_FSL_CAAM=y
|
||||
CONFIG_DFU_TFTP=y
|
||||
CONFIG_DFU_TIMEOUT=y
|
||||
CONFIG_DFU_MMC=y
|
||||
|
|
|
@ -111,11 +111,16 @@ void ddrphy_init_set_dfi_clk(unsigned int drate)
|
|||
dram_pll_init(MHZ(1000));
|
||||
dram_disable_bypass();
|
||||
break;
|
||||
case 3734:
|
||||
case 3733:
|
||||
case 3732:
|
||||
dram_pll_init(MHZ(933));
|
||||
dram_disable_bypass();
|
||||
break;
|
||||
case 3600:
|
||||
dram_pll_init(MHZ(900));
|
||||
dram_disable_bypass();
|
||||
break;
|
||||
case 3200:
|
||||
dram_pll_init(MHZ(800));
|
||||
dram_disable_bypass();
|
||||
|
|
Loading…
Reference in New Issue
Block a user