aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/tpm/tpm_tis.c
diff options
context:
space:
mode:
authorTakanori Watanabe <takawata@FreeBSD.org>2019-01-25 16:16:10 +0000
committerTakanori Watanabe <takawata@FreeBSD.org>2019-01-25 16:16:10 +0000
commit877fc2e350994e6af54c97c88062943753712f8e (patch)
tree1e807ae9db9fdfe827a2d2a61163c2d989f6dde0 /sys/dev/tpm/tpm_tis.c
parent77102fd6a23e10d56bb179092b01334a258e2b50 (diff)
Notes
Diffstat (limited to 'sys/dev/tpm/tpm_tis.c')
-rw-r--r--sys/dev/tpm/tpm_tis.c23
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