Generic spi_transfer_one_message() implementation introduced in commit b158935f70b9 has a bug in cs_change handling: it keeps CS asserted when cs_change is set. Fix it. Cc: stable@xxxxxxxxxxxxxxx Fixes: b158935f70b9 ("spi: Provide common spi_message processing loop") Signed-off-by: Michał Mirosław <mirq-linux@xxxxxxxxxxxx> --- drivers/spi/spi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index 8994545367a2..5012eabde468 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -1206,7 +1206,7 @@ static int spi_transfer_one_message(struct spi_controller *ctlr, struct spi_message *msg) { struct spi_transfer *xfer; - bool keep_cs = false; + bool keep_cs = true; int ret = 0; struct spi_statistics *statm = &ctlr->statistics; struct spi_statistics *stats = &msg->spi->statistics; @@ -1268,7 +1268,7 @@ static int spi_transfer_one_message(struct spi_controller *ctlr, if (xfer->cs_change) { if (list_is_last(&xfer->transfer_list, &msg->transfers)) { - keep_cs = true; + keep_cs = false; } else { spi_set_cs(msg->spi, false); _spi_transfer_cs_change_delay(msg, xfer); -- 2.20.1