linux中probe函数的pm管理,4、runtime电源管理模式(内核文档runtime_pm.txt有详细描述)...

本文介绍了Linux内核中的runtime电源管理模式,用于在系统正常运行时单独控制设备的休眠和唤醒。通过增加和减少设备使用计数,配合pm_runtime_get_sync和pm_runtime_put_sync函数,实现设备的动态电源管理。在驱动程序的probe和remove函数中启用和禁用runtime PM,以及在open和close函数中调用相关函数。此外,文章还探讨了如何修改驱动程序以支持runtime PM,并提供了autosuspend功能以避免频繁开关设备。
摘要由CSDN通过智能技术生成

系统睡眠模型是让整个系统休眠,而runtime是在系统正常工作的时候单独控制某个设备休眠和唤醒

1. runtime PM流程

怎样动态地打开或关闭设备的电源?最简单的方法:

在驱动程序里,在open函数中打开电源,在close函数中关闭电源

上述方法有一个缺点: 多个APP使用该设备时可能造成干扰

解决方法:给驱动添加使用计数值: 当该计数大于0时打开电源, 等于0时关闭电源

在应用程序运行过程中通过ioctl来关闭和启动电源

ioctl: alsa

runtime PM只是提供辅助函数, 比如:(内核文档runtime_pm.txt详细介绍了)

1. 增加计数/减少计数

2. 使能runtime pm电源管理

内核驱动示例: drivers\input\misc\bma150.c

pm_runtime_enable (在probe函数中)/ pm_runtime_disable (在remove函数中): 使能/禁止runtime PM, 修改disable_depth变量

pm_runtime_get_sync(在open函数中) / pm_runtime_put_sync (在close函数中): 增加/减小计数值, 并且让设备处于resume或suspend状态

在dev_pm_ops里提供3个回调函数: runtime_suspend, runtime_resume, runtime_idle

流程分析:

pm_runtime_get_sync

__pm_runtime_resume(dev, RPM_GET_PUT);

atomic_inc(&dev->power.usage_count); // 增加使用计数

rpm_resume(dev, rpmflags); // resume重新运行设备

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值