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 <dnojiri@chromium.org>
Reviewed-on: https://review.coreboot.org/22657
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
Daisuke Nojiri 2017-11-30 17:41:09 -08:00 committed by Aaron Durbin
parent ff906fb95b
commit 40d0bfa212
2 changed files with 6 additions and 4 deletions

View File

@ -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 */

View File

@ -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();
}