]> git.sur5r.net Git - u-boot/blobdiff - board/dhelectronics/dh_imx6/dh_imx6_spl.c
SPDX: Convert all of our single license tags to Linux Kernel style
[u-boot] / board / dhelectronics / dh_imx6 / dh_imx6_spl.c
index e22ff5c8c6c817e3a1e027c4f1ccd0c7203268c8..dffe4ebd4525b2605fde8ae50787044394076ca4 100644 (file)
@@ -1,9 +1,8 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * DHCOM DH-iMX6 PDK SPL support
  *
  * Copyright (C) 2017 Marek Vasut <marex@denx.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
@@ -45,8 +44,6 @@
        (PAD_CTL_PUS_47K_UP | PAD_CTL_SPEED_LOW | PAD_CTL_DSE_80ohm |   \
         PAD_CTL_SRE_FAST | PAD_CTL_HYS)
 
-DECLARE_GLOBAL_DATA_PTR;
-
 static const struct mx6dq_iomux_ddr_regs dhcom6dq_ddr_ioregs = {
        .dram_sdclk_0   = 0x00020030,
        .dram_sdclk_1   = 0x00020030,
@@ -140,40 +137,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 +178,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)
@@ -386,11 +384,6 @@ void board_init_f(ulong dummy)
                                  &dhcom6sdl_grp_ioregs);
        mx6_dram_cfg(&dhcom_ddr_info, &dhcom_mmdc_calib, &dhcom_mem_ddr);
 
-       /* Perform DDR DRAM calibration */
-       udelay(100);
-       mmdc_do_write_level_calibration(&dhcom_ddr_info);
-       mmdc_do_dqs_calibration(&dhcom_ddr_info);
-
        /* Clear the BSS. */
        memset(__bss_start, 0, __bss_end - __bss_start);