• Michał Kępień's avatar
    platform/x86: fujitsu-laptop: sync brightness in set_lcd_level() · bd079a2c
    Michał Kępień authored
    When using brightness keys and backlight device's sysfs interface
    alternately, an incorrect input event might be generated for a
    brightness key press.  Consider the following sequence of events:
    
     1. Set backlight brightness to 6 using brightness keys.
     2. Write 4 to /sys/class/backlight/fujitsu-laptop/brightness.
     3. Press the "brightness up" key.
    
    The input event generated in this scenario would be KEY_BRIGHTNESSDOWN,
    because before step 3 brightness_level would still be at 6.  As the new
    brightness level is established using GBLL, it would evaluate to 5
    (SBLL/SBL2 sets it to 4 in step 2 and pressing the "brightness up" key
    increases it by 1).  This in turn would cause acpi_fujitsu_bl_notify()
    to observe a 6 -> 5 change, i.e. a decrease in brightness, while screen
    brightness would in fact be increased.
    
    Fix this by updating brightness_level in set_lcd_level.
    Signed-off-by: default avatarMichał Kępień <kernel@kempniu.pl>
    Reviewed-by: default avatarJonathan Woithe <jwoithe@just42.net>
    Signed-off-by: default avatarDarren Hart (VMware) <dvhart@infradead.org>
    bd079a2c
fujitsu-laptop.c 30.4 KB