linux/drivers/input/misc
Jeff LaBundy 0b5b6512f6 Input: iqs7222 - preserve system status register
commit a2add51331 upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2025-03-22 12:50:45 -07:00
..
88pm80x_onkey.c Input: remove dev_err() usage after platform_get_irq() 2019-08-14 10:49:01 -07:00
88pm860x_onkey.c Input: 88pm860x - switch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2023-01-09 20:25:20 -08:00
ab8500-ponkey.c Input: ab8500-ponkey - fix incorrect name in 'ab8500_ponkey' doc header 2020-11-08 22:27:54 -08:00
ad714x-i2c.c Input: Switch i2c drivers back to use .probe() 2023-05-17 09:59:11 -07:00
ad714x-spi.c Input: ad714x - unify dev_pm_ops using EXPORT_SIMPLE_DEV_PM_OPS() 2023-01-27 14:49:52 -08:00
ad714x.c Input: ad714x - unify dev_pm_ops using EXPORT_SIMPLE_DEV_PM_OPS() 2023-01-27 14:49:52 -08:00
ad714x.h Input: ad714x - unify dev_pm_ops using EXPORT_SIMPLE_DEV_PM_OPS() 2023-01-27 14:49:52 -08:00
adxl34x-i2c.c Input: Switch i2c drivers back to use .probe() 2023-05-17 09:59:11 -07:00
adxl34x-spi.c Input: adxl34x - unify dev_pm_ops using EXPORT_SIMPLE_DEV_PM_OPS() 2023-01-27 14:49:53 -08:00
adxl34x.c Input: adxl34x - do not hardcode interrupt trigger type 2023-05-10 17:28:57 -07:00
adxl34x.h Input: adxl34x - unify dev_pm_ops using EXPORT_SIMPLE_DEV_PM_OPS() 2023-01-27 14:49:53 -08:00
apanel.c Input: Switch i2c drivers back to use .probe() 2023-05-17 09:59:11 -07:00
ariel-pwrbutton.c Input: ariel-pwrbutton - add SPI device ID table 2021-10-01 21:24:14 -07:00
arizona-haptics.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
atc260x-onkey.c input: atc260x: Add onkey driver for ATC260x PMICs 2021-03-10 11:10:30 +00:00
ati_remote2.c Input: remove third argument of usb_maxpacket() 2022-04-23 10:33:53 +02:00
atlas_btns.c ACPI: make remove callback of ACPI driver void 2022-11-23 19:11:22 +01:00
atmel_captouch.c Input: Switch i2c drivers back to use .probe() 2023-05-17 09:59:11 -07:00
axp20x-pek.c Input: axp20x-pek - switch to SYSTEM_SLEEP_PM_OPS() and pm_sleep_ptr() 2023-01-27 14:49:52 -08:00
bma150.c Input: Switch i2c drivers back to use .probe() 2023-05-17 09:59:11 -07:00
cm109.c Input: remove third argument of usb_maxpacket() 2022-04-23 10:33:53 +02:00
cma3000_d0x.c Input: cma3000_d0x - remove unneeded code 2023-04-09 19:18:39 -07:00
cma3000_d0x.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
cma3000_d0x_i2c.c Input: Switch i2c drivers back to use .probe() 2023-05-17 09:59:11 -07:00
cobalt_btns.c Input: cobalt_btns - switch to using polled mode of input devices 2019-10-29 17:14:17 -07:00
cpcap-pwrbutton.c Input: cpcap-pwrbutton - replace GPLv2 boilerplate with SPDX 2023-07-05 14:50:00 -07:00
da7280.c pwm: Rename pwm_apply_state() to pwm_apply_might_sleep() 2024-06-12 11:12:24 +02:00
da9052_onkey.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
da9055_onkey.c Input: remove dev_err() usage after platform_get_irq() 2019-08-14 10:49:01 -07:00
da9063_onkey.c Input: da9063 - add wakeup support 2023-07-18 11:37:52 -07:00
drv260x.c Input: Switch i2c drivers back to use .probe() 2023-05-17 09:59:11 -07:00
drv2665.c Input: Switch i2c drivers back to use .probe() 2023-05-17 09:59:11 -07:00
drv2667.c Input: Switch i2c drivers back to use .probe() 2023-05-17 09:59:11 -07:00
e3x0-button.c Input: e3x0-button - switch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2023-01-09 20:25:21 -08:00
gpio-beeper.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
gpio-vibra.c Input: Explicitly include correct DT includes 2023-07-17 10:03:07 -07:00
gpio_decoder.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_30.RULE (part 2) 2022-06-10 14:51:35 +02:00
hisi_powerkey.c Input: remove dev_err() usage after platform_get_irq() 2019-08-14 10:49:01 -07:00
hp_sdc_rtc.c Input: hp_sdc_rtc - mark an unused function as __maybe_unused 2023-02-21 13:57:40 -08:00
ibm-panel.c Input: Switch i2c drivers back to use .probe() 2023-05-17 09:59:11 -07:00
ideapad_slidebar.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
ims-pcu.c Input: ims-pcu - fix printf string overflow 2024-06-12 11:12:36 +02:00
iqs269a.c Input: Explicitly include correct DT includes 2023-07-17 10:03:07 -07:00
iqs626a.c Input: Explicitly include correct DT includes 2023-07-17 10:03:07 -07:00
iqs7222.c Input: iqs7222 - preserve system status register 2025-03-22 12:50:45 -07:00
Kconfig Input updates for 6.6 merge window: 2023-09-06 09:24:25 -07:00
keyspan_remote.c Input: move from strlcpy with unused retval to strscpy 2022-08-18 15:44:08 -07:00
kxtj9.c Input: Switch i2c drivers back to use .probe() 2023-05-17 09:59:11 -07:00
m68kspkr.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
Makefile Input: bbnsm_pwrkey - add bbnsm power key support 2023-02-21 13:56:35 -08:00
max8925_onkey.c Input: max8925_onkey - switch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2023-01-09 20:25:21 -08:00
max8997_haptic.c Input: max8997_haptic - switch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2023-01-09 20:25:22 -08:00
max77650-onkey.c Input: max77650-onkey - add of_match table 2020-01-16 20:23:24 -08:00
max77693-haptic.c Input: max77693-haptic - switch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2023-01-09 20:25:21 -08:00
mc13783-pwrbutton.c Input: mc13783-pwrbutton - file headers are not good candidates for kernel-doc 2020-11-19 19:18:22 -08:00
mma8450.c Input: Explicitly include correct DT includes 2023-07-17 10:03:07 -07:00
nxp-bbnsm-pwrkey.c Input: bbnsm_pwrkey - add bbnsm power key support 2023-02-21 13:56:35 -08:00
palmas-pwrbutton.c Input: palmas-pwrbutton - switch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2023-01-09 20:25:22 -08:00
pcap_keys.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
pcf8574_keypad.c Input: Switch i2c drivers back to use .probe() 2023-05-17 09:59:11 -07:00
pcf50633-input.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
pcspkr.c Input: pcspkr - fix fall-through warnings for Clang 2020-11-22 22:16:21 -08:00
pm8xxx-vibrator.c Input: pm8xxx-vibrator - correct VIB_MAX_LEVELS calculation 2024-06-12 11:12:37 +02:00
pm8941-pwrkey.c Input: Explicitly include correct DT includes 2023-07-17 10:03:07 -07:00
pmic8xxx-pwrkey.c Input: Explicitly include correct DT includes 2023-07-17 10:03:07 -07:00
powermate.c Input: powermate - fix use-after-free in powermate_config_complete 2023-10-13 20:17:02 -07:00
pwm-beeper.c pwm: Rename pwm_apply_state() to pwm_apply_might_sleep() 2024-06-12 11:12:24 +02:00
pwm-vibra.c pwm: Rename pwm_apply_state() to pwm_apply_might_sleep() 2024-06-12 11:12:24 +02:00
rave-sp-pwrbutton.c Input: add RAVE SP Powerbutton driver 2018-03-08 15:34:45 -08:00
rb532_button.c Input: rb532_button - switch to using polled mode of input devices 2019-10-29 17:15:46 -07:00
regulator-haptic.c Input: regulator-haptic - switch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2023-01-09 20:25:22 -08:00
retu-pwrbutton.c Input: misc - drop empty remove functions 2017-01-21 23:53:34 -08:00
rk805-pwrkey.c Input: rk805-pwrkey - fix module autoloading 2022-08-22 16:59:49 -07:00
rotary_encoder.c Input: rotary_encoder - don't double assign input->dev.parent 2023-07-12 14:10:32 -07:00
rt5120-pwrkey.c Input: rt5120 - add power key support 2022-08-31 15:48:49 -07:00
sc27xx-vibra.c Input: sc27xx - add support for sc2730 and sc2721 2020-12-11 19:00:21 -08:00
sgi_btns.c Input: sgi_btns - switch to using polled mode of input devices 2019-10-29 17:15:26 -07:00
soc_button_array.c Input: soc_button_array - add mapping for airplane mode button 2024-01-01 12:42:41 +00:00
sparcspkr.c Input: Explicitly include correct DT includes 2023-07-17 10:03:07 -07:00
stpmic1_onkey.c Input: stpmic1_onekey - switch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2023-01-09 20:25:23 -08:00
tps65218-pwrbutton.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_320.RULE 2022-06-10 14:51:36 +02:00
tps65219-pwrbutton.c Input: tps65219-pwrbutton - use regmap_set_bits() 2023-06-06 11:11:58 -07:00
twl4030-pwrbutton.c Input: twl4030-pwrbutton - add missing of.h include 2022-09-27 08:43:04 -07:00
twl4030-vibra.c Input: twl4030-vibra - switch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2023-01-09 20:25:23 -08:00
twl6040-vibra.c Input: twl6030-vibra - switch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2023-01-09 20:25:23 -08:00
uinput.c Input: uinput - reject requests with unreasonable number of slots 2024-09-12 11:11:39 +02:00
wistron_btns.c Input: wistron_btns - use pm_sleep_ptr() to allow removal of ifdef CONFIG_PM guards 2023-01-27 14:49:53 -08:00
wm831x-on.c Input: wm831x-on - source file headers are not good candidates for kernel-doc 2020-11-19 19:18:43 -08:00
xen-kbdfront.c xen: make remove callback of xen driver void returned 2022-12-15 16:06:10 +01:00
yealink.c Input: remove third argument of usb_maxpacket() 2022-04-23 10:33:53 +02:00
yealink.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00