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);
