[PATCH stable 5.4] mtd: rawnand: gpmi: Set WAIT_FOR_READY timeout based on program/erase times

Greg KH greg at kroah.com
Tue Nov 8 04:19:49 PST 2022


On Mon, Nov 07, 2022 at 09:33:51AM -0800, Tim Harvey wrote:
> From: Sascha Hauer <s.hauer at pengutronix.de>
> 
> commit 0fddf9ad06fd9f439f137139861556671673e31c upstream.
> 
> 06781a5026350 Fixes the calculation of the DEVICE_BUSY_TIMEOUT register
> value from busy_timeout_cycles. busy_timeout_cycles is calculated wrong
> though: It is calculated based on the maximum page read time, but the
> timeout is also used for page write and block erase operations which
> require orders of magnitude bigger timeouts.
> 
> Fix this by calculating busy_timeout_cycles from the maximum of
> tBERS_max and tPROG_max.
> 
> This is for now the easiest and most obvious way to fix the driver.
> There's room for improvements though: The NAND_OP_WAITRDY_INSTR tells us
> the desired timeout for the current operation, so we could program the
> timeout dynamically for each operation instead of setting a fixed
> timeout. Also we could wire up the interrupt handler to actually detect
> and forward timeouts occurred when waiting for the chip being ready.
> 
> As a sidenote I verified that the change in 06781a5026350 is really
> correct. I wired up the interrupt handler in my tree and measured the
> time between starting the operation and the timeout interrupt handler
> coming in. The time increases 41us with each step in the timeout
> register which corresponds to 4096 clock cycles with the 99MHz clock
> that I have.
> 
> Fixes: 06781a5026350 ("mtd: rawnand: gpmi: Fix setting busy timeout setting")
> Fixes: b1206122069aa ("mtd: rawniand: gpmi: use core timings instead of an empirical derivation")
> Cc: stable at vger.kernel.org
> Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
> Acked-by: Han Xu <han.xu at nxp.com>
> Tested-by: Tomasz Moń <tomasz.mon at camlingroup.com>
> Signed-off-by: Richard Weinberger <richard at nod.at>
> Signed-off-by: Tim Harvey <tharvey at gateworks.com>
> ---
>  drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 

Now queued up, thanks.

greg k-h



More information about the linux-mtd mailing list