ОБНОВЛЕНИЕ: Я изменил файл раскладки клавиатуры (gpio-keys.kl) на следующий:
key 115 POWER WAKE
key 114 POWER WAKE
Как видно, я теперь зарегистрировал кнопки громкости как клавиши POWER в Android, и это пробуждает систему. Тем не менее, я хочу, чтобы любой общий ключ gpio разбудил систему. Тот факт, что изменение файла раскладки клавиш, как описано выше, говорит мне о том, что, возможно, проблема связана со стороной Android, а не со стороной ядра Linux. Точно сказать не могу. Возможно, в Android есть файлы (файлы политик и т. Д.), В которых я могу предоставить возможность активации для выбранного ключа gpio, почти так же, как ключ POWER имеет эту функцию активации.
Пожалуйста, дайте мне знать ваши мысли.
ОРИГИНАЛ:
Что касается некоторой предыстории, моим оборудованием является Samsung Galaxy S2-i777, который работает на Exynos4210 SoC (процессор на базе ARM). ОС LineageOS 14.1 . Я пытаюсь вывести мою систему из спящего режима с помощью прерывания gpio-keys , но мне это не удалось.
Я настроил gpio-ключи в своем файле форума (нет дерева устройств, как в старой версии ядра). Ниже приведен фрагмент, где я определил свои gpio-ключи:
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-клавиш.
Я также изменил файл раскладки ключей (gpio-keys.kl), как показано ниже:
key 115 VOLUME_UP WAKE
key 114 VOLUME_DOWN WAKE
Когда я проверяю свой локальный терминал в LineageOS , я вижу, что мои gpio-ключи определены как wakeup_sources и wakeup is включен. Я также вижу, что мои кнопки громкости генерируют прерывания (cat / proc / interrupts).
Когда моя система переходит в спящий режим, кнопки громкости (gpio-keys) не разбудят мою систему. Единственная вещь, которая пробуждает мою систему - это кнопка питания (которая также является ключом gpio).
Как вы думаете, в чем проблема? Каковы основные шаги, необходимые для пробуждения системы с помощью прерываний gpio-keys? Даже если это не относится к моему оборудованию, возможно, общая схема этих шагов или некоторые соображения помогут мне, так как я могу что-то упустить. Спасибо!