OSDN Git Service

spi: spi-cadence: Add support for Slave mode
authorSrinivas Goud <srinivas.goud@amd.com>
Tue, 18 Apr 2023 13:47:05 +0000 (19:17 +0530)
committerMark Brown <broonie@kernel.org>
Tue, 18 Apr 2023 14:08:23 +0000 (15:08 +0100)
commitb1b90514eaa3454223d6f576a108cc0a58924a65
treedcb7161d8fce59a15a385922ad6212fdd47b42d6
parentf6997e9bd879ed1f1c61e65b6fcab0de9a873ab0
spi: spi-cadence: Add support for Slave mode

Currently SPI Cadence controller works only in Master mode.
Updated interrupt handler for Full duplex transfer in Slave mode.
Interrupt handler rely on the TX empty interrupt even for Slave mode
transfer due to below HW limitation.

HW limitation:
AR 65885 - SPI Controller Might Not Update RX_NEMPTY Flag, Showing
Incorrect Status Of The Receive FIFO

SPI Slave mode works in the following manner:
1.      One transfer can be finished only after all transfer->len
data been transferred to master device.
2.      Slave device only accepts transfer->len data. Any data longer
than this from master device will be dropped. Any data shorter than
this from master will cause SPI to be stuck due to the above behavior.
3.      The stale data present in RXFIFO will be dropped in unprepared
hardware transfer function.

Signed-off-by: Srinivas Goud <srinivas.goud@amd.com>
Link: https://lore.kernel.org/r/1681825625-10265-3-git-send-email-srinivas.goud@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-cadence.c