On Thu, Nov 15, 2018 at 03:44:00PM -0800, Tony Lindgren wrote:

> It seems to be caused because of the now missing "if (ret > 0) {"
> line somehow that was there earlier. New code sets ms to 200 it
> seems, then dmesg shows:

Doh, of course :(  Sorry I missed that.

> The old code is not updating ms and it's set to 1.

Right, and not waiting either which should be the issue.  Does the
following work:

diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index 498d3b9bf3ae..430ad637c643 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -1114,9 +1114,11 @@ static int spi_transfer_one_message(struct 
spi_controller *ctlr,
                                goto out;
                        }
 
-                       ret = spi_transfer_wait(ctlr, msg, xfer);
-                       if (ret < 0)
-                               msg->status = ret;
+                       if (ret > 0) {
+                               ret = spi_transfer_wait(ctlr, msg, xfer);
+                               if (ret < 0)
+                                       msg->status = ret;
+                       }
                } else {
                        if (xfer->len)
                                dev_err(&msg->spi->dev,

Attachment: signature.asc
Description: PGP signature

Reply via email to