]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
mtd: spi-nor: core: replace dummy buswidth from addr to data
authorCheng Ming Lin <chengminglin@mxic.com.tw>
Tue, 12 Nov 2024 07:52:42 +0000 (15:52 +0800)
committerTudor Ambarus <tudor.ambarus@linaro.org>
Tue, 12 Nov 2024 08:31:17 +0000 (10:31 +0200)
The default dummy cycle for Macronix SPI NOR flash in Octal Output
Read Mode(1-1-8) is 20.

Currently, the dummy buswidth is set according to the address bus width.
In the 1-1-8 mode, this means the dummy buswidth is 1. When converting
dummy cycles to bytes, this results in 20 x 1 / 8 = 2 bytes, causing the
host to read data 4 cycles too early.

Since the protocol data buswidth is always greater than or equal to the
address buswidth. Setting the dummy buswidth to match the data buswidth
increases the likelihood that the dummy cycle-to-byte conversion will be
divisible, preventing the host from reading data prematurely.

Fixes: 0e30f47232ab ("mtd: spi-nor: add support for DTR protocol")
Cc: stable@vger.kernel.org
Reviewed-by: Pratyush Yadav <pratyush@kernel.org>
Signed-off-by: Cheng Ming Lin <chengminglin@mxic.com.tw>
Link: https://lore.kernel.org/r/20241112075242.174010-2-linchengming884@gmail.com
Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org>
drivers/mtd/spi-nor/core.c

index b6f374ded390a0c0429a61dd0579204e0e98bfa1..66949d9f0cc5a05242bead8129087d5bccc0ac0d 100644 (file)
@@ -89,7 +89,7 @@ void spi_nor_spimem_setup_op(const struct spi_nor *nor,
                op->addr.buswidth = spi_nor_get_protocol_addr_nbits(proto);
 
        if (op->dummy.nbytes)
-               op->dummy.buswidth = spi_nor_get_protocol_addr_nbits(proto);
+               op->dummy.buswidth = spi_nor_get_protocol_data_nbits(proto);
 
        if (op->data.nbytes)
                op->data.buswidth = spi_nor_get_protocol_data_nbits(proto);