前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux设备驱动中device_init_wakeup

linux设备驱动中device_init_wakeup

作者头像
233333
发布2021-03-15 22:05:10
2.3K0
发布2021-03-15 22:05:10
举报

device_init_wakeup()

代码语言:javascript
复制
static inline int device_init_wakeup(struct device *dev, bool val)
{
device_set_wakeup_capable(dev, val); //设置设备能不能被唤醒
device_set_wakeup_enable(dev, val); //设置设备使不使用唤醒;
return 0;

}

// 设备模型中的 所有设备 都有两个标志来控制 唤醒事件(可使得设备或系统退出低功耗状态)。

代码语言:javascript
复制
static inline void device_set_wakeup_capable(struct device *dev, bool capable)
{
dev->power.can_wakeup = capable;
}

static inline int device_set_wakeup_enable(struct device *dev, bool enable)
{
dev->power.should_wakeup = enable;
return 0;
}

要认识device_init_wakeup(),首先需要知道两个概念:can_wakeup和should_wakeup。这两个家伙从哪里来的?看struct device结构体,里面有一个成员struct dev_pm_info power,来看一看struct dev_pm_info,来自include/Linux/pm.h文件:

代码语言:javascript
复制
struct dev_pm_info {
pm_message_t power_state;
unsigned can_wakeup:1;
#ifdef CONFIG_PM
unsigned should_wakeup:1;
pm_message_t prev_state;
void * saved_state;
struct device * pm_parent;
struct list_head entry;
#endif
};

这些都是电源管理部分的核心数据结构,can_wakeup为1时 表明一个设备可以被唤醒,设备驱动为了支持linux中的电源管理,有责任调用device_init_wakeup()来初始化can_wakeup。而should_wakeup则是在设备的 电源状态发生变化时 被device_may_wakeup()用来测试,测试它该不该变化。

can_wakeup,标识本设备是否具有唤醒能力。只有具备唤醒能力的设备,才会在sysfs中有一个power目录,用于提供所有的wakeup信息。

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-03-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com