]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - drivers/mtd/nand/sunxi_nand_spl.c
sunxi_nand_spl: Add support for backup boot partitions
[karo-tx-uboot.git] / drivers / mtd / nand / sunxi_nand_spl.c
index eee6c7b7aba8ae6339671c9a1b75e035232fe4db..14320c44948aaf257b5c333acb580f3f2cfb14f8 100644 (file)
@@ -350,7 +350,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 syndrome = offs < CONFIG_NAND_SUNXI_SPL_SYNDROME_PARTITIONS_END;
+       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, syndrome) == 0)
+                               return 0;
+               }
+               return -1;
+       }
 
        return nand_read_buffer(offs, size, dest, syndrome);
 }