Re: [PATCH 2/2] iio: adc: stm32-adc: disable adc before calibration

From: Fabrice Gasnier
Date: Tue Jun 21 2022 - 11:39:47 EST


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