diff --git a/drivers/spi/spi_dw.c b/drivers/spi/spi_dw.c index 65e24f8d608..58fb119476f 100644 --- a/drivers/spi/spi_dw.c +++ b/drivers/spi/spi_dw.c @@ -342,6 +342,12 @@ static int transceive(struct device *dev, spi_context_lock(&spi->ctx, asynchronous, signal); +#ifdef CONFIG_DEVICE_POWER_MANAGEMENT + if (device_busy_check(dev) != (-EBUSY)) { + device_busy_set(dev); + } +#endif /* CONFIG_DEVICE_POWER_MANAGEMENT */ + /* Configure */ ret = spi_dw_configure(info, spi, config); if (ret) { @@ -427,6 +433,8 @@ static int transceive(struct device *dev, out: spi_context_release(&spi->ctx, ret); + device_busy_clear(dev); + return ret; }