From f70575805708cabdedea7498aaa3f710fde4d920 Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Wed, 31 Jan 2024 03:29:01 +0000 Subject: [PATCH] add lvds1024*800 --- kernel/drivers/char/tpm/tpm_tis.c | 69 ++++++++++++++++------------------ 1 files changed, 32 insertions(+), 37 deletions(-) diff --git a/kernel/drivers/char/tpm/tpm_tis.c b/kernel/drivers/char/tpm/tpm_tis.c index 5ecca65..3e1bb28 100644 --- a/kernel/drivers/char/tpm/tpm_tis.c +++ b/kernel/drivers/char/tpm/tpm_tis.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0-only /* * Copyright (C) 2005, 2006 IBM Corporation * Copyright (C) 2014, 2015 Intel Corporation @@ -13,11 +14,6 @@ * * This device driver implements the TPM interface as defined in * the TCG TPM Interface Spec version 1.2, revision 1.0. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation, version 2 of the - * License. */ #include <linux/init.h> #include <linux/module.h> @@ -54,31 +50,6 @@ return container_of(data, struct tpm_tis_tcg_phy, priv); } -#ifdef CONFIG_PREEMPT_RT_FULL -/* - * Flushes previous write operations to chip so that a subsequent - * ioread*()s won't stall a cpu. - */ -static inline void tpm_tis_flush(void __iomem *iobase) -{ - ioread8(iobase + TPM_ACCESS(0)); -} -#else -#define tpm_tis_flush(iobase) do { } while (0) -#endif - -static inline void tpm_tis_iowrite8(u8 b, void __iomem *iobase, u32 addr) -{ - iowrite8(b, iobase + addr); - tpm_tis_flush(iobase); -} - -static inline void tpm_tis_iowrite32(u32 b, void __iomem *iobase, u32 addr) -{ - iowrite32(b, iobase + addr); - tpm_tis_flush(iobase); -} - static int interrupts = -1; module_param(interrupts, int, 0444); MODULE_PARM_DESC(interrupts, "Enable interrupts"); @@ -110,6 +81,22 @@ .matches = { DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T490s"), + }, + }, + { + .callback = tpm_tis_disable_irq, + .ident = "ThinkStation P360 Tiny", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkStation P360 Tiny"), + }, + }, + { + .callback = tpm_tis_disable_irq, + .ident = "ThinkPad L490", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad L490"), }, }, {} @@ -154,6 +141,7 @@ const struct acpi_device_id *aid = acpi_match_device(tpm_acpi_tbl, dev); struct acpi_table_tpm2 *tbl; acpi_status st; + int ret = 0; if (!aid || aid->driver_data != DEVICE_IS_TPM2) return 0; @@ -161,8 +149,7 @@ /* If the ACPI TPM2 signature is matched then a global ACPI_SIG_TPM2 * table is mandatory */ - st = - acpi_get_table(ACPI_SIG_TPM2, 1, (struct acpi_table_header **)&tbl); + st = acpi_get_table(ACPI_SIG_TPM2, 1, (struct acpi_table_header **)&tbl); if (ACPI_FAILURE(st) || tbl->header.length < sizeof(*tbl)) { dev_err(dev, FW_BUG "failed to get TPM2 ACPI table\n"); return -EINVAL; @@ -170,9 +157,10 @@ /* The tpm2_crb driver handles this device */ if (tbl->start_method != ACPI_TPM2_MEMORY_MAPPED) - return -ENODEV; + ret = -ENODEV; - return 0; + acpi_put_table((struct acpi_table_header *)tbl); + return ret; } #else static int check_acpi_tpm2(struct device *dev) @@ -198,7 +186,7 @@ struct tpm_tis_tcg_phy *phy = to_tpm_tis_tcg_phy(data); while (len--) - tpm_tis_iowrite8(*value++, phy->iobase, addr); + iowrite8(*value++, phy->iobase + addr); return 0; } @@ -225,7 +213,7 @@ { struct tpm_tis_tcg_phy *phy = to_tpm_tis_tcg_phy(data); - tpm_tis_iowrite32(value, phy->iobase, addr); + iowrite32(value, phy->iobase + addr); return 0; } @@ -289,6 +277,13 @@ return tpm_tis_init(&pnp_dev->dev, &tpm_info); } +/* + * There is a known bug caused by 93e1b7d42e1e ("[PATCH] tpm: add HID module + * parameter"). This commit added IFX0102 device ID, which is also used by + * tpm_infineon but ignored to add quirks to probe which driver ought to be + * used. + */ + static struct pnp_device_id tpm_pnp_tbl[] = { {"PNP0C31", 0}, /* TPM */ {"ATM1200", 0}, /* Atmel */ @@ -340,7 +335,7 @@ } tpm_info.res = *res; - tpm_info.irq = platform_get_irq(pdev, 0); + tpm_info.irq = platform_get_irq_optional(pdev, 0); if (tpm_info.irq <= 0) { if (pdev != force_pdev) tpm_info.irq = -1; -- Gitblit v1.6.2