# SPDX-License-Identifier: GPL-2.0-only
menu "HD-Audio"

config SND_HDA
	tristate
	select SND_PCM
	select SND_VMASTER
	select SND_JACK
	select SND_HDA_CORE

config SND_HDA_GENERIC_LEDS
       bool

config SND_HDA_INTEL
	tristate "HD Audio PCI"
	depends on SND_PCI
	select SND_HDA
	select SND_INTEL_DSP_CONFIG
	help
	  Say Y here to include support for Intel "High Definition
	  Audio" (Azalia) and its compatible devices.

	  This option enables the HD-audio controller.  Don't forget
	  to choose the appropriate codec options below.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-hda-intel.

config SND_HDA_TEGRA
	tristate "NVIDIA Tegra HD Audio"
	depends on ARCH_TEGRA
	select SND_HDA
	select SND_HDA_ALIGNED_MMIO
	help
	  Say Y here to support the HDA controller present in NVIDIA
	  Tegra SoCs

	  This options enables support for the HD Audio controller
	  present in some NVIDIA Tegra SoCs, used to communicate audio
	  to the HDMI output.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-hda-tegra.

if SND_HDA

config SND_HDA_HWDEP
	bool "Build hwdep interface for HD-audio driver"
	select SND_HWDEP
	help
	  Say Y here to build a hwdep interface for HD-audio driver.
	  This interface can be used for out-of-band communication
	  with codecs for debugging purposes.

config SND_HDA_RECONFIG
	bool "Allow dynamic codec reconfiguration"
	help
	  Say Y here to enable the HD-audio codec re-configuration feature.
	  It allows user to clear the whole codec configuration, change the
	  codec setup, add extra verbs, and re-configure the codec dynamically.

	  Note that this item alone doesn't provide the sysfs interface, but
	  enables the feature just for the patch loader below.
	  If you need the traditional sysfs entries for the manual interaction,
	  turn on CONFIG_SND_HDA_HWDEP as well.

config SND_HDA_INPUT_BEEP
	bool "Support digital beep via input layer"
	depends on INPUT=y || INPUT=SND_HDA
	help
	  Say Y here to build a digital beep interface for HD-audio
	  driver. This interface is used to generate digital beeps.

config SND_HDA_INPUT_BEEP_MODE
	int "Digital beep registration mode (0=off, 1=on)"
	depends on SND_HDA_INPUT_BEEP=y
	default "1"
	range 0 1
	help
	  Set 0 to disable the digital beep interface for HD-audio by default.
	  Set 1 to always enable the digital beep interface for HD-audio by
	  default.

config SND_HDA_PATCH_LOADER
	bool "Support initialization patch loading for HD-audio"
	select FW_LOADER
	select SND_HDA_RECONFIG
	help
	  Say Y here to allow the HD-audio driver to load a pseudo
	  firmware file ("patch") for overriding the BIOS setup at
	  start up.  The "patch" file can be specified via patch module
	  option, such as patch=hda-init.

config SND_HDA_CIRRUS_SCODEC
	tristate

config SND_HDA_CIRRUS_SCODEC_KUNIT_TEST
	tristate "KUnit test for Cirrus side-codec library" if !KUNIT_ALL_TESTS
	select SND_HDA_CIRRUS_SCODEC
	select GPIOLIB
	depends on KUNIT
	default KUNIT_ALL_TESTS
	help
	  This builds KUnit tests for the cirrus side-codec library.
	  For more information on KUnit and unit tests in general,
	  please refer to the KUnit documentation in
	  Documentation/dev-tools/kunit/.
	  If in doubt, say "N".

config SND_HDA_SCODEC_CS35L41
	tristate
	select SND_HDA_GENERIC
	select REGMAP_IRQ

config SND_HDA_CS_DSP_CONTROLS
	tristate
	select FW_CS_DSP

config SND_HDA_SCODEC_COMPONENT
	tristate

config SND_HDA_SCODEC_CS35L41_I2C
	tristate "Build CS35L41 HD-audio side codec support for I2C Bus"
	depends on I2C
	depends on ACPI
	depends on EFI
	depends on SND_SOC
	select SND_SOC_CS35L41_LIB
	select SND_HDA_SCODEC_CS35L41
	select SND_HDA_CS_DSP_CONTROLS
	select SND_SOC_CS_AMP_LIB
	help
	  Say Y or M here to include CS35L41 I2C HD-audio side codec support
	  in snd-hda-intel driver, such as ALC287.

comment "Set to Y if you want auto-loading the side codec driver"
	depends on SND_HDA=y && SND_HDA_SCODEC_CS35L41_I2C=m

config SND_HDA_SCODEC_CS35L41_SPI
	tristate "Build CS35L41 HD-audio codec support for SPI Bus"
	depends on SPI_MASTER
	depends on ACPI
	depends on EFI
	depends on SND_SOC
	select SND_SOC_CS35L41_LIB
	select SND_HDA_SCODEC_CS35L41
	select SND_HDA_CS_DSP_CONTROLS
	select SND_SOC_CS_AMP_LIB
	help
	  Say Y or M here to include CS35L41 SPI HD-audio side codec support
	  in snd-hda-intel driver, such as ALC287.

comment "Set to Y if you want auto-loading the side codec driver"
	depends on SND_HDA=y && SND_HDA_SCODEC_CS35L41_SPI=m

config SND_HDA_SCODEC_CS35L56
	tristate

config SND_HDA_SCODEC_CS35L56_I2C
	tristate "Build CS35L56 HD-audio side codec support for I2C Bus"
	depends on I2C
	depends on ACPI || COMPILE_TEST
	depends on SND_SOC
	select FW_CS_DSP
	imply SERIAL_MULTI_INSTANTIATE
	select SND_HDA_GENERIC
	select SND_SOC_CS35L56_SHARED
	select SND_HDA_SCODEC_CS35L56
	select SND_HDA_CIRRUS_SCODEC
	select SND_HDA_CS_DSP_CONTROLS
	select SND_SOC_CS_AMP_LIB
	help
	  Say Y or M here to include CS35L56 amplifier support with
	  I2C control.

config SND_HDA_SCODEC_CS35L56_SPI
	tristate "Build CS35L56 HD-audio side codec support for SPI Bus"
	depends on SPI_MASTER
	depends on ACPI || COMPILE_TEST
	depends on SND_SOC
	select FW_CS_DSP
	imply SERIAL_MULTI_INSTANTIATE
	select SND_HDA_GENERIC
	select SND_SOC_CS35L56_SHARED
	select SND_HDA_SCODEC_CS35L56
	select SND_HDA_CIRRUS_SCODEC
	select SND_HDA_CS_DSP_CONTROLS
	select SND_SOC_CS_AMP_LIB
	help
	  Say Y or M here to include CS35L56 amplifier support with
	  SPI control.

config SND_HDA_SCODEC_TAS2781_I2C
	tristate "Build TAS2781 HD-audio side codec support for I2C Bus"
	depends on I2C
	depends on ACPI
	depends on EFI
	depends on SND_SOC
	select SND_SOC_TAS2781_COMLIB
	select SND_SOC_TAS2781_FMWLIB
	select CRC32_SARWATE
	help
	  Say Y or M here to include TAS2781 I2C HD-audio side codec support
	  in snd-hda-intel driver, such as ALC287.

comment "Set to Y if you want auto-loading the side codec driver"
	depends on SND_HDA=y && SND_HDA_SCODEC_TAS2781_I2C=m

config SND_HDA_CODEC_REALTEK
	tristate "Build Realtek HD-audio codec support"
	select SND_HDA_GENERIC
	select SND_HDA_GENERIC_LEDS
	select SND_HDA_SCODEC_COMPONENT
	help
	  Say Y or M here to include Realtek HD-audio codec support in
	  snd-hda-intel driver, such as ALC880.

comment "Set to Y if you want auto-loading the codec driver"
	depends on SND_HDA=y && SND_HDA_CODEC_REALTEK=m

config SND_HDA_CODEC_ANALOG
	tristate "Build Analog Devices HD-audio codec support"
	select SND_HDA_GENERIC
	help
	  Say Y or M here to include Analog Devices HD-audio codec support in
	  snd-hda-intel driver, such as AD1986A.

comment "Set to Y if you want auto-loading the codec driver"
	depends on SND_HDA=y && SND_HDA_CODEC_ANALOG=m

config SND_HDA_CODEC_SIGMATEL
	tristate "Build IDT/Sigmatel HD-audio codec support"
	select SND_HDA_GENERIC
	select SND_HDA_GENERIC_LEDS
	help
	  Say Y or M here to include IDT (Sigmatel) HD-audio codec support in
	  snd-hda-intel driver, such as STAC9200.

comment "Set to Y if you want auto-loading the codec driver"
	depends on SND_HDA=y && SND_HDA_CODEC_SIGMATEL=m

config SND_HDA_CODEC_VIA
	tristate "Build VIA HD-audio codec support"
	select SND_HDA_GENERIC
	help
	  Say Y or M here to include VIA HD-audio codec support in
	  snd-hda-intel driver, such as VT1708.

comment "Set to Y if you want auto-loading the codec driver"
	depends on SND_HDA=y && SND_HDA_CODEC_VIA=m

config SND_HDA_CODEC_HDMI
	tristate "Build HDMI/DisplayPort HD-audio codec support"
	select SND_DYNAMIC_MINORS
	help
	  Say Y or M here to include HDMI and DisplayPort HD-audio codec
	  support in snd-hda-intel driver.  This includes all AMD/ATI,
	  Intel and Nvidia HDMI/DisplayPort codecs.

	  Note that this option mandatorily enables CONFIG_SND_DYNAMIC_MINORS
	  to assure the multiple streams for DP-MST support.

comment "Set to Y if you want auto-loading the codec driver"
	depends on SND_HDA=y && SND_HDA_CODEC_HDMI=m

config SND_HDA_CODEC_CIRRUS
	tristate "Build Cirrus Logic codec support"
	select SND_HDA_GENERIC
	help
	  Say Y or M here to include Cirrus Logic codec support in
	  snd-hda-intel driver, such as CS4206.

comment "Set to Y if you want auto-loading the codec driver"
	depends on SND_HDA=y && SND_HDA_CODEC_CIRRUS=m

config SND_HDA_CODEC_CS8409
	tristate "Build Cirrus Logic HDA bridge support"
	select SND_HDA_GENERIC
	help
	  Say Y or M here to include Cirrus Logic HDA bridge support in
	  snd-hda-intel driver, such as CS8409.

comment "Set to Y if you want auto-loading the codec driver"
	depends on SND_HDA=y && SND_HDA_CODEC_CS8409=m

config SND_HDA_CODEC_CONEXANT
	tristate "Build Conexant HD-audio codec support"
	select SND_HDA_GENERIC
	select SND_HDA_GENERIC_LEDS
	help
	  Say Y or M here to include Conexant HD-audio codec support in
	  snd-hda-intel driver, such as CX20549.

comment "Set to Y if you want auto-loading the codec driver"
	depends on SND_HDA=y && SND_HDA_CODEC_CONEXANT=m

config SND_HDA_CODEC_SENARYTECH
	tristate "Build Senarytech HD-audio codec support"
	select SND_HDA_GENERIC
	select SND_HDA_GENERIC_LEDS
	help
	  Say Y or M here to include Senarytech HD-audio codec support in
	  snd-hda-intel driver, such as SN6186.

comment "Set to Y if you want auto-loading the codec driver"
	depends on SND_HDA=y && SND_HDA_CODEC_SENARYTECH=m

config SND_HDA_CODEC_CA0110
	tristate "Build Creative CA0110-IBG codec support"
	select SND_HDA_GENERIC
	help
	  Say Y or M here to include Creative CA0110-IBG codec support in
	  snd-hda-intel driver, found on some Creative X-Fi cards.

comment "Set to Y if you want auto-loading the codec driver"
	depends on SND_HDA=y && SND_HDA_CODEC_CA0110=m

config SND_HDA_CODEC_CA0132
	tristate "Build Creative CA0132 codec support"
	help
	  Say Y or M here to include Creative CA0132 codec support in
	  snd-hda-intel driver.

comment "Set to Y if you want auto-loading the codec driver"
	depends on SND_HDA=y && SND_HDA_CODEC_CA0132=m

config SND_HDA_CODEC_CA0132_DSP
	bool "Support new DSP code for CA0132 codec"
	depends on SND_HDA_CODEC_CA0132
	default y
	select SND_HDA_DSP_LOADER
	select FW_LOADER
	help
	  Say Y here to enable the DSP for Creative CA0132 for extended
	  features like equalizer or echo cancellation.

	  Note that this option requires the external firmware file
	  (ctefx.bin).

config SND_HDA_CODEC_CMEDIA
	tristate "Build C-Media HD-audio codec support"
	select SND_HDA_GENERIC
	help
	  Say Y or M here to include C-Media HD-audio codec support in
	  snd-hda-intel driver, such as CMI9880.

comment "Set to Y if you want auto-loading the codec driver"
	depends on SND_HDA=y && SND_HDA_CODEC_CMEDIA=m

config SND_HDA_CODEC_SI3054
	tristate "Build Silicon Labs 3054 HD-modem codec support"
	help
	  Say Y or M here to include Silicon Labs 3054 HD-modem codec
	  (and compatibles) support in snd-hda-intel driver.

comment "Set to Y if you want auto-loading the codec driver"
	depends on SND_HDA=y && SND_HDA_CODEC_SI3054=m

config SND_HDA_GENERIC
	tristate "Enable generic HD-audio codec parser"
	select SND_CTL_LED if SND_HDA_GENERIC_LEDS
	select LEDS_CLASS if SND_HDA_GENERIC_LEDS
	help
	  Say Y or M here to enable the generic HD-audio codec parser
	  in snd-hda-intel driver.

comment "Set to Y if you want auto-loading the codec driver"
	depends on SND_HDA=y && SND_HDA_GENERIC=m

config SND_HDA_POWER_SAVE_DEFAULT
	int "Default time-out for HD-audio power-save mode"
	depends on PM
	default 0
	help
	  The default time-out value in seconds for HD-audio automatic
	  power-save mode.  0 means to disable the power-save mode.

config SND_HDA_INTEL_HDMI_SILENT_STREAM
	bool "Enable Silent Stream always for HDMI"
	depends on SND_HDA_INTEL
	help
	  Say Y to enable HD-Audio Keep Alive (KAE) aka Silent Stream
	  for HDMI on hardware that supports the feature.

	  When enabled, the HDMI/DisplayPort codec will continue to provide
	  a continuous clock and a valid but silent data stream to
	  any connected external receiver. This allows to avoid gaps
	  at start of playback. Many receivers require multiple seconds
	  to start playing audio after the clock has been stopped.
	  This feature can impact power consumption as resources
	  are kept reserved both at transmitter and receiver.

config SND_HDA_CTL_DEV_ID
	bool "Use the device identifier field for controls"
	depends on SND_HDA_INTEL
	help
	  Say Y to use the device identifier field for (mixer)
	  controls (old behaviour until this option is available).

	  When enabled, the multiple HDA codecs may set the device
	  field in control (mixer) element identifiers. The use
	  of this field is not recommended and defined for mixer controls.

	  The old behaviour (Y) is obsolete and will be removed. Consider
	  to not enable this option.

endif

endmenu
