Merge tag 'tpm-030822' of https://source.denx.de/u-boot/custodians/u-boot-tpm
[platform/kernel/u-boot.git] / include / tpm-common.h
index f9c2ca2..a28629e 100644 (file)
@@ -7,6 +7,10 @@
 #ifndef __TPM_COMMON_H
 #define __TPM_COMMON_H
 
+#include <command.h>
+
+struct udevice;
+
 enum tpm_duration {
        TPM_SHORT = 0,
        TPM_MEDIUM = 1,
@@ -51,6 +55,8 @@ enum tpm_version {
  * @buf:               Buffer used during the exchanges with the chip
  * @pcr_count:         Number of PCR per bank
  * @pcr_select_min:    Minimum size in bytes of the pcrSelect array
+ * @plat_hier_disabled:        Platform hierarchy has been disabled (TPM is locked
+ *                     down until next reboot)
  */
 struct tpm_chip_priv {
        enum tpm_version version;
@@ -62,6 +68,7 @@ struct tpm_chip_priv {
        /* TPM v2 specific data */
        uint pcr_count;
        uint pcr_select_min;
+       bool plat_hier_disabled;
 };
 
 /**
@@ -173,8 +180,8 @@ 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;                                         \
@@ -213,7 +220,7 @@ 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
+ * Return: 0 on success, -ve on failure
  */
 u32 tpm_clear_and_reenable(struct udevice *dev);
 
@@ -223,7 +230,7 @@ u32 tpm_clear_and_reenable(struct udevice *dev);
  * @dev:       Device to check
  * @buf:       Buffer to put the string
  * @size:      Maximum size of buffer
- * @return length of string, or -ENOSPC it no space
+ * Return: length of string, or -ENOSPC it no space
  */
 int tpm_get_desc(struct udevice *dev, char *buf, int size);
 
@@ -256,27 +263,27 @@ 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.
+ * Return: 0 on success, non-0 on error.
  */
 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;
 }
@@ -289,8 +296,11 @@ static inline cmd_tbl_t *get_tpm2_commands(unsigned int *size)
  * it supports.
  *
  * @dev: TPM device
- * @return version number (TPM_V1 or TPMV2)
+ * 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 */