2022-06-19 13:27:58

by Chuanhong Guo

[permalink] [raw]
Subject: [PATCH v2 0/2] Skip IRQ1 override for two laptops

The IRQ1 of these two laptops with Ryzen 6000 and Insyde UEFI
are active low, as described in ACPI DSDT. The kernel override
made their keyboard non-functional.
This patchset skips override for them.

Changes since v1:
Match DMI DMI_PRODUCT_NAME for ThinkBook because the board name
is used for other completely different Lenovo laptops.
Add a patch for RedmiBook

Chuanhong Guo (1):
ACPI: skip IRQ1 override on Lenovo ThinkBook 14G4+ ARA

Tighe Donnelly (1):
ACPI: skip IRQ1 override on Redmi Book Pro 15 2022

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

--
2.36.1


2022-06-19 13:29:45

by Chuanhong Guo

[permalink] [raw]
Subject: [PATCH v2 2/2] ACPI: skip IRQ1 override on Redmi Book Pro 15 2022

From: Tighe Donnelly <[email protected]>

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: <[email protected]>
Signed-off-by: Tighe Donnelly <[email protected]>
Signed-off-by: Chuanhong Guo <[email protected]>
---
Change since v1: new patch

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

diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c
index b69c229b23dd..d9d8d546f340 100644
--- a/drivers/acpi/resource.c
+++ b/drivers/acpi/resource.c
@@ -407,6 +407,13 @@ static const struct dmi_system_id irq1_edge_low_shared[] = {
DMI_MATCH(DMI_PRODUCT_NAME, "21D0"),
},
},
+ {
+ .ident = "Redmi Book Pro 15 2022",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "TIMI"),
+ DMI_MATCH(DMI_BOARD_NAME, "TM2113"),
+ },
+ },
{ }
};

--
2.36.1

2022-06-19 13:38:20

by Chuanhong Guo

[permalink] [raw]
Subject: [PATCH v2 1/2] ACPI: skip IRQ1 override on Lenovo ThinkBook 14G4+ ARA

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: <[email protected]>
Signed-off-by: Chuanhong Guo <[email protected]>
---
Change since v1:
Match DMI DMI_PRODUCT_NAME for ThinkBook because the board name
is used for other completely different Lenovo laptops.

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

diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c
index c2d494784425..b69c229b23dd 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_PRODUCT_NAME, "21D0"),
+ },
+ },
+ { }
+};
+
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,
--
2.36.1