rptun/pm: use pm_wakelock

Signed-off-by: ligd <liguiding1@xiaomi.com>
This commit is contained in:
ligd
2022-06-16 20:38:51 +08:00
committed by Xiang Xiao
parent 3468f5cec8
commit f569c065f6
+11 -8
View File
@@ -69,7 +69,7 @@ struct rptun_priv_s
sem_t semrx;
pid_t tid;
#ifdef CONFIG_RPTUN_PM
bool stay;
struct pm_wakelock_s wakelock;
uint16_t headrx;
#endif
};
@@ -205,19 +205,20 @@ static inline void rptun_pm_action(FAR struct rptun_priv_s *priv,
bool stay)
{
irqstate_t flags;
int count;
flags = enter_critical_section();
if (stay && !priv->stay)
count = pm_wakelock_staycount(&priv->wakelock);
if (stay && count == 0)
{
pm_stay(PM_IDLE_DOMAIN, PM_IDLE);
priv->stay = true;
pm_wakelock_stay(&priv->wakelock);
}
if (!stay && priv->stay && !rptun_buffer_nused(&priv->rvdev, false))
if (!stay && count > 0 && !rptun_buffer_nused(&priv->rvdev, false))
{
pm_relax(PM_IDLE_DOMAIN, PM_IDLE);
priv->stay = false;
pm_wakelock_relax(&priv->wakelock);
}
leave_critical_section(flags);
@@ -1063,7 +1064,9 @@ int rptun_initialize(FAR struct rptun_dev_s *dev)
goto err_thread;
}
/* Add priv to list */
#ifdef CONFIG_RPTUN_PM
pm_wakelock_init(&priv->wakelock, "rptun", PM_IDLE_DOMAIN, PM_IDLE);
#endif
return OK;