• Hans de Goede's avatar
    platform/x86: asus-wmi: Only map brightness codes when using asus-wmi backlight control · a5b92be2
    Hans de Goede authored
    Older Asus laptops change the backlight level themselves and then send
    WMI events with different codes for different backlight levels.
    
    The asus-wmi.c code maps the entire range of codes reported on
    brightness down keypresses to an internal ASUS_WMI_BRN_DOWN code:
    
    define NOTIFY_BRNUP_MIN                0x11
    define NOTIFY_BRNUP_MAX                0x1f
    define NOTIFY_BRNDOWN_MIN              0x20
    define NOTIFY_BRNDOWN_MAX              0x2e
    
            if (code >= NOTIFY_BRNUP_MIN && code <= NOTIFY_BRNUP_MAX)
                    code = ASUS_WMI_BRN_UP;
            else if (code >= NOTIFY_BRNDOWN_MIN && code <= NOTIFY_BRNDOWN_MAX)
                    code = ASUS_WMI_BRN_DOWN;
    
    This mapping is causing issues on new laptop models which actually
    send 0x2b events for printscreen presses and 0x2c events for
    capslock presses, which get translated into spurious brightness-down
    presses.
    
    This mapping is really only necessary when asus-wmi has registered
    a backlight-device for backlight control. In this case the mapping
    was used to decide to filter out the keypresss since in this case
    the firmware has already modified the brightness itself and instead
    of reporting a keypress asus-wmi will just report the new brightness
    value to userspace.
    
    OTOH when the firmware does not adjust the brightness itself then
    it seems to always report 0x2e for brightness-down presses and
    0x2f for brightness up presses independent of the actual brightness
    level. So in this case the mapping of the code is not necessary
    and this translation actually leads to spurious brightness-down
    presses being send to userspace when pressing printscreen or capslock.
    
    Modify asus_wmi_handle_event_code() to only do the mapping
    when using asus-wmi backlight control to fix the spurious
    brightness-down presses.
    Reported-by: default avatarJames John <me@donjajo.com>
    Closes: https://lore.kernel.org/platform-driver-x86/a2c441fe-457e-44cf-a146-0ecd86b037cf@donjajo.com/
    Closes: https://bbs.archlinux.org/viewtopic.php?pid=2123716Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20231017090725.38163-3-hdegoede@redhat.com
    a5b92be2
asus-wmi.c 119 KB