On Sat, 2015-08-15 at 22:02 +0200, Hans de Goede wrote: > The BROM does not care / use bad page markings, instead it deals with > any bad pages in the first erase-block by simply trying to load "boot0" > from the first next erase-block.
"first/next"? Maybe, or maybe s/first //? > This commit implements the same strategy for the sunxi spl nand code, > allowing it to boot from the backup boot partition when the main boot > partition is bad (tested by erasing the main boot partition). > > Signed-off-by: Hans de Goede <hdego...@redhat.com> Acked-by: Ian Campbell <i...@hellion.org.uk> > --- > drivers/mtd/nand/sunxi_nand_spl.c | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/drivers/mtd/nand/sunxi_nand_spl.c > b/drivers/mtd/nand/sunxi_nand_spl.c > index 5687cd8..a75e674 100644 > --- a/drivers/mtd/nand/sunxi_nand_spl.c > +++ b/drivers/mtd/nand/sunxi_nand_spl.c > @@ -348,6 +348,23 @@ static int nand_read_buffer(uint32_t offs, > unsigned int size, void *dest, > > int nand_spl_load_image(uint32_t offs, unsigned int size, void > *dest) > { > + const uint32_t boot_offsets[] = { > + 0 * 1024 * 1024 + CONFIG_SYS_NAND_U_BOOT_OFFS, > + 1 * 1024 * 1024 + CONFIG_SYS_NAND_U_BOOT_OFFS, > + 2 * 1024 * 1024 + CONFIG_SYS_NAND_U_BOOT_OFFS, > + 4 * 1024 * 1024 + CONFIG_SYS_NAND_U_BOOT_OFFS, > + }; > + int i; > + > + if (offs == CONFIG_SYS_NAND_U_BOOT_OFFS) { > + for (i = 0; i < ARRAY_SIZE(boot_offsets); i++) { > + if (nand_read_buffer(boot_offsets[i], size, > + dest, 1) == 0) > + return 0; > + } > + return -1; > + } > + > return nand_read_buffer(offs, size, dest, 1); > } > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot