# SPDX-License-Identifier: GPL-2.0-only
config SND_HDA_CORE
	tristate
	select REGMAP

config SND_HDA_DSP_LOADER
	bool

config SND_HDA_ALIGNED_MMIO
	bool

config SND_HDA_COMPONENT
	bool

config SND_HDA_I915
	bool
	select SND_HDA_COMPONENT

config SND_HDA_EXT_CORE
       tristate
       select SND_HDA_CORE

config SND_HDA_PREALLOC_SIZE
	int "Pre-allocated buffer size for HD-audio driver" if !SND_DMA_SGBUF
	range 0 32768
	default 0 if SND_DMA_SGBUF
	default 64 if !SND_DMA_SGBUF
	help
	  Specifies the default pre-allocated buffer-size in kB for the
	  HD-audio driver.  A larger buffer (e.g. 2048) is preferred
	  for systems using PulseAudio.  The default 64 is chosen just
	  for compatibility reasons.
	  On x86 systems, the default is zero as we need no preallocation.

	  Note that the pre-allocation size can be changed dynamically
	  via a proc file (/proc/asound/card*/pcm*/sub*/prealloc), too.

config SND_INTEL_NHLT
	bool
	# this config should be selected only for Intel ACPI platforms.
	# A fallback is provided so that the code compiles in all cases.

config SND_INTEL_DSP_CONFIG
	tristate
	select ACPI_NHLT if ACPI
	select SND_INTEL_NHLT if ACPI
	select SND_INTEL_SOUNDWIRE_ACPI if ACPI
	# this config should be selected only for Intel DSP platforms.
	# A fallback is provided so that the code compiles in all cases.

config SND_INTEL_SOUNDWIRE_ACPI
	tristate

config SND_INTEL_BYT_PREFER_SOF
	bool "Prefer SOF driver over SST on BY/CHT platforms"
	depends on SND_SST_ATOM_HIFI2_PLATFORM_ACPI && SND_SOC_SOF_BAYTRAIL
	default n
	help
	  The kernel has 2 drivers for the Low Power Engine audio-block on
	  Bay- and Cherry-Trail SoCs. The old SST driver and the new SOF
	  driver. If both drivers are enabled then the kernel will default
	  to using the old SST driver, unless told otherwise through the
	  snd_intel_dspcfg.dsp_driver module-parameter.

	  Set this option to Y to make the kernel default to the new SOF
	  driver instead.
