TI errata i2351 explains there is a problem with CS handling, SPI NOR
are immune to the problem, but the CS being deasserted spuriously when
there is DMA arbitration on long accesses (every 1023 bytes), SPI NAND
continuous reads cannot be leveraged.
Link: https://www.ti.com/lit/er/sprz544c/sprz544c.pdf
I created a 2-page read setup for testing all variants available on a
W35N chip wired to this controller. I reliably observed all variants to
always (in my tests) report correct data, except the 8D-8D-8D
variant *when setting an extended number of dummy cycles* (>= 12, so 24
dummy bytes). In this case, I got the first 6144 bytes correct (over
8192), the rest being full of ones (0xFF), indicating the CS has likely
been deasserted there. This is not exactly 6 x 1023 bytes (?), but
close.
This series shall be applied on top of the SPI NAND continuous read
series that I am also carrying, but ideally not too far in the future
because there are Winbond (continuous read capable) NAND chips mounted
on TI platforms AM62 based which could make use of that new feature and
expose the issue described above.
I am expecting feedback on:
- the approach: is a controller capability flag relevant? if not, what
else could be?
- the naming: is the name of the flag explicit enough/relevant?
Mark, as agreed for the continuous read series, I will offer to you an
immutable tag with the spi-mem patches, if you agree I can include the
spi-mem patch from this series as well (once the discussion on the
approach/naming settled).
To: Mark Brown <broonie@kernel.org>
To: Richard Weinberger <richard@nod.at>
To: Vignesh Raghavendra <vigneshr@ti.com>
Cc: Michael Walle <mwalle@kernel.org>
Cc: Takahiro Kuwano <takahiro.kuwano@infineon.com>
Cc: Pratyush Yadav <pratyush@kernel.org>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Steam Lin <STLin2@winbond.com>
Cc: Santhosh Kumar K <s-k6@ti.com>
Cc: linux-spi@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-mtd@lists.infradead.org
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
---
Miquel Raynal (4):
spi: spi-mem: Add a no_cs_assertion capability
mtd: spinand: Make sure continuous read is always disabled during probe
mtd: spinand: Prevent continuous reads on some controllers
spi: cadence-qspi: Prevent SPI NAND continuous reads
drivers/mtd/nand/spi/core.c | 12 +++++++-----
drivers/spi/spi-cadence-quadspi.c | 8 ++++++++
include/linux/spi/spi-mem.h | 6 +++++-
3 files changed, 20 insertions(+), 6 deletions(-)
---
base-commit: 559f264e403e4d58d56a17595c60a1de011c5e20
change-id: 20260318-winbond-v7-0-rc1-cadence-cont-read-bfa0d7258496
prerequisite-message-id: <20260318104750.581596-1-miquel.raynal@bootlin.com>
prerequisite-patch-id: e403edd76450cac2c2bca0e261e20654445bc9ac
prerequisite-message-id: <20260325170450.1118324-1-miquel.raynal@bootlin.com>
prerequisite-patch-id: bab6ebb9d753ab004f259843daebf3e13c838c85
prerequisite-change-id: 20251204-winbond-v6-18-rc1-cont-read-664791ddb263:v2
prerequisite-patch-id: 23bdb7fca293bc75c7a071352c791984e3e10819
prerequisite-patch-id: 51b67ce47dc7dd35e658a80933d3e0537deb1710
prerequisite-patch-id: 1d0ea4a7e4adf9f01c1673c25c1bf30599d8c99d
prerequisite-patch-id: 632c50a86db5d2c71a554787bdb3c587bb392627
prerequisite-patch-id: 487ce86af2f5e5e477b03790b8c3d96cfe3d13d7
prerequisite-patch-id: 5abac789e99db720c4ef1b5d0794ec96caeb418f
prerequisite-patch-id: 8ab6698328813504dfd8055548b888938809ee09
prerequisite-patch-id: d65ae506d7df43532be29e189baf5d0d52150bd9
prerequisite-patch-id: c050d153bd677e8d9d424109569cb1a38c07a109
prerequisite-patch-id: b207d31ea2d2bc3318696e0563fd4d9a85d0389d
prerequisite-patch-id: c268dcd6b16b440b1d82388d0ecfc982d36e1c59
Best regards,
--
Miquel Raynal <miquel.raynal@bootlin.com>