diff options
author | Daisuke Nojiri <dnojiri@chromium.org> | 2019-10-21 10:07:48 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-02-09 08:31:43 +0000 |
commit | 37151225f4d791204a75173eec64ebfdaf2cbdec (patch) | |
tree | a9680e1fd0897c1ea6e0461055760c42944fdee7 /board | |
parent | a4f7c8ef7c0b9b3206f67299414c2cbd2a5fe84a (diff) | |
download | chrome-ec-37151225f4d791204a75173eec64ebfdaf2cbdec.tar.gz |
EFS2: Implement Early Firmware Selection ver.2
EFS v1 allowed Chromeboxes to verify RW without AP. EFS v2 will bring
the benefts to Chromebooks, which are:
- Reduce RO dependency and presence. Allow more code to be updated
in the fields.
- Remove jumptag and workarounds needed for late sysjump.
Major imporvements over v1 are:
- No A/B slot required.
- No signature in RW or public key in RO.
- Rollback-attack protection.
- Verifies only RW being used instead of whole RW section.
For battery-equipped devices, additional benefts are:
- Immediate boot on drained battery.
- Support recovery mode regardless of battery condition.
- Faster charge in S5/G3.
EC-Cr50 communication is based on the shared UART (go/ec-cr50-comm).
EFS2 is documented in go/ec-efs2.
Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org>
BUG=chromium:1045217,chromium:141143112
BRANCH=none
TEST=Boot Helios in NORMAL/NO_BOOT/NO_BOOT_RECOVERY/RECOVERY mode.
TEST=Wake up EC from hibernate.
TEST=Make EC assert PACKET_MODE to wake up Cr50 from deepsleep.
Change-Id: I98a4fe1ecc59d106810a75daec3c424f953ff880
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2015357
Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
Commit-Queue: Daisuke Nojiri <dnojiri@chromium.org>
Tested-by: Daisuke Nojiri <dnojiri@chromium.org>
Auto-Submit: Daisuke Nojiri <dnojiri@chromium.org>
Diffstat (limited to 'board')
-rw-r--r-- | board/endeavour/board.h | 2 | ||||
-rw-r--r-- | board/endeavour/led.c | 4 | ||||
-rw-r--r-- | board/puff/board.h | 2 | ||||
-rw-r--r-- | board/puff/led.c | 4 |
4 files changed, 6 insertions, 6 deletions
diff --git a/board/endeavour/board.h b/board/endeavour/board.h index a37b3ab947..989ad69e78 100644 --- a/board/endeavour/board.h +++ b/board/endeavour/board.h @@ -148,7 +148,7 @@ enum OEM_ID { /* Board specific handlers */ void led_alert(int enable); -void led_critical(void); +void show_critical_error(void); #endif /* !__ASSEMBLER__ */ diff --git a/board/endeavour/led.c b/board/endeavour/led.c index f6d270c25b..5133b65f74 100644 --- a/board/endeavour/led.c +++ b/board/endeavour/led.c @@ -174,7 +174,7 @@ void led_alert(int enable) } } -void led_critical(void) +void show_critical_error(void) { hook_call_deferred(&led_tick_data, -1); if (led_auto_control_is_enabled(EC_LED_ID_POWER_LED)) @@ -202,7 +202,7 @@ static int command_led(int argc, char **argv) } else if (!strcasecmp(argv[1], "alert")) { led_alert(1); } else if (!strcasecmp(argv[1], "crit")) { - led_critical(); + show_critical_error(); } else { return EC_ERROR_PARAM1; } diff --git a/board/puff/board.h b/board/puff/board.h index 7d0fdbaefc..0c69c58eef 100644 --- a/board/puff/board.h +++ b/board/puff/board.h @@ -264,7 +264,7 @@ enum temp_sensor_id { void board_reset_pd_mcu(void); void board_set_tcpc_power_mode(int port, int mode); void led_alert(int enable); -void led_critical(void); +void show_critical_error(void); #endif /* !__ASSEMBLER__ */ diff --git a/board/puff/led.c b/board/puff/led.c index 49dfbce935..56f0914872 100644 --- a/board/puff/led.c +++ b/board/puff/led.c @@ -179,7 +179,7 @@ void led_alert(int enable) } } -void led_critical(void) +void show_critical_error(void) { hook_call_deferred(&led_tick_data, -1); if (led_auto_control_is_enabled(EC_LED_ID_POWER_LED)) @@ -207,7 +207,7 @@ static int command_led(int argc, char **argv) } else if (!strcasecmp(argv[1], "alert")) { led_alert(1); } else if (!strcasecmp(argv[1], "crit")) { - led_critical(); + show_critical_error(); } else { return EC_ERROR_PARAM1; } |