# Intel ADSP HDA configuration options

# Copyright (c) 2022 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

DT_COMPAT_INTEL_ADSP_HDA_HOST_IN := intel,adsp-hda-host-in
DT_COMPAT_INTEL_ADSP_HDA_HOST_OUT := intel,adsp-hda-host-out
DT_COMPAT_INTEL_ADSP_HDA_LINK_IN := intel,adsp-hda-link-in
DT_COMPAT_INTEL_ADSP_HDA_LINK_OUT := intel,adsp-hda-link-out

config DMA_INTEL_ADSP_HDA_HOST_IN
	bool "Intel ADSP HDA Host In DMA drivers"
	default $(dt_compat_enabled,$(DT_COMPAT_INTEL_ADSP_HDA_HOST_IN))
	depends on DMA
	select DMA_INTEL_ADSP_HDA
	help
	  Intel ADSP Host HDA DMA driver.

config DMA_INTEL_ADSP_HDA_HOST_OUT
	bool "Intel ADSP HDA Host Out DMA drivers"
	default $(dt_compat_enabled,$(DT_COMPAT_INTEL_ADSP_HDA_HOST_OUT))
	depends on DMA
	select DMA_INTEL_ADSP_HDA
	help
	  Intel ADSP Host HDA DMA driver.

config DMA_INTEL_ADSP_HDA_LINK_IN
	bool "Intel ADSP HDA Link In DMA drivers"
	default $(dt_compat_enabled,$(DT_COMPAT_INTEL_ADSP_HDA_LINK_IN))
	depends on DMA
	select DMA_INTEL_ADSP_HDA
	help
	  Intel ADSP Link In HDA DMA driver.

config DMA_INTEL_ADSP_HDA_LINK_OUT
	bool "Intel ADSP HDA Link Out DMA drivers"
	default $(dt_compat_enabled,$(DT_COMPAT_INTEL_ADSP_HDA_LINK_OUT))
	depends on DMA
	select DMA_INTEL_ADSP_HDA
	help
	  Intel ADSP Link Out HDA DMA driver.

config DMA_INTEL_ADSP_HDA
	bool
	depends on DMA_INTEL_ADSP_HDA_LINK_OUT || DMA_INTEL_ADSP_HDA_LINK_IN || DMA_INTEL_ADSP_HDA_HOST_OUT || DMA_INTEL_ADSP_HDA_HOST_IN
	help
	  Intel ADSP HDA DMA driver.
