This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit 8981810e9689786db26c905a6cc609fe0f1898ed
Author: Xiang Xiao <[email protected]>
AuthorDate: Mon Feb 24 17:00:11 2025 +0800

    drivers/rpmsg_port_spi: call rpmsg_port_spi_pm_action(false) in inactive 
path
    
    Only call rpmsg_port_spi_pm_action(false) when no more data to
    transfer to avoid unnecessary pm unlock/lock operations.
    
    Signed-off-by: Xiang Xiao <[email protected]>
---
 drivers/rpmsg/rpmsg_port_spi.c       | 5 ++++-
 drivers/rpmsg/rpmsg_port_spi_slave.c | 5 ++++-
 2 files changed, 8 insertions(+), 2 deletions(-)

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);
+    }
 }
 
 /****************************************************************************

Reply via email to