X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=lib%2Ftpm.c;h=19bf0b59905cf374d2a2b1e2a3bacb80efdab44b;hb=7aee0e2549962effb4a7bab1086bbeb7525a9624;hp=967c8e65150a354a098db3c8196db6e4cc129f5c;hpb=1a4596601fd395f3afb8f82f3f840c5e00bdd57a;p=karo-tx-uboot.git diff --git a/lib/tpm.c b/lib/tpm.c index 967c8e6515..19bf0b5990 100644 --- a/lib/tpm.c +++ b/lib/tpm.c @@ -6,10 +6,11 @@ */ #include -#include -#include +#include +#include #include #include +#include /* Internal error of TPM command library */ #define TPM_LIB_ERROR ((uint32_t)~0u) @@ -240,9 +241,20 @@ static uint32_t tpm_sendrecv_command(const void *command, response = response_buffer; response_length = sizeof(response_buffer); } +#ifdef CONFIG_DM_TPM + struct udevice *dev; + int ret; + + ret = uclass_first_device(UCLASS_TPM, &dev); + if (ret) + return ret; + err = tpm_xfer(dev, command, tpm_command_size(command), + response, &response_length); +#else err = tis_sendrecv(command, tpm_command_size(command), response, &response_length); - if (err) +#endif + if (err < 0) return TPM_LIB_ERROR; if (size_ptr) *size_ptr = response_length; @@ -250,15 +262,24 @@ static uint32_t tpm_sendrecv_command(const void *command, return tpm_return_code(response); } -uint32_t tpm_init(void) +int tpm_init(void) { - uint32_t err; + int err; + +#ifdef CONFIG_DM_TPM + struct udevice *dev; + err = uclass_first_device(UCLASS_TPM, &dev); + if (err) + return err; + return tpm_open(dev); +#else err = tis_init(); if (err) return err; return tis_open(); +#endif } uint32_t tpm_startup(enum tpm_startup_type mode)