# SPDX-License-Identifier: GPL-2.0-only
config QCOM_ADM
	tristate "Qualcomm ADM support"
	depends on (ARCH_QCOM || COMPILE_TEST) && !PHYS_ADDR_T_64BIT
	select DMA_ENGINE
	select DMA_VIRTUAL_CHANNELS
	help
	  Enable support for the Qualcomm Application Data Mover (ADM) DMA
	  controller, as present on MSM8x60, APQ8064, and IPQ8064 devices.
	  This controller provides DMA capabilities for both general purpose
	  and on-chip peripheral devices.

config QCOM_BAM_DMA
	tristate "Qualcomm BAM DMA support"
	depends on ARCH_QCOM || (COMPILE_TEST && OF && ARM)
	select DMA_ENGINE
	select DMA_VIRTUAL_CHANNELS
	help
	  Enable support for the QCOM BAM DMA controller.  This controller
	  provides DMA capabilities for a variety of on-chip devices.

config QCOM_GPI_DMA
        tristate "Qualcomm GPI DMA support"
        depends on ARCH_QCOM
        select DMA_ENGINE
        select DMA_VIRTUAL_CHANNELS
        help
          Enable support for the QCOM GPI DMA controller. This controller
          provides DMA capabilities for a variety of peripheral buses such
          as I2C, UART, and SPI. By using GPI dmaengine driver, bus drivers
          can use a standardize interface that is protocol independent to
          transfer data between DDR and peripheral.

config QCOM_HIDMA_MGMT
	tristate "Qualcomm HIDMA Management support"
	depends on HAS_IOMEM
	select DMA_ENGINE
	help
	  Enable support for the Qualcomm Technologies HIDMA Management.
	  Each DMA device requires one management interface driver
	  for basic initialization before QCOM_HIDMA channel driver can
	  start managing the channels. In a virtualized environment,
	  the guest OS would run QCOM_HIDMA channel driver and the
	  host would run the QCOM_HIDMA_MGMT management driver.

config QCOM_HIDMA
	tristate "Qualcomm HIDMA Channel support"
	depends on HAS_IOMEM
	select DMA_ENGINE
	help
	  Enable support for the Qualcomm Technologies HIDMA controller.
	  The HIDMA controller supports optimized buffer copies
	  (user to kernel, kernel to kernel, etc.).  It only supports
	  memcpy interface. The core is not intended for general
	  purpose slave DMA.
