Skip to content

Commit

Permalink
mfd: cros_ec: Add host_sleep_event_v1 command
Browse files Browse the repository at this point in the history
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 <[email protected]>
Reviewed-by: Rajat Jain <[email protected]>
Reviewed-by: Guenter Roeck <[email protected]>
Acked-by: Enric Balletbo i Serra <[email protected]>
Signed-off-by: Lee Jones <[email protected]>
  • Loading branch information
Evan Green authored and Lee Jones committed May 14, 2019
1 parent 49a65e3 commit afe2bb5
Showing 1 changed file with 57 additions and 0 deletions.
57 changes: 57 additions & 0 deletions include/linux/mfd/cros_ec_commands.h
Original file line number Diff line number Diff line change
Expand Up @@ -2731,6 +2731,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 */

Expand Down

0 comments on commit afe2bb5

Please sign in to comment.