mtd: rawnand: Ensure the nand chip supports cached reads
authorRouven Czerwinski <r.czerwinski@pengutronix.de>
Fri, 22 Sep 2023 14:17:16 +0000 (16:17 +0200)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Mon, 16 Oct 2023 08:47:22 +0000 (10:47 +0200)
commitf6ca3fb6978f94d95ee79f95085fc22e71ca17cc
tree5904d4b049c27abd5fc1e9f0f5147d5e2b105383
parent5279f4a9eed3ee7d222b76511ea7a22c89e7eefd
mtd: rawnand: Ensure the nand chip supports cached reads

Both the JEDEC and ONFI specification say that read cache sequential
support is an optional command. This means that we not only need to
check whether the individual controller supports the command, we also
need to check the parameter pages for both ONFI and JEDEC NAND flashes
before enabling sequential cache reads.

This fixes support for NAND flashes which don't support enabling cache
reads, i.e. Samsung K9F4G08U0F or Toshiba TC58NVG0S3HTA00.

Sequential cache reads are now only available for ONFI and JEDEC
devices, if individual vendors implement this, it needs to be enabled
per vendor.

Tested on i.MX6Q with a Samsung NAND flash chip that doesn't support
sequential reads.

Fixes: 003fe4b9545b ("mtd: rawnand: Support for sequential cache reads")
Cc: stable@vger.kernel.org
Signed-off-by: Rouven Czerwinski <r.czerwinski@pengutronix.de>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20230922141717.35977-1-r.czerwinski@pengutronix.de
drivers/mtd/nand/raw/nand_base.c
drivers/mtd/nand/raw/nand_jedec.c
drivers/mtd/nand/raw/nand_onfi.c
include/linux/mtd/jedec.h
include/linux/mtd/onfi.h
include/linux/mtd/rawnand.h