diff options
-rw-r--r-- | firmware/include/vboot_api.h | 2 | ||||
-rw-r--r-- | firmware/lib/rollback_index.c | 14 |
2 files changed, 16 insertions, 0 deletions
diff --git a/firmware/include/vboot_api.h b/firmware/include/vboot_api.h index 5f11313d..62b9daa1 100644 --- a/firmware/include/vboot_api.h +++ b/firmware/include/vboot_api.h @@ -381,6 +381,8 @@ VbError_t VbExTpmOpen(void); VbError_t VbExTpmSendReceive(const uint8_t* request, uint32_t request_length, uint8_t* response, uint32_t* response_length); +/* Utility function to get the virtual dev-mode flag value. 0=off, 1=on */ +VbError_t VbGetVirtualDevMode(int *val); /*****************************************************************************/ /* Non-volatile storage */ diff --git a/firmware/lib/rollback_index.c b/firmware/lib/rollback_index.c index 668312e6..4666c3e0 100644 --- a/firmware/lib/rollback_index.c +++ b/firmware/lib/rollback_index.c @@ -131,6 +131,20 @@ uint32_t WriteSpaceFirmware(RollbackSpaceFirmware* rsf) { return TPM_E_CORRUPTED_STATE; } +VbError_t VbGetVirtualDevMode(int *val) { + RollbackSpaceFirmware rsf; + + VBDEBUG(("TPM: Entering %s()\n", __func__)); + if (TPM_SUCCESS != ReadSpaceFirmware(&rsf)) + return VBERROR_TPM_FIRMWARE_SETUP; + + VBDEBUG(("TPM: flags are 0x%02x\n", rsf.flags)); + *val = (rsf.flags & FLAG_VIRTUAL_DEV_MODE_ON) ? 1 : 0; + + VBDEBUG(("TPM: Leaving %s()\n", __func__)); + return VBERROR_SUCCESS; +} + uint32_t SetVirtualDevMode(int val) { RollbackSpaceFirmware rsf; |