SPI: omap2-mcspi: Fix SPI CS behaviour around
authorMark Brown <broonie@kernel.org>
Mon, 9 Jun 2025 17:45:20 +0000 (18:45 +0100)
committerMark Brown <broonie@kernel.org>
Mon, 9 Jun 2025 17:45:20 +0000 (18:45 +0100)
commitbd30b995df8fd053e13d10f78dbc7b2fa5ed1aae
treed1da157eeb2884ac833ea6f47a4a3cd6cb8f4f05
parentcf2c3eceb757e3f28e6f1034f9bc178e1535f5cc
parent10c24e0d2f7cd2bc8a847cf750f01301ce67dbc8
SPI: omap2-mcspi: Fix SPI CS behaviour around

Merge series from Félix Piédallu <felix.piedallu@non.se.com>:

These patches fix the behaviour of the SPI Chip Select of the OMAP2 MCSPI
driver used on TI SoCs.

The omap2-mcspi driver supports the use of multi mode (multichannel in TI
documentation). In this mode, the CS is asserted and deasserted by the
hardware.

The multi mode is disabled for messages when cs_change=0 for all transfers
(e.g when CS is kept asserted between transfers of a same message).

The multi mode also needs to be disabled for messages when cs_change=1 on the
last transfer (e.g when CS is kept asserted after the WHOLE message), and the
message right after.

Currently, that is not the case and it CS is deasserted by hardware when it
shouldn't.
This breaks peripheral drivers that send multiple messages with the CS asserted
in between.

Patch 1 ensures that multi mode is disabled when cs_change=1 on the last
transfer of the message.

Patch 2 ensures that multi mode is disable on a message following one with
cs_change=1 on the last transfer.

This is the case for the TPM TIS SPI driver that uses this logic for flow
control purposes.

Tested on an AM6442 platform with a TPM ST33HTPH2X32AHE4.