diff mbox series

[v2,14/24] platform/x86: ideapad-laptop: check for Fn-lock support in HALS

Message ID 20210113182016.166049-15-pobrn@protonmail.com (mailing list archive)
State Changes Requested, archived
Headers show
Series platform/x86: ideapad-laptop: cleanup, keyboard backlight and "always on USB charging" control support, reenable touchpad control | expand

Commit Message

Barnabás Pőcze Jan. 13, 2021, 6:22 p.m. UTC
Bit 9 in the return value of the HALS ACPI method is set if
Fn-lock is supported. Change ideapad_check_features() to check it.

Signed-off-by: Barnabás Pőcze <pobrn@protonmail.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>

Comments

Andy Shevchenko Jan. 16, 2021, 8 p.m. UTC | #1
On Wed, Jan 13, 2021 at 8:23 PM Barnabás Pőcze <pobrn@protonmail.com> wrote:
>
> Bit 9 in the return value of the HALS ACPI method is set if
> Fn-lock is supported. Change ideapad_check_features() to check it.

...

> +               if (!eval_hals(handle, &val))
> +                       if (test_bit(HALS_FNLOCK_SUPPORT_BIT, &val))
> +                               priv->features.fn_lock = true;

if (a) { if (b) { ... } } == if (a && b) { ... }
diff mbox series

Patch

diff --git a/drivers/platform/x86/ideapad-laptop.c b/drivers/platform/x86/ideapad-laptop.c
index 15d070b503dc..640a00cc3944 100644
--- a/drivers/platform/x86/ideapad-laptop.c
+++ b/drivers/platform/x86/ideapad-laptop.c
@@ -56,7 +56,9 @@  enum {
 };
 
 enum {
-	HALS_FNLOCK_STATE_BIT = 10,
+	HALS_FNLOCK_SUPPORT_BIT  = 9,
+	HALS_FNLOCK_STATE_BIT    = 10,
+	HALS_HOTKEYS_PRIMARY_BIT = 11,
 };
 
 enum {
@@ -1023,8 +1025,11 @@  static void ideapad_check_features(struct ideapad_private *priv)
 	if (acpi_has_method(handle, "GBMD") && acpi_has_method(handle, "SBMC"))
 		priv->features.conservation_mode = true;
 
-	if (acpi_has_method(handle, "HALS") && acpi_has_method(handle, "SALS"))
-		priv->features.fn_lock = true;
+	if (acpi_has_method(handle, "HALS") && acpi_has_method(handle, "SALS")) {
+		if (!eval_hals(handle, &val))
+			if (test_bit(HALS_FNLOCK_SUPPORT_BIT, &val))
+				priv->features.fn_lock = true;
+	}
 }
 
 static int ideapad_acpi_add(struct platform_device *pdev)