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

Message ID 20230728183921.17230-1-mario.limonciello@amd.com
State New
Headers
Series ACPI: resource: Add a quirk for Lenovo Yoga 7 14ARB7 |

Commit Message

Mario Limonciello July 28, 2023, 6:39 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>
---
 drivers/acpi/resource.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)
  

Comments

Mario Limonciello July 28, 2023, 7:29 p.m. UTC | #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 <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>
>> ---
>>   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.
  

Patch

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,