diff options
author | Philippe Schenker <philippe.schenker@toradex.com> | 2019-05-07 16:36:12 +0200 |
---|---|---|
committer | Marcel Ziswiler <marcel.ziswiler@toradex.com> | 2020-04-15 01:24:39 +0200 |
commit | 161beb6e21e1a5bee63105b7db1677f95a2073e4 (patch) | |
tree | 42ed6ed310e553ca43559840deded71b89c80eb1 | |
parent | c78ef305cd4acb3418f6251b0381be7c6272a669 (diff) |
iio: stmpe-adc: Reinit completion struct on begin conversion
In some cases, the wait_completion got interrupted. This caused the
error-handling to mutex_unlock the function. The before turned on
interrupt then got called anyway. In the ISR then completion() was
called causing wrong adc-values returned in a following adc-readout.
Reinitialise completion struct to make sure the counter is zero
when beginning a new adc-conversion.
Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
(cherry picked from commit 263d21cd5e85eb4d96fd560eee814d98c5b89546)
-rw-r--r-- | drivers/iio/adc/stmpe-adc.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/iio/adc/stmpe-adc.c b/drivers/iio/adc/stmpe-adc.c index 6366e5bf94d5..021fee06684e 100644 --- a/drivers/iio/adc/stmpe-adc.c +++ b/drivers/iio/adc/stmpe-adc.c @@ -65,6 +65,8 @@ static int stmpe_read_voltage(struct stmpe_adc *info, mutex_lock(&info->lock); + reinit_completion(&info->completion); + info->channel = (u8)chan->channel; if (info->channel > STMPE_ADC_LAST_NR) { @@ -103,6 +105,8 @@ static int stmpe_read_temp(struct stmpe_adc *info, mutex_lock(&info->lock); + reinit_completion(&info->completion); + info->channel = (u8)chan->channel; if (info->channel != STMPE_TEMP_CHANNEL) { |