acpi: Enable ACPI reset by default
authorSepherosa Ziehau <sephe@dragonflybsd.org>
Sun, 17 Apr 2011 08:08:37 +0000 (16:08 +0800)
committerSepherosa Ziehau <sephe@dragonflybsd.org>
Sun, 17 Apr 2011 08:46:59 +0000 (16:46 +0800)
- Enable ACPI reset if FADT has this feature bit set
- During ACPI reset, use AcpiReset() instead of rolling our own

Obtained-from: FreeBSD (r213755 jkim@freebsd.org)

sys/dev/acpica5/acpi.c

index 07ef3b3..64f6970 100644 (file)
@@ -586,6 +586,10 @@ acpi_attach(device_t dev)
        kfreeenv(env);
     }
 
+    /* Only enable reboot by default if the FADT says it is available. */
+    if (AcpiGbl_FADT.Flags & ACPI_FADT_RESET_REGISTER)
+       sc->acpi_handle_reboot = 1;
+
     /* Only enable S4BIOS by default if the FACS says it is available. */
     status = AcpiGetTable(ACPI_SIG_FACS, 0, (ACPI_TABLE_HEADER **)&facs);
     if (ACPI_FAILURE(status)) {
@@ -1735,12 +1739,9 @@ acpi_shutdown_final(void *arg, int howto)
            DELAY(1000000);
            kprintf("ACPI power-off failed - timeout\n");
        }
-    } else if ((howto & RB_HALT) == 0 &&
-       (AcpiGbl_FADT.Flags & ACPI_FADT_RESET_REGISTER) &&
-       sc->acpi_handle_reboot) {
+    } else if ((howto & RB_HALT) == 0 && sc->acpi_handle_reboot) {
        /* Reboot using the reset register. */
-       status = AcpiWrite(
-           AcpiGbl_FADT.ResetValue, &AcpiGbl_FADT.ResetRegister);
+       status = AcpiReset();
        if (ACPI_FAILURE(status)) {
            kprintf("ACPI reset failed - %s\n", AcpiFormatException(status));
        } else {