#
# DMA engine configuration for sh
#

config RENESAS_DMA
	bool
	select DMA_ENGINE

#
# DMA Engine Helpers
#

config SH_DMAE_BASE
	bool "Renesas SuperH DMA Engine support"
	depends on SUPERH || ARCH_RENESAS || COMPILE_TEST
	depends on !SUPERH || SH_DMA
	depends on !SH_DMA_API
	default y
	select RENESAS_DMA
	help
	  Enable support for the Renesas SuperH DMA controllers.

#
# DMA Controllers
#

config SH_DMAE
	tristate "Renesas SuperH DMAC support"
	depends on SH_DMAE_BASE
	help
	  Enable support for the Renesas SuperH DMA controllers.

if SH_DMAE

config SH_DMAE_R8A73A4
	def_bool y
	depends on ARCH_R8A73A4
	depends on OF

endif

config RCAR_DMAC
	tristate "Renesas R-Car Gen2 DMA Controller"
	depends on ARCH_RENESAS || COMPILE_TEST
	select RENESAS_DMA
	help
	  This driver supports the general purpose DMA controller found in the
	  Renesas R-Car second generation SoCs.

config RENESAS_USB_DMAC
	tristate "Renesas USB-DMA Controller"
	depends on ARCH_RENESAS || COMPILE_TEST
	select RENESAS_DMA
	select DMA_VIRTUAL_CHANNELS
	help
	  This driver supports the USB-DMA controller found in the Renesas
	  SoCs.

config SUDMAC
	tristate "Renesas SUDMAC support"
	depends on SH_DMAE_BASE
	help
	  Enable support for the Renesas SUDMAC controllers.
