spi: spi-cadence: Fix SPI CS gets toggling sporadically
authorSai Krishna Potthuri <lakshmi.sai.krishna.potthuri@xilinx.com>
Mon, 6 Jun 2022 06:25:25 +0000 (11:55 +0530)
committerMark Brown <broonie@kernel.org>
Mon, 6 Jun 2022 11:32:24 +0000 (12:32 +0100)
commit21b511ddee09a78909035ec47a6a594349fe3296
treefb1e4d6a00d504808ee4017af9dcfd1df36742d8
parentf2906aa863381afb0015a9eb7fefad885d4e5a56
spi: spi-cadence: Fix SPI CS gets toggling sporadically

As part of unprepare_transfer_hardware, SPI controller will be disabled
which will indirectly deassert the CS line. This will create a problem
in some of the devices where message will be transferred with
cs_change flag set(CS should not be deasserted).
As per SPI controller implementation, if SPI controller is disabled then
all output enables are inactive and all pins are set to input mode which
means CS will go to default state high(deassert). This leads to an issue
when core explicitly ask not to deassert the CS (cs_change = 1). This
patch fix the above issue by checking the Slave select status bits from
configuration register before disabling the SPI.

Signed-off-by: Sai Krishna Potthuri <lakshmi.sai.krishna.potthuri@xilinx.com>
Signed-off-by: Amit Kumar Mahapatra <amit.kumar-mahapatra@xilinx.com>
Link: https://lore.kernel.org/r/20220606062525.18447-1-amit.kumar-mahapatra@xilinx.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-cadence.c