[U-Boot-Users] [PATCH 1/2] fsl_elbc_nand: workaround for hangs during nand write

From: Anton Vorontsov avorontsov@ru.mvista.com
Using current driver elbc sometimes hangs during nand write. Reading back last byte helps though (thanks to Scott Wood for the idea).
Signed-off-by: Anton Vorontsov avorontsov@ru.mvista.com Signed-off-by: Scott Wood scottwood@freescale.com --- drivers/mtd/nand/fsl_elbc_nand.c | 11 ++++++++++- 1 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/drivers/mtd/nand/fsl_elbc_nand.c b/drivers/mtd/nand/fsl_elbc_nand.c index c1644c0..ab3e0fd 100644 --- a/drivers/mtd/nand/fsl_elbc_nand.c +++ b/drivers/mtd/nand/fsl_elbc_nand.c @@ -489,7 +489,7 @@ static void fsl_elbc_write_buf(struct mtd_info *mtd, const u8 *buf, int len) struct fsl_elbc_ctrl *ctrl = priv->ctrl; unsigned int bufsize = mtd->writesize + mtd->oobsize;
- if (len < 0) { + if (len <= 0) { printf("write_buf of %d bytes", len); ctrl->status = 0; return; @@ -503,6 +503,15 @@ static void fsl_elbc_write_buf(struct mtd_info *mtd, const u8 *buf, int len) }
memcpy_toio(&ctrl->addr[ctrl->index], buf, len); + /* + * This is workaround for the weird elbc hangs during nand write, + * Scott Wood says: "...perhaps difference in how long it takes a + * write to make it through the localbus compared to a write to IMMR + * is causing problems, and sync isn't helping for some reason." + * Reading back the last byte helps though. + */ + in_8(&ctrl->addr[ctrl->index] + len - 1); + ctrl->index += len; }

In message 20080522201255.GA1731@ld0162-tx32.am.freescale.net you wrote:
From: Anton Vorontsov avorontsov@ru.mvista.com
Using current driver elbc sometimes hangs during nand write. Reading back last byte helps though (thanks to Scott Wood for the idea).
Signed-off-by: Anton Vorontsov avorontsov@ru.mvista.com Signed-off-by: Scott Wood scottwood@freescale.com
drivers/mtd/nand/fsl_elbc_nand.c | 11 ++++++++++- 1 files changed, 10 insertions(+), 1 deletions(-)
I guess (and I don't like having to guess) that this patch is intended for the new NAND code, as we don't even have a file "fsl_elbc_nand.c" in mainline yet?
It would be really helpful if you could be explicit and make clear what the target of such patches is.
Thanks.
Best regards,
Wolfgang Denk

Wolfgang Denk wrote:
In message 20080522201255.GA1731@ld0162-tx32.am.freescale.net you wrote:
From: Anton Vorontsov avorontsov@ru.mvista.com
Using current driver elbc sometimes hangs during nand write. Reading back last byte helps though (thanks to Scott Wood for the idea).
Signed-off-by: Anton Vorontsov avorontsov@ru.mvista.com Signed-off-by: Scott Wood scottwood@freescale.com
drivers/mtd/nand/fsl_elbc_nand.c | 11 ++++++++++- 1 files changed, 10 insertions(+), 1 deletions(-)
I guess (and I don't like having to guess) that this patch is intended for the new NAND code, as we don't even have a file "fsl_elbc_nand.c" in mainline yet?
Yes, it's for the NAND testing branch.
It would be really helpful if you could be explicit and make clear what the target of such patches is.
OK, I'll prefix such patches with "NAND testing:" in the future.
-Scott
participants (2)
-
Scott Wood
-
Wolfgang Denk