Without the wakeup, the event doesn't get scheduled until some other
event wakes up the acpi thread. On one of my machines the gpio event
reads a status byte over i2c in repsonse of a gpio event. Without the
wakeup that status byte has often been cleared/overwritten by the time
the event gets scheduled.
ok?
Index: acpi.c
===================================================================
RCS file: /cvs/src/sys/dev/acpi/acpi.c,v
retrieving revision 1.343
diff -u -p -r1.343 acpi.c
--- acpi.c 17 May 2018 20:46:45 -0000 1.343
+++ acpi.c 19 May 2018 19:35:59 -0000
@@ -861,6 +861,7 @@ acpi_gpio_event(void *arg)
struct acpi_gpio_event *ev = arg;
acpi_addtask(acpi_softc, acpi_gpio_event_task, ev->node, ev->pin);
+ acpi_wakeup(acpi_softc);
return 1;
}