From d43154486d27323f64334203e9bc8baf08af6845 Mon Sep 17 00:00:00 2001 From: Sergii Dmytruk Date: Sat, 29 Oct 2022 20:42:28 +0300 Subject: security/tpm/: turn tis_{init,open} into tis_probe Init was always followed by open and after successful initialization we need only send-receive function, which is now returned by tis_probe on success further reducing number of functions to export from drivers. Change-Id: Ib4ce35ada24e3959ea1a518c29d431b4ae123809 Ticket: https://ticket.coreboot.org/issues/433 Signed-off-by: Sergii Dmytruk Reviewed-on: https://review.coreboot.org/c/coreboot/+/68991 Reviewed-by: Julius Werner Tested-by: build bot (Jenkins) --- src/security/tpm/tss/tcg-1.2/tss.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'src/security/tpm/tss/tcg-1.2') diff --git a/src/security/tpm/tss/tcg-1.2/tss.c b/src/security/tpm/tss/tcg-1.2/tss.c index 39c44eca9f..7f0607ba82 100644 --- a/src/security/tpm/tss/tcg-1.2/tss.c +++ b/src/security/tpm/tss/tcg-1.2/tss.c @@ -24,12 +24,18 @@ #include #define VBDEBUG(format, args...) printk(BIOS_DEBUG, format, ## args) +static tis_sendrecv_fn tis_sendrecv; + static int tpm_send_receive(const uint8_t *request, uint32_t request_length, uint8_t *response, uint32_t *response_length) { size_t len = *response_length; + + if (tis_sendrecv == NULL) + die("TSS 1.2 wasn't initialized\n"); + if (tis_sendrecv(request, request_length, response, &len)) return VB2_ERROR_UNKNOWN; /* check 64->32bit overflow and (re)check response buffer overflow */ @@ -140,20 +146,15 @@ static uint32_t send(const uint8_t *command) /* Exported functions. */ -static uint8_t tlcl_init_done; - uint32_t tlcl_lib_init(void) { - if (tlcl_init_done) + if (tis_sendrecv != NULL) return VB2_SUCCESS; - if (tis_init()) - return VB2_ERROR_UNKNOWN; - if (tis_open()) + tis_sendrecv = tis_probe(); + if (tis_sendrecv == NULL) return VB2_ERROR_UNKNOWN; - tlcl_init_done = 1; - return VB2_SUCCESS; } -- cgit v1.2.3