2023-07-28 19:59:40

by Mario Limonciello

[permalink] [raw]
Subject: [PATCH] ACPI: resource: Add a quirk for Lenovo Yoga 7 14ARB7

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



2023-07-28 20:51:28

by Mario Limonciello

[permalink] [raw]
Subject: Re: [PATCH] ACPI: resource: Add a quirk for Lenovo Yoga 7 14ARB7



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.

2023-07-28 21:48:17

by August Wikerfors

[permalink] [raw]
Subject: Re: [PATCH] ACPI: resource: Add a quirk for Lenovo Yoga 7 14ARB7

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