drivers: dma: stm32: add support for stm32h7

Add the missing parts for adding support
to stm32h7 dma driver.
The fix is to make dmamux driver work with
dma v1 driver.

Signed-off-by: Shlomi Vaknin <shlomi.39sd@gmail.com>
diff --git a/drivers/dma/Kconfig.stm32 b/drivers/dma/Kconfig.stm32
index 97ea8d6..564a12c 100644
--- a/drivers/dma/Kconfig.stm32
+++ b/drivers/dma/Kconfig.stm32
@@ -31,7 +31,6 @@
 
 config DMAMUX_STM32
 	bool
-	depends on DMA_STM32_V2
 	default $(dt_compat_enabled,$(DT_COMPAT_ST_STM32_DMAMUX))
 	help
 	  Enable DMAMUX support.
diff --git a/drivers/dma/dma_stm32.c b/drivers/dma/dma_stm32.c
index 1087b9a..7e7c415 100644
--- a/drivers/dma/dma_stm32.c
+++ b/drivers/dma/dma_stm32.c
@@ -423,6 +423,7 @@
 	DMA_InitStruct.PeriphBurst = stm32_dma_get_pburst(config,
 							stream->source_periph);
 
+#if !defined(CONFIG_SOC_SERIES_STM32H7X)
 	if (config->channel_direction != MEMORY_TO_MEMORY) {
 		if (config->dma_slot >= 8) {
 			LOG_ERR("dma slot error.");
@@ -434,7 +435,9 @@
 			config->dma_slot = 0;
 		}
 	}
+
 	DMA_InitStruct.Channel = dma_stm32_slot_to_channel(config->dma_slot);
+#endif
 
 	DMA_InitStruct.FIFOThreshold = stm32_dma_get_fifo_threshold(
 					config->head_block->fifo_mode_control);
@@ -562,7 +565,7 @@
 		return -EINVAL;
 	}
 
-#ifndef CONFIG_DMAMUX_STM32
+#if !defined(CONFIG_DMAMUX_STM32) || defined(CONFIG_SOC_SERIES_STM32H7X)
 	LL_DMA_DisableIT_TC(dma, dma_stm32_id_to_stream(id));
 #endif /* CONFIG_DMAMUX_STM32 */
 
diff --git a/drivers/dma/dma_stm32.h b/drivers/dma/dma_stm32.h
index 2fac7e0..5d32fc9 100644
--- a/drivers/dma/dma_stm32.h
+++ b/drivers/dma/dma_stm32.h
@@ -44,17 +44,17 @@
 	struct dma_stm32_stream *streams;
 };
 
-#ifdef CONFIG_DMA_STM32_V1
-/* from DTS the dma stream id is in range 0..<dma-requests>-1 */
-#define STREAM_OFFSET 0
-#else
+#if defined(CONFIG_DMAMUX_STM32) || defined(CONFIG_DMA_STM32_V2)
 /* from DTS the dma stream id is in range 1..<dma-requests> */
 /* so decrease to set range from 0 from now on */
 #define STREAM_OFFSET 1
-#endif /* CONFIG_DMA_STM32_V1 */
+#else
+/* from DTS the dma stream id is in range 0..<dma-requests>-1 */
+#define STREAM_OFFSET 0
+#endif /* CONFIG_DMAMUX_STM32 || CONFIG_DMA_STM32_V2 */
 
 uint32_t dma_stm32_id_to_stream(uint32_t id);
-#ifdef CONFIG_DMA_STM32_V1
+#if !defined(CONFIG_DMAMUX_STM32)
 uint32_t dma_stm32_slot_to_channel(uint32_t id);
 #endif
 
@@ -90,7 +90,11 @@
 bool stm32_dma_is_unexpected_irq_happened(DMA_TypeDef *dma, uint32_t id);
 void stm32_dma_enable_stream(DMA_TypeDef *dma, uint32_t id);
 int stm32_dma_disable_stream(DMA_TypeDef *dma, uint32_t id);
-void stm32_dma_config_channel_function(DMA_TypeDef *dma, uint32_t id, uint32_t slot);
+
+#if !defined(CONFIG_DMAMUX_STM32)
+void stm32_dma_config_channel_function(DMA_TypeDef *dma, uint32_t id,
+						uint32_t slot);
+#endif
 
 #ifdef CONFIG_DMA_STM32_V1
 void stm32_dma_disable_fifo_irq(DMA_TypeDef *dma, uint32_t id);
diff --git a/drivers/dma/dma_stm32_v1.c b/drivers/dma/dma_stm32_v1.c
index b03f4a8..52ec3b3 100644
--- a/drivers/dma/dma_stm32_v1.c
+++ b/drivers/dma/dma_stm32_v1.c
@@ -35,6 +35,7 @@
 	return stream_nr[id];
 }
 
+#if !defined(CONFIG_DMAMUX_STM32)
 uint32_t dma_stm32_slot_to_channel(uint32_t slot)
 {
 	static const uint32_t channel_nr[] = {
@@ -52,6 +53,7 @@
 
 	return channel_nr[slot];
 }
+#endif
 
 void dma_stm32_clear_ht(DMA_TypeDef *DMAx, uint32_t id)
 {
@@ -334,11 +336,14 @@
 	LL_DMA_DisableIT_FE(dma, dma_stm32_id_to_stream(id));
 }
 
-void stm32_dma_config_channel_function(DMA_TypeDef *dma, uint32_t id, uint32_t slot)
+#if !defined(CONFIG_DMAMUX_STM32)
+void stm32_dma_config_channel_function(DMA_TypeDef *dma, uint32_t id,
+					uint32_t slot)
 {
 	LL_DMA_SetChannelSelection(dma, dma_stm32_id_to_stream(id),
 			dma_stm32_slot_to_channel(slot));
 }
+#endif
 
 uint32_t stm32_dma_get_mburst(struct dma_config *config, bool source_periph)
 {