summaryrefslogtreecommitdiff
path: root/firmware/lib/vboot_nvstorage.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/lib/vboot_nvstorage.c')
-rw-r--r--firmware/lib/vboot_nvstorage.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/firmware/lib/vboot_nvstorage.c b/firmware/lib/vboot_nvstorage.c
index 3b2a725b..6a21bfe8 100644
--- a/firmware/lib/vboot_nvstorage.c
+++ b/firmware/lib/vboot_nvstorage.c
@@ -46,6 +46,7 @@
#define TPM_FLAGS_OFFSET 5
#define TPM_CLEAR_OWNER_REQUEST 0x01
#define TPM_CLEAR_OWNER_DONE 0x02
+#define TPM_REBOOTED 0x04
#define RECOVERY_SUBCODE_OFFSET 6
@@ -177,6 +178,10 @@ int VbNvGet(VbNvContext *context, VbNvParam param, uint32_t *dest)
*dest = (raw[TPM_FLAGS_OFFSET] & TPM_CLEAR_OWNER_DONE ? 1 : 0);
return 0;
+ case VBNV_TPM_REQUESTED_REBOOT:
+ *dest = (raw[TPM_FLAGS_OFFSET] & TPM_REBOOTED ? 1 : 0);
+ return 0;
+
case VBNV_BACKUP_NVRAM_REQUEST:
*dest = (raw[BOOT_OFFSET] & BOOT_BACKUP_NVRAM ? 1 : 0);
return 0;
@@ -347,6 +352,13 @@ int VbNvSet(VbNvContext *context, VbNvParam param, uint32_t value)
raw[TPM_FLAGS_OFFSET] &= ~TPM_CLEAR_OWNER_DONE;
break;
+ case VBNV_TPM_REQUESTED_REBOOT:
+ if (value)
+ raw[TPM_FLAGS_OFFSET] |= TPM_REBOOTED;
+ else
+ raw[TPM_FLAGS_OFFSET] &= ~TPM_REBOOTED;
+ break;
+
case VBNV_BACKUP_NVRAM_REQUEST:
if (value)
raw[BOOT_OFFSET] |= BOOT_BACKUP_NVRAM;