linux/drivers/input/serio
Dmitry Torokhov f219050af0 Input: libps2 - do not discard non-ack bytes when controlling LEDs
Upon receiving a PS/2 command the device and controller are supposed to
stop sending normal data (scancodes or movement packets) and instead
immediately start delivering ACK/NAK and command response. Unfortunately
often EC has an output buffer which may contain latched data by the time
the EC receives a command from the host. The kernel used to ignore such
data, but that may cause "stuck" keys if the data dropped happens to be a
break code or a part of a break code. This occasionally happens, for
example, on Chromebooks when the kernel tries to toggle CapsLock LED on
a keyboard while user releases Alt+Search keyboard shortcut.

Fix this by passing the first non-ACK byte to the normal handler for a
handful of PS/2 commands that are expected to be used during normal device
operation (as opposed to probe/configuration time).

Reviewed-by: Raul E Rangel <rrangel@chromium.org>
Link: https://lore.kernel.org/r/20230511185252.386941-8-dmitry.torokhov@gmail.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2023-05-18 11:40:32 -07:00
..
altera_ps2.c Input: altera_ps2 - use devm_platform_get_and_ioremap_resource() 2023-01-29 20:36:31 -08:00
ambakmi.c Input: ambakmi - switch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2023-01-09 20:25:23 -08:00
ams_delta_serio.c Input: move from strlcpy with unused retval to strscpy 2022-08-18 15:44:08 -07:00
apbps2.c Input: apbps2 - use devm_platform_get_and_ioremap_resource() 2023-01-29 20:36:33 -08:00
arc_ps2.c Input: arc_ps2 - use devm_platform_get_and_ioremap_resource() 2023-01-29 20:36:35 -08:00
ct82c710.c input: drop empty comment blocks 2022-09-29 16:25:42 -07:00
gscps2.c Input: move from strlcpy with unused retval to strscpy 2022-08-18 15:44:08 -07:00
hil_mlc.c hil/parisc: Disable HIL driver when it gets stuck 2020-10-22 22:44:35 +02:00
hp_sdc_mlc.c hil/parisc: Disable HIL driver when it gets stuck 2020-10-22 22:44:35 +02:00
hp_sdc.c maccess: rename probe_kernel_{read,write} to copy_{from,to}_kernel_nofault 2020-06-17 10:57:41 -07:00
hyperv-keyboard.c Drivers: hv: Make remove callback of hyperv driver void returned 2023-01-17 13:41:27 +00:00
i8042-acpipnpio.h Input: i8042 - add Clevo PCX0DX to i8042 quirk table 2023-01-10 19:41:47 -08:00
i8042-io.h input: i8042 - Remove special Cayman handling 2020-08-14 22:05:06 -04:00
i8042-ip22io.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
i8042-jazzio.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
i8042-snirm.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
i8042-sparcio.h Input: i8042 - fix refount leak on sparc 2022-10-09 22:26:53 -07:00
i8042.c Input: i8042 - fix leaking of platform device on module removal 2022-11-18 15:59:02 -08:00
i8042.h Input: i8042 - add LoongArch support in i8042-acpipnpio.h 2022-10-09 22:26:52 -07:00
ioc3kbd.c Input: add IOC3 serio driver 2020-01-22 10:05:53 -08:00
Kconfig Input: add missing dependencies on CONFIG_HAS_IOMEM 2021-02-19 11:02:18 -08:00
libps2.c Input: libps2 - do not discard non-ack bytes when controlling LEDs 2023-05-18 11:40:32 -07:00
maceps2.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
Makefile Input: add IOC3 serio driver 2020-01-22 10:05:53 -08:00
olpc_apsp.c Input: olpc_apsp - use devm_platform_get_and_ioremap_resource() 2023-01-29 20:36:36 -08:00
parkbd.c Input: move from strlcpy with unused retval to strscpy 2022-08-18 15:44:08 -07:00
pcips2.c Input: move from strlcpy with unused retval to strscpy 2022-08-18 15:44:08 -07:00
ps2-gpio.c Input: move from strlcpy with unused retval to strscpy 2022-08-18 15:44:08 -07:00
ps2mult.c Input: move from strlcpy with unused retval to strscpy 2022-08-18 15:44:08 -07:00
q40kbd.c input: drop empty comment blocks 2022-09-29 16:25:42 -07:00
rpckbd.c input: drop empty comment blocks 2022-09-29 16:25:42 -07:00
sa1111ps2.c Input: move from strlcpy with unused retval to strscpy 2022-08-18 15:44:08 -07:00
serio_raw.c treewide: Remove uninitialized_var() usage 2020-07-16 12:35:15 -07:00
serio.c driver core: make struct bus_type.uevent() take a const * 2023-01-27 13:45:52 +01:00
serport.c Input: move from strlcpy with unused retval to strscpy 2022-08-18 15:44:08 -07:00
sun4i-ps2.c Input: move from strlcpy with unused retval to strscpy 2022-08-18 15:44:08 -07:00
userio.c vfs: do bulk POLL* -> EPOLL* replacement 2018-02-11 14:34:03 -08:00
xilinx_ps2.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 151 2019-05-30 11:26:28 -07:00