[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251020165152.666221-6-elder@riscstar.com>
Date: Mon, 20 Oct 2025 11:51:48 -0500
From: Alex Elder <elder@...cstar.com>
To: han.xu@....com,
broonie@...nel.org
Cc: dlan@...too.org,
guodong@...cstar.com,
linux-spi@...r.kernel.org,
imx@...ts.linux.dev,
spacemit@...ts.linux.dev,
linux-riscv@...ts.infradead.org,
linux-kernel@...r.kernel.org
Subject: [PATCH 5/8] spi: fsl-qspi: allot 1KB per chip
In fsl_qspi_default_setup(), four registers define the size
of blocks of data to written to each of four chips that
comprise SPI NOR flash storage. They are currently defined
to be the same as the AHB buffer size (which is always 1KB).
The SpacemiT QSPI has an AHB buffer size of 512 bytes, but
requires these four sizes to be multiples of 1024 bytes.
Rather than add a new quirk to support this scenario, just
define the four sizes to be 1KB rather than being dependent
on the AHB buffer size.
Signed-off-by: Alex Elder <elder@...cstar.com>
---
drivers/spi/spi-fsl-qspi.c | 17 +++++++----------
1 file changed, 7 insertions(+), 10 deletions(-)
diff --git a/drivers/spi/spi-fsl-qspi.c b/drivers/spi/spi-fsl-qspi.c
index 703a7df394c00..9ecb756b33dba 100644
--- a/drivers/spi/spi-fsl-qspi.c
+++ b/drivers/spi/spi-fsl-qspi.c
@@ -795,17 +795,14 @@ static int fsl_qspi_default_setup(struct fsl_qspi *q)
* In HW there can be a maximum of four chips on two buses with
* two chip selects on each bus. We use four chip selects in SW
* to differentiate between the four chips.
- * We use ahb_buf_size for each chip and set SFA1AD, SFA2AD, SFB1AD,
- * SFB2AD accordingly.
+ *
+ * We use 1K for each chip and set SFA1AD, SFA2AD, SFB1AD, SFB2AD
+ * accordingly.
*/
- qspi_writel(q, q->devtype_data->ahb_buf_size + addr_offset,
- base + QUADSPI_SFA1AD);
- qspi_writel(q, q->devtype_data->ahb_buf_size * 2 + addr_offset,
- base + QUADSPI_SFA2AD);
- qspi_writel(q, q->devtype_data->ahb_buf_size * 3 + addr_offset,
- base + QUADSPI_SFB1AD);
- qspi_writel(q, q->devtype_data->ahb_buf_size * 4 + addr_offset,
- base + QUADSPI_SFB2AD);
+ qspi_writel(q, addr_offset + 1 * SZ_1K, base + QUADSPI_SFA1AD);
+ qspi_writel(q, addr_offset + 2 * SZ_1K, base + QUADSPI_SFA2AD);
+ qspi_writel(q, addr_offset + 3 * SZ_1K, base + QUADSPI_SFB1AD);
+ qspi_writel(q, addr_offset + 4 * SZ_1K, base + QUADSPI_SFB2AD);
q->selected = -1;
--
2.48.1
Powered by blists - more mailing lists