Page MenuHomeFreeBSD

D48735.id169551.diff
No OneTemporary

D48735.id169551.diff

diff --git a/sys/dev/acpica/acpi.c b/sys/dev/acpica/acpi.c
--- a/sys/dev/acpica/acpi.c
+++ b/sys/dev/acpica/acpi.c
@@ -3439,8 +3439,9 @@
ACPI_SS_NONE = 0,
ACPI_SS_GPE_SET = 1 << 0,
ACPI_SS_DEV_SUSPEND = 1 << 1,
- ACPI_SS_SLP_PREP = 1 << 2,
- ACPI_SS_SLEPT = 1 << 3,
+ ACPI_SS_SPMC_ENTER = 1 << 2,
+ ACPI_SS_SLP_PREP = 1 << 3,
+ ACPI_SS_SLEPT = 1 << 4,
};
static void
@@ -3638,6 +3639,14 @@
}
slp_state |= ACPI_SS_DEV_SUSPEND;
+ if (sc->acpi_spmc_device != NULL) {
+ MPASS(sc->acpi_spmc_enter != NULL);
+ if (sc->acpi_spmc_enter(sc->acpi_spmc_device) != 0)
+ device_printf(sc->acpi_dev, "failed to run SPMC entry\n");
+ else
+ slp_state |= ACPI_SS_SPMC_ENTER;
+ }
+
if (stype != POWER_STYPE_SUSPEND_TO_IDLE) {
status = AcpiEnterSleepStatePrep(acpi_sstate);
if (ACPI_FAILURE(status)) {
@@ -3687,6 +3696,13 @@
sc->acpi_stype = POWER_STYPE_AWAKE;
slp_state &= ~ACPI_SS_GPE_SET;
}
+ if ((slp_state & ACPI_SS_SPMC_ENTER) != 0) {
+ MPASS(sc->acpi_spmc_device != NULL);
+ MPASS(sc->acpi_spmc_exit != NULL);
+ if (sc->acpi_spmc_exit(sc->acpi_spmc_device) != 0)
+ device_printf(sc->acpi_dev, "failed to run SPMC exit\n");
+ slp_state &= ~ACPI_SS_SPMC_ENTER;
+ }
if ((slp_state & ACPI_SS_DEV_SUSPEND) != 0) {
DEVICE_RESUME(root_bus);
slp_state &= ~ACPI_SS_DEV_SUSPEND;

File Metadata

Mime Type
text/plain
Expires
Fri, Jan 16, 6:08 AM (6 h, 8 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27641376
Default Alt Text
D48735.id169551.diff (1 KB)

Event Timeline