int ret;
u32 val;
+ if (!(stm32_adc_readl(adc, STM32H7_ADC_CR) & STM32H7_ADEN))
+ return;
+
/* Disable ADC and wait until it's effectively disabled */
stm32_adc_set_bits(adc, STM32H7_ADC_CR, STM32H7_ADDIS);
ret = stm32_adc_readl_poll_timeout(STM32H7_ADC_CR, val,
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