内核主要通过dev_pm_ops和dev_pm_info两个数据结构执行设备电源管理功能,其中dev_pm_ops结构体包含了在系统挂起和恢复流程的不同阶段,需要调用的设备相关回调函数。它一共包含两种类型函数,大部分普通回调用于通用系统休眠流程,而runtime_xxx格式的回调用于动态电源管理流程。以下为其结构体定义: struct dev_pm_ops ...
总述Linux 系统下的驱动最后都是以如下这个结构体呈现在系统中的,注意其中的dev_pm_ops是内核新增的内容来准备替换platform_driver中的电源管理相关的内容。这里内容是先进行总体的流程梳理后面再结合Linux内核代码的内容来学习。 struct device_driver {
其次是结构体中的操作接口函数,其在内部的device_driver结构体内也是有一套类似的操作接口;其他的电源管理现在已经很少用平台设备驱动中的接口了,而是转而使用内涵的device_driver驱动中的dev_pm_ops结构体中的接口来实现。 注册添加driver __platform_driver_register(drv, THIS_MODULE) drv->driver.bus= platform_...
int (*suspend) (struct device *dev, pm_message_t state); int (*resume) (struct device *dev); const struct attribute_group **groups; const struct dev_pm_ops *pm; struct driver_private *p; }; 与platform_driver地位对等的i2c_driver、spi_driver、usb_driver、pci_driver中都包含了device_drive...
dev_pm_ops 结构体中,有3个以 runtime 开头的成员函数:runtime_suspend()、runtime_resume()和runtime_idle(),它们辅助设备完成运行时的电源管理: 运行时 PM 与前文描述的系统级挂起到 RAM 时候的PM不太一样,它是针对单个设备,指系统在非睡眠状态的情况下,某个设备在空闲时可以进入运行时挂起状态,而在不...
int (*resume)(struct device *dev); const struct dev_pm_ops *pm; const struct iommu_ops *iommu_ops; struct subsys_private *p; struct lock_class_key lock_key; }; 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
.pm=&platform_dev_pm_ops, }; platform总线的注册由platform_bus_init()完成: int__initplatform_bus_init(void){interror; early_platform_cleanup(); error=device_register(&platform_bus);if(error)returnerror; error=bus_register(&platform_bus_type);if(error) ...
static SIMPLE_DEV_PM_OPS(pwm_beeper_pm_ops, pwm_beeper_suspend, pwm_beeper_resume); #define #else #define #endif //创建平台驱动,此处name与上面我们在mach-smdk2440.c添加的名字相同,用于匹配 static struct platform_driver pwm_beeper_driver ...
void(*shutdown) (struct device *dev); int(*suspend) (struct device *dev,pm_message_tstate); int(*resume) (struct device *dev); conststructattribute_group**groups; conststructdev_pm_ops*pm; structdriver_private*p; }; 其中: constchar*name; ...
而直接填充platform_driver的suspend()、resume()做电源管理回调的方法目前已经过时,较好的做法是实现platfrom_driver的device_driver中dev_pm_ops结构体成员(详细的参考电源管理章节)。 2.2.1 device_driver 结构体 与platform_driver地位对等的i2c_driver、spi_driver、usb_driver、pci_driver中都包含了device_driver结...