linux3.18内核,按键驱动suspend和resume函数在休眠唤醒的时候为什么没有调用进来

loongembedded
博客专家认证
2018-03-31 10:42:25
大家好,我们产品是android7.1+msm8937方案,按键驱动里我增加休眠和唤醒的处理函数tca8418_keypad_suspend()和tca8418_keypad_resume,但测试确认没有调用,除了这里需要增加的,是否还是需要在设备树种增加对应的,或是是哪里有问题?请教大家了。

#ifdef CONFIG_PM
static int tca8418_keypad_suspend(struct device *dev)
{
struct i2c_client *client = to_i2c_client(dev);;
disable_irq(client->irq);
dev_err(dev, "tca8418_keypad_suspend()\n");
return 0;
}

static int tca8418_keypad_resume(struct device *dev)
{
struct i2c_client *client = to_i2c_client(dev);
dev_err(dev, "tca8418_keypad_resume()\n");
enable_irq(client->irq);

return 0;
}

static const struct dev_pm_ops tca8418_dev_pm_ops = {
.suspend = tca8418_keypad_suspend,
.resume = tca8418_keypad_resume,
};

#endif


static struct i2c_driver tca8418_keypad_driver = {
.driver = {
.name = TCA8418_NAME,
.owner = THIS_MODULE,
#ifdef CONFIG_PM
.pm = &tca8418_dev_pm_ops,
#endif
.of_match_table = of_match_ptr(tca8418_dt_ids),
},
.probe = tca8418_keypad_probe,
.id_table = tca8418_id,,
};
...全文
15169 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
辉_alexxm 2020-09-30
  • 打赏
  • 举报
回复
通过 grep,发现很多 CONFIG_PM,所以可以尝试打开 CONFIG_PM,换句话说,都 没有编译,怎样会执行
carl.xu 2020-09-22
  • 打赏
  • 举报
回复
请问如何解决的
JiMoKuangXiangQu 2018-04-13
  • 打赏
  • 举报
回复
引用 4 楼 LoongEmbedded 的回复:
[quote=引用 3 楼 JiMoKuangXiangQu 的回复:] 使用early suspend试试 Android平台可能配置early suspend,suspend和resume不会被调用,走的是early suspend的流程,之前在Rockchip 3188芯片碰到过这个问题,是3.0.104 kernel.
怎么配置为early suspend,请教了。[/quote] 检查Kernel配置是否有打开 Power management options [ * ] Early supend 如果有打开,应该就是走了early suspend的流程,如果没有,那要查找其他原因
JiMoKuangXiangQu 2018-04-13
  • 打赏
  • 举报
回复
如果使用early suspend,用下面的代码片段注册callback: /* declare it to somewhere properly */ #ifdef CONFIG_HAS_EARLYSUSPEND struct early_suspend early_suspend; #endif /* setup early suspend */ #ifdef CONFIG_HAS_EARLYSUSPEND early_suspend.level = EARLY_SUSPEND_LEVEL_XXX; early_suspend.suspend = xxx_early_suspend; early_suspend.resume = xxx_late_resume; register_early_suspend(&early_suspend); #endif
JiMoKuangXiangQu 2018-04-11
  • 打赏
  • 举报
回复
使用early suspend试试 Android平台可能配置early suspend,suspend和resume不会被调用,走的是early suspend的流程,之前在Rockchip 3188芯片碰到过这个问题,是3.0.104 kernel.
loongembedded 2018-04-11
  • 打赏
  • 举报
回复
引用 3 楼 JiMoKuangXiangQu 的回复:
使用early suspend试试 Android平台可能配置early suspend,suspend和resume不会被调用,走的是early suspend的流程,之前在Rockchip 3188芯片碰到过这个问题,是3.0.104 kernel.
怎么配置为early suspend,请教了。
HelloBirthday 2018-04-10
  • 打赏
  • 举报
回复
同意楼上的。我在Rockchip平台suspend和resume也不会调用,是通过notifier解决的
枫叶会再红吗 2018-04-01
  • 打赏
  • 举报
回复
用notifier机制应该可以把

21,595

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧