| From 51135a4a413ef6ca904a051718c7f0b4dd62055a Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sat, 7 Nov 2020 14:32:54 +0100 |
| Subject: ACPI: button: Add DMI quirk for Medion Akoya E2228T |
| |
| From: Hans de Goede <hdegoede@redhat.com> |
| |
| [ Upstream commit 7daaa06357bf7f1874b62bb1ea9d66a51d4e567e ] |
| |
| The Medion Akoya E2228T's ACPI _LID implementation is quite broken, |
| it has the same issues as the one from the Medion Akoya E2215T: |
| |
| 1. For notifications it uses an ActiveLow Edge GpioInt, rather then |
| an ActiveBoth one, meaning that the device is only notified when the |
| lid is closed, not when it is opened. |
| |
| 2. Matching with this its _LID method simply always returns 0 (closed) |
| |
| In order for the Linux LID code to work properly with this implementation, |
| the lid_init_state selection needs to be set to ACPI_BUTTON_LID_INIT_OPEN, |
| add a DMI quirk for this. |
| |
| While working on this I also found out that the MD60### part of the model |
| number differs per country/batch while all of the E2215T and E2228T models |
| have this issue, so also remove the " MD60198" part from the E2215T quirk. |
| |
| Signed-off-by: Hans de Goede <hdegoede@redhat.com> |
| Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/acpi/button.c | 13 ++++++++++++- |
| 1 file changed, 12 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/acpi/button.c b/drivers/acpi/button.c |
| index f43f5adc21b61..abf101451c929 100644 |
| --- a/drivers/acpi/button.c |
| +++ b/drivers/acpi/button.c |
| @@ -98,7 +98,18 @@ static const struct dmi_system_id lid_blacklst[] = { |
| */ |
| .matches = { |
| DMI_MATCH(DMI_SYS_VENDOR, "MEDION"), |
| - DMI_MATCH(DMI_PRODUCT_NAME, "E2215T MD60198"), |
| + DMI_MATCH(DMI_PRODUCT_NAME, "E2215T"), |
| + }, |
| + .driver_data = (void *)(long)ACPI_BUTTON_LID_INIT_OPEN, |
| + }, |
| + { |
| + /* |
| + * Medion Akoya E2228T, notification of the LID device only |
| + * happens on close, not on open and _LID always returns closed. |
| + */ |
| + .matches = { |
| + DMI_MATCH(DMI_SYS_VENDOR, "MEDION"), |
| + DMI_MATCH(DMI_PRODUCT_NAME, "E2228T"), |
| }, |
| .driver_data = (void *)(long)ACPI_BUTTON_LID_INIT_OPEN, |
| }, |
| -- |
| 2.27.0 |
| |