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

Fabrice Gasnier fabrice.gasnier at foss.st.com
Tue Jun 21 08:39:08 PDT 2022


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 at foss.st.com>

Hi Olivier,

You can add my:
Reviewed-by: Fabrice Gasnier <fabrice.gasnier at foss.st.com>

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



More information about the linux-arm-kernel mailing list