]> git.ipfire.org Git - thirdparty/linux.git/commit
spi: qcom-qspi: Correct max DMA length to avoid 64K boundary failure
authorVijaya Krishna Nivarthi <vijaya.nivarthi@oss.qualcomm.com>
Wed, 22 Jul 2026 09:23:58 +0000 (14:53 +0530)
committerMark Brown <broonie@kernel.org>
Thu, 23 Jul 2026 18:03:04 +0000 (19:03 +0100)
commit90ef2f2961c2dc55957dafe2f53b3efdb4675efc
treea21697f4b1fcca091a166ac1470961be1a4c5720
parentd3c87e71539cb183ea6173a99dc0e6f84fa0bc4f
spi: qcom-qspi: Correct max DMA length to avoid 64K boundary failure

The maximum size for a DMA data descriptor is 64KB-1 because the size
field in HW is 16 bits wide. For this reason, transfers fail at 64KB
and beyond.

Lower max_dma_len to 60KB so larger transfers are split into multiple
DMA blocks and do not hit the failing 64KB boundary. 60KB is chosen as
a safe round number below the 64KB-1 hardware limit while satisfying
alignment requirements.

Tested on x1e80100 (Hamoa) with SPI-NOR flash (/dev/mtd0):

Without patch:
  dd if=/dev/mtd0 of=/tmp/spi_dump.bin bs=32768 count=2  # works
  dd if=/dev/mtd0 of=/tmp/spi_dump.bin bs=65536 count=1  # fails

With patch:
  dd if=/dev/mtd0 of=/tmp/spi_dump.bin bs=65536 count=1  # works

Fixes: b5762d95607e ("spi: spi-qcom-qspi: Add DMA mode support")
Cc: stable@vger.kernel.org
Signed-off-by: Vijaya Krishna Nivarthi <vijaya.nivarthi@oss.qualcomm.com>
Link: https://patch.msgid.link/20260722092358.459943-1-vnivarth@qti.qualcomm.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-qcom-qspi.c