From e310c753afd0e31bac21488f594d2edd5df4297e Mon Sep 17 00:00:00 2001 From: Ji Luo Date: Tue, 18 Feb 2020 15:32:39 +0800 Subject: [PATCH] MA-16418 [Android] Support imx8mp spl boot from mmc Add mmc board level implementation for imx8mp, so we can support boot from mmc besides ROMAPI. Test: eMMC/SD boot. Change-Id: Ie3c28e5622dd819583e2146557ac75f89dbe19ef Signed-off-by: Ji Luo (cherry picked from commit 05b64483e5f46f82beb7f542d0148498fc21334f) --- board/freescale/imx8mp_evk/imx8mp_evk.c | 14 ++++++++++++++ board/freescale/imx8mp_evk/spl.c | 21 +++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/board/freescale/imx8mp_evk/imx8mp_evk.c b/board/freescale/imx8mp_evk/imx8mp_evk.c index e3e3795118..2afee7df9e 100644 --- a/board/freescale/imx8mp_evk/imx8mp_evk.c +++ b/board/freescale/imx8mp_evk/imx8mp_evk.c @@ -495,3 +495,17 @@ ulong board_get_usable_ram_top(ulong total_size) return gd->ram_top; } #endif + +#ifdef CONFIG_SPL_MMC_SUPPORT +#define UBOOT_RAW_SECTOR_OFFSET 0x40 +unsigned long spl_mmc_get_uboot_raw_sector(struct mmc *mmc) +{ + u32 boot_dev = spl_boot_device(); + switch (boot_dev) { + case BOOT_DEVICE_MMC2: + return CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR - UBOOT_RAW_SECTOR_OFFSET; + default: + return CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR; + } +} +#endif diff --git a/board/freescale/imx8mp_evk/spl.c b/board/freescale/imx8mp_evk/spl.c index a5e315a34d..592af2a703 100644 --- a/board/freescale/imx8mp_evk/spl.c +++ b/board/freescale/imx8mp_evk/spl.c @@ -38,7 +38,28 @@ DECLARE_GLOBAL_DATA_PTR; int spl_board_boot_device(enum boot_device boot_dev_spl) { +#ifdef CONFIG_SPL_BOOTROM_SUPPORT return BOOT_DEVICE_BOOTROM; +#else + switch (boot_dev_spl) { + case SD1_BOOT: + case MMC1_BOOT: + case SD2_BOOT: + case MMC2_BOOT: + return BOOT_DEVICE_MMC1; + case SD3_BOOT: + case MMC3_BOOT: + return BOOT_DEVICE_MMC2; + case QSPI_BOOT: + return BOOT_DEVICE_NOR; + case NAND_BOOT: + return BOOT_DEVICE_NAND; + case USB_BOOT: + return BOOT_DEVICE_BOARD; + default: + return BOOT_DEVICE_NONE; + } +#endif } void spl_dram_init(void) -- 2.17.1