[U-Boot] [PATCH] SPL: add support to boot from a partition type

Westergreen, Dalon dalon.westergreen at intel.com
Sun Jan 29 02:59:17 CET 2017


On Sat, 2017-01-28 at 19:06 -0500, Tom Rini wrote:
> On Sat, Jan 28, 2017 at 03:20:09PM -0800, Dalon Westergreen wrote:
> 
> > 
> > From: Dalon Westergreen <dalon.westergreen at intel.com>
> > 
> > the socfpga bootrom supports mmc booting from either a raw image
> > starting at 0x0, or from a partition of type 0xa2.  This patch
> > adds support for locating the boot image in the first type 0xa2
> > partition found.
> > 
> > Signed-off-by: Dalon Westergreen <dalon.westergreen at intel.com>
> > ---
> >  common/spl/Kconfig   | 17 +++++++++++++++++
> >  common/spl/spl_mmc.c | 45 ++++++++++++++++++++++++++++++++++++++++++++-
> >  disk/part_dos.c      |  1 +
> >  include/part.h       |  1 +
> >  4 files changed, 63 insertions(+), 1 deletion(-)
> 
> Today socfpga sets SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION to 1.  Do you
> really have enough cases where the special partition isn't going to be
> likely known when building U-Boot for a given platform?
All of our kits actually ship with the third partition being the 0xa2
partition.  Normally the 1 partition is the fat partition.  I want to
support the case where the 0xa2 partition is arbitrary and used only for
the SPL.  the 1 partition is a fat partition with the full u-boot image.

> 
> The code itself looks fine (I don't see an easy way to get at the
> max_entries field of the partition type struct, but assuming that the
> ROM only support MBR tables today you could use the DOS_ENTRY_NUMBERS
> constant with a comment above it).  But we're making this bit of code
> even more complex and adding more #ifdefs.
> 
> [snip]
> > 
> > @@ -331,12 +367,19 @@ int spl_mmc_load_image(struct spl_image_info
> > *spl_image,
> >  			CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION);
> >  		if (!err)
> >  			return err;
> > +		
> > +#ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
> > +		err = mmc_load_image_raw_partition_type(spl_image, mmc,
> > +			CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE);
> > +		if (!err)
> > +			return err;
> > +#endif
> 
> ... but couldn't we re-structure things so that both of the "boot from a
> partition" options take the same point from spl_mmc_load_image() instead
> set a partition variable depending on static/dynamic partition # being
> used?  Or would that make things even messier looking?  Thanks!
> 
yes, i like this.  seems cleaner.
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot


More information about the U-Boot mailing list