diff options
author | Mattias Nissler <mnissler@chromium.org> | 2017-07-07 10:26:43 +0200 |
---|---|---|
committer | Mattias Nissler <mnissler@chromium.org> | 2017-09-08 19:43:52 +0000 |
commit | aab52651d3df11c6a7908e1d07bd81a98d38bea7 (patch) | |
tree | 7a465f21160f542ea860f316aedf0039c65577d7 /utility/tpmc.c | |
parent | 8b71425257d251858410de71efcf389df8b200d2 (diff) | |
download | vboot-aab52651d3df11c6a7908e1d07bd81a98d38bea7.tar.gz |
Add support for IFX FieldUpgradeInfoRequest2 commandstabilize-9765.76.Bstabilize-9765.65.Brelease-R61-9765.B
Add tpm_lite library support for the IFX specific TPM_FieldUpgrade
subcommand "FieldUpgradeInfoRequest2". Expose this via tpmc so it can
be used from shell scripts.
BRANCH=none
BUG=chromium:728130
TEST=Builds and tpmc ifxfieldupgradeinfo prints plausible results.
Reviewed-on: https://chromium-review.googlesource.com/562772
Commit-Ready: Mattias Nissler <mnissler@chromium.org>
Tested-by: Mattias Nissler <mnissler@chromium.org>
Reviewed-by: Mattias Nissler <mnissler@chromium.org>
BUG=chromium:761803
Change-Id: I80cf4d82de34e5010393918df2a317ea62e17095
Reviewed-on: https://chromium-review.googlesource.com/657427
Reviewed-by: Mattias Nissler <mnissler@chromium.org>
Tested-by: Mattias Nissler <mnissler@chromium.org>
Diffstat (limited to 'utility/tpmc.c')
-rw-r--r-- | utility/tpmc.c | 28 |
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]); |