Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/dev/acpi Match PNP0C31 as a TPM 1.2 device. Works on my...



details:   https://anonhg.NetBSD.org/src/rev/e322f00e7b34
branches:  trunk
changeset: 949752:e322f00e7b34
user:      thorpej <thorpej%NetBSD.org@localhost>
date:      Sat Jan 16 01:23:04 2021 +0000

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

diffstat:

 sys/dev/acpi/tpm_acpi.c |  23 ++++++++++++++++++++---
 1 files changed, 20 insertions(+), 3 deletions(-)

diffs (58 lines):

diff -r cb136aaf2e30 -r e322f00e7b34 sys/dev/acpi/tpm_acpi.c
--- a/sys/dev/acpi/tpm_acpi.c   Sat Jan 16 00:43:03 2021 +0000
+++ b/sys/dev/acpi/tpm_acpi.c   Sat Jan 16 01:23:04 2021 +0000
@@ -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 @@
     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 @@
        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 @@
        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;



Home | Main Index | Thread Index | Old Index