Instead of hardcoding the 'fdt_file' variable, let's detect the SoC and
board variant on the fly and change the dtb name.

Based on a patch from Rabeeh Khoury.

Signed-off-by: Fabio Estevam <fabio.este...@freescale.com>
---
Changes since v1:
- Attribute the credit to Rabeeh
- Create a U-boot command for checking if the board is hummingboard

 board/solidrun/mx6cuboxi/mx6cuboxi.c | 30 ++++++++++++++++++++++++++++++
 include/configs/mx6cuboxi.h          | 12 ++++++++++--
 2 files changed, 40 insertions(+), 2 deletions(-)

diff --git a/board/solidrun/mx6cuboxi/mx6cuboxi.c 
b/board/solidrun/mx6cuboxi/mx6cuboxi.c
index 83410b2..4ea6081 100644
--- a/board/solidrun/mx6cuboxi/mx6cuboxi.c
+++ b/board/solidrun/mx6cuboxi/mx6cuboxi.c
@@ -212,6 +212,36 @@ int checkboard(void)
        return 0;
 }
 
+static const char *build_dts_prefix(void)
+{
+       if (is_cpu_type(MXC_CPU_MX6Q) || is_cpu_type(MXC_CPU_MX6D))
+               return "imx6q";
+       else if (is_cpu_type(MXC_CPU_MX6DL) || is_cpu_type(MXC_CPU_MX6SOLO))
+               return "imx6dl";
+
+       return "unknown";
+}
+
+static int do_is_hummingboard(cmd_tbl_t *cmdtp, int flag, int argc, char * 
const argv[])
+{
+       if (is_hummingboard())
+               return CMD_RET_SUCCESS;
+       else
+               return CMD_RET_FAILURE;
+}
+
+U_BOOT_CMD(
+       is_hummingboard, 1, 1, do_is_hummingboard,
+       "detect if it is a Hummingboard or Cubox-i",
+       ""
+);
+
+int misc_init_r(void)
+{
+       setenv("dts_prefix", build_dts_prefix());
+       return 0;
+}
+
 #ifdef CONFIG_SPL_BUILD
 #include <asm/arch/mx6-ddr.h>
 static const struct mx6dq_iomux_ddr_regs mx6q_ddr_ioregs = {
diff --git a/include/configs/mx6cuboxi.h b/include/configs/mx6cuboxi.h
index 5d58b16..c3cf633 100644
--- a/include/configs/mx6cuboxi.h
+++ b/include/configs/mx6cuboxi.h
@@ -29,6 +29,7 @@
 
 #define CONFIG_SYS_MALLOC_LEN          (2 * SZ_1M)
 #define CONFIG_BOARD_EARLY_INIT_F
+#define CONFIG_MISC_INIT_R
 #define CONFIG_MXC_GPIO
 #define CONFIG_MXC_UART
 #define CONFIG_CMD_FUSE
@@ -81,14 +82,19 @@
 #define CONFIG_MXC_UART_BASE   UART1_BASE
 #define CONFIG_CONSOLE_DEV     "ttymxc0"
 #define CONFIG_MMCROOT         "/dev/mmcblk0p2"
-#define CONFIG_DEFAULT_FDT_FILE        "imx6q-hummingboard.dtb"
 #define CONFIG_SYS_FSL_USDHC_NUM       1
 #define CONFIG_SYS_MMC_ENV_DEV         0       /* SDHC2 */
 
 #define CONFIG_EXTRA_ENV_SETTINGS \
        "script=boot.scr\0" \
        "image=zImage\0" \
-       "fdt_file=" CONFIG_DEFAULT_FDT_FILE "\0" \
+       "check_suffix=" \
+               "if is_hummingboard; then " \
+                       "setenv dts_suffix -hummingboard.dtb;" \
+               "else " \
+                       "setenv dts_suffix -cubox-i.dtb;" \
+               "fi; "\
+       "setenv fdt_file ${dts_prefix}${dts_suffix};" \
        "fdt_addr=0x18000000\0" \
        "boot_fdt=try\0" \
        "ip_dyn=yes\0" \
@@ -119,6 +125,7 @@
        "loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
        "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
        "mmcboot=echo Booting from mmc ...; " \
+               "run check_suffix; "\
                "run mmcargs; " \
                "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
                        "if run loadfdt; then " \
@@ -137,6 +144,7 @@
                "root=/dev/nfs " \
                "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
        "netboot=echo Booting from net ...; " \
+               "run check_suffix; "\
                "run netargs; " \
                "if test ${ip_dyn} = yes; then " \
                        "setenv get_cmd dhcp; " \
-- 
1.9.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to