# 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 "QCOM 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 Technologies 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 Technologies 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 Technologies HIDMA Channel support"
	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.
