From 7ef5158c7db3e1872861fe09ea147f0511099630 Mon Sep 17 00:00:00 2001 From: Evan Green Date: Mon, 2 May 2022 12:22:51 -0700 Subject: [PATCH] soc/intel: Return ACPI_S4 as previous sleep state pmc_prev_sleep_state() isn't handling the case where acpi_sleep_from_pm1() returns ACPI_S4. Pass that value along so it can get set as a prev_sleep_state. Without this, consumers see prev_sleep_state as 0 and always treat resume as a cold boot. With this, consumers can correctly do behavior specific to S4 resume, like skipping the disconnect IPC command to the PMC on Alderlake systems. BUG=b:230031158 TEST=Resume from S4 on Primus4es Signed-off-by: Evan Green Change-Id: I3fb3dc428a749db80293e51a04a2096514a7b689 Reviewed-on: https://review.coreboot.org/c/coreboot/+/64002 Tested-by: build bot (Jenkins) Reviewed-by: Subrata Banik Reviewed-by: Tim Wawrzynczak Reviewed-by: Eric Lai --- src/soc/intel/common/block/pmc/pmclib.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/soc/intel/common/block/pmc/pmclib.c b/src/soc/intel/common/block/pmc/pmclib.c index a2e3e9e1cc..a733920139 100644 --- a/src/soc/intel/common/block/pmc/pmclib.c +++ b/src/soc/intel/common/block/pmc/pmclib.c @@ -399,6 +399,9 @@ static int pmc_prev_sleep_state(const struct chipset_power_state *ps) if (CONFIG(HAVE_ACPI_RESUME)) prev_sleep_state = ACPI_S3; break; + case ACPI_S4: + prev_sleep_state = ACPI_S4; + break; case ACPI_S5: prev_sleep_state = ACPI_S5; break;