Message ID | 20220614075726.2729987-1-swboyd@chromium.org (mailing list archive) |
---|---|
State | Accepted |
Commit | 74bb746407bf0d7c7d126c7731dbcd66d467619b |
Headers | show |
Series | [v3] platform/chrome: cros_ec: Always expose last resume result | expand |
Hello: This patch was applied to chrome-platform/linux.git (for-kernelci) by Tzung-Bi Shih <tzungbi@kernel.org>: On Tue, 14 Jun 2022 00:57:26 -0700 you wrote: > The last resume result exposing logic in cros_ec_sleep_event() > incorrectly requires S0ix support, which doesn't work on ARM based > systems where S0ix doesn't exist. That's because cros_ec_sleep_event() > only reports the last resume result when the EC indicates the last sleep > event was an S0ix resume. On ARM systems, the last sleep event is always > S3 resume, but the EC can still detect sleep hang events in case some > other part of the AP is blocking sleep. > > [...] Here is the summary with links: - [v3] platform/chrome: cros_ec: Always expose last resume result https://git.kernel.org/chrome-platform/c/74bb746407bf You are awesome, thank you!
Hello: This patch was applied to chrome-platform/linux.git (for-next) by Tzung-Bi Shih <tzungbi@kernel.org>: On Tue, 14 Jun 2022 00:57:26 -0700 you wrote: > The last resume result exposing logic in cros_ec_sleep_event() > incorrectly requires S0ix support, which doesn't work on ARM based > systems where S0ix doesn't exist. That's because cros_ec_sleep_event() > only reports the last resume result when the EC indicates the last sleep > event was an S0ix resume. On ARM systems, the last sleep event is always > S3 resume, but the EC can still detect sleep hang events in case some > other part of the AP is blocking sleep. > > [...] Here is the summary with links: - [v3] platform/chrome: cros_ec: Always expose last resume result https://git.kernel.org/chrome-platform/c/74bb746407bf You are awesome, thank you!
diff --git a/drivers/platform/chrome/cros_ec.c b/drivers/platform/chrome/cros_ec.c index b3e94cdf7d1a..00381490dd3e 100644 --- a/drivers/platform/chrome/cros_ec.c +++ b/drivers/platform/chrome/cros_ec.c @@ -135,16 +135,16 @@ static int cros_ec_sleep_event(struct cros_ec_device *ec_dev, u8 sleep_event) buf.msg.command = EC_CMD_HOST_SLEEP_EVENT; ret = cros_ec_cmd_xfer_status(ec_dev, &buf.msg); - - /* For now, report failure to transition to S0ix with a warning. */ + /* Report failure to transition to system wide suspend with a warning. */ if (ret >= 0 && ec_dev->host_sleep_v1 && - (sleep_event == HOST_SLEEP_EVENT_S0IX_RESUME)) { + (sleep_event == HOST_SLEEP_EVENT_S0IX_RESUME || + sleep_event == HOST_SLEEP_EVENT_S3_RESUME)) { ec_dev->last_resume_result = buf.u.resp1.resume_response.sleep_transitions; WARN_ONCE(buf.u.resp1.resume_response.sleep_transitions & EC_HOST_RESUME_SLEEP_TIMEOUT, - "EC detected sleep transition timeout. Total slp_s0 transitions: %d", + "EC detected sleep transition timeout. Total sleep transitions: %d", buf.u.resp1.resume_response.sleep_transitions & EC_HOST_RESUME_SLEEP_TRANSITIONS_MASK); }