On 6/20/22 17:47, Olivier Moysan wrote: > The calibration is launched from prepare callback. > The ADC state when entering this function may be unknown as the > ADC may have been left enabled by boot stage. > One prerequisite for ADC calibration is to have ADC in disabled state. > If the calibration is started when ADC is still enabled, the behavior is > unpredictable, and the calibration may fail with a timeout error. > > Force ADC to disabled state in stm32h7_adc_selfcalib(). > ADC enabling is ensured by stm32h7_adc_enable() call, > before leaving prepare callback. > > Signed-off-by: Olivier Moysan <olivier.moysan@xxxxxxxxxxx> Hi Olivier, You can add my: Reviewed-by: Fabrice Gasnier <fabrice.gasnier@xxxxxxxxxxx> Thanks, Fabrice > --- > drivers/iio/adc/stm32-adc.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/iio/adc/stm32-adc.c b/drivers/iio/adc/stm32-adc.c > index 80e333f65ddd..3985fe972892 100644 > --- a/drivers/iio/adc/stm32-adc.c > +++ b/drivers/iio/adc/stm32-adc.c > @@ -1019,6 +1019,9 @@ static int stm32h7_adc_selfcalib(struct iio_dev *indio_dev) > if (adc->cal.calibrated) > return true; > > + /* ADC must be disabled for calibration */ > + stm32h7_adc_disable(indio_dev); > + > /* > * Select calibration mode: > * - Offset calibration for single ended inputs