ec/google/wilco: Turn on wake up from lid
Send required EC command to enable ACPI S3 wake up from lid switch. BUG=b:120748824 TEST=Put Sarien system into S3 and then wake up from lid switch successful. Signed-off-by: Lijian Zhao <lijian.zhao@intel.com> Change-Id: I13f3469847b0886147b8b624311a1ece796f847b Signed-off-by: Lijian Zhao <lijian.zhao@intel.com> Reviewed-on: https://review.coreboot.org/c/30824 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
This commit is contained in:
parent
2bbffc0442
commit
a31872c615
3 changed files with 34 additions and 0 deletions
|
@ -158,3 +158,12 @@ int wilco_ec_radio_control(enum ec_radio radio, uint8_t state)
|
||||||
radio_control, ARRAY_SIZE(radio_control),
|
radio_control, ARRAY_SIZE(radio_control),
|
||||||
NULL, 0);
|
NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int wilco_ec_change_wake(uint8_t source, enum ec_wake_change change)
|
||||||
|
{
|
||||||
|
uint8_t wake_source[3] = { change, source };
|
||||||
|
|
||||||
|
return wilco_ec_mailbox(WILCO_EC_MSG_DEFAULT, KB_ACPI_WAKEUP_CHANGE,
|
||||||
|
wake_source, ARRAY_SIZE(wake_source),
|
||||||
|
NULL, 0);
|
||||||
|
}
|
||||||
|
|
|
@ -38,6 +38,8 @@ enum {
|
||||||
KB_EC_INFO = 0x38,
|
KB_EC_INFO = 0x38,
|
||||||
/* Set ACPI mode on or off */
|
/* Set ACPI mode on or off */
|
||||||
KB_ACPI = 0x3a,
|
KB_ACPI = 0x3a,
|
||||||
|
/* Change ACPI wake up source */
|
||||||
|
KB_ACPI_WAKEUP_CHANGE = 0x4a,
|
||||||
/* Manage the EC power button passthru to the host */
|
/* Manage the EC power button passthru to the host */
|
||||||
KB_POWER_BUTTON_TO_HOST = 0x3e,
|
KB_POWER_BUTTON_TO_HOST = 0x3e,
|
||||||
/* Manage the EC control of speaker mute */
|
/* Manage the EC control of speaker mute */
|
||||||
|
@ -257,4 +259,25 @@ int wilco_ec_get_pm(struct ec_pm_event_state *pm, bool clear);
|
||||||
*/
|
*/
|
||||||
int wilco_ec_get_lid_state(void);
|
int wilco_ec_get_lid_state(void);
|
||||||
|
|
||||||
|
enum ec_wake_change {
|
||||||
|
WAKE_OFF = 0,
|
||||||
|
WAKE_ON
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* wilco_ec_change_wake_source
|
||||||
|
*
|
||||||
|
* Change acpi wake up source.
|
||||||
|
* @source: Wake up source that can be enabled/disabled.
|
||||||
|
* @ec_wake_change: On/off switch.
|
||||||
|
*
|
||||||
|
* Returns -1 if the EC command failed
|
||||||
|
*/
|
||||||
|
int wilco_ec_change_wake(uint8_t source, enum ec_wake_change change);
|
||||||
|
|
||||||
|
enum ec_acpi_wake_events {
|
||||||
|
EC_ACPI_WAKE_PWRB = BIT(0), /* Wake up by power button */
|
||||||
|
EC_ACPI_WAKE_LID = BIT(1), /* Wake up by lid switch */
|
||||||
|
EC_ACPI_WAKE_RTC = BIT(5), /* Wake up by RTC */
|
||||||
|
};
|
||||||
|
|
||||||
#endif /* EC_GOOGLE_WILCO_COMMANDS_H */
|
#endif /* EC_GOOGLE_WILCO_COMMANDS_H */
|
||||||
|
|
|
@ -26,6 +26,8 @@ void wilco_ec_smi_sleep(int slp_type)
|
||||||
switch (slp_type) {
|
switch (slp_type) {
|
||||||
case ACPI_S3:
|
case ACPI_S3:
|
||||||
wilco_ec_send_noargs(KB_SAVE);
|
wilco_ec_send_noargs(KB_SAVE);
|
||||||
|
wilco_ec_change_wake((EC_ACPI_WAKE_PWRB|EC_ACPI_WAKE_LID),
|
||||||
|
WAKE_ON);
|
||||||
wilco_ec_slp_en();
|
wilco_ec_slp_en();
|
||||||
break;
|
break;
|
||||||
case ACPI_S5:
|
case ACPI_S5:
|
||||||
|
|
Loading…
Reference in a new issue