tpm: lookup the the TPM interface instead of TIS device

This will allow to introduce new devices implementing TPM.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
This commit is contained in:
Marc-André Lureau 2017-11-06 19:39:15 +01:00 committed by Stefan Berger
parent d36e7db1fb
commit 3dfd5a2a50
2 changed files with 16 additions and 11 deletions

View File

@ -208,7 +208,7 @@ static void acpi_get_misc_info(AcpiMiscInfo *info)
}
info->has_hpet = hpet_find();
info->tpm_version = tpm_get_version();
info->tpm_version = tpm_get_version(tpm_find());
info->pvpanic_port = pvpanic_port();
info->applesmc_io_base = applesmc_port();
}

View File

@ -19,7 +19,7 @@ int tpm_config_parse(QemuOptsList *opts_list, const char *optarg);
int tpm_init(void);
void tpm_cleanup(void);
typedef enum TPMVersion {
typedef enum TPMVersion {
TPM_VERSION_UNSPEC = 0,
TPM_VERSION_1_2 = 1,
TPM_VERSION_2_0 = 2,
@ -44,20 +44,25 @@ typedef struct TPMIfClass {
void (*request_completed)(TPMIf *obj);
} TPMIfClass;
TPMVersion tpm_tis_get_tpm_version(Object *obj);
#define TYPE_TPM_TIS "tpm-tis"
static inline TPMVersion tpm_get_version(void)
/* returns NULL unless there is exactly one TPM device */
static inline TPMIf *tpm_find(void)
{
#ifdef CONFIG_TPM
Object *obj = object_resolve_path_type("", TYPE_TPM_TIS, NULL);
Object *obj = object_resolve_path_type("", TYPE_TPM_IF, NULL);
if (obj) {
return tpm_tis_get_tpm_version(obj);
return TPM_IF(obj);
}
TPMVersion tpm_tis_get_tpm_version(Object *obj);
static inline TPMVersion tpm_get_version(TPMIf *ti)
{
if (!ti) {
return TPM_VERSION_UNSPEC;
}
#endif
return TPM_VERSION_UNSPEC;
return tpm_tis_get_tpm_version(OBJECT(ti));
}
#endif /* QEMU_TPM_H */