linux/sound/pci/hda
Harsha Priya 951894cf30 ALSA: hda/hdmi: Add Intel silent stream support
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>
2020-07-07 12:42:35 +02:00
..
ca0132_regs.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 32 2019-05-24 17:27:10 +02:00
hda_auto_parser.c ASoC: Updates for v5.4 2019-09-10 13:03:08 +02:00
hda_auto_parser.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 46 2019-05-24 17:27:12 +02:00
hda_beep.c ALSA: hda: Fix potential access overflow in beep helper 2020-04-07 16:42:29 +02:00
hda_beep.h ALSA: hda - Use standard device registration for beep 2019-01-29 18:28:09 +01:00
hda_bind.c ALSA: hda - Fix pending unsol events at shutdown 2019-10-28 12:44:28 +01:00
hda_codec.c ALSA: hda: Always use jackpoll helper for jack update after resume 2020-04-23 12:24:14 +02:00
hda_controller_trace.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
hda_controller.c ALSA: hda: Enable sync-write operation as default for all controllers 2020-06-19 12:05:02 +02:00
hda_controller.h ALSA: hda: Enable sync-write operation as default for all controllers 2020-06-19 12:05:02 +02:00
hda_eld.c ALSA: hda: Use scnprintf() for printing texts for sysfs/procfs 2020-02-18 10:15:41 +01:00
hda_generic.c ALSA: hda: Let LED cdev handling suspend/resume 2020-06-18 13:24:33 +02:00
hda_generic.h ALSA: hda: generic: Add vmaster mute LED helper 2020-06-18 13:23:38 +02:00
hda_hwdep.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 32 2019-05-24 17:27:10 +02:00
hda_intel_trace.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
hda_intel.c ALSA: hda: Enable sync-write operation as default for all controllers 2020-06-19 12:05:02 +02:00
hda_intel.h ALSA: hda: Release resources at error in delayed probe 2020-04-13 18:02:36 +02:00
hda_jack.c ALSA: hda: correct kernel-doc parameter descriptions 2020-01-14 07:47:44 +01:00
hda_jack.h ALSA: hda - Add DP-MST jack support 2019-11-19 11:51:07 +01:00
hda_local.h ALSA: hda: Manage concurrent reg access more properly 2020-01-13 13:40:41 +01:00
hda_proc.c ALSA: hda: More constifications 2020-01-05 16:14:32 +01:00
hda_sysfs.c ALSA: hda: Use scnprintf() for printing texts for sysfs/procfs 2020-02-18 10:15:41 +01:00
hda_tegra.c ALSA: hda/tegra: workaround playback failure on Tegra194 2020-05-04 11:51:32 +02:00
hp_x360_helper.c ALSA: hda/realtek - Fixup for HP x360 laptops with B&O speakers 2018-05-29 22:33:37 +02:00
Kconfig ALSA: hda/hdmi: Add Intel silent stream support 2020-07-07 12:42:35 +02:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
patch_analog.c ALSA: hda/analog - Minor optimization for SPDIF mux connections 2020-01-16 17:29:17 +01:00
patch_ca0110.c ALSA: hda: Unify get_response handling 2019-12-13 14:36:52 +01:00
patch_ca0132.c Merge branch 'for-next' into for-linus 2020-03-30 09:46:51 +02:00
patch_cirrus.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 32 2019-05-24 17:27:10 +02:00
patch_cmedia.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 32 2019-05-24 17:27:10 +02:00
patch_conexant.c ALSA: hda/conexant: Use the new vmaster mute LED helper 2020-06-18 13:23:58 +02:00
patch_hdmi.c ALSA: hda/hdmi: Add Intel silent stream support 2020-07-07 12:42:35 +02:00
patch_realtek.c ALSA: hda/realtek: Unify LED helper code 2020-06-18 13:24:21 +02:00
patch_si3054.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 32 2019-05-24 17:27:10 +02:00
patch_sigmatel.c ALSA: hda/sigmatel: Use the new vmaster mute LED helper 2020-06-18 13:24:08 +02:00
patch_via.c ALSA: hda: Manage concurrent reg access more properly 2020-01-13 13:40:41 +01:00
thinkpad_helper.c ALSA: hda/realtek: Use the new vmaster mute LED helper 2020-06-18 13:23:49 +02:00