diff options
Diffstat (limited to 'board/engicam/common')
-rw-r--r-- | board/engicam/common/board.c | 24 | ||||
-rw-r--r-- | board/engicam/common/board.h | 1 | ||||
-rw-r--r-- | board/engicam/common/spl.c | 42 |
3 files changed, 66 insertions, 1 deletions
diff --git a/board/engicam/common/board.c b/board/engicam/common/board.c index c7ec55ff82..f633c71916 100644 --- a/board/engicam/common/board.c +++ b/board/engicam/common/board.c @@ -32,6 +32,30 @@ static void mmc_late_init(void) } #endif +static void setenv_fdt_file(void) +{ + const char *cmp_dtb = CONFIG_DEFAULT_DEVICE_TREE; + + if (!strcmp(cmp_dtb, "imx6q-icore")) { + if (is_mx6dq()) + env_set("fdt_file", "imx6q-icore.dtb"); + else if(is_mx6dl() || is_mx6solo()) + env_set("fdt_file", "imx6dl-icore.dtb"); + } else if (!strcmp(cmp_dtb, "imx6q-icore-rqs")) { + if (is_mx6dq()) + env_set("fdt_file", "imx6q-icore-rqs.dtb"); + else if(is_mx6dl() || is_mx6solo()) + env_set("fdt_file", "imx6dl-icore-rqs.dtb"); + } else if (!strcmp(cmp_dtb, "imx6ul-geam-kit")) + env_set("fdt_file", "imx6ul-geam-kit.dtb"); + else if (!strcmp(cmp_dtb, "imx6ul-isiot-mmc")) + env_set("fdt_file", "imx6ul-isiot-emmc.dtb"); + else if (!strcmp(cmp_dtb, "imx6ul-isiot-emmc")) + env_set("fdt_file", "imx6ul-isiot-emmc.dtb"); + else if (!strcmp(cmp_dtb, "imx6ul-isiot-nand")) + env_set("fdt_file", "imx6ul-isiot-nand.dtb"); +} + int board_late_init(void) { switch ((imx6_src_get_boot_mode() & IMX6_BMODE_MASK) >> diff --git a/board/engicam/common/board.h b/board/engicam/common/board.h index f364a23296..c720b0bcd0 100644 --- a/board/engicam/common/board.h +++ b/board/engicam/common/board.h @@ -6,7 +6,6 @@ #ifndef _BOARD_H_ #define _BOARD_H_ -void setenv_fdt_file(void); void setup_gpmi_nand(void); void setup_display(void); #endif /* _BOARD_H_ */ diff --git a/board/engicam/common/spl.c b/board/engicam/common/spl.c index 8711418fb4..6e2389dd4b 100644 --- a/board/engicam/common/spl.c +++ b/board/engicam/common/spl.c @@ -39,6 +39,48 @@ static iomux_v3_cfg_t const uart_pads[] = { #endif }; +#ifdef CONFIG_SPL_LOAD_FIT +int board_fit_config_name_match(const char *name) +{ + if (is_mx6dq() && !strcmp(name, "imx6q-icore")) + return 0; + else if (is_mx6dq() && !strcmp(name, "imx6q-icore-rqs")) + return 0; + else if ((is_mx6dl() || is_mx6solo()) && !strcmp(name, "imx6dl-icore")) + return 0; + else if ((is_mx6dl() || is_mx6solo()) && !strcmp(name, "imx6dl-icore-rqs")) + return 0; + else + return -1; +} +#endif + +#ifdef CONFIG_ENV_IS_IN_MMC +void board_boot_order(u32 *spl_boot_list) +{ + u32 bmode = imx6_src_get_boot_mode(); + u8 boot_dev = BOOT_DEVICE_MMC1; + + switch ((bmode & IMX6_BMODE_MASK) >> IMX6_BMODE_SHIFT) { + case IMX6_BMODE_SD: + case IMX6_BMODE_ESD: + /* SD/eSD - BOOT_DEVICE_MMC1 */ + break; + case IMX6_BMODE_MMC: + case IMX6_BMODE_EMMC: + /* MMC/eMMC */ + boot_dev = BOOT_DEVICE_MMC2; + break; + default: + /* Default - BOOT_DEVICE_MMC1 */ + printf("Wrong board boot order\n"); + break; + } + + spl_boot_list[0] = boot_dev; +} +#endif + #ifdef CONFIG_SPL_OS_BOOT int spl_start_uboot(void) { |