summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorVignesh R <vigneshr@ti.com>2016-08-17 17:43:00 +0530
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-09-24 10:07:38 +0200
commita1f72192d04cf4cef432f37b590f6c5f9c8f9791 (patch)
tree635c0ab0b636e9ae7d1c7fd35d17f77eb7a4e7ec /include
parent5be0ba290063b1519f5c02ab2ef6b8788e91dfc7 (diff)
iio: adc: ti_am335x_adc: Protect FIFO1 from concurrent access
commit 90c43ec6997a892448f1f86180a515f59cafd8a3 upstream. It is possible that two or more ADC channels can be simultaneously requested for raw samples, in which case there can be race in access to FIFO data resulting in loss of samples. If am335x_tsc_se_set_once() is called again from tiadc_read_raw(), when ADC is still acquired to sample one of the channels, the second process might be put into uninterruptible sleep state. Fix these issues, by protecting FIFO access and channel configurations with a mutex. Since tiadc_read_raw() might take anywhere between few microseconds to few milliseconds to finish execution (depending on averaging and delay values supplied via DT), its better to use mutex instead of spinlock. Fixes: 7ca6740cd1cd4 ("mfd: input: iio: ti_amm335x: Rework TSC/ADC synchronization") Signed-off-by: Vignesh R <vigneshr@ti.com> Signed-off-by: Jonathan Cameron <jic23@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions