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 <pa...@antoniou-consulting.com> > Signed-off-by: Tom Rini <tr...@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 <pa...@antoniou-consulting.com> _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot