LINUX.ORG.RU

ACPI wakeup

 , , , , wakeup


0

1

Здравствуйте! Я пытаюсь организовать пробуждение системы из состояния S3 от USB клавиатуры.

После загрузки ОС команда «cat /proc/acpi/wakeup» выдает:

Device S-state Status Sysfs node

PCI0 S5 disabled no-bus:pci0000:00

HDEF S4 disabled pci:0000:00:1b.0

RP01 S5 disabled pci:0000:00:1c.0

RP02 S5 disabled pci:0000:00:1c.1

RP03 S5 disabled pci:0000:00:1c.2

RP04 S5 disabled pci:0000:00:1c.3

RP05 S5 disabled pci:0000:00:1c.4

RP06 S5 disabled pci:0000:00:1c.5

USB1 S3 disabled pci:0000:00:1d.0

USB2 S3 disabled pci:0000:00:1d.1

USB3 S3 disabled pci:0000:00:1d.2

USB4 S3 disabled pci:0000:00:1d.3

EHC1 S3 disabled pci:0000:00:1d.7

MODM S4 disabled

COMA S3 disabled pnp:00:08

COMB S3 disabled pnp:00:09

Насколько я понимаю, представленные устройства в таблице это устройства из таблицы DSDT, для которых существует метод _PRW. Однако почему-то wakeup для них по умолчанию выключен.

Включить wakeup для клавиатуры (в данном случае для меня это USB1) можно с помощью команд:

echo PCI0 > /proc/acpi/wakeup

echo USB1 > /proc/acpi/wakeup

Судя по всему эти команды говорят ОС о том, что при входе в S3, нужно модифицировать соответcтвующие биты в регистре ACPI GPE0_EN (о том какие именно биты, можно видеть из соответствующего метода _PRW устройства)

Однако этим дело не заканчивается. ОС при входе в S3 отводит питание от USB. Чтобы это исправить находим из dmesg номер USB в системе

[ 2.724374] input: LITEON Technology USB Multimedia Keyboard as /devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.0/input/input6

и выполняем команду «echo enabled > /sys/bus/usb/devices/2-2/power/wakeup»

После этого wakeup от клавиатуры работает нормально.

А теперь вопрос, как нужно отредактировать DSDT, чтобы эти команды вбивать не пришлось? (вариант с вбиванием рассмотренных выше команд в автозагрузку не рассматривается)



Последнее исправление: Kostr (всего исправлений: 2)

А теперь вопрос, как нужно отредактировать DSDT, чтобы эти команды вбивать не пришлось? (вариант с вбиванием рассмотренных выше команд в автозагрузку не рассматривается)

По совсем простому найди dsdt где оно точно работает а потом diff-ай со своим находи и применяй изменения только в нужных методах.

init_6 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.