Messages in this thread | | | From | Rajat Jain <> | Date | Thu, 4 Apr 2019 11:38:50 -0700 | Subject | Re: [PATCH v3 1/2] mfd: cros_ec: Add host_sleep_event_v1 command |
| |
On Wed, Apr 3, 2019 at 2:34 PM Evan Green <evgreen@chromium.org> wrote: > > Introduce the command and response structures for the second revision > of the host sleep event. These structures are part of a new EC change > that enables detection of failure to enter S0ix. The EC waits a > kernel-specified timeout (or a default amount of time) for the S0_SLP > pin to change, and wakes the system if that change does not occur in > time. > > Signed-off-by: Evan Green <evgreen@chromium.org> Reviewed-by: Rajat Jain <rajatja@chromium.org>
> > --- > > Changes in v3: None > Changes in v2: > - Made unions anonymous > - Replaced reserved union members with a comment > > include/linux/mfd/cros_ec_commands.h | 57 ++++++++++++++++++++++++++++ > 1 file changed, 57 insertions(+) > > diff --git a/include/linux/mfd/cros_ec_commands.h b/include/linux/mfd/cros_ec_commands.h > index fc91082d4c35..1cdb07c0ece1 100644 > --- a/include/linux/mfd/cros_ec_commands.h > +++ b/include/linux/mfd/cros_ec_commands.h > @@ -2729,6 +2729,63 @@ struct ec_params_host_sleep_event { > uint8_t sleep_event; > } __packed; > > +/* > + * Use a default timeout value (CONFIG_SLEEP_TIMEOUT_MS) for detecting sleep > + * transition failures > + */ > +#define EC_HOST_SLEEP_TIMEOUT_DEFAULT 0 > + > +/* Disable timeout detection for this sleep transition */ > +#define EC_HOST_SLEEP_TIMEOUT_INFINITE 0xFFFF > + > +struct ec_params_host_sleep_event_v1 { > + /* The type of sleep being entered or exited. */ > + uint8_t sleep_event; > + > + /* Padding */ > + uint8_t reserved; > + union { > + /* Parameters that apply for suspend messages. */ > + struct { > + /* > + * The timeout in milliseconds between when this message > + * is received and when the EC will declare sleep > + * transition failure if the sleep signal is not > + * asserted. > + */ > + uint16_t sleep_timeout_ms; > + } suspend_params; > + > + /* No parameters for non-suspend messages. */ > + }; > +} __packed; > + > +/* A timeout occurred when this bit is set */ > +#define EC_HOST_RESUME_SLEEP_TIMEOUT 0x80000000 > + > +/* > + * The mask defining which bits correspond to the number of sleep transitions, > + * as well as the maximum number of suspend line transitions that will be > + * reported back to the host. > + */ > +#define EC_HOST_RESUME_SLEEP_TRANSITIONS_MASK 0x7FFFFFFF > + > +struct ec_response_host_sleep_event_v1 { > + union { > + /* Response fields that apply for resume messages. */ > + struct { > + /* > + * The number of sleep power signal transitions that > + * occurred since the suspend message. The high bit > + * indicates a timeout occurred. > + */ > + uint32_t sleep_transitions; > + } resume_response; > + > + /* No response fields for non-resume messages. */ > + }; > +} __packed; > + > /*****************************************************************************/ > /* Smart battery pass-through */ > > -- > 2.20.1 >
| |