Module Name:    src
Committed By:   thorpej
Date:           Sat Jan 16 01:23:04 UTC 2021

Modified Files:
        src/sys/dev/acpi: tpm_acpi.c

Log Message:
Match PNP0C31 as a TPM 1.2 device.  Works on my ThinkPad X260, and
eliminates the last of the devices that attach to "isa".


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/sys/dev/acpi/tpm_acpi.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/acpi/tpm_acpi.c
diff -u src/sys/dev/acpi/tpm_acpi.c:1.11 src/sys/dev/acpi/tpm_acpi.c:1.12
--- src/sys/dev/acpi/tpm_acpi.c:1.11	Wed Oct  9 14:03:57 2019
+++ src/sys/dev/acpi/tpm_acpi.c	Sat Jan 16 01:23:04 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: tpm_acpi.c,v 1.11 2019/10/09 14:03:57 maxv Exp $ */
+/* $NetBSD: tpm_acpi.c,v 1.12 2021/01/16 01:23:04 thorpej Exp $ */
 
 /*
  * Copyright (c) 2012, 2019 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tpm_acpi.c,v 1.11 2019/10/09 14:03:57 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tpm_acpi.c,v 1.12 2021/01/16 01:23:04 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -56,6 +56,14 @@ CFATTACH_DECL_NEW(tpm_acpi, sizeof(struc
     tpm_acpi_attach, NULL, NULL);
 
 /*
+ * Supported TPM 1.2 devices.
+ */
+static const char * const tpm_1_2_acpi_ids[] = {
+	"PNP0C31",
+	NULL
+};
+
+/*
  * Supported TPM 2.0 devices.
  */
 static const char * const tpm2_acpi_ids[] = {
@@ -77,6 +85,11 @@ tpm_acpi_match(device_t parent, cfdata_t
 	if (tpm_cd.cd_devs && tpm_cd.cd_devs[0])
 		return 0;
 
+	if (acpi_match_hid(aa->aa_node->ad_devinfo, tpm_1_2_acpi_ids)) {
+		/* XXX assume TPM 1.2 devices are memory-mapped. */
+		return 1;
+	}
+
 	if (!acpi_match_hid(aa->aa_node->ad_devinfo, tpm2_acpi_ids))
 		return 0;
 
@@ -122,7 +135,11 @@ tpm_acpi_attach(device_t parent, device_
 	size = mem->ar_length;
 
 	sc->sc_dev = self;
-	sc->sc_ver = TPM_2_0;
+	if (acpi_match_hid(aa->aa_node->ad_devinfo, tpm_1_2_acpi_ids)) {
+		sc->sc_ver = TPM_1_2;
+	} else {
+		sc->sc_ver = TPM_2_0;
+	}
 	mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_NONE);
 	sc->sc_busy = false;
 	sc->sc_intf = &tpm_intf_tis12;

Reply via email to