
Hi all, yes you are right. I had checked out older version of u-boot. off + mtd->erasesize this is OK. I`m sending patch v2.
On 08. 12. 18 17:16, Stefano Babic wrote:
Hi Jiri, Miquel,
On 24/10/18 15:56, Miquel Raynal wrote:
Hi Jiri,
Jiri Valek jirik.valek@seznam.cz wrote on Fri, 19 Oct 2018 10:15:55 +0200:
From: Jiri Valek valek@2n.cz
Currently the badblock skipping fails. SPL loader fails to boot from NAND. End up on message "SPL: failed to boot from all boot devices"
Signed-off-by: Jiri Valek jirik.valek@seznam.cz
drivers/mtd/nand/raw/mxs_nand_spl.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/drivers/mtd/nand/raw/mxs_nand_spl.c b/drivers/mtd/nand/raw/mxs_nand_spl.c index 2d7bbe83cc..56618c95dc 100644 --- a/drivers/mtd/nand/raw/mxs_nand_spl.c +++ b/drivers/mtd/nand/raw/mxs_nand_spl.c @@ -239,6 +239,7 @@ int nand_spl_load_image(uint32_t offs, unsigned int size, void *buf) */ while (is_badblock(mtd, offs, 1)) { page = page + nand_page_per_block;
offs = offs + mtd.erasesize; /* Check i we've reached the end of flash. */ if (page >= mtd->size >> chip->page_shift) return -ENOMEM;
Reviewed-by: Miquel Raynal miquel.raynal@bootlin.com
I agree that secto must be skipped, but implementation looks wrong. mtd is a pointer, and the above line should be off + mtd->erasesize. Do you build with it ? I tried to apply it, as expected it cannot be compiled clean.
Best regards, Stefano Babic
--- Changes for v2: - Repaired "mtd" to struct pinter
drivers/mtd/nand/raw/mxs_nand_spl.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/drivers/mtd/nand/raw/mxs_nand_spl.c b/drivers/mtd/nand/raw/mxs_nand_spl.c index c628f3adec..ddaaba87a3 100644 --- a/drivers/mtd/nand/raw/mxs_nand_spl.c +++ b/drivers/mtd/nand/raw/mxs_nand_spl.c @@ -240,6 +240,7 @@ int nand_spl_load_image(uint32_t offs, unsigned int size, void *buf) */ while (is_badblock(mtd, offs, 1)) { page = page + nand_page_per_block; + offs = offs + mtd->erasesize; /* Check i we've reached the end of flash. */ if (page >= mtd->size >> chip->page_shift) return -ENOMEM;