diff --git a/drivers/spi/spi-rockchip.c b/drivers/spi/spi-rockchip.c index 2cd31ec56691..e5fcdf18b7d5 100644 --- a/drivers/spi/spi-rockchip.c +++ b/drivers/spi/spi-rockchip.c @@ -684,6 +684,12 @@ static int rockchip_spi_transfer_one( struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); bool use_dma; + /* Zero length transfers won't trigger an interrupt on completion */ + if (!xfer->len) { + spi_finalize_current_transfer(ctlr); + return 1; + } + WARN_ON(readl_relaxed(rs->regs + ROCKCHIP_SPI_SSIENR) && (readl_relaxed(rs->regs + ROCKCHIP_SPI_SR) & SR_BUSY));