diff options
| author | Takanori Watanabe <takawata@FreeBSD.org> | 2019-01-25 16:16:10 +0000 |
|---|---|---|
| committer | Takanori Watanabe <takawata@FreeBSD.org> | 2019-01-25 16:16:10 +0000 |
| commit | 877fc2e350994e6af54c97c88062943753712f8e (patch) | |
| tree | 1e807ae9db9fdfe827a2d2a61163c2d989f6dde0 /sys/dev/tpm/tpm_tis.c | |
| parent | 77102fd6a23e10d56bb179092b01334a258e2b50 (diff) | |
Notes
Diffstat (limited to 'sys/dev/tpm/tpm_tis.c')
| -rw-r--r-- | sys/dev/tpm/tpm_tis.c | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/sys/dev/tpm/tpm_tis.c b/sys/dev/tpm/tpm_tis.c index 93f1ae3f7b387..170fdd3967fff 100644 --- a/sys/dev/tpm/tpm_tis.c +++ b/sys/dev/tpm/tpm_tis.c @@ -100,26 +100,21 @@ char *tpmtis_ids[] = {"MSFT0101", NULL}; static int tpmtis_acpi_probe(device_t dev) { - struct resource *res; - int err, rid = 0; - uint32_t caps; + int err; + ACPI_TABLE_TPM23 *tbl; + ACPI_STATUS status; err = ACPI_ID_PROBE(device_get_parent(dev), dev, tpmtis_ids, NULL); if (err > 0) return (err); - - /* Check if device is in TPM 2.0 TIS mode */ - res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE); - if (res == NULL) - return (ENXIO); - - caps = bus_read_4(res, TPM_INTF_CAPS); - bus_release_resource(dev, SYS_RES_MEMORY, rid, res); - if ((caps & TPM_INTF_CAPS_VERSION) != TPM_INTF_CAPS_TPM20) - return (ENXIO); + /*Find TPM2 Header*/ + status = AcpiGetTable(ACPI_SIG_TPM2, 1, (ACPI_TABLE_HEADER **) &tbl); + if(ACPI_FAILURE(status) || + tbl->StartMethod != TPM2_START_METHOD_TIS) + err = ENXIO; device_set_desc(dev, "Trusted Platform Module 2.0, FIFO mode"); - return (BUS_PROBE_DEFAULT); + return (err); } static int |
