Messages in this thread | | | From | Evan Green <> | Subject | [PATCH 0/2] platform/chrome: Add support for host sleep event command v1 | Date | Wed, 20 Mar 2019 14:20:28 -0700 |
| |
The Chrome OS EC has an updated set of parameters for the host sleep event command. With the new parameters, the host can indicate a timeout along with suspend messages. Specifically S0ix suspend messages are supported now, though the host command format isn't specific to S0ix. When the EC sees an S0ix suspend host sleep event, it arms a timer for the specified number of milliseconds (or a sane per-board default baked into the EC). If the EC does not observe the platform's SLP_S0 line assert within the specified timeout, then the EC wakes the system.
On resume, the EC reports the number of transitions seen on the SLP_S0 line. The high bit is used to report whether or not a timeout occurred. The number of transitions can then be used to detect cases of excessive housekeeping activities, where the system wakes up out of S0ix temporarily (unbeknownst to Linux), and then (hopefully) goes back to sleep.
This mechanism helps in cases where the system attempted to suspend via S0ix, but due to driver bugs ended up suspending to a shallower idle state instead. In concert with additional changes that detect S0ix entry failures, this mechanism allows the system to quickly detect and report on incorrect suspend outcomes.
Evan Green (2): mfd: cros_ec: Add host_sleep_event_v1 command platform/chrome: Add support for v1 of host sleep event
drivers/mfd/cros_ec.c | 37 +++++++++++++--- drivers/platform/chrome/cros_ec_proto.c | 9 ++++ include/linux/mfd/cros_ec.h | 2 + include/linux/mfd/cros_ec_commands.h | 59 +++++++++++++++++++++++++ 4 files changed, 102 insertions(+), 5 deletions(-)
-- 2.20.1
| |