提交 623ddc62 编写于 作者: E EvalZero

[components][pm]adapt to the new power management interface

上级 943c5ccc
...@@ -16,52 +16,26 @@ ...@@ -16,52 +16,26 @@
#ifdef RT_USING_PM #ifdef RT_USING_PM
static void _drv_pm_enter(struct rt_pm *pm) static void _drv_pm_enter(struct rt_pm *pm, uint8_t mode)
{ {
rt_uint32_t mode;
mode = pm->current_mode;
switch (mode) switch (mode)
{ {
case PM_RUN_MODE_NORMAL: case PM_SLEEP_MODE_NONE:
break; break;
case PM_SLEEP_MODE_SLEEP: case PM_SLEEP_MODE_IDLE:
__WFI(); __WFI();
break; break;
case PM_SLEEP_MODE_TIMER: case PM_SLEEP_MODE_LIGHT:
pmu_stop2_enter();
break;
case PM_SLEEP_MODE_SHUTDOWN:
pmu_standby_enter(PMU_STANDBY_PORT_NONE);
break;
default:
RT_ASSERT(0);
break;
}
}
static void _drv_pm_exit(struct rt_pm *pm)
{
rt_uint32_t mode;
RT_ASSERT(pm != RT_NULL);
mode = pm->current_mode;
switch (mode)
{
case PM_RUN_MODE_NORMAL:
break; break;
case PM_SLEEP_MODE_SLEEP: case PM_SLEEP_MODE_DEEP:
pmu_stop2_enter();
break; break;
case PM_SLEEP_MODE_TIMER: case PM_SLEEP_MODE_STANDBY:
pmu_standby_enter(PMU_STANDBY_PORT_NONE);
break; break;
case PM_SLEEP_MODE_SHUTDOWN: case PM_SLEEP_MODE_SHUTDOWN:
...@@ -73,32 +47,21 @@ static void _drv_pm_exit(struct rt_pm *pm) ...@@ -73,32 +47,21 @@ static void _drv_pm_exit(struct rt_pm *pm)
} }
} }
#if PM_RUN_MODE_COUNT > 1
static void _drv_pm_frequency_change(struct rt_pm *pm, rt_uint32_t frequency)
{
return;
}
#endif
static int drv_hw_pm_init(void) static int drv_hw_pm_init(void)
{ {
static const struct rt_pm_ops _ops = static const struct rt_pm_ops _ops =
{ {
_drv_pm_enter, _drv_pm_enter,
_drv_pm_exit, RT_NULL,
#if PM_RUN_MODE_COUNT > 1
_drv_pm_frequency_change,
#endif
RT_NULL, RT_NULL,
RT_NULL, RT_NULL,
RT_NULL RT_NULL
}; };
rt_uint8_t timer_mask; rt_uint8_t timer_mask = 0;
/* initialize timer mask */ /* initialize timer mask(no need tickless) */
timer_mask = 1UL << PM_SLEEP_MODE_TIMER; // timer_mask = 1UL << PM_SLEEP_MODE_DEEP;
/* initialize system pm module */ /* initialize system pm module */
rt_system_pm_init(&_ops, timer_mask, RT_NULL); rt_system_pm_init(&_ops, timer_mask, RT_NULL);
......
...@@ -16,52 +16,26 @@ ...@@ -16,52 +16,26 @@
#ifdef RT_USING_PM #ifdef RT_USING_PM
static void _drv_pm_enter(struct rt_pm *pm) static void _drv_pm_enter(struct rt_pm *pm, uint8_t mode)
{ {
rt_uint32_t mode;
mode = pm->current_mode;
switch (mode) switch (mode)
{ {
case PM_RUN_MODE_NORMAL: case PM_SLEEP_MODE_NONE:
break; break;
case PM_SLEEP_MODE_SLEEP: case PM_SLEEP_MODE_IDLE:
__WFI(); __WFI();
break; break;
case PM_SLEEP_MODE_TIMER: case PM_SLEEP_MODE_LIGHT:
pmu_stop2_enter();
break;
case PM_SLEEP_MODE_SHUTDOWN:
pmu_standby_enter(PMU_STANDBY_PORT_NONE);
break;
default:
RT_ASSERT(0);
break;
}
}
static void _drv_pm_exit(struct rt_pm *pm)
{
rt_uint32_t mode;
RT_ASSERT(pm != RT_NULL);
mode = pm->current_mode;
switch (mode)
{
case PM_RUN_MODE_NORMAL:
break; break;
case PM_SLEEP_MODE_SLEEP: case PM_SLEEP_MODE_DEEP:
pmu_stop2_enter();
break; break;
case PM_SLEEP_MODE_TIMER: case PM_SLEEP_MODE_STANDBY:
pmu_standby_enter(PMU_STANDBY_PORT_NONE);
break; break;
case PM_SLEEP_MODE_SHUTDOWN: case PM_SLEEP_MODE_SHUTDOWN:
...@@ -73,32 +47,21 @@ static void _drv_pm_exit(struct rt_pm *pm) ...@@ -73,32 +47,21 @@ static void _drv_pm_exit(struct rt_pm *pm)
} }
} }
#if PM_RUN_MODE_COUNT > 1
static void _drv_pm_frequency_change(struct rt_pm *pm, rt_uint32_t frequency)
{
return;
}
#endif
static int drv_hw_pm_init(void) static int drv_hw_pm_init(void)
{ {
static const struct rt_pm_ops _ops = static const struct rt_pm_ops _ops =
{ {
_drv_pm_enter, _drv_pm_enter,
_drv_pm_exit, RT_NULL,
#if PM_RUN_MODE_COUNT > 1
_drv_pm_frequency_change,
#endif
RT_NULL, RT_NULL,
RT_NULL, RT_NULL,
RT_NULL RT_NULL
}; };
rt_uint8_t timer_mask; rt_uint8_t timer_mask = 0;
/* initialize timer mask */ /* initialize timer mask(no need tickless) */
timer_mask = 1UL << PM_SLEEP_MODE_TIMER; timer_mask = 1UL << PM_SLEEP_MODE_DEEP;
/* initialize system pm module */ /* initialize system pm module */
rt_system_pm_init(&_ops, timer_mask, RT_NULL); rt_system_pm_init(&_ops, timer_mask, RT_NULL);
......
...@@ -39,7 +39,7 @@ static int timer_app_init(void) ...@@ -39,7 +39,7 @@ static int timer_app_init(void)
rt_timer_start(timer1); rt_timer_start(timer1);
/* keep in timer mode */ /* keep in timer mode */
rt_pm_request(PM_SLEEP_MODE_TIMER); rt_pm_request(PM_SLEEP_MODE_DEEP);
return 0; return 0;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册