spi: spi-xilinx: Remove ISR race condition
authorPeter Crosthwaite <peter.crosthwaite@petalogix.com>
Tue, 4 Jun 2013 14:02:34 +0000 (16:02 +0200)
committerMark Brown <broonie@linaro.org>
Tue, 4 Jun 2013 17:32:19 +0000 (18:32 +0100)
commit68c315bb951d94210c43c52166d326f9c26f7ce8
tree1708d43440a40b87ce0531941a91f09c8d30f507
parentd683b96b072dc4680fc74964eca77e6a23d1fa6e
spi: spi-xilinx: Remove ISR race condition

The ISR currently consumes the rx buffer data and re-enables transmission
from within interrupt context. This is bad because if the interrupt
occurs again before the ISR exits, the new interrupt will be erroneously
cleared by the still completing ISR.

Simplified the ISR by just setting the completion variable and exiting with
no action. Then just looped the transmit functionality in
xilinx_spi_txrx_bufs().

Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
drivers/spi/spi-xilinx.c