aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMiquel Raynal2018-05-15 11:57:12 +0200
committerTom Rini2018-05-25 20:12:57 -0400
commit1922df201003b8736579aed70148a283bb62e33f (patch)
tree26ff3f167da436a5eac5613f61d81197e7291259 /lib
parentbcdf6b9f26fe9cd452f5f309a6e410ea4513e60b (diff)
tpm: add TPM2_Startup command support
Add support for the TPM2_Startup command. Change the command file and the help accordingly. Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Tom Rini <trini@konsulko.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/tpm-v2.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/tpm-v2.c b/lib/tpm-v2.c
index 35dee031ec6..1a81177f753 100644
--- a/lib/tpm-v2.c
+++ b/lib/tpm-v2.c
@@ -9,3 +9,24 @@
#include <tpm-common.h>
#include <tpm-v2.h>
#include "tpm-utils.h"
+
+u32 tpm2_startup(enum tpm2_startup_types mode)
+{
+ const u8 command_v2[12] = {
+ tpm_u16(TPM2_ST_NO_SESSIONS),
+ tpm_u32(12),
+ tpm_u32(TPM2_CC_STARTUP),
+ tpm_u16(mode),
+ };
+ int ret;
+
+ /*
+ * Note TPM2_Startup command will return RC_SUCCESS the first time,
+ * but will return RC_INITIALIZE otherwise.
+ */
+ ret = tpm_sendrecv_command(command_v2, NULL, NULL);
+ if (ret && ret != TPM2_RC_INITIALIZE)
+ return ret;
+
+ return 0;
+}