Skip to content

Commit 4be339a

Browse files
ukleinekjic23
authored andcommitted
iio: adc: ad7124: Disable all channels at probe time
When during a measurement two channels are enabled, two measurements are done that are reported sequencially in the DATA register. As the code triggered by reading one of the sysfs properties expects that only one channel is enabled it only reads the first data set which might or might not belong to the intended channel. To prevent this situation disable all channels during probe. This fixes a problem in practise because the reset default for channel 0 is enabled. So all measurements before the first measurement on channel 0 (which disables channel 0 at the end) might report wrong values. Fixes: 7b8d045 ("iio: adc: ad7124: allow more than 8 channels") Reviewed-by: Nuno Sa <[email protected]> Signed-off-by: Uwe Kleine-König <[email protected]> Link: https://patch.msgid.link/[email protected] Cc: <[email protected]> Signed-off-by: Jonathan Cameron <[email protected]>
1 parent 4636e85 commit 4be339a

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

drivers/iio/adc/ad7124.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -917,6 +917,9 @@ static int ad7124_setup(struct ad7124_state *st)
917917
* set all channels to this default value.
918918
*/
919919
ad7124_set_channel_odr(st, i, 10);
920+
921+
/* Disable all channels to prevent unintended conversions. */
922+
ad_sd_write_reg(&st->sd, AD7124_CHANNEL(i), 2, 0);
920923
}
921924

922925
ret = ad_sd_write_reg(&st->sd, AD7124_ADC_CONTROL, 2, st->adc_control);

0 commit comments

Comments
 (0)