更新:我将键盘布局文件(gpio-keys.kl)更改为以下内容:
key 115 POWER WAKE
key 114 POWER WAKE
如图所示,我现在在Android中将音量按钮注册为 POWER 键,它唤醒了系统。但是,我希望有任何通用的gpio-key唤醒系统。如上所述更改密钥布局文件的事实告诉我,问题可能在Android端而不是Linux内核端。不确定。也许Android中有文件(策略文件等),我可以为选择的gpio-key提供唤醒功能,就像 POWER 键具有此唤醒功能一样。
请让我知道你的想法。
ORIGINAL: 至于某些背景,我的硬件是三星Galaxy S2-i777,它运行在 Exynos4210 SoC (基于ARM的处理器)上。操作系统 LineageOS 14.1 。我试图使用 gpio-keys 中断从睡眠中唤醒我的系统但是我没有成功。
我在我的电路板文件中配置了gpio-keys(没有设备树作为旧内核版本)。我在下面定义gpio-keys的片段如下:
struct gpio_keys_button u1_buttons[] = {
{
.code = KEY_VOLUMEUP,
.gpio = GPIO_VOL_UP,
.active_low = 1,
.type = EV_KEY,
.wakeup = 1,
.isr_hook = sec_debug_check_crash_key,
.debounce_interval = 10,
},
};
我省略了注册平台部分等,但必要时可以显示。如上所示,我将布尔属性 wakeup 设置为1,以使我的gpio GPIO_VOL_UP 充当唤醒源。同样如图所示,我想将我的音量按钮用作我的gpio-keys。 我还修改了我的密钥布局文件(gpio-keys.kl),如下所示:
key 115 VOLUME_UP WAKE
key 114 VOLUME_DOWN WAKE
当我在 LineageOS 中查看我的本地终端时,我发现我的 gpio-keys 被定义为 wakeup_sources 和唤醒< / strong>已启用。我还看到我的音量按钮正在产生中断(cat / proc / interrupts)。
当我的系统进入睡眠状态时,音量按钮(gpio-keys)不会唤醒我的系统。只有唤醒我的系统的是电源按钮(它似乎也是一个gpio键)。
您认为问题可能是什么?使用gpio-keys中断唤醒系统所需的一般步骤是什么?即使它不是特定于我的硬件,也许这些步骤的一般布局或某些考虑将帮助我,因为我可能会遗漏一些东西。谢谢!
答案 0 :(得分:0)
首先,我建议在挂起状态下按下“音量”按钮时检查控制台中是否有任何日志消息。
第二,我建议您探查硬件行,以检查系统处于深度睡眠状态时每按一次Volume(音量)按钮是否实际上产生了中断。
如果未生成中断,则可能在低功耗模式下禁用了HW部分,因此您将无法唤醒系统。