OSDN Git Service

iio: stm32 trigger: fix sampling_frequency read
authorFabrice Gasnier <fabrice.gasnier@st.com>
Fri, 7 Apr 2017 11:53:46 +0000 (13:53 +0200)
committerJonathan Cameron <jic23@kernel.org>
Sat, 8 Apr 2017 15:35:08 +0000 (16:35 +0100)
commit77a9febfd81f9e8550d09dc76e8e9c06307b7aca
tree8dbd57a37b3b3ec4746d8dcf1edef64b8be92b33
parent5d9854eaea776441b38a9a45b4e6879524c4f48c
iio: stm32 trigger: fix sampling_frequency read

When prescaler (PSC) is 0, it means div factor is 1: counter clock
frequency is equal to input clk / (PSC + 1).
When reload value is 8 for example, counter counts 9 cycles, from 0 to 8.
This is handled in frequency write routine, by writing respectively:
- prescaler - 1 to PSC
- reload value - 1 to ARR
This fix does the opposite when reading the frequency from PSC and ARR:
- prescaler is PSC + 1
- reload value is ARR + 1

Thus, PSC may be 0, depending on requested sampling frequency (div 1).
In this case, reading freq wrongly reports 0, instead of computing and
reporting correct value.
Remove test on !psc and !arr.

Small test on stm32f4 (example on tim1_trgo), before this fix:
$ cd /sys/bus/iio/devices/triggerX
$ echo 10000 > sampling_frequency
$ cat sampling_frequency
0

After this fix:
$ echo 10000 > sampling_frequency
$ cat sampling_frequency
10000

Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com>
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/iio/trigger/stm32-timer-trigger.c