Duncan Laurie has uploaded this change for review. ( https://review.coreboot.org/29120
Change subject: ec/google/wilco: Save and restore PS/2 data for S3 ......................................................................
ec/google/wilco: Save and restore PS/2 data for S3
Send a command to the EC on the way into S3 suspend state telling it to save the PS/2 data, and on resume send it a command for restoring the PS/2 data that was previously saved.
Change-Id: Ic4b5d6d2656dbb1c476b9211b0d60c71b0cd7b32 Signed-off-by: Duncan Laurie dlaurie@google.com --- M src/ec/google/wilco/chip.c M src/ec/google/wilco/commands.h M src/ec/google/wilco/smihandler.c 3 files changed, 12 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/20/29120/1
diff --git a/src/ec/google/wilco/chip.c b/src/ec/google/wilco/chip.c index fe4ef6a..d8ec281 100644 --- a/src/ec/google/wilco/chip.c +++ b/src/ec/google/wilco/chip.c @@ -44,6 +44,13 @@ BOOT_STATE_INIT_ENTRY(BS_DEV_INIT, BS_ON_EXIT, wilco_ec_post_video_init, NULL);
+static void wilco_ec_suspend_resume(void *unused) +{ + wilco_ec_send_noargs(KB_RESTORE); +} +BOOT_STATE_INIT_ENTRY(BS_OS_RESUME, BS_ON_ENTRY, + wilco_ec_suspend_resume, NULL); + static void wilco_ec_init(struct device *dev) { if (!dev->enabled) diff --git a/src/ec/google/wilco/commands.h b/src/ec/google/wilco/commands.h index a74e1b2..eeb6d30 100644 --- a/src/ec/google/wilco/commands.h +++ b/src/ec/google/wilco/commands.h @@ -25,6 +25,10 @@ KB_POWER_STATUS = 0x05, /* Inform the EC aboout the reason host is turning off */ KB_POWER_OFF = 0x08, + /* Save PS/2 data before S3 suspend */ + KB_SAVE = 0x2f, + /* Restore PS/2 data after S3 resume */ + KB_RESTORE = 0x30, /* Retrieve information about the EC */ KB_EC_INFO = 0x38, /* Set ACPI mode on or off */ diff --git a/src/ec/google/wilco/smihandler.c b/src/ec/google/wilco/smihandler.c index 9fb1518..adad533 100644 --- a/src/ec/google/wilco/smihandler.c +++ b/src/ec/google/wilco/smihandler.c @@ -25,6 +25,7 @@ { switch (slp_type) { case ACPI_S3: + wilco_ec_send_noargs(KB_SAVE); wilco_ec_slp_en(); break; case ACPI_S5: