spi: Fix core transfer waits after slave support

The refactoring done as part of adding the core support for handling
waiting for slave transfer dropped a conditional which meant that we
started waiting for completion of all transfers, not just those that the
controller asked for.  This caused hangs and massive delays on platforms
that don't need the core delay.  Re-add the delay to fix this.

Fixes: 810923f3bf (spi: Deal with slaves that return from transfer_one() unfinished)
Reported-by: Tony Lindgren <tony@atomide.com>
Tested-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Mark Brown 2018-11-15 16:08:32 -08:00
parent 7986e2273c
commit d57e79601b
No known key found for this signature in database
GPG Key ID: 24D68B725D5487D0

View File

@ -1114,9 +1114,11 @@ static int spi_transfer_one_message(struct spi_controller *ctlr,
goto out; goto out;
} }
ret = spi_transfer_wait(ctlr, msg, xfer); if (ret > 0) {
if (ret < 0) ret = spi_transfer_wait(ctlr, msg, xfer);
msg->status = ret; if (ret < 0)
msg->status = ret;
}
} else { } else {
if (xfer->len) if (xfer->len)
dev_err(&msg->spi->dev, dev_err(&msg->spi->dev,