You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2026/01/26 13:17:37 UTC
(nuttx) 04/12: drivers/rpmsg_port_spi: call rpmsg_port_spi_pm_action(false) in inactive path
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 <xi...@xiaomi.com>
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 <xi...@xiaomi.com>
---
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);
+ }
}
/****************************************************************************