summaryrefslogtreecommitdiff
path: root/utility/tpmc.c
diff options
context:
space:
mode:
Diffstat (limited to 'utility/tpmc.c')
-rw-r--r--utility/tpmc.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/utility/tpmc.c b/utility/tpmc.c
index ae45ca1c..a36f7e94 100644
--- a/utility/tpmc.c
+++ b/utility/tpmc.c
@@ -468,6 +468,31 @@ static uint32_t HandlerGetVersion(void) {
return result;
}
+#ifndef TPM2_MODE
+static void PrintIFXFirmwarePackage(TPM_IFX_FIRMWAREPACKAGE* firmware_package,
+ const char* prefix) {
+ printf("%s_package_id %08x\n", prefix,
+ firmware_package->FwPackageIdentifier);
+ printf("%s_version %08x\n", prefix, firmware_package->Version);
+ printf("%s_stale_version %08x\n", prefix, firmware_package->StaleVersion);
+}
+
+static uint32_t HandlerIFXFieldUpgradeInfo(void) {
+ TPM_IFX_FIELDUPGRADEINFO info;
+ uint32_t result = TlclIFXFieldUpgradeInfo(&info);
+ if (result == 0) {
+ printf("max_data_size %u\n", info.wMaxDataSize);
+ PrintIFXFirmwarePackage(&info.sBootloaderFirmwarePackage, "bootloader");
+ PrintIFXFirmwarePackage(&info.sFirmwarePackages[0], "fw0");
+ PrintIFXFirmwarePackage(&info.sFirmwarePackages[1], "fw1");
+ printf("status %04x\n", info.wSecurityModuleStatus);
+ PrintIFXFirmwarePackage(&info.sProcessFirmwarePackage, "process_fw");
+ printf("field_upgrade_counter %u\n", info.wFieldUpgradeCounter);
+ }
+ return result;
+}
+#endif
+
#ifdef TPM2_MODE
static uint32_t HandlerDoNothingForTPM2(void) {
return 0;
@@ -548,6 +573,9 @@ command_record command_table[] = {
HandlerSendRaw },
{ "getversion", "getver", "get TPM vendor and firmware version",
HandlerGetVersion },
+ { "ifxfieldupgradeinfo", "ifxfui",
+ TPM20_NOT_IMPLEMENTED("read and print IFX field upgrade info",
+ HandlerIFXFieldUpgradeInfo) },
};
static int n_commands = sizeof(command_table) / sizeof(command_table[0]);