Support EC early firmware selection

Chromebox ECs perform EFS: verifying firmware before the AP boots.
This patch adds support for EC EFS.

EC EFS uses two slots: one is active slot and one is used for update.
AP is agnostic about which slot is active and which slot is for
update. Instead, AP recognizes one slot as 'active' and the other
as 'update' (or non active) slot.

After update is successful, AP issues a cold reboot command to
activate the new slot.

BUG=b:65028930,b:65264494
BRANCH=none
CQ-DEPEND=CL:616248
TEST=buildall. On Fizz, verify:
1. RW_B is old and updated by soft sync. RW_B is activated and
executed after reboot. System continues to boot to OS.
2. RW_A is old and updated by soft sync. RW_A is activated and
executed after reboot. System continues to boot to OS.

Change-Id: I6ca7686eb28b0b548785cf2c02eca1b67018f469
Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/616346
This commit is contained in:
Daisuke Nojiri
2017-08-15 18:05:22 -07:00
committed by chrome-bot
parent 35da86f589
commit f78d505e04
4 changed files with 59 additions and 28 deletions

View File

@@ -241,6 +241,8 @@ typedef struct VbKernelPreambleHeader {
#define VBSD_OPROM_LOADED 0x00020000
/* Don't try for boot failures */
#define VBSD_NOFAIL_BOOT 0x00040000
/* VbInit() was told that the EC firmware supports EFS */
#define VBSD_EC_EFS 0x00080000
/*
* Supported flags by header version. It's ok to add new flags while keeping