diff options
-rw-r--r-- | firmware/2lib/2nvstorage.c | 7 | ||||
-rw-r--r-- | firmware/2lib/include/2nvstorage.h | 2 | ||||
-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 | 1 |
6 files changed, 17 insertions, 1 deletions
diff --git a/firmware/2lib/2nvstorage.c b/firmware/2lib/2nvstorage.c index 2993e7d9..b4e99ece 100644 --- a/firmware/2lib/2nvstorage.c +++ b/firmware/2lib/2nvstorage.c @@ -141,6 +141,9 @@ uint32_t vb2_nv_get(struct vb2_context *ctx, enum vb2_nv_param param) case VB2_NV_RECOVERY_REQUEST: return p[VB2_NV_OFFS_RECOVERY]; + case VB2_NV_DIAG_REQUEST: + return GETBIT(VB2_NV_OFFS_BOOT2, VB2_NV_BOOT2_REQ_DIAG); + case VB2_NV_RECOVERY_SUBCODE: return p[VB2_NV_OFFS_RECOVERY_SUBCODE]; @@ -321,6 +324,10 @@ void vb2_nv_set(struct vb2_context *ctx, p[VB2_NV_OFFS_RECOVERY] = (uint8_t)value; break; + case VB2_NV_DIAG_REQUEST: + SETBIT(VB2_NV_OFFS_BOOT2, VB2_NV_BOOT2_REQ_DIAG); + break; + case VB2_NV_RECOVERY_SUBCODE: p[VB2_NV_OFFS_RECOVERY_SUBCODE] = (uint8_t)value; break; diff --git a/firmware/2lib/include/2nvstorage.h b/firmware/2lib/include/2nvstorage.h index a5879192..38904289 100644 --- a/firmware/2lib/include/2nvstorage.h +++ b/firmware/2lib/include/2nvstorage.h @@ -125,6 +125,8 @@ enum vb2_nv_param { * testing Alt OS booting. */ VB2_NV_POST_EC_SYNC_DELAY, + /* Request booting of diagnostic rom. 0=no, 1=yes. */ + VB2_NV_DIAG_REQUEST, }; /* Set default boot in developer mode */ diff --git a/firmware/2lib/include/2nvstorage_fields.h b/firmware/2lib/include/2nvstorage_fields.h index f370cd26..f9cd7dc3 100644 --- a/firmware/2lib/include/2nvstorage_fields.h +++ b/firmware/2lib/include/2nvstorage_fields.h @@ -79,13 +79,14 @@ enum vb2_nv_offset { #define VB2_NV_BOOT_DISABLE_DEV 0x40 #define VB2_NV_BOOT_DEBUG_RESET 0x80 -/* Fields in VB2_NV_OFFS_BOOT2 (unused = 0x80) */ +/* Fields in VB2_NV_OFFS_BOOT2 (unused = 0x00) */ #define VB2_NV_BOOT2_RESULT_MASK 0x03 #define VB2_NV_BOOT2_TRIED 0x04 #define VB2_NV_BOOT2_TRY_NEXT 0x08 #define VB2_NV_BOOT2_PREV_RESULT_MASK 0x30 #define VB2_NV_BOOT2_PREV_RESULT_SHIFT 4 /* Number of bits to shift result */ #define VB2_NV_BOOT2_PREV_TRIED 0x40 +#define VB2_NV_BOOT2_REQ_DIAG 0x80 /* Fields in VB2_NV_OFFS_DEV (unused = 0x80) */ #define VB2_NV_DEV_FLAG_USB 0x01 diff --git a/host/lib/crossystem.c b/host/lib/crossystem.c index 7d5903d6..e64e0acc 100644 --- a/host/lib/crossystem.c +++ b/host/lib/crossystem.c @@ -470,6 +470,8 @@ int VbGetSystemPropertyInt(const char *name) value = vb2_get_nv_storage(VB2_NV_KERNEL_SETTINGS_RESET); } else if (!strcasecmp(name,"recovery_request")) { value = vb2_get_nv_storage(VB2_NV_RECOVERY_REQUEST); + } else if (!strcasecmp(name,"diagnostic_request")) { + value = vb2_get_nv_storage(VB2_NV_DIAG_REQUEST); } else if (!strcasecmp(name,"dbg_reset")) { value = vb2_get_nv_storage(VB2_NV_DEBUG_RESET_MODE); } else if (!strcasecmp(name,"disable_dev_request")) { @@ -658,6 +660,8 @@ int VbSetSystemPropertyInt(const char *name, int value) return vb2_set_nv_storage(VB2_NV_KERNEL_SETTINGS_RESET, 0); } else if (!strcasecmp(name,"recovery_request")) { return vb2_set_nv_storage(VB2_NV_RECOVERY_REQUEST, value); + } else if (!strcasecmp(name,"diagnostic_request")) { + return vb2_set_nv_storage(VB2_NV_DIAG_REQUEST, value); } else if (!strcasecmp(name,"recovery_subcode")) { return vb2_set_nv_storage(VB2_NV_RECOVERY_SUBCODE, value); } else if (!strcasecmp(name,"dbg_reset")) { diff --git a/tests/vb2_nvstorage_tests.c b/tests/vb2_nvstorage_tests.c index fe73216a..1dccdade 100644 --- a/tests/vb2_nvstorage_tests.c +++ b/tests/vb2_nvstorage_tests.c @@ -48,6 +48,7 @@ static struct nv_field nvfields[] = { {VB2_NV_DEV_BOOT_SIGNED_ONLY, 0, 1, 0, "dev boot custom"}, {VB2_NV_DEV_BOOT_FASTBOOT_FULL_CAP, 0, 1, 0, "dev boot fb full cap"}, {VB2_NV_DEV_DEFAULT_BOOT, 0, 1, 2, "dev default boot"}, + {VB2_NV_DIAG_REQUEST, 0, 1, 0, "diagnostic rom request"}, {VB2_NV_DISABLE_DEV_REQUEST, 0, 1, 0, "disable dev request"}, {VB2_NV_CLEAR_TPM_OWNER_REQUEST, 0, 1, 0, "clear tpm owner request"}, {VB2_NV_CLEAR_TPM_OWNER_DONE, 0, 1, 0, "clear tpm owner done"}, diff --git a/utility/crossystem.c b/utility/crossystem.c index de479486..68e3f510 100644 --- a/utility/crossystem.c +++ b/utility/crossystem.c @@ -51,6 +51,7 @@ const Param sys_param_list[] = { {"dev_enable_udc", CAN_WRITE, "Enable USB Device Controller"}, {"devsw_boot", 0, "Developer switch position at boot"}, {"devsw_cur", 0, "Developer switch current position"}, + {"diagnostic_request", CAN_WRITE, "Request diagnostic rom run on next boot"}, {"disable_alt_os_request", CAN_WRITE, "Disable Alt OS mode on next boot (writable)"}, {"disable_dev_request", CAN_WRITE, "Disable virtual dev-mode on next boot"}, |