OpenCloudOS-Kernel/drivers/mtd/nand
Sascha Hauer 06781a5026 mtd: rawnand: gpmi: Fix setting busy timeout setting
The DEVICE_BUSY_TIMEOUT value is described in the Reference Manual as:

| Timeout waiting for NAND Ready/Busy or ATA IRQ. Used in WAIT_FOR_READY
| mode. This value is the number of GPMI_CLK cycles multiplied by 4096.

So instead of multiplying the value in cycles with 4096, we have to
divide it by that value. Use DIV_ROUND_UP to make sure we are on the
safe side, especially when the calculated value in cycles is smaller
than 4096 as typically the case.

This bug likely never triggered because any timeout != 0 usually will
do. In my case the busy timeout in cycles was originally calculated as
2408, which multiplied with 4096 is 0x968000. The lower 16 bits were
taken for the 16 bit wide register field, so the register value was
0x8000. With 2970bf5a32 ("mtd: rawnand: gpmi: fix controller timings
setting") however the value in cycles became 2384, which multiplied
with 4096 is 0x950000. The lower 16 bit are 0x0 now resulting in an
intermediate timeout when reading from NAND.

Fixes: b120612206 ("mtd: rawnand: gpmi: use core timings instead of an empirical derivation")
Cc: stable@vger.kernel.org
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20220614083138.3455683-1-s.hauer@pengutronix.de
2022-06-16 16:46:08 +02:00
..
onenand mtd: onenand: Check for error irq 2022-01-23 16:37:17 +01:00
raw mtd: rawnand: gpmi: Fix setting busy timeout setting 2022-06-16 16:46:08 +02:00
spi mtd: spinand: Add support for XTX XT26G0xA 2022-04-21 09:34:12 +02:00
Kconfig mtd: nand: MTD_NAND_ECC_MEDIATEK should depend on ARCH_MEDIATEK 2022-05-12 16:43:04 +02:00
Makefile mtd: nand: make mtk_ecc.c a separated module 2022-04-27 18:12:35 +02:00
bbt.c mtd: nand: bbt: Fix corner case in bad block table handling 2021-05-10 18:20:54 +02:00
core.c Topic branch bringing-in changes related to the support of ECC engines 2022-02-18 15:11:12 +01:00
ecc-mtk.c MTD core changes: 2022-05-24 14:31:29 -07:00
ecc-mxic.c mtd: nand: mxic-ecc: make two read-only arrays static const 2022-03-14 17:01:58 +01:00
ecc-sw-bch.c mtd: nand: ecc-bch: Use the public nsteps field 2021-03-11 09:37:28 +01:00
ecc-sw-hamming.c mtd: rawnand: Let callers use the bare Hamming helpers 2021-10-15 12:20:59 +02:00
ecc.c mtd: nand: ecc: Provide a helper to retrieve a pilelined engine device 2022-02-09 09:49:36 +01:00