sunxi power suspend flow
/*平台相关power manager 接口hooks*/
struct platform_suspend_ops aw_pm_ops = {
.valid = aw_pm_valid,
.begin = aw_pm_begin,
.prepare = aw_pm_prepare,
.prepare_late = aw_pm_prepare_late,
.enter = aw_pm_enter,
.wake = aw_pm_wake,
.finish = aw_pm_finish,
.end = aw_pm_end,
.recover = aw_pm_recover,
};
aw_pm_init-->
suspend_set_ops(&aw_pm_ops)-->
suspend_ops = ops; //suspend_ops = aw_pm_ops
/*系统级别pm接口,suspend/resume*/
pm_suspend-->
suspend_devices_and_enter->
suspend_ops->begin
suspend_console()
dpm_suspend_start(PMSG_SUSPEND)
suspend_enter
suspend_ops->suspend_again
suspend_ops->end()
suspend_ops->recover()
suspend_enter-->
suspend_ops->prepare()
dpm_suspend_end(PMSG_SUSPEND)
suspend_ops->prepare_late()
disable_nonboot_cpus()
arch_suspend_disable_irqs()
syscore_suspend()
suspend_ops->enter(state) //suspending now
syscore_resume(); //resume
arch_suspend_enable_irqs()
enable_nonboot_cpus()
suspend_ops->wake()
suspend_ops->finish()
echo 0x843 >/sys/power/aw_pm/debug_mask
cat /proc/sys/kernel/printk
echo 7 8 1 7>/proc/sys/kernel/printk
浙公网安备 33010602011771号