spi: omap2-mcspi: Add support for MULTI-mode
authorLouis Chauvet <louis.chauvet@bootlin.com>
Wed, 27 Mar 2024 08:43:37 +0000 (09:43 +0100)
committerMark Brown <broonie@kernel.org>
Thu, 28 Mar 2024 15:52:32 +0000 (15:52 +0000)
commitd153ff4056cb346fd6182a8a1bea6e12b714b64f
treede859f8e70cf9cdf812313e3096dffe9c1121db4
parent67bb37c05a6b56e0e1f804706145a52f655af3f1
spi: omap2-mcspi: Add support for MULTI-mode

Introduce support for MULTI-mode in the OMAP2 MCSPI driver. Currently, the
driver always uses SINGLE mode to handle the chip select (CS). With this
enhancement, MULTI-mode is enabled for specific messages, allowing for a
shorter delay between CS enable and the message (some FPGA devices are
sensitive to this delay).

The OMAP2 MCSPI device can use two different mode to send messages, SINGLE
and MULTI:
In SINGLE mode, the controller only leverages one single FIFO, and the
host system has to manually select the CS it wants to enable.
In MULTI mode, each CS is bound to a FIFO, the host system then writes the
data to the relevant FIFO, as the hardware will take care of the CS

The drawback of multi-mode is that it's not possible to keep the CS
enabled between each words. Therefore, this patch enables multi-mode only
for specific messages: the spi_message must contain only spi_transfer of 1
word (of any size) with cs_change enabled.

A new member is introduced in the omap2_mcspi structure to keep track of
the current used mode.

Signed-off-by: Louis Chauvet <louis.chauvet@bootlin.com>
Link: https://msgid.link/r/20240327-spi-omap2-mcspi-multi-mode-v3-2-c4ac329dd5a2@bootlin.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-omap2-mcspi.c