diff --git a/drivers/rpmsg/rpmsg_port_spi.c b/drivers/rpmsg/rpmsg_port_spi.c index db227192aa8..7aedb67ac55 100644 --- a/drivers/rpmsg/rpmsg_port_spi.c +++ b/drivers/rpmsg/rpmsg_port_spi.c @@ -461,7 +461,6 @@ static void rpmsg_port_spi_complete_handler(FAR void *arg) unlock: spin_unlock_irqrestore(&rpspi->lock, flags); out: - rpmsg_port_spi_pm_action(rpspi, false); if (atomic_xchg(&rpspi->transferring, 0) > 1) { rpmsg_port_spi_exchange(rpspi); @@ -471,6 +470,10 @@ out: { IOEXP_WRITEPIN(rpspi->ioe, rpspi->mreq, 1); } + else + { + rpmsg_port_spi_pm_action(rpspi, false); + } } /**************************************************************************** diff --git a/drivers/rpmsg/rpmsg_port_spi_slave.c b/drivers/rpmsg/rpmsg_port_spi_slave.c index 46c527abce3..d3dbb9f9d3f 100644 --- a/drivers/rpmsg/rpmsg_port_spi_slave.c +++ b/drivers/rpmsg/rpmsg_port_spi_slave.c @@ -522,12 +522,15 @@ static void rpmsg_port_spi_slave_notify(FAR struct spi_slave_dev_s *dev, unlock: spin_unlock_irqrestore(&rpspi->lock, flags); out: - rpmsg_port_spi_pm_action(rpspi, false); if (atomic_xchg(&rpspi->transferring, 0) > 1 || (rpspi->txavail > 0 && rpmsg_port_queue_nused(&rpspi->port.txq) > 0)) { rpmsg_port_spi_exchange(rpspi); } + else + { + rpmsg_port_spi_pm_action(rpspi, false); + } } /****************************************************************************