# SPDX-License-Identifier: GPL-2.0-only
#
# SoC audio configuration
#

menuconfig SND_SOC
	tristate "ALSA for SoC audio support"
	select SND_PCM
	select AC97_BUS if SND_SOC_AC97_BUS
	select SND_JACK
	select REGMAP_I2C if I2C
	select REGMAP_SPI if SPI_MASTER
	help

	  If you want ASoC support, you should say Y here and also to the
	  specific driver for your SoC platform below.

	  ASoC provides power efficient ALSA support for embedded battery powered
	  SoC based systems like PDA's, Phones and Personal Media Players.

	  This ASoC audio support can also be built as a module.  If so, the module
	  will be called snd-soc-core.

if SND_SOC

config SND_SOC_AC97_BUS
	bool

config SND_SOC_GENERIC_DMAENGINE_PCM
	bool
	select SND_DMAENGINE_PCM

config SND_SOC_COMPRESS
	bool
	select SND_COMPRESS_OFFLOAD

config SND_SOC_TOPOLOGY
	bool
	select SND_DYNAMIC_MINORS

config SND_SOC_TOPOLOGY_BUILD
	bool "Build topology core"
	select SND_SOC_TOPOLOGY
	depends on KUNIT
	help
	  This option exists to facilitate running the KUnit tests for
	  the topology core, KUnit is frequently tested in virtual
	  environments with minimal drivers enabled but the topology
	  core is usually selected by drivers.  There is little reason
	  to enable it if not doing a KUnit build.

config SND_SOC_TOPOLOGY_KUNIT_TEST
	tristate "KUnit tests for SoC topology"
	depends on KUNIT
	depends on SND_SOC_TOPOLOGY
	default KUNIT_ALL_TESTS
	help
	  If you want to perform tests on ALSA SoC topology support say Y here.

	  This builds a module which can be later manually loaded to run KUNIT
	  test cases against soc-topology.c API. This should be primarily used
	  by developers to test their changes to ASoC.

	  Do note that it creates fake playback devices which do not interact
	  well with userspace. When running tests one may want to disable
	  userspace applications such as pulseaudio, to prevent unnecessary
	  problems.

config SND_SOC_CARD_KUNIT_TEST
	tristate "KUnit tests for SoC card"
	depends on KUNIT
	default KUNIT_ALL_TESTS
	help
	  If you want to perform tests on ALSA SoC card functions say Y here.
	  If unsure, say N.

config SND_SOC_UTILS_KUNIT_TEST
	tristate "KUnit tests for SoC utils"
	depends on KUNIT
	default KUNIT_ALL_TESTS
	help
	  If you want to perform tests on ALSA SoC utils library say Y here.

config SND_SOC_OPS_KUNIT_TEST
	tristate "KUnit tests for SoC ops"
	depends on KUNIT
	default KUNIT_ALL_TESTS
	help
	  If you want to perform tests on ALSA SoC ops library say Y here.

config SND_SOC_ACPI
	tristate

config SND_SOC_USB
	tristate "SoC based USB audio offloading"
	depends on SND_USB_AUDIO
	help
	  Enable this option if an ASoC platform card has support to handle
	  USB audio offloading.  This enables the SoC USB layer, which will
	  notify the ASoC USB DPCM backend DAI link about available USB audio
	  devices.  Based on the notifications, sequences to enable the audio
	  stream can be taken based on the design.

# All the supported SoCs
source "sound/soc/adi/Kconfig"
source "sound/soc/amd/Kconfig"
source "sound/soc/apple/Kconfig"
source "sound/soc/atmel/Kconfig"
source "sound/soc/au1x/Kconfig"
source "sound/soc/bcm/Kconfig"
source "sound/soc/cirrus/Kconfig"
source "sound/soc/dwc/Kconfig"
source "sound/soc/fsl/Kconfig"
source "sound/soc/google/Kconfig"
source "sound/soc/hisilicon/Kconfig"
source "sound/soc/jz4740/Kconfig"
source "sound/soc/kirkwood/Kconfig"
source "sound/soc/loongson/Kconfig"
source "sound/soc/img/Kconfig"
source "sound/soc/intel/Kconfig"
source "sound/soc/mediatek/Kconfig"
source "sound/soc/meson/Kconfig"
source "sound/soc/mxs/Kconfig"
source "sound/soc/pxa/Kconfig"
source "sound/soc/qcom/Kconfig"
source "sound/soc/renesas/Kconfig"
source "sound/soc/rockchip/Kconfig"
source "sound/soc/samsung/Kconfig"
source "sound/soc/sdca/Kconfig"
source "sound/soc/sophgo/Kconfig"
source "sound/soc/spacemit/Kconfig"
source "sound/soc/spear/Kconfig"
source "sound/soc/sprd/Kconfig"
source "sound/soc/starfive/Kconfig"
source "sound/soc/sti/Kconfig"
source "sound/soc/stm/Kconfig"
source "sound/soc/sunxi/Kconfig"
source "sound/soc/tegra/Kconfig"
source "sound/soc/ti/Kconfig"
source "sound/soc/uniphier/Kconfig"
source "sound/soc/ux500/Kconfig"
source "sound/soc/xilinx/Kconfig"
source "sound/soc/xtensa/Kconfig"

# SOF
source "sound/soc/sof/Kconfig"

# Supported codecs
source "sound/soc/codecs/Kconfig"

source "sound/soc/sdw_utils/Kconfig"

# generic frame-work
source "sound/soc/generic/Kconfig"

endif	# SND_SOC

