spi: microchip-core: prevent RX overflows when transmit size > FIFO size
authorConor Dooley <conor.dooley@microchip.com>
Mon, 3 Mar 2025 10:47:40 +0000 (10:47 +0000)
committerMark Brown <broonie@kernel.org>
Mon, 3 Mar 2025 12:10:03 +0000 (12:10 +0000)
commit91cf42c63f2d8a9c1bcdfe923218e079b32e1a69
tree9f4a904b960b8bfa57bff720511728e30fa39287
parent3d7a20f9ba7b09a35df4bdb5f0ddb2a0c8a4f39e
spi: microchip-core: prevent RX overflows when transmit size > FIFO size

When the size of a transfer exceeds the size of the FIFO (32 bytes), RX
overflows will be generated and receive data will be corrupted and
warnings will be produced. For example, here's an error generated by a
transfer of 36 bytes:

  spi_master spi0: mchp_corespi_interrupt: RX OVERFLOW: rxlen: 4, txlen: 0

The driver is currently split between handling receiving in the
interrupt handler, and sending outside of it. Move all handling out of
the interrupt handling, and explicitly link the number of bytes read of
of the RX FIFO to the number written into the TX one. This both resolves
the overflow problems as well as simplifying the flow of the driver.

CC: stable@vger.kernel.org
Fixes: 9ac8d17694b6 ("spi: add support for microchip fpga spi controllers")
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
Link: https://patch.msgid.link/20250303-veal-snooper-712c1dfad336@wendy
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-microchip-core.c