dw_spi: Fix missing final read in some polling situations
Changes
1 files changed · +5 −0
| File | Status | Add | Del | Content |
|---|---|---|---|---|
| drivers/spi/dw_spi.c | modified | +5 | −0 | View file |
drivers/spi/dw_spi.c
View filediff --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);
}