linux/drivers/input
Jeff LaBundy a2add51331 Input: iqs7222 - preserve system status register
Some register groups reserve a byte at the end of their continuous
address space. Depending on the variant of silicon, this field may
share the same memory space as the lower byte of the system status
register (0x10).

In these cases, caching the reserved byte and writing it later may
effectively reset the device depending on what happened in between
the read and write operations.

Solve this problem by avoiding any access to this last byte within
offending register groups. This method replaces a workaround which
attempted to write the reserved byte with up-to-date contents, but
left a small window in which updates by the device could have been
clobbered.

Now that the driver does not touch these reserved bytes, the order
in which the device's registers are written no longer matters, and
they can be written in their natural order. The new method is also
much more generic, and can be more easily extended to new variants
of silicon with different register maps.

As part of this change, the register read and write functions must
be gently updated to support byte access instead of word access.

Fixes: 2e70ef525b ("Input: iqs7222 - acknowledge reset before writing registers")
Signed-off-by: Jeff LaBundy <jeff@labundy.com>
Link: https://lore.kernel.org/r/Z85Alw+d9EHKXx2e@nixie71
Cc: stable@vger.kernel.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2025-03-09 23:12:07 -07:00
..
gameport Driver core changes for 6.11-rc1 2024-07-25 10:42:22 -07:00
joystick Input: xpad - rename QH controller to Legion Go S 2025-02-25 08:10:23 -08:00
keyboard Input: atkbd - map F23 key to support default copilot shortcut 2025-01-20 21:23:38 -08:00
misc Input: iqs7222 - preserve system status register 2025-03-09 23:12:07 -07:00
mouse Input: synaptics - fix crash when enabling pass-through port 2025-01-20 21:27:02 -08:00
rmi4 Input updates for v6.13-rc0 2024-11-25 10:31:39 -08:00
serio Input: i8042 - swap old quirk combination with new quirk for more devices 2025-02-25 13:01:51 -08:00
tablet Input updates for v6.13-rc0 2024-11-25 10:31:39 -08:00
tests Input updates for v6.11-rc0 2024-07-19 16:51:39 -07:00
touchscreen Input: goodix-berlin - fix vddio regulator references 2025-02-24 22:28:50 -08:00
apm-power.c
evdev.c [tree-wide] finally take no_llseek out 2024-09-27 08:18:43 -07:00
ff-core.c Input: ff-core - make use of __free() cleanup facility 2024-12-23 22:53:21 -08:00
ff-memless.c Input: ff-memless - make use of __free() cleanup facility 2024-12-23 22:53:45 -08:00
input-compat.c
input-compat.h
input-core-private.h
input-leds.c Input: leds - change config symbol dependency for audio mute trigger 2024-03-03 14:46:06 -08:00
input-mt.c Input: mt - make use of __free() cleanup facility 2024-12-23 22:53:57 -08:00
input-poller.c Input: poller - convert locking to guard notation 2024-12-23 22:53:57 -08:00
input-poller.h
input.c Input: use guard notation in input core 2024-12-23 22:53:58 -08:00
joydev.c [tree-wide] finally take no_llseek out 2024-09-27 08:18:43 -07:00
Kconfig Input: remove evbug driver 2024-12-17 13:53:52 -08:00
Makefile Input: remove evbug driver 2024-12-17 13:53:52 -08:00
matrix-keymap.c Input: matrix-keymap - switch to using __free() cleanup facility 2024-08-29 10:59:30 -07:00
mousedev.c
sparse-keymap.c
touchscreen.c
vivaldi-fmap.c Input: add missing MODULE_DESCRIPTION() macros 2024-06-09 14:38:48 -07:00