diff --git a/drivers/adc/Kconfig.mcux b/drivers/adc/Kconfig.mcux index a458bd37681..6e80b068e69 100644 --- a/drivers/adc/Kconfig.mcux +++ b/drivers/adc/Kconfig.mcux @@ -6,6 +6,7 @@ config ADC_MCUX_ADC12 bool "MCUX ADC12 driver" depends on HAS_MCUX_ADC12 + select PINCTRL help Enable the MCUX ADC12 driver. diff --git a/drivers/adc/adc_mcux_adc12.c b/drivers/adc/adc_mcux_adc12.c index b87ff9bd38e..60f8da329dc 100644 --- a/drivers/adc/adc_mcux_adc12.c +++ b/drivers/adc/adc_mcux_adc12.c @@ -11,6 +11,7 @@ #include #include +#include #define LOG_LEVEL CONFIG_ADC_LOG_LEVEL #include @@ -26,6 +27,7 @@ struct mcux_adc12_config { adc12_reference_voltage_source_t ref_src; uint32_t sample_clk_count; void (*irq_config_func)(const struct device *dev); + const struct pinctrl_dev_config *pincfg; }; struct mcux_adc12_data { @@ -216,6 +218,7 @@ static int mcux_adc12_init(const struct device *dev) struct mcux_adc12_data *data = dev->data; ADC_Type *base = config->base; adc12_config_t adc_config; + int err; ADC12_GetDefaultConfig(&adc_config); @@ -233,6 +236,11 @@ static int mcux_adc12_init(const struct device *dev) config->irq_config_func(dev); data->dev = dev; + err = pinctrl_apply_state(config->pincfg, PINCTRL_STATE_DEFAULT); + if (err) { + return err; + } + adc_context_unlock_unconditionally(&data->ctx); return 0; @@ -261,6 +269,8 @@ static const struct adc_driver_api mcux_adc12_driver_api = { #define ACD12_MCUX_INIT(n) \ static void mcux_adc12_config_func_##n(const struct device *dev); \ \ + PINCTRL_DT_INST_DEFINE(n); \ + \ ASSERT_WITHIN_RANGE(DT_INST_PROP(n, clk_source), 0, 3, \ "Invalid clock source"); \ ASSERT_ADC12_CLK_DIV_VALID(DT_INST_PROP(n, clk_divider), \ @@ -275,6 +285,7 @@ static const struct adc_driver_api mcux_adc12_driver_api = { .ref_src = ADC12_REF_SRC(n), \ .sample_clk_count = DT_INST_PROP(n, sample_time), \ .irq_config_func = mcux_adc12_config_func_##n, \ + .pincfg = PINCTRL_DT_INST_DEV_CONFIG_GET(n), \ }; \ \ static struct mcux_adc12_data mcux_adc12_data_##n = { \ diff --git a/dts/bindings/adc/nxp,kinetis-adc12.yaml b/dts/bindings/adc/nxp,kinetis-adc12.yaml index 914adcf7ee7..1b6952bdf26 100644 --- a/dts/bindings/adc/nxp,kinetis-adc12.yaml +++ b/dts/bindings/adc/nxp,kinetis-adc12.yaml @@ -5,7 +5,7 @@ description: NXP Kinetis ADC12 compatible: "nxp,kinetis-adc12" -include: adc-controller.yaml +include: [adc-controller.yaml, pinctrl-device.yaml] properties: reg: