Package: u-boot-imx
Version: 2017.11
Add a patch fixing DDR DRAM configuration on DH iMX6.
Without this patch, some of the SoMs fail the DDR DRAM
calibration procedure due to the T-topology routing.
--
Best regards,
Marek Vasut
>From d9ed92ade37350f0f5f77c5216c4482ef4e91708 Mon Sep 17 00:00:00 2001
From: Marek Vasut
Date: Sat, 18 Nov 2017 11:14:58 +0100
Subject: [PATCH] Backport DH iMX6 DDR configuration fix
Add a patch fixing DDR DRAM configuration on DH iMX6.
Without this patch, some of the SoMs fail the DDR DRAM
calibration procedure due to the T-topology routing.
Signed-off-by: Marek Vasut
---
...just-DDR-DRAM-settings-on-DHCOM-i.MX6-PDK.patch | 99 ++
debian/patches/series | 2 +
2 files changed, 101 insertions(+)
create mode 100644 debian/patches/dh_imx6/0001-ARM-imx6-Adjust-DDR-DRAM-settings-on-DHCOM-i.MX6-PDK.patch
diff --git a/debian/patches/dh_imx6/0001-ARM-imx6-Adjust-DDR-DRAM-settings-on-DHCOM-i.MX6-PDK.patch b/debian/patches/dh_imx6/0001-ARM-imx6-Adjust-DDR-DRAM-settings-on-DHCOM-i.MX6-PDK.patch
new file mode 100644
index 00..f1756cf3e5
--- /dev/null
+++ b/debian/patches/dh_imx6/0001-ARM-imx6-Adjust-DDR-DRAM-settings-on-DHCOM-i.MX6-PDK.patch
@@ -0,0 +1,99 @@
+From 1d91719e57e7bd5dfb9a25ace697714dc7b98871 Mon Sep 17 00:00:00 2001
+From: Marek Vasut
+Date: Tue, 7 Nov 2017 17:37:07 +0100
+Subject: [PATCH] ARM: imx6: Adjust DDR DRAM settings on DHCOM i.MX6 PDK
+
+The board uses T-topology for the four x16 DRAM chips, so remove
+the write-leveling from the SPL as that is only usefly on fly-by
+topology and can be harmful on T-topology. Also update the DRAM
+timing with values from calibration on multiple boards.
+
+Signed-off-by: Marek Vasut
+Cc: Stefano Babic
+---
+ board/dhelectronics/dh_imx6/dh_imx6_spl.c | 40 +++
+ 1 file changed, 20 insertions(+), 20 deletions(-)
+
+diff --git a/board/dhelectronics/dh_imx6/dh_imx6_spl.c b/board/dhelectronics/dh_imx6/dh_imx6_spl.c
+index e22ff5c8c6..bb98f39f02 100644
+--- a/board/dhelectronics/dh_imx6/dh_imx6_spl.c
b/board/dhelectronics/dh_imx6/dh_imx6_spl.c
+@@ -140,40 +140,39 @@ static const struct mx6sdl_iomux_grp_regs dhcom6sdl_grp_ioregs = {
+ };
+
+ static const struct mx6_mmdc_calibration dhcom_mmdc_calib = {
+- .p0_mpwldectrl0 = 0x001F001F,
+- .p0_mpwldectrl1 = 0x001F001F,
+- .p1_mpwldectrl0 = 0x00440044,
+- .p1_mpwldectrl1 = 0x00440044,
+- .p0_mpdgctrl0 = 0x434B0350,
+- .p0_mpdgctrl1 = 0x034C0359,
+- .p1_mpdgctrl0 = 0x434B0350,
+- .p1_mpdgctrl1 = 0x03650348,
+- .p0_mprddlctl = 0x4436383B,
+- .p1_mprddlctl = 0x39393341,
+- .p0_mpwrdlctl = 0x35373933,
+- .p1_mpwrdlctl = 0x48254A36,
++ .p0_mpwldectrl0 = 0x0011000E,
++ .p0_mpwldectrl1 = 0x000E001B,
++ .p1_mpwldectrl0 = 0x00190015,
++ .p1_mpwldectrl1 = 0x00070018,
++ .p0_mpdgctrl0 = 0x42720306,
++ .p0_mpdgctrl1 = 0x026F0266,
++ .p1_mpdgctrl0 = 0x4273030A,
++ .p1_mpdgctrl1 = 0x02740240,
++ .p0_mprddlctl = 0x45393B3E,
++ .p1_mprddlctl = 0x403A3747,
++ .p0_mpwrdlctl = 0x40434541,
++ .p1_mpwrdlctl = 0x473E4A3B,
+ };
+
+ static const struct mx6_ddr3_cfg dhcom_mem_ddr = {
+ .mem_speed = 1600,
+- .density = 4,
++ .density = 2,
+ .width = 64,
+ .banks = 8,
+ .rowaddr = 14,
+ .coladdr = 10,
+ .pagesz = 2,
+- .trcd = 1375,
+- .trcmin = 4875,
+- .trasmin = 3500,
++ .trcd = 1312,
++ .trcmin = 5863,
++ .trasmin = 3750,
+ };
+
+ static const struct mx6_ddr_sysinfo dhcom_ddr_info = {
+ /* width of data bus:0=16,1=32,2=64 */
+ .dsize = 2,
+- /* config for full 4GB range so that get_mem_size() works */
+- .cs_density = 32, /* 32Gb per CS */
++ .cs_density = 16,
+ .ncs = 1, /* single chip select */
+- .cs1_mirror = 0,
++ .cs1_mirror = 1,
+ .rtt_wr = 1, /* DDR3_RTT_60_OHM, RTT_Wr = RZQ/4 */
+ .rtt_nom = 1, /* DDR3_RTT_60_OHM, RTT_Nom = RZQ/4 */
+ .walat = 1, /* Write additional latency */
+@@ -182,6 +181,8 @@ static const struct mx6_ddr_sysinfo dhcom_ddr_info = {
+ .bi_on = 1, /* Bank interleaving enabled */
+ .sde_to_rst = 0x10, /* 14 cycles, 200us (JEDEC default) */
+ .rst_to_cke = 0x23, /* 33 cycles, 500us (JEDEC default) */
++ .refsel = 1, /* Refresh cycles at 32KHz */
++ .refr = 3, /* 4 refresh commands per refresh cycle */
+ };
+
+ static void ccgr_init(void)
+@@ -388,7 +389,6 @@ void board_init_f(ulong dummy)
+
+ /* Perform DDR DRAM calibration */
+ udelay(100);
+- mmdc_do_write_level_calibration(&dhcom_ddr_info);
+ mmdc_do_dqs_calibration(&dhcom_ddr_info);
+
+ /* Clear the BSS. */
+--
+2.11.0
+
diff --git a/debian/patches/series b/debian/patches/series
index 006639e587..223e966a36 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -29,3 +29,5 @@ odroid-xu3/bootdelay
odroid-xu3/877074-u-boot-exynos-Default-environment-for-Odr.patch
firefly/fdtfile
+
+dh_imx6/0001-ARM-imx6-Adjust-DDR-DRAM-settings-on-DHCOM-i.MX6-PDK.patch
--
2.15.0