diff options
Diffstat (limited to 'firmware/lib/vboot_nvstorage.c')
-rw-r--r-- | firmware/lib/vboot_nvstorage.c | 12 |
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; |