как вывести систему из спящего режима с помощью прерывания gpio-keys - PullRequest
0 голосов
/ 15 мая 2018

ОБНОВЛЕНИЕ: Я изменил файл раскладки клавиатуры (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? Даже если это не относится к моему оборудованию, возможно, общая схема этих шагов или некоторые соображения помогут мне, так как я могу что-то упустить. Спасибо!

1 Ответ

0 голосов
/ 21 июня 2018

Во-первых, я бы посоветовал проверить консоль на наличие любых сообщений журнала, когда кнопка громкости нажата в состоянии ожидания.

Во-вторых, я хотел бы предложить вам проверить линии HW, чтобы проверить,прерывание фактически генерируется всякий раз, когда вы нажимаете кнопку громкости, когда система находится в состоянии глубокого сна.

Если прерывания не генерируются, то секция HW может быть отключена в режиме низкого энергопотребления, и вы не захотитене удастся разбудить систему.

...