提交 3d0b6087 编写于 作者: M Major Lee 提交者: Linus Torvalds

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: NMajor Lee <major_lee@wistron.com>
Signed-off-by: NAlan Cox <alan@linux.intel.com>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 54efdfeb
...@@ -413,6 +413,11 @@ static void poll_transfer(struct dw_spi *dws) ...@@ -413,6 +413,11 @@ static void poll_transfer(struct dw_spi *dws)
{ {
while (dws->write(dws)) while (dws->write(dws))
dws->read(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); transfer_complete(dws);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册