projects/linux·commit 3d0b6087

dw_spi: Fix missing final read in some polling situations

3d0b6087 · Major Lee <[email protected]> · 2010-12-10 10:13:49 +00:00

There is a possibility that the last word of a transaction will be lost
if data is not ready.  Re-read in poll_transfer() to solve this issue
when poll_mode is enabled.

Verified on SPI touch screen device.

Signed-off-by: Major Lee <[email protected]>
Signed-off-by: Alan Cox <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Commit
3d0b6087f3f2c88caef25e1455ff8db0816d4e11
Parents
54efdfeb

Changes

1 files changed · +5 −0

FileStatusAddDelContent
drivers/spi/dw_spi.cmodified+5−0View file

drivers/spi/dw_spi.c

View file
diff --git a/drivers/spi/dw_spi.c b/drivers/spi/dw_spi.c
index 9043931..0838c79 100644
--- a/drivers/spi/dw_spi.c
+++ b/drivers/spi/dw_spi.c
@@ -413,6 +413,11 @@ static void poll_transfer(struct dw_spi *dws)
{
while (dws->write(dws))
dws->read(dws);
+ /*
+ * There is a possibility that the last word of a transaction
+ * will be lost if data is not ready. Re-read to solve this issue.
+ */
+ dws->read(dws);
transfer_complete(dws);
}