drivers: adc: Refactor drivers to use shared init priority
Refactors all of the ADC drivers to use a shared driver class
initialization priority configuration, CONFIG_ADC_INIT_PRIORITY, to
allow configuring ADC drivers separately from other devices. This is
similar to other driver classes like I2C and SPI.
The default is set to CONFIG_KERNEL_INIT_PRIORITY_DEVICE to preserve the
existing default initialization priority for most drivers. The
exceptions are lmp90xxx, mcp320x, and mcux_adc16 drivers which have
dependencies on GPIO, SPI, and/or DMA drivers and must therefore
initialize later than the default device priority.
Signed-off-by: Maureen Helm <maureen.helm@intel.com>
diff --git a/boards/shields/lmp90100_evb/Kconfig.defconfig b/boards/shields/lmp90100_evb/Kconfig.defconfig
index e7488e5..e229fff 100644
--- a/boards/shields/lmp90100_evb/Kconfig.defconfig
+++ b/boards/shields/lmp90100_evb/Kconfig.defconfig
@@ -14,6 +14,9 @@
config ADC_LMP90XXX_GPIO
default y
+config ADC_INIT_PRIORITY
+ default 80
+
endif # ADC
if EEPROM
diff --git a/boards/shields/mikroe_adc_click/Kconfig.defconfig b/boards/shields/mikroe_adc_click/Kconfig.defconfig
index 4cdd0f6..d2ee47d 100644
--- a/boards/shields/mikroe_adc_click/Kconfig.defconfig
+++ b/boards/shields/mikroe_adc_click/Kconfig.defconfig
@@ -11,6 +11,9 @@
config ADC_MCP320X
default y
+config ADC_INIT_PRIORITY
+ default 80
+
endif # ADC
endif # SHIELD_MIKROE_ADC_CLICK
diff --git a/drivers/adc/Kconfig b/drivers/adc/Kconfig
index e18be26..f82877c 100644
--- a/drivers/adc/Kconfig
+++ b/drivers/adc/Kconfig
@@ -34,6 +34,12 @@
help
This option enables the asynchronous API calls.
+config ADC_INIT_PRIORITY
+ int "ADC init priority"
+ default KERNEL_INIT_PRIORITY_DEVICE
+ help
+ ADC driver device initialization priority.
+
module = ADC
module-str = ADC
source "subsys/logging/Kconfig.template.log_config"
diff --git a/drivers/adc/Kconfig.lmp90xxx b/drivers/adc/Kconfig.lmp90xxx
index 5571ee4..bc77d0e 100644
--- a/drivers/adc/Kconfig.lmp90xxx
+++ b/drivers/adc/Kconfig.lmp90xxx
@@ -15,12 +15,6 @@
if ADC_LMP90XXX
-config ADC_LMP90XXX_INIT_PRIORITY
- int "Init priority"
- default 80
- help
- LMP90xxx ADC device driver initialization priority.
-
config ADC_LMP90XXX_ACQUISITION_THREAD_STACK_SIZE
int "Stack size for the ADC data acquisition thread"
default 400
diff --git a/drivers/adc/Kconfig.mcp320x b/drivers/adc/Kconfig.mcp320x
index d95e2d5..978ce4f 100644
--- a/drivers/adc/Kconfig.mcp320x
+++ b/drivers/adc/Kconfig.mcp320x
@@ -14,12 +14,6 @@
if ADC_MCP320X
-config ADC_MCP320X_INIT_PRIORITY
- int "Init priority"
- default 80
- help
- MCP320x ADC device driver initialization priority.
-
config ADC_MCP320X_ACQUISITION_THREAD_STACK_SIZE
int "Stack size for the ADC data acquisition thread"
default 512
diff --git a/drivers/adc/Kconfig.mcux b/drivers/adc/Kconfig.mcux
index 70828b3..092f932 100644
--- a/drivers/adc/Kconfig.mcux
+++ b/drivers/adc/Kconfig.mcux
@@ -61,12 +61,6 @@
if ADC_MCUX_ADC16_ENABLE_EDMA
-config ADC_MCUX_ADC16_INIT_PRIORITY
- int "Init priority"
- default 70
- help
- Device driver initialization priority.
-
config ADC_MCUX_ADC16_HW_TRIGGER
bool "ADC HW TRIGGER"
default y
diff --git a/drivers/adc/adc_cc32xx.c b/drivers/adc/adc_cc32xx.c
index 9c5a5d2..5351dad 100644
--- a/drivers/adc/adc_cc32xx.c
+++ b/drivers/adc/adc_cc32xx.c
@@ -313,7 +313,7 @@
DEVICE_DT_INST_DEFINE(index, \
&adc_cc32xx_init, NULL, &adc_cc32xx_data_##index, \
&adc_cc32xx_cfg_##index, POST_KERNEL, \
- CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, \
+ CONFIG_ADC_INIT_PRIORITY, \
&cc32xx_driver_api); \
\
static void adc_cc32xx_cfg_func_##index(void) \
diff --git a/drivers/adc/adc_emul.c b/drivers/adc/adc_emul.c
index 2acf7a8..909e80b 100644
--- a/drivers/adc/adc_emul.c
+++ b/drivers/adc/adc_emul.c
@@ -574,7 +574,7 @@
DEVICE_DT_INST_DEFINE(_num, adc_emul_init, NULL, \
&adc_emul_data_##_num, \
&adc_emul_config_##_num, POST_KERNEL, \
- CONFIG_KERNEL_INIT_PRIORITY_DEVICE, \
+ CONFIG_ADC_INIT_PRIORITY, \
&adc_emul_api_##_num)
DT_INST_FOREACH_STATUS_OKAY(ADC_EMUL_INIT);
diff --git a/drivers/adc/adc_ite_it8xxx2.c b/drivers/adc/adc_ite_it8xxx2.c
index a3e5fd4..652b270 100644
--- a/drivers/adc/adc_ite_it8xxx2.c
+++ b/drivers/adc/adc_ite_it8xxx2.c
@@ -335,5 +335,5 @@
NULL,
&adc_it8xxx2_data_0,
&adc_it8xxx2_cfg_0, PRE_KERNEL_1,
- CONFIG_KERNEL_INIT_PRIORITY_DEVICE,
+ CONFIG_ADC_INIT_PRIORITY,
&api_it8xxx2_driver_api);
diff --git a/drivers/adc/adc_lmp90xxx.c b/drivers/adc/adc_lmp90xxx.c
index 777cfc2..3fbc0a2 100644
--- a/drivers/adc/adc_lmp90xxx.c
+++ b/drivers/adc/adc_lmp90xxx.c
@@ -1073,7 +1073,7 @@
&lmp90xxx_init, NULL, \
&lmp##t##_data_##n, \
&lmp##t##_config_##n, POST_KERNEL, \
- CONFIG_ADC_LMP90XXX_INIT_PRIORITY, \
+ CONFIG_ADC_INIT_PRIORITY, \
&lmp90xxx_adc_api);
#define LMP90XXX_FOREACH_STATUS_OKAY(compat, fn) \
diff --git a/drivers/adc/adc_mchp_xec.c b/drivers/adc/adc_mchp_xec.c
index 704450f..a6eb5d3 100644
--- a/drivers/adc/adc_mchp_xec.c
+++ b/drivers/adc/adc_mchp_xec.c
@@ -309,5 +309,5 @@
DEVICE_DT_INST_DEFINE(0, adc_xec_init, NULL,
&adc_xec_dev_data_0, NULL,
- PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_DEVICE,
+ PRE_KERNEL_1, CONFIG_ADC_INIT_PRIORITY,
&adc_xec_api);
diff --git a/drivers/adc/adc_mchp_xec_v2.c b/drivers/adc/adc_mchp_xec_v2.c
index f9e455a..795e1ad 100644
--- a/drivers/adc/adc_mchp_xec_v2.c
+++ b/drivers/adc/adc_mchp_xec_v2.c
@@ -344,5 +344,5 @@
DEVICE_DT_INST_DEFINE(0, adc_xec_init, NULL,
&adc_xec_dev_data_0, &adc_xec_dev_cfg_0,
- PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_DEVICE,
+ PRE_KERNEL_1, CONFIG_ADC_INIT_PRIORITY,
&adc_xec_api);
diff --git a/drivers/adc/adc_mcp320x.c b/drivers/adc/adc_mcp320x.c
index c0f2231..7ab1608 100644
--- a/drivers/adc/adc_mcp320x.c
+++ b/drivers/adc/adc_mcp320x.c
@@ -329,7 +329,7 @@
&mcp320x_init, NULL, \
&mcp##t##_data_##n, \
&mcp##t##_config_##n, POST_KERNEL, \
- CONFIG_ADC_MCP320X_INIT_PRIORITY, \
+ CONFIG_ADC_INIT_PRIORITY, \
&mcp320x_adc_api)
/*
diff --git a/drivers/adc/adc_mcux_adc12.c b/drivers/adc/adc_mcux_adc12.c
index dca7cae..b87ff9b 100644
--- a/drivers/adc/adc_mcux_adc12.c
+++ b/drivers/adc/adc_mcux_adc12.c
@@ -286,7 +286,7 @@
DEVICE_DT_INST_DEFINE(n, &mcux_adc12_init, \
NULL, &mcux_adc12_data_##n, \
&mcux_adc12_config_##n, POST_KERNEL, \
- CONFIG_KERNEL_INIT_PRIORITY_DEVICE, \
+ CONFIG_ADC_INIT_PRIORITY, \
&mcux_adc12_driver_api); \
\
static void mcux_adc12_config_func_##n(const struct device *dev) \
diff --git a/drivers/adc/adc_mcux_adc16.c b/drivers/adc/adc_mcux_adc16.c
index e6ccd84..3456d45 100644
--- a/drivers/adc/adc_mcux_adc16.c
+++ b/drivers/adc/adc_mcux_adc16.c
@@ -462,7 +462,7 @@
&mcux_adc16_data_##n, \
&mcux_adc16_config_##n, \
POST_KERNEL, \
- CONFIG_ADC_MCUX_ADC16_INIT_PRIORITY, \
+ CONFIG_ADC_INIT_PRIORITY, \
&mcux_adc16_driver_api);
#else
#define ACD16_MCUX_INIT(n) \
@@ -488,7 +488,7 @@
&mcux_adc16_data_##n, \
&mcux_adc16_config_##n, \
POST_KERNEL, \
- CONFIG_KERNEL_INIT_PRIORITY_DEVICE, \
+ CONFIG_ADC_INIT_PRIORITY, \
&mcux_adc16_driver_api); \
\
static void mcux_adc16_config_func_##n(const struct device *dev) \
diff --git a/drivers/adc/adc_mcux_lpadc.c b/drivers/adc/adc_mcux_lpadc.c
index 5cc485e..fdbcda2 100644
--- a/drivers/adc/adc_mcux_lpadc.c
+++ b/drivers/adc/adc_mcux_lpadc.c
@@ -427,7 +427,7 @@
DEVICE_DT_INST_DEFINE(n, \
&mcux_lpadc_init, NULL, &mcux_lpadc_data_##n, \
&mcux_lpadc_config_##n, POST_KERNEL, \
- CONFIG_KERNEL_INIT_PRIORITY_DEVICE, \
+ CONFIG_ADC_INIT_PRIORITY, \
&mcux_lpadc_driver_api); \
\
static void mcux_lpadc_config_func_##n(const struct device *dev) \
diff --git a/drivers/adc/adc_npcx.c b/drivers/adc/adc_npcx.c
index afc15ef..e183e45 100644
--- a/drivers/adc/adc_npcx.c
+++ b/drivers/adc/adc_npcx.c
@@ -325,7 +325,7 @@
adc_npcx_init, NULL,
&adc_npcx_data_0, &adc_npcx_cfg_0,
PRE_KERNEL_1,
- CONFIG_KERNEL_INIT_PRIORITY_DEFAULT,
+ CONFIG_ADC_INIT_PRIORITY,
&adc_npcx_driver_api);
static int adc_npcx_init(const struct device *dev)
diff --git a/drivers/adc/adc_nrfx_adc.c b/drivers/adc/adc_nrfx_adc.c
index 20c9ab9..f6af63d 100644
--- a/drivers/adc/adc_nrfx_adc.c
+++ b/drivers/adc/adc_nrfx_adc.c
@@ -292,7 +292,7 @@
DEVICE_DT_INST_DEFINE(0, \
init_adc, NULL, NULL, NULL, \
POST_KERNEL, \
- CONFIG_KERNEL_INIT_PRIORITY_DEVICE, \
+ CONFIG_ADC_INIT_PRIORITY, \
&adc_nrfx_driver_api);
DT_INST_FOREACH_STATUS_OKAY(ADC_INIT)
diff --git a/drivers/adc/adc_nrfx_saadc.c b/drivers/adc/adc_nrfx_saadc.c
index e803b07..bfa5e96 100644
--- a/drivers/adc/adc_nrfx_saadc.c
+++ b/drivers/adc/adc_nrfx_saadc.c
@@ -433,7 +433,7 @@
NULL, \
NULL, \
POST_KERNEL, \
- CONFIG_KERNEL_INIT_PRIORITY_DEVICE, \
+ CONFIG_ADC_INIT_PRIORITY, \
&adc_nrfx_driver_api);
DT_INST_FOREACH_STATUS_OKAY(SAADC_INIT)
diff --git a/drivers/adc/adc_sam0.c b/drivers/adc/adc_sam0.c
index 35f559f..014692d 100644
--- a/drivers/adc/adc_sam0.c
+++ b/drivers/adc/adc_sam0.c
@@ -605,7 +605,7 @@
DEVICE_DT_INST_DEFINE(n, adc_sam0_init, NULL, \
&adc_sam_data_##n, \
&adc_sam_cfg_##n, POST_KERNEL, \
- CONFIG_KERNEL_INIT_PRIORITY_DEVICE, \
+ CONFIG_ADC_INIT_PRIORITY, \
&adc_sam0_api); \
static void adc_sam0_config_##n(const struct device *dev) \
{ \
diff --git a/drivers/adc/adc_sam_afec.c b/drivers/adc/adc_sam_afec.c
index 67dbc51..aa78f2e 100644
--- a/drivers/adc/adc_sam_afec.c
+++ b/drivers/adc/adc_sam_afec.c
@@ -368,7 +368,7 @@
DEVICE_DT_INST_DEFINE(n, adc_sam_init, NULL, \
&adc##n##_sam_data, \
&adc##n##_sam_cfg, POST_KERNEL, \
- CONFIG_KERNEL_INIT_PRIORITY_DEVICE, \
+ CONFIG_ADC_INIT_PRIORITY, \
&adc_sam_api); \
\
static void adc##n##_sam_cfg_func(const struct device *dev) \
diff --git a/drivers/adc/adc_stm32.c b/drivers/adc/adc_stm32.c
index 50bd687..ad3e312 100644
--- a/drivers/adc/adc_stm32.c
+++ b/drivers/adc/adc_stm32.c
@@ -1008,7 +1008,7 @@
DEVICE_DT_INST_DEFINE(index, \
&adc_stm32_init, NULL, \
&adc_stm32_data_##index, &adc_stm32_cfg_##index, \
- POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, \
+ POST_KERNEL, CONFIG_ADC_INIT_PRIORITY, \
&api_stm32_driver_api); \
\
static void adc_stm32_cfg_func_##index(void) \
diff --git a/drivers/gpio/gpio_lmp90xxx.c b/drivers/gpio/gpio_lmp90xxx.c
index 6daca02..4ac7774 100644
--- a/drivers/gpio/gpio_lmp90xxx.c
+++ b/drivers/gpio/gpio_lmp90xxx.c
@@ -159,7 +159,7 @@
};
BUILD_ASSERT(CONFIG_GPIO_LMP90XXX_INIT_PRIORITY >
- CONFIG_ADC_LMP90XXX_INIT_PRIORITY,
+ CONFIG_ADC_INIT_PRIORITY,
"LMP90xxx GPIO driver must be initialized after LMP90xxx ADC "
"driver");
diff --git a/soc/arm/nxp_kinetis/Kconfig.defconfig b/soc/arm/nxp_kinetis/Kconfig.defconfig
index 78efb88..1a11765 100644
--- a/soc/arm/nxp_kinetis/Kconfig.defconfig
+++ b/soc/arm/nxp_kinetis/Kconfig.defconfig
@@ -4,4 +4,8 @@
default 55
depends on SERIAL
+config ADC_INIT_PRIORITY
+ default 80 if ADC_MCUX_ADC16_ENABLE_EDMA
+ depends on ADC
+
source "soc/arm/nxp_kinetis/*/Kconfig.defconfig.series"