menu "HD-Audio"

config SND_HDA
	tristate
	select SND_PCM
	select SND_VMASTER
	select SND_JACK
	select SND_HDA_CORE

config SND_HDA_INTEL
	tristate "HD Audio PCI"
	depends on SND_PCI
	select SND_HDA
	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
	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_CODEC_REALTEK
	tristate "Build Realtek HD-audio codec support"
	select SND_HDA_GENERIC
	select INPUT
	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 Device HD-audio codec support"
	select SND_HDA_GENERIC
	help
	  Say Y or M here to include Analog Device 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
	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"
	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.

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_CONEXANT
	tristate "Build Conexant HD-audio codec support"
	select SND_HDA_GENERIC
	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_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
	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"
	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.

endif

endmenu
