spi: omap2-mcspi: disable other channels CHCONF_FORCE in prepare_message
authorNeil Armstrong <narmstrong@baylibre.com>
Fri, 9 Oct 2015 13:47:41 +0000 (15:47 +0200)
committerMark Brown <broonie@kernel.org>
Thu, 22 Oct 2015 14:26:22 +0000 (15:26 +0100)
commit468a32082b04c7febccfcd55b06ecbc438fcddcc
treebc5227c0d5c385e296503562068ac5d162524d0b
parent6ff33f3902c3b1c5d0db6b1e2c70b6d76fba357f
spi: omap2-mcspi: disable other channels CHCONF_FORCE in prepare_message

Since the "Switch driver to use transfer_one" change, the cs_change
behavior has changed and a channel chip select can still be
asserted when changing channel from a previous last transfer in a
message having the cs_change attribute.

Since there is no sense having multiple chip select being asserted at the
same time, disable all the remaining forced chip selects in a the
prepare_message called right before a spi_transfer_one_message call.
It ignores the current channel configuration in order to keep the
possibility to leave the chip select asserted between messages.

It fixes this bug on a DM8168 SoC ES2.1 Soc and an OMAP4 ES2.1 SoC.
It was hanging all the other channels transfers when a CHCONF_FORCE
is present on the wrong channel.

Fixes: b28cb9414db9 ("spi: omap2-mcspi: Switch driver to use transfer_one")
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
Reviewed-by: Michael Welling <mwelling@ieee.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-omap2-mcspi.c