summaryrefslogtreecommitdiffstats
path: root/0001-platform-x86-dell-laptop-Filter-out-spurious-keyboar.patch
diff options
context:
space:
mode:
Diffstat (limited to '0001-platform-x86-dell-laptop-Filter-out-spurious-keyboar.patch')
-rw-r--r--0001-platform-x86-dell-laptop-Filter-out-spurious-keyboar.patch99
1 files changed, 0 insertions, 99 deletions
diff --git a/0001-platform-x86-dell-laptop-Filter-out-spurious-keyboar.patch b/0001-platform-x86-dell-laptop-Filter-out-spurious-keyboar.patch
deleted file mode 100644
index 926487b3d..000000000
--- a/0001-platform-x86-dell-laptop-Filter-out-spurious-keyboar.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From 714fe15daa07e7691c9731c88de71aa57f84b6c2 Mon Sep 17 00:00:00 2001
-From: Hans de Goede <hdegoede@redhat.com>
-Date: Wed, 3 Jan 2018 11:13:54 +0100
-Subject: [PATCH] platform/x86: dell-laptop: Filter out spurious keyboard
- backlight change events
-
-On some Dell XPS models WMI events of type 0x0000 reporting a keycode of
-0xe00c get reported when the brightness of the LCD panel changes.
-
-This leads to us reporting false-positive kbd_led change events to
-userspace which in turn leads to the kbd backlight OSD showing when it
-should not.
-
-We already read the current keyboard backlight brightness value when
-reporting events because the led_classdev_notify_brightness_hw_changed
-API requires this. Compare this value to the last known value and filter
-out duplicate events, fixing this.
-
-Note the fixed issue is esp. a problem on XPS models with an ambient light
-sensor and automatic brightness adjustments turned on, this causes the kbd
-backlight OSD to show all the time there.
-
-BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1514969
-Signed-off-by: Hans de Goede <hdegoede@redhat.com>
----
- drivers/platform/x86/dell-laptop.c | 24 ++++++++++++++++++++++--
- 1 file changed, 22 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/platform/x86/dell-laptop.c b/drivers/platform/x86/dell-laptop.c
-index cd4725e7e0b5..2ef3297a9efc 100644
---- a/drivers/platform/x86/dell-laptop.c
-+++ b/drivers/platform/x86/dell-laptop.c
-@@ -1133,6 +1133,7 @@ static u8 kbd_previous_mode_bit;
-
- static bool kbd_led_present;
- static DEFINE_MUTEX(kbd_led_mutex);
-+static enum led_brightness kbd_led_level;
-
- /*
- * NOTE: there are three ways to set the keyboard backlight level.
-@@ -1947,6 +1948,7 @@ static enum led_brightness kbd_led_level_get(struct led_classdev *led_cdev)
- static int kbd_led_level_set(struct led_classdev *led_cdev,
- enum led_brightness value)
- {
-+ enum led_brightness new_value = value;
- struct kbd_state state;
- struct kbd_state new_state;
- u16 num;
-@@ -1976,6 +1978,9 @@ static int kbd_led_level_set(struct led_classdev *led_cdev,
- }
-
- out:
-+ if (ret == 0)
-+ kbd_led_level = new_value;
-+
- mutex_unlock(&kbd_led_mutex);
- return ret;
- }
-@@ -2003,6 +2008,9 @@ static int __init kbd_led_init(struct device *dev)
- if (kbd_led.max_brightness)
- kbd_led.max_brightness--;
- }
-+
-+ kbd_led_level = kbd_led_level_get(NULL);
-+
- ret = led_classdev_register(dev, &kbd_led);
- if (ret)
- kbd_led_present = false;
-@@ -2027,13 +2035,25 @@ static void kbd_led_exit(void)
- static int dell_laptop_notifier_call(struct notifier_block *nb,
- unsigned long action, void *data)
- {
-+ bool changed = false;
-+ enum led_brightness new_kbd_led_level;
-+
- switch (action) {
- case DELL_LAPTOP_KBD_BACKLIGHT_BRIGHTNESS_CHANGED:
- if (!kbd_led_present)
- break;
-
-- led_classdev_notify_brightness_hw_changed(&kbd_led,
-- kbd_led_level_get(&kbd_led));
-+ mutex_lock(&kbd_led_mutex);
-+ new_kbd_led_level = kbd_led_level_get(&kbd_led);
-+ if (kbd_led_level != new_kbd_led_level) {
-+ kbd_led_level = new_kbd_led_level;
-+ changed = true;
-+ }
-+ mutex_unlock(&kbd_led_mutex);
-+
-+ if (changed)
-+ led_classdev_notify_brightness_hw_changed(&kbd_led,
-+ kbd_led_level);
- break;
- }
-
---
-2.14.3
-