Patch "platform/x86: thinkpad_acpi: Allow the FnLock LED to change state" has been added to the 4.14-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    platform/x86: thinkpad_acpi: Allow the FnLock LED to change state

to the 4.14-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     platform-x86-thinkpad_acpi-allow-the-fnlock-led-to-c.patch
and it can be found in the queue-4.14 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 6f165511a59dbab1cbb46bb2d236904930774368
Author: Esteve Varela Colominas <esteve.varela@xxxxxxxxx>
Date:   Mon Mar 15 20:58:24 2021 +0100

    platform/x86: thinkpad_acpi: Allow the FnLock LED to change state
    
    [ Upstream commit 3d677f12ea3a2097a16ded570623567403dea959 ]
    
    On many recent ThinkPad laptops, there's a new LED next to the ESC key,
    that indicates the FnLock status.
    When the Fn+ESC combo is pressed, FnLock is toggled, which causes the
    Media Key functionality to change, making it so that the media keys
    either perform their media key function, or function as an F-key by
    default. The Fn key can be used the access the alternate function at any
    time.
    
    With the current linux kernel, the LED doens't change state if you press
    the Fn+ESC key combo. However, the media key functionality *does*
    change. This is annoying, since the LED will stay on if it was on during
    bootup, and it makes it hard to keep track what the current state of the
    FnLock is.
    
    This patch calls an ACPI function, that gets the current media key
    state, when the Fn+ESC key combo is pressed. Through testing it was
    discovered that this function causes the LED to update correctly to
    reflect the current state when this function is called.
    
    The relevant ACPI calls are the following:
    \_SB_.PCI0.LPC0.EC0_.HKEY.GMKS: Get media key state, returns 0x603 if the FnLock mode is enabled, and 0x602 if it's disabled.
    \_SB_.PCI0.LPC0.EC0_.HKEY.SMKS: Set media key state, sending a 1 will enable FnLock mode, and a 0 will disable it.
    
    Relevant discussion:
    https://bugzilla.kernel.org/show_bug.cgi?id=207841
    https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1881015
    
    Signed-off-by: Esteve Varela Colominas <esteve.varela@xxxxxxxxx>
    Link: https://lore.kernel.org/r/20210315195823.23212-1-esteve.varela@xxxxxxxxx
    Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
index ffaaccded34e..30bfd51c0e58 100644
--- a/drivers/platform/x86/thinkpad_acpi.c
+++ b/drivers/platform/x86/thinkpad_acpi.c
@@ -3964,13 +3964,19 @@ static bool hotkey_notify_6xxx(const u32 hkey,
 
 	case TP_HKEY_EV_KEY_NUMLOCK:
 	case TP_HKEY_EV_KEY_FN:
-	case TP_HKEY_EV_KEY_FN_ESC:
 		/* key press events, we just ignore them as long as the EC
 		 * is still reporting them in the normal keyboard stream */
 		*send_acpi_ev = false;
 		*ignore_acpi_ev = true;
 		return true;
 
+	case TP_HKEY_EV_KEY_FN_ESC:
+		/* Get the media key status to foce the status LED to update */
+		acpi_evalf(hkey_handle, NULL, "GMKS", "v");
+		*send_acpi_ev = false;
+		*ignore_acpi_ev = true;
+		return true;
+
 	case TP_HKEY_EV_TABLET_CHANGED:
 		tpacpi_input_send_tabletsw();
 		hotkey_tablet_mode_notify_change();



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux