From 40d0bfa212d5516c68d3ad044334f7d2cc6b4445 Mon Sep 17 00:00:00 2001 From: Daisuke Nojiri Date: Thu, 30 Nov 2017 17:41:09 -0800 Subject: [PATCH] cr50: Make EC clear AP_OFF before hibnernate This patch makes AP send EC_REBOOT_HIBERNATE_CLEAR_AP_OFF, which makes EC clear AP_OFF flag then hibernate. This is needed to make Chromebox boot when cr50 toggles the EC's reset line after TURN_UPDATE_ON command. BUG=b:69721737 BRANCH=none CQ-DEPEND=CL:802632 TEST=Verify Fizz reboot after cr50 update. Change-Id: I5f590286393ac21382cab64afdccae92d3fc14ba Signed-off-by: Daisuke Nojiri Reviewed-on: https://review.coreboot.org/22657 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin --- src/ec/google/chromeec/ec_commands.h | 3 ++- src/vendorcode/google/chromeos/cr50_enable_update.c | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/ec/google/chromeec/ec_commands.h b/src/ec/google/chromeec/ec_commands.h index aa63aa766d..ee889b727b 100644 --- a/src/ec/google/chromeec/ec_commands.h +++ b/src/ec/google/chromeec/ec_commands.h @@ -3785,7 +3785,8 @@ enum ec_reboot_cmd { /* (command 3 was jump to RW-B) */ EC_REBOOT_COLD = 4, /* Cold-reboot */ EC_REBOOT_DISABLE_JUMP = 5, /* Disable jump until next reboot */ - EC_REBOOT_HIBERNATE = 6 /* Hibernate EC */ + EC_REBOOT_HIBERNATE = 6, /* Hibernate EC */ + EC_REBOOT_HIBERNATE_CLEAR_AP_OFF = 7, /* and clears AP_OFF flag */ }; /* Flags for ec_params_reboot_ec.reboot_flags */ diff --git a/src/vendorcode/google/chromeos/cr50_enable_update.c b/src/vendorcode/google/chromeos/cr50_enable_update.c index 7e8806e2d7..b5e4b6cc67 100644 --- a/src/vendorcode/google/chromeos/cr50_enable_update.c +++ b/src/vendorcode/google/chromeos/cr50_enable_update.c @@ -61,9 +61,10 @@ static void enable_update(void *unused) if (IS_ENABLED(CONFIG_POWER_OFF_ON_CR50_UPDATE)) { if (IS_ENABLED(CONFIG_EC_GOOGLE_CHROMEEC)) { - printk(BIOS_INFO, "Hibernating EC.\n"); - google_chromeec_reboot(0, EC_REBOOT_HIBERNATE, - EC_REBOOT_FLAG_ON_AP_SHUTDOWN); + printk(BIOS_INFO, "Hibernating EC. Clearing AP_OFF.\n"); + google_chromeec_reboot(0, + EC_REBOOT_HIBERNATE_CLEAR_AP_OFF, + EC_REBOOT_FLAG_ON_AP_SHUTDOWN); } poweroff(); }