Joel Kitching has uploaded this change for review. ( https://review.coreboot.org/29026
Change subject: tpm: clean up tpm_setup function flow ......................................................................
tpm: clean up tpm_setup function flow
Introduce two helper functions for more readable code.
BUG=None TEST=None
Change-Id: Ibea44880683a301e82ee2ba049003c36fcb44eba Signed-off-by: Joel Kitching kitching@google.com --- M src/security/tpm/tspi/tspi.c 1 file changed, 37 insertions(+), 25 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/26/29026/1
diff --git a/src/security/tpm/tspi/tspi.c b/src/security/tpm/tspi/tspi.c index e882857..73722bd 100644 --- a/src/security/tpm/tspi/tspi.c +++ b/src/security/tpm/tspi/tspi.c @@ -64,6 +64,41 @@ } #endif
+static uint32_t tpm_setup_epilogue(uint32_t result) +{ + if (result != TPM_SUCCESS) + post_code(POST_TPM_FAILURE); + else + printk(BIOS_INFO, "TPM: setup succeeded\n"); + + return result; +} + +static uint32_t tpm_setup_s3_helper(void) +{ + result = tlcl_resume(); + switch (result) { + case TPM_SUCCESS: + break; + + case TPM_E_INVALID_POSTINIT: + /* + * We're on a platform where the TPM maintains power + * in S3, so it's already initialized. + */ + printk(BIOS_INFO, "TPM: Already initialized.\n"); + result = TPM_SUCCESS; + break; + + default: + printk(BIOS_ERR, "TPM: Resume failed (%d).\n", result); + break; + + } + + return result; +} + /* * tpm_setup starts the TPM and establishes the root of trust for the * anti-rollback mechanism. SetupTPM can fail for three reasons. 1 A bug. 2 a @@ -96,25 +131,7 @@
/* Handle special init for S3 resume path */ if (s3flag) { - result = tlcl_resume(); - switch (result) { - case TPM_SUCCESS: - break; - - case TPM_E_INVALID_POSTINIT: - /* - * We're on a platform where the TPM maintains power - * in S3, so it's already initialized. - */ - printk(BIOS_INFO, "TPM: Already initialized.\n"); - result = TPM_SUCCESS; - break; - - default: - printk(BIOS_ERR, "TPM: Resume failed.\n"); - break; - - } + result = tpm_setup_s3_helper(); goto out; }
@@ -154,12 +171,7 @@ #endif
out: - if (result != TPM_SUCCESS) - post_code(POST_TPM_FAILURE); - else - printk(BIOS_INFO, "TPM: setup succeeded\n"); - - return result; + return tpm_setup_epilogue(result); }
uint32_t tpm_clear_and_reenable(void)