Some laptops will generate an EC event shortly after we attempt to enter
authorkettenis <kettenis@openbsd.org>
Tue, 6 Aug 2024 17:38:56 +0000 (17:38 +0000)
committerkettenis <kettenis@openbsd.org>
Tue, 6 Aug 2024 17:38:56 +0000 (17:38 +0000)
commit99446a6d6053c09ce578b8707502aa059661f189
tree673b50f573494a19781a6c3460c14c39d5e54d08
parent43e70c963284972205e5ad5beb2e3fcb895b03a1
Some laptops will generate an EC event shortly after we attempt to enter
a low power S0 idle state.  Since we register the EC GPE as a wakeup GPE
this means we'll wake up immediately.  Unfortunately we have to register
that GPE as a wakeup GPE otherwise many laptops won't wake up when the
user opens the lid (and some laptops won't wake up at all).  So add some
code to handle EC events while suspended and introduce the concept of
wakeup AML notify handlers.  Register the acpibtn(4) notify handlers as
wakeup notify handlers such that we wake up.  We'll go back to sleep
immediately if we wake up for any other EC event.

ok mlarkin@, deraadt@
sys/dev/acpi/acpi_x86.c
sys/dev/acpi/acpibtn.c
sys/dev/acpi/acpidev.h
sys/dev/acpi/acpivar.h
sys/dev/acpi/dsdt.c