# SPDX-License-Identifier: GPL-2.0-only

config MTK_HSDMA
	tristate "MediaTek High-Speed DMA controller support"
	depends on ARCH_MEDIATEK || COMPILE_TEST
	select DMA_ENGINE
	select DMA_VIRTUAL_CHANNELS
	---help---
	  Enable support for High-Speed DMA controller on MediaTek
	  SoCs.

	  This controller provides the channels which is dedicated to
	  memory-to-memory transfer to offload from CPU through ring-
	  based descriptor management.

config MTK_CQDMA
	tristate "MediaTek Command-Queue DMA controller support"
	depends on ARCH_MEDIATEK || COMPILE_TEST
	select DMA_ENGINE
	select DMA_VIRTUAL_CHANNELS
	select ASYNC_TX_ENABLE_CHANNEL_SWITCH
	help
	  Enable support for Command-Queue DMA controller on MediaTek
	  SoCs.

	  This controller provides the channels which is dedicated to
	  memory-to-memory transfer to offload from CPU.

config MTK_UART_APDMA
	tristate "MediaTek SoCs APDMA support for UART"
	depends on OF && SERIAL_8250_MT6577
	select DMA_ENGINE
	select DMA_VIRTUAL_CHANNELS
	help
	  Support for the UART DMA engine found on MediaTek MTK SoCs.
	  When SERIAL_8250_MT6577 is enabled, and if you want to use DMA,
	  you can enable the config. The DMA engine can only be used
	  with MediaTek SoCs.
