From a5532f9fd93ac4a13e320ae166faae808acaaac5 Mon Sep 17 00:00:00 2001 From: Francois Ramu Date: Thu, 22 Jun 2023 11:38:10 +0200 Subject: [PATCH] drivers: dma: stm32 dmamux device must be initialized after dma Add specific init priority for the stm32 DMAMUX device higher than the CONFIG_DMA_INIT_PRIORITY, to be sure that the DMAMUX initialization always comes after the stm32 DMA device init. Its default value is set to 41 when the DMA_INIT_PRIORITY is KERNEL_INIT_PRIORITY_DEFAULT (=40). Signed-off-by: Francois Ramu --- drivers/dma/Kconfig.stm32 | 8 ++++++++ drivers/dma/dmamux_stm32.c | 8 +++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/drivers/dma/Kconfig.stm32 b/drivers/dma/Kconfig.stm32 index 44b2971ce5..937d98be54 100644 --- a/drivers/dma/Kconfig.stm32 +++ b/drivers/dma/Kconfig.stm32 @@ -67,4 +67,12 @@ config DMA_STM32_BDMA help BDMA driver for STM32H7 series SoCs. +config DMAMUX_STM32_INIT_PRIORITY + int "STM32 DMAMUX init priority" + depends on DT_HAS_ST_STM32_DMAMUX_ENABLED + default 41 + help + DMAMUX driver device must be init'd after the DMA (CONFIG_DMA_INIT_PRIORITY) + DMAMUX driver device initialization priority is greater than DMA one's + endif # DMA_STM32 diff --git a/drivers/dma/dmamux_stm32.c b/drivers/dma/dmamux_stm32.c index 446aff86dd..bca6514190 100644 --- a/drivers/dma/dmamux_stm32.c +++ b/drivers/dma/dmamux_stm32.c @@ -422,7 +422,13 @@ DEVICE_DT_INST_DEFINE(index, \ &dmamux_stm32_init, \ NULL, \ &dmamux_stm32_data_##index, &dmamux_stm32_config_##index,\ - PRE_KERNEL_1, CONFIG_DMA_INIT_PRIORITY, \ + PRE_KERNEL_1, CONFIG_DMAMUX_STM32_INIT_PRIORITY, \ &dma_funcs); DT_INST_FOREACH_STATUS_OKAY(DMAMUX_INIT) + +/* + * Make sure that this driver is initialized after the DMA driver (higher priority) + */ +BUILD_ASSERT(CONFIG_DMAMUX_STM32_INIT_PRIORITY >= CONFIG_DMA_INIT_PRIORITY, + "CONFIG_DMAMUX_STM32_INIT_PRIORITY must be higher than CONFIG_DMA_INIT_PRIORITY");