diff options
| author | 2019-05-07 16:36:12 +0200 | |
|---|---|---|
| committer | 2019-05-11 11:00:11 +0100 | |
| commit | 263d21cd5e85eb4d96fd560eee814d98c5b89546 (patch) | |
| tree | 33336664b5190255d34a186c92c3b35d6fb69a49 | |
| parent | iio: stmpe-adc: Add compatible name (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>
| -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 da6cab88af53..5940bb8085b2 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) { |
