mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 19:29:37 +00:00
![Harsha Priya](/assets/img/avatar_default.png)
External HDMI receivers have analog circuitry that needs to be powered-on when exiting standby, and a mechanism to detect PCM v. IEC61937 data. These two steps take time and up to 2-3 seconds of audio may be muted when starting playback. Intel hardware (Haswell and beyond) can keep the link active with a 'silent stream', so that the receiver does not go through those two steps when valid audio is transmitted. This mechanism relies on an setting the channel_id as 0xf, sending info packet and preventing the codec from going to D3, which will increase the platform static power consumption. The info packet assumes a basic 2ch stereo, and the silent stream is enabled when connecting a monitor. In case of format changes the detection of PCM v. IEC61937 needs to be re-run. In this case there is no way to avoid the 2-3s mute. The silent stream is enabled with a Kconfig option, as well as a kernel parameter should there be a need to override the build time default. This approach is used based on the power_save capability as an example, but in the future, it may be used with a kcontrol, depending on UCM support for HDaudio legacy. Signed-off-by: Harsha Priya <harshapriya.n@intel.com> Signed-off-by: Emmanuel Jillela <emmanuel.jillela@intel.com> Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Reported-by: kernel test robot <lkp@intel.com> Link: https://lore.kernel.org/r/1594068797-14011-1-git-send-email-harshapriya.n@intel.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
259 lines
8.2 KiB
Text
259 lines
8.2 KiB
Text
# 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_CODEC_REALTEK
|
|
tristate "Build Realtek HD-audio codec support"
|
|
select SND_HDA_GENERIC
|
|
select SND_HDA_GENERIC_LEDS
|
|
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_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_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 NEW_LEDS if SND_HDA_GENERIC_LEDS
|
|
select LEDS_CLASS if SND_HDA_GENERIC_LEDS
|
|
select LEDS_TRIGGERS if SND_HDA_GENERIC_LEDS
|
|
select LEDS_TRIGGER_AUDIO 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
|
|
Intel hardware has a feature called 'silent stream', that
|
|
keeps external HDMI receiver's analog circuitry powered on
|
|
avoiding 2-3 sec silence during playback start. This mechanism
|
|
relies on setting channel_id as 0xf, sending info packet and
|
|
preventing codec D3 entry (increasing platform static power
|
|
consumption when HDMI receiver is plugged-in). 2-3 sec silence
|
|
at the playback start is expected whenever there is format change.
|
|
(default is 2 channel format).
|
|
Say Y to enable Silent Stream feature.
|
|
|
|
endif
|
|
|
|
endmenu
|