From: Major Lee Date: Fri, 10 Dec 2010 10:13:49 +0000 (+0000) Subject: dw_spi: Fix missing final read in some polling situations X-Git-Tag: firefly_0821_release~7613^2~3242 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=3d0b6087f3f2c88caef25e1455ff8db0816d4e11;p=firefly-linux-kernel-4.4.55.git dw_spi: Fix missing final read in some polling situations 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 Signed-off-by: Alan Cox Signed-off-by: Linus Torvalds --- diff --git a/drivers/spi/dw_spi.c b/drivers/spi/dw_spi.c index 90439314cf67..0838c79861e4 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); }