From: Fabio Estevam <fabio.este...@freescale.com> 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: Rabeeh Khoury <rab...@solid-run.com> Signed-off-by: Fabio Estevam <fabio.este...@freescale.com> --- Changes since v2: - Add Rabeeh's Signed-off-by 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