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 49d95aa0d1e3e6bcdd370e62df7b97ff4a4a989c
Author: liaoao <[email protected]>
AuthorDate: Fri Mar 21 15:16:28 2025 +0800

    drivers/rpmsg_port_spi/slave: remove the pm prepare ops
    
    Use pm wakelock is enough to make sure system will not suspend
    when there is a transfer in process, and it can actually sleep when
    there is buffer to send but peer side not response in 1ms which is
    the timeout we set.
    
    Signed-off-by: liaoao <[email protected]>
---
 drivers/rpmsg/rpmsg_port_spi.c       | 40 ------------------------------------
 drivers/rpmsg/rpmsg_port_spi_slave.c | 40 ------------------------------------
 2 files changed, 80 deletions(-)

diff --git a/drivers/rpmsg/rpmsg_port_spi.c b/drivers/rpmsg/rpmsg_port_spi.c
index 15a6c6a71ec..c14ae8d5d45 100644
--- a/drivers/rpmsg/rpmsg_port_spi.c
+++ b/drivers/rpmsg/rpmsg_port_spi.c
@@ -107,7 +107,6 @@ struct rpmsg_port_spi_s
   volatile uint8_t               state;
   spinlock_t                     lock;
 #ifdef CONFIG_PM
-  struct pm_callback_s           pmcb;
   spinlock_t                     pmlock;
   struct wdog_s                  wdog;
   struct pm_wakelock_s           wakelock;
@@ -203,43 +202,6 @@ rpmsg_port_spi_pm_action(FAR struct rpmsg_port_spi_s 
*rpspi, bool stay)
   spin_unlock_irqrestore(&rpspi->pmlock, flags);
 }
 
-/****************************************************************************
- * Name: rpmsg_port_spi_prepare
- ****************************************************************************/
-
-static int rpmsg_port_spi_prepare(FAR struct pm_callback_s *cb, int domain,
-                                  enum pm_state_e pmstate)
-{
-  FAR struct rpmsg_port_spi_s *rpspi =
-    container_of(cb, struct rpmsg_port_spi_s, pmcb);
-  enum pm_state_e oldstate;
-
-  oldstate = pm_querystate(PM_IDLE_DOMAIN);
-  switch (oldstate)
-    {
-      case PM_NORMAL:
-      case PM_IDLE:
-      case PM_STANDBY:
-        if (pmstate == PM_SLEEP)
-          {
-            if (atomic_load(&rpspi->transferring) ||
-                rpmsg_port_queue_nused(&rpspi->port.rxq) > 0 ||
-                rpmsg_port_queue_nused(&rpspi->port.txq) > 0)
-              {
-                rpmsgerr("rpmsg port spi busy\n");
-                return -EBUSY;
-              }
-          }
-        break;
-
-      case PM_SLEEP:
-      default:
-        break;
-    }
-
-  return 0;
-}
-
 #else
 #  define rpmsg_port_spi_pm_action(rpspi, stay)
 #endif
@@ -834,8 +796,6 @@ rpmsg_port_spi_initialize(FAR const struct 
rpmsg_port_config_s *cfg,
     }
 
 #ifdef CONFIG_PM
-  rpspi->pmcb.prepare = rpmsg_port_spi_prepare;
-  pm_register(&rpspi->pmcb);
   spin_lock_init(&rpspi->pmlock);
   pm_wakelock_init(&rpspi->wakelock, cfg->remotecpu,
                    PM_IDLE_DOMAIN, PM_NORMAL);
diff --git a/drivers/rpmsg/rpmsg_port_spi_slave.c 
b/drivers/rpmsg/rpmsg_port_spi_slave.c
index d2736010ba2..330a451ec5e 100644
--- a/drivers/rpmsg/rpmsg_port_spi_slave.c
+++ b/drivers/rpmsg/rpmsg_port_spi_slave.c
@@ -110,7 +110,6 @@ struct rpmsg_port_spi_s
   volatile uint8_t               state;
   spinlock_t                     lock;
 #ifdef CONFIG_PM
-  struct pm_callback_s           pmcb;
   spinlock_t                     pmlock;
   struct wdog_s                  wdog;
   struct pm_wakelock_s           wakelock;
@@ -226,43 +225,6 @@ rpmsg_port_spi_pm_action(FAR struct rpmsg_port_spi_s 
*rpspi, bool stay)
   spin_unlock_irqrestore(&rpspi->pmlock, flags);
 }
 
-/****************************************************************************
- * Name: rpmsg_port_spi_prepare
- ****************************************************************************/
-
-static int rpmsg_port_spi_prepare(FAR struct pm_callback_s *cb, int domain,
-                                  enum pm_state_e pmstate)
-{
-  FAR struct rpmsg_port_spi_s *rpspi =
-    container_of(cb, struct rpmsg_port_spi_s, pmcb);
-  enum pm_state_e oldstate;
-
-  oldstate = pm_querystate(PM_IDLE_DOMAIN);
-  switch (oldstate)
-    {
-      case PM_NORMAL:
-      case PM_IDLE:
-      case PM_STANDBY:
-        if (pmstate == PM_SLEEP)
-          {
-            if (atomic_load(&rpspi->transferring) ||
-                rpmsg_port_queue_nused(&rpspi->port.rxq) > 0 ||
-                rpmsg_port_queue_nused(&rpspi->port.txq) > 0)
-              {
-                rpmsgerr("rpmsg port spi busy\n");
-                return -EBUSY;
-              }
-          }
-        break;
-
-      case PM_SLEEP:
-      default:
-        break;
-    }
-
-  return 0;
-}
-
 #else
 #  define rpmsg_port_spi_pm_action(rpspi, stay)
 #endif
@@ -874,8 +836,6 @@ rpmsg_port_spi_slave_initialize(FAR const struct 
rpmsg_port_config_s *cfg,
     }
 
 #ifdef CONFIG_PM
-  rpspi->pmcb.prepare = rpmsg_port_spi_prepare;
-  pm_register(&rpspi->pmcb);
   spin_lock_init(&rpspi->pmlock);
   pm_wakelock_init(&rpspi->wakelock, cfg->remotecpu,
                    PM_IDLE_DOMAIN, PM_NORMAL);

Reply via email to