From 0121d0e3e005bb7e96ff3f3504c2ef51ab1aca9c Mon Sep 17 00:00:00 2001 From: Matt DeVillier Date: Thu, 8 May 2025 10:59:25 -0500 Subject: [PATCH] ec/google/chromeec/smi: Clear events before enabling wake mask On some older platforms (eg, google/link), setting the wake mask before clearing the pending events will result in an immediate wake from S3 sleep, so swap the ordering to ensure that doesn't happen. TEST=build/boot google/link, verify S3 sleep works properly. Change-Id: I483dcfabd37a1f55fd0e56eed895f5b813f018d7 Signed-off-by: Matt DeVillier Reviewed-on: https://review.coreboot.org/c/coreboot/+/87576 Tested-by: build bot (Jenkins) Reviewed-by: Martin L Roth Reviewed-by: Caveh Jalali --- src/ec/google/chromeec/smihandler.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/ec/google/chromeec/smihandler.c b/src/ec/google/chromeec/smihandler.c index 91b42319d5..c1bb523f23 100644 --- a/src/ec/google/chromeec/smihandler.c +++ b/src/ec/google/chromeec/smihandler.c @@ -61,6 +61,13 @@ void chromeec_set_usb_charge_mode(int slp_type) void chromeec_smi_sleep(int slp_type, uint64_t s3_mask, uint64_t s5_mask) { + /* Disable SCI and SMI events */ + google_chromeec_set_smi_mask(0); + google_chromeec_set_sci_mask(0); + + /* Clear pending events that may trigger immediate wake */ + clear_pending_events(); + if (!google_chromeec_is_uhepi_supported()) { switch (slp_type) { case ACPI_S3: @@ -74,13 +81,6 @@ void chromeec_smi_sleep(int slp_type, uint64_t s3_mask, uint64_t s5_mask) break; } } - - /* Disable SCI and SMI events */ - google_chromeec_set_smi_mask(0); - google_chromeec_set_sci_mask(0); - - /* Clear pending events that may trigger immediate wake */ - clear_pending_events(); } void chromeec_smi_device_event_sleep(int slp_type, uint64_t s3_mask,