diff options
author | Joel Kitching <kitching@google.com> | 2018-10-02 20:54:07 +0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-11-19 16:28:25 -0800 |
commit | 0f7779862ca4b4973f52c7b851c65ccb8d9cd147 (patch) | |
tree | 36e2c16888c1f4c8f50c95c0a5dce732390879b1 /firmware | |
parent | 9071205452595027cc8d52588f0c6fdf7581f905 (diff) | |
download | vboot-0f7779862ca4b4973f52c7b851c65ccb8d9cd147.tar.gz |
CHERRY-PICK: vboot: create NVRAM flag to pause after EC software sync
Previously, it is impossible to programmatically enable/disable
Alt OS mode in eve. This is because only EC-RW supports the
kbatboot keyboard matrix functionality. But, as part of the
campfire boot flow, the keyboard matrix is retrieved *immediately*
after jumping into EC-RW. We need to insert a small pause in
order to allow for some entity (autotest/servo) to send a kbatboot
command, simulating the Alt OS keyboard press hotkey.
BUG=b:117140648,b:118786884
TEST=Manually use crossystem to set post_ec_sync_delay=1
Reboot, and wait for the delay to begin
Run `kbatboot 1 4 1` in EC console
Check that AP console contains:
"vb2_post_ec_sync_hooks: post_ec_sync_delay 5000 ms..."
TEST=make clean && make runtests
Note that we are only cherry-picking the changes which affect
crossystem in this CL. Firmware changes will still live in
campfire-eve branch only.
Change-Id: I1305357199d87b80b4edc4e311015106ab07de65
Reviewed-on: https://chromium-review.googlesource.com/c/1256644
Commit-Queue: Joel Kitching <kitching@chromium.org>
Tested-by: Joel Kitching <kitching@chromium.org>
Trybot-Ready: Joel Kitching <kitching@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
(cherry picked from commit 64d7369976b88b21d8d8a860252023776a2f119e)
Reviewed-on: https://chromium-review.googlesource.com/1328389
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Reviewed-by: Julius Werner <jwerner@chromium.org>
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/2lib/2nvstorage.c | 8 | ||||
-rw-r--r-- | firmware/2lib/include/2nvstorage.h | 6 | ||||
-rw-r--r-- | firmware/2lib/include/2nvstorage_fields.h | 3 |
3 files changed, 16 insertions, 1 deletions
diff --git a/firmware/2lib/2nvstorage.c b/firmware/2lib/2nvstorage.c index e721ca6a..182b9218 100644 --- a/firmware/2lib/2nvstorage.c +++ b/firmware/2lib/2nvstorage.c @@ -222,6 +222,10 @@ uint32_t vb2_nv_get(struct vb2_context *ctx, enum vb2_nv_param param) return GETBIT(VB2_NV_OFFS_MISC, VB2_NV_MISC_ENABLE_ALT_OS); case VB2_NV_DISABLE_ALT_OS_REQUEST: return GETBIT(VB2_NV_OFFS_MISC, VB2_NV_MISC_DISABLE_ALT_OS); + + case VB2_NV_POST_EC_SYNC_DELAY: + return GETBIT(VB2_NV_OFFS_MISC, + VB2_NV_MISC_POST_EC_SYNC_DELAY); } /* @@ -429,6 +433,10 @@ void vb2_nv_set(struct vb2_context *ctx, case VB2_NV_DISABLE_ALT_OS_REQUEST: SETBIT(VB2_NV_OFFS_MISC, VB2_NV_MISC_DISABLE_ALT_OS); break; + + case VB2_NV_POST_EC_SYNC_DELAY: + SETBIT(VB2_NV_OFFS_MISC, VB2_NV_MISC_POST_EC_SYNC_DELAY); + break; } /* diff --git a/firmware/2lib/include/2nvstorage.h b/firmware/2lib/include/2nvstorage.h index 9d8374c0..a5879192 100644 --- a/firmware/2lib/include/2nvstorage.h +++ b/firmware/2lib/include/2nvstorage.h @@ -119,6 +119,12 @@ enum vb2_nv_param { VB2_NV_ENABLE_ALT_OS_REQUEST, /* Disable AltOS Mode on next boot. */ VB2_NV_DISABLE_ALT_OS_REQUEST, + /* + * Add a short delay after EC software sync for any interaction + * with EC-RW (persistent). Currently used on eve for programmatically + * testing Alt OS booting. + */ + VB2_NV_POST_EC_SYNC_DELAY, }; /* Set default boot in developer mode */ diff --git a/firmware/2lib/include/2nvstorage_fields.h b/firmware/2lib/include/2nvstorage_fields.h index 4f7b9e22..f370cd26 100644 --- a/firmware/2lib/include/2nvstorage_fields.h +++ b/firmware/2lib/include/2nvstorage_fields.h @@ -101,12 +101,13 @@ enum vb2_nv_offset { #define VB2_NV_TPM_CLEAR_OWNER_DONE 0x02 #define VB2_NV_TPM_REBOOTED 0x04 -/* Fields in VB2_NV_OFFS_MISC (unused = 0xc0) */ +/* Fields in VB2_NV_OFFS_MISC (unused = 0x80) */ #define VB2_NV_MISC_UNLOCK_FASTBOOT 0x01 #define VB2_NV_MISC_BOOT_ON_AC_DETECT 0x02 #define VB2_NV_MISC_TRY_RO_SYNC 0x04 #define VB2_NV_MISC_BATTERY_CUTOFF 0x08 #define VB2_NV_MISC_ENABLE_ALT_OS 0x10 #define VB2_NV_MISC_DISABLE_ALT_OS 0x20 +#define VB2_NV_MISC_POST_EC_SYNC_DELAY 0x40 #endif /* VBOOT_REFERENCE_VBOOT_2NVSTORAGE_FIELDS_H_ */ |