(Platform_device->device->device_driver指向platform_driver->driver)
2 低功耗接口
dpm_suspend_start():调用注册到dpm_list的设备的回调函数,执行睡眠前的准备和保存工作;
dpm_suspend_end():执行suspend_late和suspend_noirq设备的回调函数,进行睡眠前的准备工作。
睡眠时,设备在链表中的转移:
dpm_list--->dpm_prepared_list-->dpm_suspended_list---->
dpm_late_early_list--->dpm_noirq_list
Dpm_resume_start():执行设备的resume_noirq和resume_early回调,恢复suspend_noirq和suspend_late阶段保存的东西
dpm_resume_end():执行各设备的resume和complete回调接口,做suspend和prepare的逆操作
唤醒时,设备从链表中的转移顺序是上述suspend阶段顺序的逆序。
3 低功耗接口是如何调用到各设备驱动注册的回调函数的系统进入睡眠前回调设备的回调函数是有选择的:
如果dev->pm_domain域的回调函数注册的话,首选此处的回调函数
否则,如果dev->type域和dev->type->pm域都注册的话,会选择dev->type->pm处的回调函数
否则,如果dev->class 和 dev->class->pm两处都注册回调函数的话,会选择dev->class->pm的回调函数
如果dev->bus 和 dev->bus->pm两处都注册回调函数的话,会选择dev->bus->pm的回调函数
示例方法1和方法4:
3.1 在 dev 域的电源域进行注册struct platform_device {
const char * name;
int id;
boo