summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/dev/acpi/acpi.c32
-rw-r--r--sys/dev/acpi/acpibtn.c4
-rw-r--r--sys/dev/acpi/acpisony.c4
-rw-r--r--sys/dev/acpi/acpithinkpad.c6
-rw-r--r--sys/dev/acpi/acpitoshiba.c6
-rw-r--r--sys/dev/acpi/acpivar.h7
6 files changed, 33 insertions, 26 deletions
diff --git a/sys/dev/acpi/acpi.c b/sys/dev/acpi/acpi.c
index 7837f52dcc1..0b4cdcc9c8c 100644
--- a/sys/dev/acpi/acpi.c
+++ b/sys/dev/acpi/acpi.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: acpi.c,v 1.321 2017/02/22 16:39:56 jcs Exp $ */
+/* $OpenBSD: acpi.c,v 1.322 2017/02/28 10:39:07 natano Exp $ */
/*
* Copyright (c) 2005 Thorsten Lockert <tholo@sigmasoft.com>
* Copyright (c) 2005 Jordan Hargrave <jordan@openbsd.org>
@@ -2346,21 +2346,23 @@ acpi_indicator(struct acpi_softc *sc, int led_state)
int
-acpi_sleep_state(struct acpi_softc *sc, int state)
+acpi_sleep_state(struct acpi_softc *sc, int sleepmode)
{
extern int perflevel;
extern int lid_suspend;
int error = ENXIO;
size_t rndbuflen = 0;
char *rndbuf = NULL;
- int s;
+ int state, s;
- switch (state) {
- case ACPI_STATE_S0:
- return (0);
- case ACPI_STATE_S1:
- return (EOPNOTSUPP);
- case ACPI_STATE_S5: /* only sleep states handled here */
+ switch (sleepmode) {
+ case ACPI_SLEEP_SUSPEND:
+ state = ACPI_STATE_S3;
+ break;
+ case ACPI_SLEEP_HIBERNATE:
+ state = ACPI_STATE_S4;
+ break;
+ default:
return (EOPNOTSUPP);
}
@@ -2389,7 +2391,7 @@ acpi_sleep_state(struct acpi_softc *sc, int state)
stop_periodic_resettodr();
#ifdef HIBERNATE
- if (state == ACPI_STATE_S4) {
+ if (sleepmode == ACPI_SLEEP_HIBERNATE) {
uvmpd_hibernate();
hibernate_suspend_bufcache();
if (hibernate_alloc()) {
@@ -2445,7 +2447,7 @@ acpi_sleep_state(struct acpi_softc *sc, int state)
/* Resume */
#ifdef HIBERNATE
- if (state == ACPI_STATE_S4) {
+ if (sleepmode == ACPI_SLEEP_HIBERNATE) {
uvm_pmr_dirty_everything();
hib_getentropy(&rndbuf, &rndbuflen);
}
@@ -2482,7 +2484,7 @@ fail_quiesce:
#ifdef HIBERNATE
fail_alloc:
- if (state == ACPI_STATE_S4) {
+ if (sleepmode == ACPI_SLEEP_HIBERNATE) {
hibernate_free();
hibernate_resume_bufcache();
}
@@ -2505,7 +2507,7 @@ fail_alloc:
/* If we woke up but all the lids are closed, go back to sleep */
if (acpibtn_numopenlids() == 0 && lid_suspend != 0)
- acpi_addtask(sc, acpi_sleep_task, sc, state);
+ acpi_addtask(sc, acpi_sleep_task, sc, sleepmode);
fail_tts:
return (error);
@@ -3002,7 +3004,7 @@ acpiioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p)
error = EBADF;
break;
}
- acpi_addtask(sc, acpi_sleep_task, sc, ACPI_STATE_S3);
+ acpi_addtask(sc, acpi_sleep_task, sc, ACPI_SLEEP_SUSPEND);
acpi_wakeup(sc);
break;
#ifdef HIBERNATE
@@ -3017,7 +3019,7 @@ acpiioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p)
error = EOPNOTSUPP;
break;
}
- acpi_addtask(sc, acpi_sleep_task, sc, ACPI_STATE_S4);
+ acpi_addtask(sc, acpi_sleep_task, sc, ACPI_SLEEP_HIBERNATE);
acpi_wakeup(sc);
break;
#endif
diff --git a/sys/dev/acpi/acpibtn.c b/sys/dev/acpi/acpibtn.c
index 2f5ca6bd647..badfc8f23b3 100644
--- a/sys/dev/acpi/acpibtn.c
+++ b/sys/dev/acpi/acpibtn.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: acpibtn.c,v 1.42 2016/01/07 12:08:18 mpi Exp $ */
+/* $OpenBSD: acpibtn.c,v 1.43 2017/02/28 10:39:07 natano Exp $ */
/*
* Copyright (c) 2005 Marco Peereboom <marco@openbsd.org>
*
@@ -244,7 +244,7 @@ sleep:
/* Request to go to sleep */
if (acpi_record_event(sc->sc_acpi, APM_USER_SUSPEND_REQ))
acpi_addtask(sc->sc_acpi, acpi_sleep_task,
- sc->sc_acpi, ACPI_STATE_S3);
+ sc->sc_acpi, ACPI_SLEEP_SUSPEND);
break;
}
#endif /* SMALL_KERNEL */
diff --git a/sys/dev/acpi/acpisony.c b/sys/dev/acpi/acpisony.c
index e26e0ef750a..3c09792d558 100644
--- a/sys/dev/acpi/acpisony.c
+++ b/sys/dev/acpi/acpisony.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: acpisony.c,v 1.6 2014/09/14 14:17:24 jsg Exp $ */
+/* $OpenBSD: acpisony.c,v 1.7 2017/02/28 10:39:07 natano Exp $ */
/*
* Copyright (c) 2010 Paul Irofti <pirofti@openbsd.org>
*
@@ -198,7 +198,7 @@ acpisony_notify(struct aml_node *node, int notify, void *arg)
#ifndef SMALL_KERNEL
if (acpi_record_event(sc->sc_acpi, APM_USER_SUSPEND_REQ))
acpi_addtask(sc->sc_acpi, acpi_sleep_task,
- sc->sc_acpi, ACPI_STATE_S3);
+ sc->sc_acpi, ACPI_SLEEP_SUSPEND);
#endif
break;
case SONY_NOTIFY_SUSPEND_RELEASED:
diff --git a/sys/dev/acpi/acpithinkpad.c b/sys/dev/acpi/acpithinkpad.c
index fecf33d2618..bd075c12703 100644
--- a/sys/dev/acpi/acpithinkpad.c
+++ b/sys/dev/acpi/acpithinkpad.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: acpithinkpad.c,v 1.56 2017/02/25 20:09:20 jcs Exp $ */
+/* $OpenBSD: acpithinkpad.c,v 1.57 2017/02/28 10:39:07 natano Exp $ */
/*
* Copyright (c) 2008 joshua stein <jcs@openbsd.org>
*
@@ -383,7 +383,7 @@ thinkpad_hotkey(struct aml_node *node, int notify_type, void *arg)
#ifndef SMALL_KERNEL
if (acpi_record_event(sc->sc_acpi, APM_USER_SUSPEND_REQ))
acpi_addtask(sc->sc_acpi, acpi_sleep_task,
- sc->sc_acpi, ACPI_STATE_S3);
+ sc->sc_acpi, ACPI_SLEEP_SUSPEND);
#endif
handled = 1;
break;
@@ -409,7 +409,7 @@ thinkpad_hotkey(struct aml_node *node, int notify_type, void *arg)
#if defined(HIBERNATE) && !defined(SMALL_KERNEL)
if (acpi_record_event(sc->sc_acpi, APM_USER_HIBERNATE_REQ))
acpi_addtask(sc->sc_acpi, acpi_sleep_task,
- sc->sc_acpi, ACPI_STATE_S4);
+ sc->sc_acpi, ACPI_SLEEP_HIBERNATE);
#endif
handled = 1;
break;
diff --git a/sys/dev/acpi/acpitoshiba.c b/sys/dev/acpi/acpitoshiba.c
index 2eee9afc328..5e1f5864b93 100644
--- a/sys/dev/acpi/acpitoshiba.c
+++ b/sys/dev/acpi/acpitoshiba.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: acpitoshiba.c,v 1.7 2017/02/25 20:09:20 jcs Exp $ */
+/* $OpenBSD: acpitoshiba.c,v 1.8 2017/02/28 10:39:07 natano Exp $ */
/*-
* Copyright (c) 2003 Hiroyuki Aizu <aizu@navi.org>
* All rights reserved.
@@ -400,7 +400,7 @@ toshiba_hotkey(struct aml_node *node, int notify, void *arg)
#ifndef SMALL_KERNEL
if (acpi_record_event(sc->sc_acpi, APM_USER_SUSPEND_REQ)) {
acpi_addtask(sc->sc_acpi, acpi_sleep_task,
- sc->sc_acpi, ACPI_STATE_S3);
+ sc->sc_acpi, ACPI_SLEEP_SUSPEND);
ret = HCI_SUCCESS;
}
#endif
@@ -409,7 +409,7 @@ toshiba_hotkey(struct aml_node *node, int notify, void *arg)
#if defined(HIBERNATE) && !defined(SMALL_KERNEL)
if (acpi_record_event(sc->sc_acpi, APM_USER_HIBERNATE_REQ)) {
acpi_addtask(sc->sc_acpi, acpi_sleep_task,
- sc->sc_acpi, ACPI_STATE_S4);
+ sc->sc_acpi, ACPI_SLEEP_HIBERNATE);
ret = HCI_SUCCESS;
}
#endif
diff --git a/sys/dev/acpi/acpivar.h b/sys/dev/acpi/acpivar.h
index bb6404ed0ed..d521a90ac3d 100644
--- a/sys/dev/acpi/acpivar.h
+++ b/sys/dev/acpi/acpivar.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: acpivar.h,v 1.84 2017/02/22 16:39:56 jcs Exp $ */
+/* $OpenBSD: acpivar.h,v 1.85 2017/02/28 10:39:07 natano Exp $ */
/*
* Copyright (c) 2005 Thorsten Lockert <tholo@sigmasoft.com>
*
@@ -307,6 +307,11 @@ void acpi_attach_machdep(struct acpi_softc *);
int acpi_interrupt(void *);
void acpi_powerdown(void);
void acpi_reset(void);
+
+
+#define ACPI_SLEEP_SUSPEND 0x01
+#define ACPI_SLEEP_HIBERNATE 0x02
+
int acpi_sleep_state(struct acpi_softc *, int);
void acpi_sleep_clocks(struct acpi_softc *, int);
int acpi_sleep_cpu(struct acpi_softc *, int);