# DMA configuration options

# Copyright (c) 2016 Intel Corporation
# Copyright (c) 2019 Song Qiang <songqiang1304521@gmail.com>
# SPDX-License-Identifier: Apache-2.0

DT_COMPAT_ST_STM32_DMA_V1 := st,stm32-dma-v1
DT_COMPAT_ST_STM32_DMA_V2 := st,stm32-dma-v2
DT_COMPAT_ST_STM32_DMA_V2BIS := st,stm32-dma-v2bis
DT_COMPAT_ST_STM32_DMAMUX := st,stm32-dmamux

config DMA_STM32
	bool "Enable STM32 DMA driver"
	select USE_STM32_LL_DMA
	depends on SOC_FAMILY_STM32
	help
	  DMA driver for STM32 series SoCs.

if DMA_STM32

config DMA_STM32_V1
	bool
	default y if $(dt_compat_enabled,$(DT_COMPAT_ST_STM32_DMA_V1))
	help
	  Enable DMA V1 support.

config DMA_STM32_V2
	bool
	default y if $(dt_compat_enabled,$(DT_COMPAT_ST_STM32_DMA_V2)) \
			|| $(dt_compat_enabled,$(DT_COMPAT_ST_STM32_DMA_V2BIS))
	help
	  Enable DMA V2 or DMA V2bis support. With the versions V2 of DMA, the
	  peripheral request must be specified in the dma slot of the dma cell
	  With the versions V2 bis of DMA, the peripheral request (slot) is not
	  a parameter of the dma-cell.

config DMAMUX_STM32
	bool
	default $(dt_compat_enabled,$(DT_COMPAT_ST_STM32_DMAMUX))
	help
	  Enable DMAMUX support.

config DMA_STM32_SHARED_IRQS
	bool
	default y
	depends on SOC_SERIES_STM32F0X || SOC_SERIES_STM32G0X || SOC_SERIES_STM32L0X
	help
	  Enable shared IRQ support on devices where channels share 1 IRQ.

endif # DMA_STM32
