diff mbox series

ACPI: skip IRQ1 override on Lenovo ThinkBook 14G4+ ARA

Message ID 20220618133712.8788-1-gch981213@gmail.com
State Superseded
Headers show
Series ACPI: skip IRQ1 override on Lenovo ThinkBook 14G4+ ARA | expand

Commit Message

Chuanhong Guo June 18, 2022, 1:37 p.m. UTC
The IRQ is described as (Edge, ActiveLow, Shared, ) in ACPI DSDT and
it's correct. The override makes the keyboard interrupt polarity
inverted, resulting in non-functional keyboard.
Add an entry for skipping the override.

Cc: <stable@vger.kernel.org>
Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
---
It seems that this issue present on several other Ryzen 6000 laptops.
The dmi table is named genericly because I'm expecting this list to
get filled with laptops from other vendors.

 drivers/acpi/resource.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

Comments

Chuanhong Guo June 19, 2022, 5:14 a.m. UTC | #1
Hi!

On Sat, Jun 18, 2022 at 9:37 PM Chuanhong Guo <gch981213@gmail.com> wrote:
> +static const struct dmi_system_id irq1_edge_low_shared[] = {
> +       {
> +               .ident = "Lenovo ThinkBook 14 G4+ ARA",
> +               .matches = {
> +                       DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
> +                       DMI_MATCH(DMI_BOARD_NAME, "LNVNB161216"),

This is a terrible match. Lenovo uses this board name everywhere.
I should match DMI_PRODUCT_NAME = 21D0 instead.
I'll send a v2 later.
diff mbox series

Patch

diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c
index c2d494784425..3f6a290a1060 100644
--- a/drivers/acpi/resource.c
+++ b/drivers/acpi/resource.c
@@ -399,6 +399,17 @@  static const struct dmi_system_id medion_laptop[] = {
 	{ }
 };
 
+static const struct dmi_system_id irq1_edge_low_shared[] = {
+	{
+		.ident = "Lenovo ThinkBook 14 G4+ ARA",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+			DMI_MATCH(DMI_BOARD_NAME, "LNVNB161216"),
+		},
+	},
+	{ }
+};
+
 struct irq_override_cmp {
 	const struct dmi_system_id *system;
 	unsigned char irq;
@@ -409,6 +420,7 @@  struct irq_override_cmp {
 
 static const struct irq_override_cmp skip_override_table[] = {
 	{ medion_laptop, 1, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW, 0 },
+	{ irq1_edge_low_shared, 1, ACPI_EDGE_SENSITIVE, ACPI_ACTIVE_LOW, 1 },
 };
 
 static bool acpi_dev_irq_override(u32 gsi, u8 triggering, u8 polarity,