| From ff38d6a9b2a5b061a3a3dc1dea88224177a6f7a9 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 19 Oct 2020 20:56:27 +0200 |
| Subject: platform/x86: acer-wmi: Add ACER_CAP_SET_FUNCTION_MODE capability |
| flag |
| |
| From: Hans de Goede <hdegoede@redhat.com> |
| |
| [ Upstream commit 82cb8a5c395ea5be20e0fe31a8fe84380a502ca5 ] |
| |
| Not all devices supporting WMID_GUID3 support the wmid3_set_function_mode() |
| call, leading to errors like these: |
| |
| [ 60.138358] acer_wmi: Enabling RF Button failed: 0x1 - 0xff |
| [ 60.140036] acer_wmi: Enabling Launch Manager failed: 0x1 - 0xff |
| |
| Add an ACER_CAP_SET_FUNCTION_MODE capability flag, so that these calls |
| can be disabled through the new force_caps mechanism. |
| |
| Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> |
| Signed-off-by: Hans de Goede <hdegoede@redhat.com> |
| Link: https://lore.kernel.org/r/20201019185628.264473-5-hdegoede@redhat.com |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/platform/x86/acer-wmi.c | 7 ++++++- |
| 1 file changed, 6 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c |
| index 12aa174a865f..729d0277e100 100644 |
| --- a/drivers/platform/x86/acer-wmi.c |
| +++ b/drivers/platform/x86/acer-wmi.c |
| @@ -223,6 +223,7 @@ struct hotkey_function_type_aa { |
| #define ACER_CAP_BLUETOOTH BIT(2) |
| #define ACER_CAP_BRIGHTNESS BIT(3) |
| #define ACER_CAP_THREEG BIT(4) |
| +#define ACER_CAP_SET_FUNCTION_MODE BIT(5) |
| |
| /* |
| * Interface type flags |
| @@ -2263,10 +2264,14 @@ static int __init acer_wmi_init(void) |
| if (acpi_video_get_backlight_type() != acpi_backlight_vendor) |
| interface->capability &= ~ACER_CAP_BRIGHTNESS; |
| |
| + if (wmi_has_guid(WMID_GUID3)) |
| + interface->capability |= ACER_CAP_SET_FUNCTION_MODE; |
| + |
| if (force_caps != -1) |
| interface->capability = force_caps; |
| |
| - if (wmi_has_guid(WMID_GUID3)) { |
| + if (wmi_has_guid(WMID_GUID3) && |
| + (interface->capability & ACER_CAP_SET_FUNCTION_MODE)) { |
| if (ACPI_FAILURE(acer_wmi_enable_rf_button())) |
| pr_warn("Cannot enable RF Button Driver\n"); |
| |
| -- |
| 2.30.1 |
| |