diff options
author | iwasaki <iwasaki@FreeBSD.org> | 2002-07-22 12:52:54 +0000 |
---|---|---|
committer | iwasaki <iwasaki@FreeBSD.org> | 2002-07-22 12:52:54 +0000 |
commit | 39615709135ccb3ccbc54ac2a0a1540692d913cd (patch) | |
tree | b7be83e0557f6498766c14cd562d2172d12e3f8f /sys/dev/acpica/acpi_lid.c | |
parent | fcb9022bbd197d29db9969eb8ddad8754296f8d0 (diff) | |
download | FreeBSD-src-39615709135ccb3ccbc54ac2a0a1540692d913cd.zip FreeBSD-src-39615709135ccb3ccbc54ac2a0a1540692d913cd.tar.gz |
Add device(power/sleep button and lid) wake function from sleeping state.
This is required for some Thinkpad (and maybe VAIO) machines to wake
the system up from sleep.
Currently partially implemented, more complete implementation will come later.
Diffstat (limited to 'sys/dev/acpica/acpi_lid.c')
-rw-r--r-- | sys/dev/acpica/acpi_lid.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/sys/dev/acpica/acpi_lid.c b/sys/dev/acpica/acpi_lid.c index bd186a5..f83b2de 100644 --- a/sys/dev/acpica/acpi_lid.c +++ b/sys/dev/acpica/acpi_lid.c @@ -55,6 +55,8 @@ struct acpi_lid_softc { static int acpi_lid_probe(device_t dev); static int acpi_lid_attach(device_t dev); +static int acpi_lid_suspend(device_t dev); +static int acpi_lid_resume(device_t dev); static void acpi_lid_notify_status_changed(void *arg); static void acpi_lid_notify_handler(ACPI_HANDLE h,UINT32 notify, void *context); @@ -62,6 +64,8 @@ static device_method_t acpi_lid_methods[] = { /* Device interface */ DEVMETHOD(device_probe, acpi_lid_probe), DEVMETHOD(device_attach, acpi_lid_attach), + DEVMETHOD(device_suspend, acpi_lid_suspend), + DEVMETHOD(device_resume, acpi_lid_resume), {0, 0} }; @@ -102,9 +106,26 @@ acpi_lid_attach(device_t dev) * Install notification handler */ AcpiInstallNotifyHandler(sc->lid_handle, ACPI_DEVICE_NOTIFY, acpi_lid_notify_handler, sc); + acpi_device_enable_wake_capability(sc->lid_handle, 1); return_VALUE(0); } +static int +acpi_lid_suspend(device_t dev) +{ + struct acpi_lid_softc *sc; + + sc = device_get_softc(dev); + acpi_device_enable_wake_event(sc->lid_handle); + return (0); +} + +static int +acpi_lid_resume(device_t dev) +{ + return (0); +} + static void acpi_lid_notify_status_changed(void *arg) { |