[U-Boot] [PATCH 15/15] sunxi_nand_spl: Add support for backup boot partitions
Ian Campbell
ijc at hellion.org.uk
Mon Aug 17 10:34:14 CEST 2015
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 <hdegoede at redhat.com>
Acked-by: Ian Campbell <ijc at 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);
> }
>
More information about the U-Boot
mailing list