ARM: mx6: ddr: use Kconfig for inclusion of DDR calibration routines
authorEric Nelson <eric@nelint.com>
Sun, 30 Oct 2016 23:33:50 +0000 (16:33 -0700)
committerStefano Babic <sbabic@denx.de>
Tue, 29 Nov 2016 15:40:37 +0000 (16:40 +0100)
The DDR calibration routines are gated by conditionals for the
i.MX6DQ SOCs, but with the use of the sysinfo parameter, these
are usable on at least i.MX6SDL and i.MX6SL variants with DDR3.

Also, since only the Novena board currently uses the dynamic
DDR calibration routines, these routines waste space on other
boards using SPL.

Add a KConfig entry to allow boards to selectively include the
DDR calibration routines.

Signed-off-by: Eric Nelson <eric@nelint.com>
arch/arm/cpu/armv7/mx6/Kconfig
arch/arm/cpu/armv7/mx6/ddr.c
arch/arm/include/asm/arch-mx6/mx6-ddr.h
configs/novena_defconfig

index 762a5814d7d97aa43976103e4f735f341904b7d7..8b2217edbdabfab04db1614bb10a8fb63e3ae137 100644 (file)
@@ -35,6 +35,14 @@ config MX6ULL
        bool
        select MX6UL
 
+config MX6_DDRCAL
+       bool "Include dynamic DDR calibration routines"
+       depends on SPL
+       default n
+       help
+         Say "Y" if your board uses dynamic (per-boot) DDR calibration.
+         If unsure, say N.
+
 choice
        prompt "MX6 board select"
        optional
index b12fb64f2ee236d840bd40f46bd1b1a90cbd0654..0cf391eb9ca9206eec6e85fce468951983d27e26 100644 (file)
@@ -14,8 +14,7 @@
 #include <asm/types.h>
 #include <wait_bit.h>
 
-#if defined(CONFIG_MX6QDL) || defined(CONFIG_MX6Q) || defined(CONFIG_MX6D)
-
+#if defined(CONFIG_MX6_DDRCAL)
 static void reset_read_data_fifos(void)
 {
        struct mmdc_p_regs *mmdc0 = (struct mmdc_p_regs *)MMDC_P0_BASE_ADDR;
index 12454fa7c555ef9fda7debd76f9144b57ad7bbd9..2a8d4431eaacc2fc9c1763527df43a601aef3191 100644 (file)
@@ -458,7 +458,7 @@ void mx6sl_dram_iocfg(unsigned width,
                      const struct mx6sl_iomux_ddr_regs *,
                      const struct mx6sl_iomux_grp_regs *);
 
-#if defined(CONFIG_MX6QDL) || defined(CONFIG_MX6Q) || defined(CONFIG_MX6D)
+#if defined(CONFIG_MX6_DDRCAL)
 int mmdc_do_write_level_calibration(struct mx6_ddr_sysinfo const *sysinfo);
 int mmdc_do_dqs_calibration(struct mx6_ddr_sysinfo const *sysinfo);
 void mmdc_read_calibration(struct mx6_ddr_sysinfo const *sysinfo,
index e0d6f2ee5321e7e632a95869f8a2b193d2302a71..4a3e266d7c4d8cc8907826492ca2868d2a63c0e2 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_MX6=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
+CONFIG_MX6_DDRCAL=y
 CONFIG_TARGET_KOSAGI_NOVENA=y
 CONFIG_SPL_EXT_SUPPORT=y
 CONFIG_SPL_FAT_SUPPORT=y