X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=include%2Ftpm-common.h;h=e29b10b1766e1cc14c977f7f298def14f354981a;hb=32a8f800a96e8add063a31f6ef80d9ead3fcec04;hp=f8c5569003e8d8aac075232acbd1df838b1d7425;hpb=51f00c1704e505f51a02a3687e4384231ce8ae20;p=oweals%2Fu-boot.git diff --git a/include/tpm-common.h b/include/tpm-common.h index f8c5569003..e29b10b176 100644 --- a/include/tpm-common.h +++ b/include/tpm-common.h @@ -7,6 +7,8 @@ #ifndef __TPM_COMMON_H #define __TPM_COMMON_H +#include + enum tpm_duration { TPM_SHORT = 0, TPM_MEDIUM = 1, @@ -173,12 +175,18 @@ struct tpm_ops { U_BOOT_CMD_MKENT(cmd, 0, 1, do_tpm_ ## cmd, "", "") #define TPM_COMMAND_NO_ARG(cmd) \ -int do_##cmd(cmd_tbl_t *cmdtp, int flag, \ - int argc, char * const argv[]) \ +int do_##cmd(struct cmd_tbl *cmdtp, int flag, \ + int argc, char *const argv[]) \ { \ + struct udevice *dev; \ + int rc; \ + \ + rc = get_tpm(&dev); \ + if (rc) \ + return rc; \ if (argc != 1) \ return CMD_RET_USAGE; \ - return report_return_code(cmd()); \ + return report_return_code(cmd(dev)); \ } /** @@ -187,6 +195,7 @@ int do_##cmd(cmd_tbl_t *cmdtp, int flag, \ * After all commands have been completed the caller is supposed to * call tpm_close(). * + * @dev - TPM device * Returns 0 on success, -ve on failure. */ int tpm_open(struct udevice *dev); @@ -196,9 +205,20 @@ int tpm_open(struct udevice *dev); * * Releasing the locked locality. Returns 0 on success, -ve 1 on * failure (in case lock removal did not succeed). + * + * @dev - TPM device + * Returns 0 on success, -ve on failure. */ int tpm_close(struct udevice *dev); +/** + * tpm_clear_and_reenable() - Force clear the TPM and reenable it + * + * @dev: TPM device + * @return 0 on success, -ve on failure + */ +u32 tpm_clear_and_reenable(struct udevice *dev); + /** * tpm_get_desc() - Get a text description of the TPM * @@ -222,6 +242,7 @@ int tpm_get_desc(struct udevice *dev, char *buf, int size); * Note that the outgoing data is inspected to determine command type * (ordinal) and a timeout is used for that command type. * + * @dev - TPM device * @sendbuf - buffer of the data to send * @send_size size of the data to send * @recvbuf - memory to save the response to @@ -236,30 +257,45 @@ int tpm_xfer(struct udevice *dev, const u8 *sendbuf, size_t send_size, /** * Initialize TPM device. It must be called before any TPM commands. * + * @dev - TPM device * @return 0 on success, non-0 on error. */ -int tpm_init(void); +int tpm_init(struct udevice *dev); /** * Retrieve the array containing all the v1 (resp. v2) commands. * - * @return a cmd_tbl_t array. + * @return a struct cmd_tbl array. */ #if defined(CONFIG_TPM_V1) -cmd_tbl_t *get_tpm1_commands(unsigned int *size); +struct cmd_tbl *get_tpm1_commands(unsigned int *size); #else -static inline cmd_tbl_t *get_tpm1_commands(unsigned int *size) +static inline struct cmd_tbl *get_tpm1_commands(unsigned int *size) { return NULL; } #endif #if defined(CONFIG_TPM_V2) -cmd_tbl_t *get_tpm2_commands(unsigned int *size); +struct cmd_tbl *get_tpm2_commands(unsigned int *size); #else -static inline cmd_tbl_t *get_tpm2_commands(unsigned int *size) +static inline struct cmd_tbl *get_tpm2_commands(unsigned int *size) { return NULL; } #endif +/** + * tpm_get_version() - Find the version of a TPM + * + * This checks the uclass data for a TPM device and returns the version number + * it supports. + * + * @dev: TPM device + * @return version number (TPM_V1 or TPMV2) + */ +enum tpm_version tpm_get_version(struct udevice *dev); + +/* Iterate on all TPM devices */ +#define for_each_tpm_device(dev) uclass_foreach_dev_probe(UCLASS_TPM, (dev)) + #endif /* __TPM_COMMON_H */