From: Jaap de Jong <jaap.dejong@nedap.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] NAND: add more watchdog resets
Date: Thu, 03 Feb 2011 10:36:15 +0100 [thread overview]
Message-ID: <4D4A770F.8060206@nedap.com> (raw)
In-Reply-To: <20110203002331.GA11521@udp111988uds>
My testresults:
unpatched ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
nand read 0x20000000 0x00100000 0x03000000
no problem
nand write 0x20000000 0x00100000 0x00c00000
no problem
nand write 0x20000000 0x00100000 0x00d00000
the watchdog will reset the processor
patched ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
nand read 0x20000000 0x00100000 0x03000000
no problem
nand write 0x20000000 0x00100000 0x07f00000
no problem
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
So, reading was never a problem, only writing.
And that is fixed now!
Thanks!
On 02/03/2011 01:23 AM, Scott Wood wrote:
> Poke the watchdog in a variety of looping constructs, which could take
> a long time to complete.
>
> Signed-off-by: Scott Wood<scottwood@freescale.com>
> ---
> Jaap, does this resolve the watchdog problems you were seeing?
>
> drivers/mtd/nand/nand_base.c | 6 ++++++
> drivers/mtd/nand/nand_util.c | 2 ++
> 2 files changed, 8 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
> index 70c0593..b9bd394 100644
> --- a/drivers/mtd/nand/nand_base.c
> +++ b/drivers/mtd/nand/nand_base.c
> @@ -1156,6 +1156,8 @@ static int nand_do_read_ops(struct mtd_info *mtd, loff_t from,
> oob = ops->oobbuf;
>
> while(1) {
> + WATCHDOG_RESET();
> +
> bytes = min(mtd->writesize - col, readlen);
> aligned = (bytes == mtd->writesize);
>
> @@ -1485,6 +1487,7 @@ static int nand_do_read_oob(struct mtd_info *mtd, loff_t from,
> page = realpage& chip->pagemask;
>
> while(1) {
> + WATCHDOG_RESET();
> sndcmd = chip->ecc.read_oob(mtd, chip, page, sndcmd);
>
> len = min(len, readlen);
> @@ -1884,6 +1887,8 @@ static int nand_do_write_ops(struct mtd_info *mtd, loff_t to,
> memset(chip->oob_poi, 0xff, mtd->oobsize);
>
> while(1) {
> + WATCHDOG_RESET();
> +
> int bytes = mtd->writesize;
> int cached = writelen> bytes&& page != blockmask;
> uint8_t *wbuf = buf;
> @@ -2215,6 +2220,7 @@ int nand_erase_nand(struct mtd_info *mtd, struct erase_info *instr,
> instr->state = MTD_ERASING;
>
> while (len) {
> + WATCHDOG_RESET();
> /*
> * heck if we have a bad block, we do not erase bad blocks !
> */
> diff --git a/drivers/mtd/nand/nand_util.c b/drivers/mtd/nand/nand_util.c
> index 8b4f738..5a6f7ae 100644
> --- a/drivers/mtd/nand/nand_util.c
> +++ b/drivers/mtd/nand/nand_util.c
> @@ -542,6 +542,8 @@ int nand_write_skip_bad(nand_info_t *nand, loff_t offset, size_t *length,
>
> pages = write_size / pagesize_oob;
> for (page = 0; page< pages; page++) {
> + WATCHDOG_RESET();
> +
> ops.datbuf = p_buffer;
> ops.oobbuf = ops.datbuf + pagesize;
>
prev parent reply other threads:[~2011-02-03 9:36 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-03 0:23 [U-Boot] [PATCH] NAND: add more watchdog resets Scott Wood
2011-02-03 9:36 ` Jaap de Jong [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4D4A770F.8060206@nedap.com \
--to=jaap.dejong@nedap.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.