[U-Boot] [PATCH v3 1/8] SPL: Add CONFIG_SUPPORT_EMMC_BOOT support to CONFIG_SPL_FRAMEWORK

Pantelis Antoniou panto at antoniou-consulting.com
Fri Feb 7 16:59:40 CET 2014


Hi Tom,

On Feb 5, 2014, at 5:24 PM, Tom Rini wrote:

> We use the switch CONFIG_SUPPORT_EMMC_BOOT today to enable some
> additional features of the eMMC boot partitions.  Add support for being
> told that we have booted from one of these partitions to the spl
> framework and implement this on TI OMAP/related.
> 
> Cc: Pantelis Antoniou <panto at antoniou-consulting.com>
> Signed-off-by: Tom Rini <trini at ti.com>
> ---
> Changes in v3:
> - Rework eMMC boot detect logic for TI platforms, in the eMMC boot case
>  we rely on non-FAT/RAW values being in bootmode.
> ---
> arch/arm/cpu/armv7/omap-common/boot-common.c |   13 ++++++++++++-
> common/spl/spl_mmc.c                         |   24 ++++++++++++++++++++++++
> include/spl.h                                |    1 +
> 3 files changed, 37 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm/cpu/armv7/omap-common/boot-common.c b/arch/arm/cpu/armv7/omap-common/boot-common.c
> index 69fff32..52e0f4a 100644
> --- a/arch/arm/cpu/armv7/omap-common/boot-common.c
> +++ b/arch/arm/cpu/armv7/omap-common/boot-common.c
> @@ -66,7 +66,18 @@ u32 spl_boot_device(void)
> 
> u32 spl_boot_mode(void)
> {
> -	return gd->arch.omap_boot_params.omap_bootmode;
> +	u32 val = gd->arch.omap_boot_params.omap_bootmode;
> +
> +	if (val == MMCSD_MODE_RAW)
> +		return MMCSD_MODE_RAW;
> +	else if (val == MMCSD_MODE_FAT)
> +		return MMCSD_MODE_FAT;
> +	else
> +#ifdef CONFIG_SUPPORT_EMMC_BOOT
> +		return MMCSD_MODE_EMMCBOOT;
> +#else
> +		return MMCSD_MODE_UNDEFINED;
> +#endif
> }
> 
> void spl_board_init(void)
> diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c
> index 13fbff0..fa6f891 100644
> --- a/common/spl/spl_mmc.c
> +++ b/common/spl/spl_mmc.c
> @@ -111,6 +111,30 @@ void spl_mmc_load_image(void)
> 					CONFIG_SYS_MMC_SD_FAT_BOOT_PARTITION,
> 					CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME);
> #endif
> +#ifdef CONFIG_SUPPORT_EMMC_BOOT
> +	} else if (boot_mode == MMCSD_MODE_EMMCBOOT) {
> +		/*
> +		 * We need to check what the partition is configured to.
> +		 * 1 and 2 match up to boot0 / boot1 and 7 is user data
> +		 * which is the first physical partition (0).
> +		 */
> +		int part = (mmc->part_config >> 3) & PART_ACCESS_MASK;
> +
> +		if (part == 7)
> +			part = 0;
> +
> +		if (mmc_switch_part(0, part)) {
> +#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
> +			puts("MMC partition switch failed\n");
> +#endif
> +			hang();
> +		}
> +#ifdef CONFIG_SPL_OS_BOOT
> +		if (spl_start_uboot() || mmc_load_image_raw_os(mmc))
> +#endif
> +		err = mmc_load_image_raw(mmc,
> +			CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR);
> +#endif
> 	} else {
> #ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
> 		puts("spl: wrong MMC boot mode\n");
> diff --git a/include/spl.h b/include/spl.h
> index 5e24856..dad00c0 100644
> --- a/include/spl.h
> +++ b/include/spl.h
> @@ -16,6 +16,7 @@
> #define MMCSD_MODE_UNDEFINED	0
> #define MMCSD_MODE_RAW		1
> #define MMCSD_MODE_FAT		2
> +#define MMCSD_MODE_EMMCBOOT	3
> 
> struct spl_image_info {
> 	const char *name;
> -- 
> 1.7.9.5

Applied. Thanks.

Signed-off-by: Pantelis Antoniou <panto at antoniou-consulting.com>



More information about the U-Boot mailing list