diff --git a/drivers/adc/adc_stm32.c b/drivers/adc/adc_stm32.c index 5c84e9a93da..47dffb9a83f 100644 --- a/drivers/adc/adc_stm32.c +++ b/drivers/adc/adc_stm32.c @@ -804,14 +804,32 @@ static void adc_stm32_setup_speed(const struct device *dev, uint8_t id, static void adc_stm32_setup_channels(const struct device *dev, uint8_t channel_id) { const struct adc_stm32_cfg *config = dev->config; +#ifdef CONFIG_SOC_SERIES_STM32G4X + ADC_TypeDef *adc = config->base; + if (config->has_temp_channel) { +#if DT_NODE_HAS_STATUS(DT_NODELABEL(adc1), okay) + if ((__LL_ADC_CHANNEL_TO_DECIMAL_NB(LL_ADC_CHANNEL_TEMPSENSOR_ADC1) == channel_id) + && (adc == ADC1)) { + adc_stm32_set_common_path(dev, LL_ADC_PATH_INTERNAL_TEMPSENSOR); + } +#endif +#if DT_NODE_HAS_STATUS(DT_NODELABEL(adc5), okay) + if ((__LL_ADC_CHANNEL_TO_DECIMAL_NB(LL_ADC_CHANNEL_TEMPSENSOR_ADC5) == channel_id) + && (adc == ADC5)) { + adc_stm32_set_common_path(dev, LL_ADC_PATH_INTERNAL_TEMPSENSOR); + } +#endif + } +#else if (config->has_temp_channel && - __LL_ADC_CHANNEL_TO_DECIMAL_NB(ADC_CHANNEL_TEMPSENSOR) == channel_id) { + __LL_ADC_CHANNEL_TO_DECIMAL_NB(LL_ADC_CHANNEL_TEMPSENSOR) == channel_id) { adc_stm32_set_common_path(dev, LL_ADC_PATH_INTERNAL_TEMPSENSOR); } +#endif /* CONFIG_SOC_SERIES_STM32G4X */ if (config->has_vref_channel && - __LL_ADC_CHANNEL_TO_DECIMAL_NB(ADC_CHANNEL_VREFINT) == channel_id) { + __LL_ADC_CHANNEL_TO_DECIMAL_NB(LL_ADC_CHANNEL_VREFINT) == channel_id) { adc_stm32_set_common_path(dev, LL_ADC_PATH_INTERNAL_VREFINT); } }