summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/dev/acpica/acpi.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/sys/dev/acpica/acpi.c b/sys/dev/acpica/acpi.c
index 6295816..cc8b86f 100644
--- a/sys/dev/acpica/acpi.c
+++ b/sys/dev/acpica/acpi.c
@@ -889,6 +889,12 @@ acpi_shutdown_final(void *arg, int howto)
if (howto & RB_POWEROFF) {
printf("Power system off using ACPI...\n");
+ status = AcpiEnterSleepStatePrep(acpi_off_state);
+ if (status != AE_OK) {
+ printf("AcpiEnterSleepStatePrep failed - %s\n",
+ AcpiFormatException(status));
+ return;
+ }
if ((status = AcpiEnterSleepState(acpi_off_state)) != AE_OK) {
printf("ACPI power-off failed - %s\n", AcpiFormatException(status));
} else {
@@ -1340,6 +1346,14 @@ acpi_SetSleepState(struct acpi_softc *sc, int state)
DEVICE_RESUME(root_bus);
return_ACPI_STATUS(AE_ERROR);
}
+
+ status = AcpiEnterSleepStatePrep(state);
+ if (status != AE_OK) {
+ device_printf(sc->acpi_dev, "AcpiEnterSleepStatePrep failed - %s\n",
+ AcpiFormatException(status));
+ break;
+ }
+
sc->acpi_sstate = state;
if (state != ACPI_STATE_S1) {
OpenPOWER on IntegriCloud