]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
platform/x86: panasonic-laptop: don't report duplicate brightness key-presses
authorHans de Goede <hdegoede@redhat.com>
Fri, 24 Jun 2022 11:23:38 +0000 (13:23 +0200)
committerStefan Bader <stefan.bader@canonical.com>
Fri, 26 Aug 2022 08:54:26 +0000 (10:54 +0200)
BugLink: https://bugs.launchpad.net/bugs/1986728
[ Upstream commit 1f2c9de83a50447a2d7166f6273ab0c0e97cd68e ]

The brightness key-presses might also get reported by the ACPI video bus,
check for this and in this case don't report the presses to avoid reporting
2 presses for a single key-press.

Fixes: ed83c9171829 ("platform/x86: panasonic-laptop: Resolve hotkey double trigger bug")
Reported-and-tested-by: Stefan Seyfried <seife+kernel@b1-systems.com>
Reported-and-tested-by: Kenneth Chan <kenneth.t.chan@gmail.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20220624112340.10130-6-hdegoede@redhat.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
drivers/platform/x86/Kconfig
drivers/platform/x86/panasonic-laptop.c

index f915cf67aa26b0106d71186d0562fabbc783d876..697903db61651dff2cb98a966421b9a660cd3514 100644 (file)
@@ -900,6 +900,7 @@ config PANASONIC_LAPTOP
        tristate "Panasonic Laptop Extras"
        depends on INPUT && ACPI
        depends on BACKLIGHT_CLASS_DEVICE
+       depends on ACPI_VIDEO=n || ACPI_VIDEO
        select INPUT_SPARSEKMAP
        help
          This driver adds support for access to backlight control and hotkeys
index cd3c23593eee94188a865484a50a74aabffae3da..65ca863ffb9f7b5746907388c3181847e8408d36 100644 (file)
 #include <linux/slab.h>
 #include <linux/types.h>
 #include <linux/uaccess.h>
+#include <acpi/video.h>
 
 MODULE_AUTHOR("Hiroshi Miura <miura@da-cha.org>");
 MODULE_AUTHOR("David Bronaugh <dbronaugh@linuxboxen.org>");
@@ -783,6 +784,13 @@ static void acpi_pcc_generate_keyinput(struct pcc_acpi *pcc)
                                        key, 0x80, false);
        }
 
+       /*
+        * Don't report brightness key-presses if they are also reported
+        * by the ACPI video bus.
+        */
+       if ((key == 1 || key == 2) && acpi_video_handles_brightness_key_presses())
+               return;
+
        if (!sparse_keymap_report_event(hotk_input_dev, key, updown, false))
                pr_err("Unknown hotkey event: 0x%04llx\n", result);
 }