From: Miquel Raynal <miquel.raynal@bootlin.com>
To: Boris Brezillon <boris.brezillon@bootlin.com>
Cc: Richard Weinberger <richard@nod.at>,
linux-mtd@lists.infradead.org,
David Woodhouse <dwmw2@infradead.org>,
Brian Norris <computersforpeace@gmail.com>,
Marek Vasut <marek.vasut@gmail.com>,
Cyrille Pitchen <cyrille.pitchen@wedev4u.fr>
Subject: Re: [PATCH] mtd: rawnand: fsmc: Make sure we wait tWB before polling the STATUS reg
Date: Fri, 4 May 2018 11:45:10 +0200 [thread overview]
Message-ID: <20180504114510.4ea1e2f2@xps13> (raw)
In-Reply-To: <20180503074544.19938-1-boris.brezillon@bootlin.com>
Hi Boris,
On Thu, 3 May 2018 09:45:44 +0200, Boris Brezillon
<boris.brezillon@bootlin.com> wrote:
> NAND chips require a bit of time to take the NAND operation into account
> and set the BUSY bit in the STATUS reg. Make sure we don't poll the
> STATUS reg too early.
>
> Fixes: 4da712e70294 ("mtd: nand: fsmc: use ->exec_op()")
> Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
> ---
> drivers/mtd/nand/raw/fsmc_nand.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/drivers/mtd/nand/raw/fsmc_nand.c b/drivers/mtd/nand/raw/fsmc_nand.c
> index 28c48dcc514e..0960665858b7 100644
> --- a/drivers/mtd/nand/raw/fsmc_nand.c
> +++ b/drivers/mtd/nand/raw/fsmc_nand.c
> @@ -18,6 +18,7 @@
>
> #include <linux/clk.h>
> #include <linux/completion.h>
> +#include <linux/delay.h>
> #include <linux/dmaengine.h>
> #include <linux/dma-direction.h>
> #include <linux/dma-mapping.h>
> @@ -695,6 +696,13 @@ static int fsmc_exec_op(struct nand_chip *chip, const struct nand_operation *op,
> pr_debug(" ->WAITRDY [max %d ms]\n",
> instr->ctx.waitrdy.timeout_ms);
>
> + /*
> + * Make sure we wait tWB before polling the STATUS
> + * register.
> + */
> + if (op_id && op->instrs[op_id - 1].delay_ns)
> + ndelay(op->instrs[op_id - 1].delay_ns);
> +
> ret = nand_soft_waitrdy(chip,
> instr->ctx.waitrdy.timeout_ms);
> break;
I'm afraid that we encounter this exact same issue with all the drivers
using nand_soft_waitrdy() whenever the controller does not already
wait for tWB. Could we force a tWB_max delay directly inside
nand_soft_waitrdy()?
Thanks,
Miquèl
--
Miquel Raynal, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com
next prev parent reply other threads:[~2018-05-04 9:45 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-03 7:45 [PATCH] mtd: rawnand: fsmc: Make sure we wait tWB before polling the STATUS reg Boris Brezillon
2018-05-04 9:45 ` Miquel Raynal [this message]
2018-05-04 9:48 ` Boris Brezillon
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=20180504114510.4ea1e2f2@xps13 \
--to=miquel.raynal@bootlin.com \
--cc=boris.brezillon@bootlin.com \
--cc=computersforpeace@gmail.com \
--cc=cyrille.pitchen@wedev4u.fr \
--cc=dwmw2@infradead.org \
--cc=linux-mtd@lists.infradead.org \
--cc=marek.vasut@gmail.com \
--cc=richard@nod.at \
/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.