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 <[email protected]>
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 <[email protected]>
---
drivers/acpi/resource.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c
index 1dd8d5aebf678..1a826419d5837 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_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW, 1, false}
};
static bool acpi_dev_irq_override(u32 gsi, u8 triggering, u8 polarity,
--
2.34.1
On 7/28/2023 2:25 PM, August Wikerfors wrote:
> On 2023-07-28 20:39, Mario Limonciello wrote:
>> 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 <[email protected]>
>> 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 <[email protected]>
>> ---
>> drivers/acpi/resource.c | 12 ++++++++++++
>> 1 file changed, 12 insertions(+)
>>
>> diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c
>> index 1dd8d5aebf678..1a826419d5837 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_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW, 1, false}
> This should have ACPI_EDGE_SENSITIVE, not ACPI_LEVEL_SENSITIVE, see
> https://bugzilla.kernel.org/show_bug.cgi?id=217718#c11
Thanks, sorry about that mistake. I'll resend it.
On 2023-07-28 20:39, Mario Limonciello wrote:
> 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 <[email protected]>
> 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 <[email protected]>
> ---
> drivers/acpi/resource.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c
> index 1dd8d5aebf678..1a826419d5837 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_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW, 1, false}
This should have ACPI_EDGE_SENSITIVE, not ACPI_LEVEL_SENSITIVE, see
https://bugzilla.kernel.org/show_bug.cgi?id=217718#c11