diff options
-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 | ||||
-rw-r--r-- | host/lib/crossystem.c | 4 | ||||
-rw-r--r-- | tests/vb2_nvstorage_tests.c | 1 | ||||
-rw-r--r-- | utility/crossystem.c | 2 |
6 files changed, 23 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_ */ diff --git a/host/lib/crossystem.c b/host/lib/crossystem.c index d87c3f26..0ed88e65 100644 --- a/host/lib/crossystem.c +++ b/host/lib/crossystem.c @@ -577,6 +577,8 @@ int VbGetSystemPropertyInt(const char *name) value = vb2_get_nv_storage(VB2_NV_ENABLE_ALT_OS_REQUEST); } else if (!strcasecmp(name, "disable_alt_os_request")) { value = vb2_get_nv_storage(VB2_NV_DISABLE_ALT_OS_REQUEST); + } else if (!strcasecmp(name, "post_ec_sync_delay")) { + value = vb2_get_nv_storage(VB2_NV_POST_EC_SYNC_DELAY); } return value; @@ -737,6 +739,8 @@ int VbSetSystemPropertyInt(const char *name, int value) return vb2_set_nv_storage(VB2_NV_ENABLE_ALT_OS_REQUEST, value); } else if (!strcasecmp(name, "disable_alt_os_request")) { return vb2_set_nv_storage(VB2_NV_DISABLE_ALT_OS_REQUEST, value); + } else if (!strcasecmp(name, "post_ec_sync_delay")) { + return vb2_set_nv_storage(VB2_NV_POST_EC_SYNC_DELAY, value); } return -1; diff --git a/tests/vb2_nvstorage_tests.c b/tests/vb2_nvstorage_tests.c index c945cfe2..9d1b1bb0 100644 --- a/tests/vb2_nvstorage_tests.c +++ b/tests/vb2_nvstorage_tests.c @@ -63,6 +63,7 @@ static struct nv_field nvfields[] = { "kernel max rollforward"}, {VB2_NV_ENABLE_ALT_OS_REQUEST, 0, 1, 0, "enable alt os request"}, {VB2_NV_DISABLE_ALT_OS_REQUEST, 0, 1, 0, "disable alt os request"}, + {VB2_NV_POST_EC_SYNC_DELAY, 0, 1, 0, "enable post-ec sync delay"}, {0, 0, 0, 0, NULL} }; diff --git a/utility/crossystem.c b/utility/crossystem.c index 4ab5d7f3..d7443487 100644 --- a/utility/crossystem.c +++ b/utility/crossystem.c @@ -55,6 +55,8 @@ const Param sys_param_list[] = { {"disable_dev_request", CAN_WRITE, "Disable virtual dev-mode on next boot"}, {"ecfw_act", IS_STRING, "Active EC firmware"}, {"enable_alt_os_request", CAN_WRITE, "Enable AltOS mode on next boot"}, + {"post_ec_sync_delay", CAN_WRITE, + "Short delay after EC software sync (persistent, writable, eve only)"}, {"fmap_base", 0, "Main firmware flashmap physical address", "0x%08x"}, {"fw_prev_result", IS_STRING, "Firmware result of previous boot (vboot2)"}, {"fw_prev_tried", IS_STRING, "Firmware tried on previous boot (vboot2)"}, |