From: Lokesh Vutla Date: Mon, 11 Apr 2016 09:54:50 +0000 (+0530) Subject: spl: mmc: raw: Try to load u-boot if Linux image is not found X-Git-Tag: v2016.05-rc1~4 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=811906aebcb81c14c1a836a5ae97f49f1cc9b7ec;p=u-boot spl: mmc: raw: Try to load u-boot if Linux image is not found If CONFIG_SPL_OS_BOOT is enabled and Linux image is not flashed at RAW_MODE_KERNEL_SECTOR in MMC, spl still assumes that Linux is available and tries to boot it and hangs. In order to avoid this, adding a check to verify if parsed image header is of type IH_OS_LINUX. If it fails then fall back to load u-boot image. Signed-off-by: Lokesh Vutla --- diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c index 7d3bfc60ba..1a10c555f4 100644 --- a/common/spl/spl_mmc.c +++ b/common/spl/spl_mmc.c @@ -178,6 +178,7 @@ static int mmc_load_image_raw_partition(struct mmc *mmc, int partition) static int mmc_load_image_raw_os(struct mmc *mmc) { unsigned long count; + int ret; count = mmc->block_dev.block_read(&mmc->block_dev, CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR, @@ -190,8 +191,17 @@ static int mmc_load_image_raw_os(struct mmc *mmc) return -1; } - return mmc_load_image_raw_sector(mmc, + ret = mmc_load_image_raw_sector(mmc, CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR); + if (ret) + return ret; + + if (spl_image.os != IH_OS_LINUX) { + puts("Expected Linux image is not found. Trying to start U-boot\n"); + return -ENOENT; + } + + return 0; } #else int spl_start_uboot(void)