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 <lokeshvutla@ti.com>
This commit is contained in:
Lokesh Vutla 2016-04-11 15:24:50 +05:30 committed by Tom Rini
parent df120142f3
commit 811906aebc

View file

@ -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)