diff mbox series

[v2] ACPI: resource: Add a quirk for Lenovo Yoga 7 14ARB7

Message ID 20230728191408.18141-1-mario.limonciello@amd.com
State New
Headers show
Series [v2] ACPI: resource: Add a quirk for Lenovo Yoga 7 14ARB7 | expand

Commit Message

Mario Limonciello July 28, 2023, 7:14 p.m. UTC
Lenovo Yoga 7 needs to have keyboard interrupt signaling polarity
is incorrect in the MADT and the value from the DSDT should be used.

Reported-by: August Wikerfors <git@augustwikerfors.se>
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=217718
Fixes: a9c4a912b7dc ("ACPI: resource: Remove "Zen" specific match and quirks")
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
---
v1->v2:
 * Level->edge
---
 drivers/acpi/resource.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

Comments

Benjamin Cheng July 31, 2023, 2:22 a.m. UTC | #1
Would it be possible to include a similar quirk for the Lenovo ThinkBook
13s G4 ARB?

a9c4a912b7dc ("ACPI: resource: Remove "Zen" specific match and quirks")
doesn't break the keyboard on this model, but makes it very sluggish and
unresponsive.

Adding the following entry fixes the issue for me:
static const struct dmi_system_id lenovo_laptop[] = {
	{
		.ident = "Lenovo Yoga 7 14ARB7",
		.matches = {
			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
			DMI_MATCH(DMI_PRODUCT_NAME, "82QF"),
		},
	},
			DMI_MATCH(DMI_PRODUCT_NAME, "82QF"),
		},
	},
+	{
+		.ident = "Lenovo ThinkBook 13s G4 ARB",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "21AS"),
+		},
+	},
	{ }
};
diff mbox series

Patch

diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c
index 1dd8d5aebf678..6ff788223f332 100644
--- a/drivers/acpi/resource.c
+++ b/drivers/acpi/resource.c
@@ -481,6 +481,17 @@  static const struct dmi_system_id lg_laptop[] = {
 	{ }
 };
 
+static const struct dmi_system_id lenovo_laptop[] = {
+	{
+		.ident = "Lenovo Yoga 7 14ARB7",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "82QF"),
+		},
+	},
+	{ }
+};
+
 struct irq_override_cmp {
 	const struct dmi_system_id *system;
 	unsigned char irq;
@@ -494,6 +505,7 @@  static const struct irq_override_cmp override_table[] = {
 	{ medion_laptop, 1, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW, 0, false },
 	{ asus_laptop, 1, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW, 0, false },
 	{ lg_laptop, 1, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW, 0, false },
+	{ lenovo_laptop, 1, ACPI_EDGE_SENSITIVE, ACPI_ACTIVE_LOW, 1, false}
 };
 
 static bool acpi_dev_irq_override(u32 gsi, u8 triggering, u8 polarity,