Re: [PATCH] Allow the FnLock LED to change state

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

 



Hi,

On 3/15/21 8:58 PM, Esteve Varela Colominas wrote:
> 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>

Thank you for your patch, I've applied this patch to my review-hans 
branch:
https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=review-hans

And I'll also add it to the fixes branch so that it gets included in
one of the future 5.12-rc releases.

Note it will show up in my review-hans branch once I've pushed my
local branch there, which might take a while.

Once I've run some tests on this branch the patches there will be
added to the platform-drivers-x86/for-next branch and eventually
will be included in the pdx86 pull-request to Linus for the next
merge-window.

Regards,

Hans


> ---
>  drivers/platform/x86/thinkpad_acpi.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
> index c40470637..09362dd74 100644
> --- a/drivers/platform/x86/thinkpad_acpi.c
> +++ b/drivers/platform/x86/thinkpad_acpi.c
> @@ -4079,13 +4079,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();
> 




[Index of Archives]     [Linux Kernel Development]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux