]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
spi: dw: fix first spi transfer with dma always fallback to PIO
authorJisheng Zhang <jszhang@kernel.org>
Mon, 15 Jun 2026 04:40:35 +0000 (12:40 +0800)
committerMark Brown <broonie@kernel.org>
Mon, 29 Jun 2026 17:27:48 +0000 (18:27 +0100)
commitd322d820e0b0f16260e929de3f4e6b33b242c91c
tree144934c926d79c2c558492a8f9a93a9513d031b4
parentc1bab046d4786c5b17aab7c5225bf0d4a2a2d19b
spi: dw: fix first spi transfer with dma always fallback to PIO

Even with proper dma engine support, the first spi transfer always
fallback to PIO, the reason is the dws->n_bytes is 0 after
initialization, so the dw_spi_can_dma() calling from __spi_map_msg()
return false, thus both tx_sg_mapped and rx_sg_mapped are false, so
for the first spi transfer, the spi_xfer_is_dma_mapped() reports false
thus fallback to PIO.

Although this brings no harm, we can simply fix this issue by
calcuating the "n_bytes" from xfer->bits_per_word.

Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
Link: https://patch.msgid.link/20260615044039.9750-2-jszhang@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-dw-dma.c