spi: tegra: clear RDY bit prior to every transfer
authorYen Lin <yelin@nvidia.com>
Wed, 18 Dec 2013 18:18:46 +0000 (11:18 -0700)
committerJagannadha Sutradharudu Teki <jaganna@xilinx.com>
Wed, 18 Dec 2013 18:30:51 +0000 (00:00 +0530)
commit60acde43d71cf0701b1124998bf4ab457c6640b6
treed78d680d6ee6100717a4a78472a82b796a83c4b5
parent16f47c9c510a61ee91d6b9d02dd723522beff80f
spi: tegra: clear RDY bit prior to every transfer

The RDY bit indicates that a transfer is complete. This needs to be
cleared by SW before every single HW transaction, rather than only
at the start of each SW transaction (those being made up of n HW
transactions).

It seems that earlier HW may have cleared this bit autonomously when
starting a new transfer, and hence this code was not needed in practice.
However, this is generally a good idea in all cases. In Tegra124, the
HW behaviour appears to have changed, and SW must explicitly clear this
bit. Otherwise, SW will believe that transfers have completed when they
have not, and may e.g. read stale data from the RX FIFO.

Signed-off-by: Yen Lin <yelin@nvidia.com>
[swarren, rewrote commit description, unified duplicate RDY clearing code
and moved it right before the start of the HW transaction, unconditionally
exit loop after reading RX data, rather than checking if TX FIFO is empty,
since it is guaranteed to be]
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Reviewed-by: Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
drivers/spi/tegra114_spi.c