linux/drivers/counter
William Breathitt Gray 4aa3b75c74 counter: 104-quad-8: Fix race condition between FLAG and CNTR reads
The Counter (CNTR) register is 24 bits wide, but we can have an
effective 25-bit count value by setting bit 24 to the XOR of the Borrow
flag and Carry flag. The flags can be read from the FLAG register, but a
race condition exists: the Borrow flag and Carry flag are instantaneous
and could change by the time the count value is read from the CNTR
register.

Since the race condition could result in an incorrect 25-bit count
value, remove support for 25-bit count values from this driver;
hard-coded maximum count values are replaced by a LS7267_CNTR_MAX define
for consistency and clarity.

Fixes: 28e5d3bb03 ("iio: 104-quad-8: Add IIO support for the ACCES 104-QUAD-8")
Cc: <stable@vger.kernel.org> # 6.1.x
Cc: <stable@vger.kernel.org> # 6.2.x
Link: https://lore.kernel.org/r/20230312231554.134858-1-william.gray@linaro.org/
Signed-off-by: William Breathitt Gray <william.gray@linaro.org>
2023-03-18 09:26:40 -04:00
..
104-quad-8.c counter: 104-quad-8: Fix race condition between FLAG and CNTR reads 2023-03-18 09:26:40 -04:00
counter-chrdev.c counter: Introduce the COUNTER_COMP_ARRAY component type 2022-09-30 14:32:35 +02:00
counter-chrdev.h counter: Add character device interface 2021-10-17 10:53:52 +01:00
counter-core.c counter: Move symbols into COUNTER namespace 2022-09-30 14:32:35 +02:00
counter-sysfs.c counter: Introduce the COUNTER_COMP_ARRAY component type 2022-09-30 14:32:35 +02:00
counter-sysfs.h counter: Internalize sysfs interface code 2021-10-17 10:52:58 +01:00
ftm-quaddec.c counter: Move symbols into COUNTER namespace 2022-09-30 14:32:35 +02:00
intel-qep.c counter: Move symbols into COUNTER namespace 2022-09-30 14:32:35 +02:00
interrupt-cnt.c counter: interrupt-cnt: Implement watch_validate callback 2022-09-30 14:32:35 +02:00
Kconfig counter: fix dependency references for config MICROCHIP_TCB_CAPTURE 2023-01-18 09:59:58 -05:00
Makefile counter: ti-ecap-capture: capture driver support for ECAP 2022-09-30 14:32:35 +02:00
microchip-tcb-capture.c counter: microchip-tcb-capture: Handle Signal1 read and Synapse 2022-10-23 20:38:49 -04:00
stm32-lptimer-cnt.c counter: stm32-lptimer-cnt: fix the check on arr and cmp registers update 2022-11-26 16:49:28 -05:00
stm32-timer-cnt.c counter: Move symbols into COUNTER namespace 2022-09-30 14:32:35 +02:00
ti-ecap-capture.c counter: ti-ecap-capture: fix IS_ERR() vs NULL check 2022-10-17 09:51:29 -04:00
ti-eqep.c counter: Move symbols into COUNTER namespace 2022-09-30 14:32:35 +02:00