linux/include/sound
Kai Vehmanen f64bb48f27 ALSA: hda/hdmi: fix stream-id config keep-alive for rt suspend
[ Upstream commit ee0b089d66 ]

When the new style KAE keep-alive implementation is used on compatible
Intel hardware, the clocks are maintained when codec is in D3. The
generic code in hda_cleanup_all_streams() can however interfere with
generation of audio samples in this mode, by setting the stream and
channel ids to zero.

To get full benefit of the keepalive, set the new
no_stream_clean_at_suspend quirk bit on affected Intel hardware. When
this bit is set, stream cleanup is skipped in hda_call_codec_suspend().

Special handling is needed for the case when system goes to suspend. The
stream id programming can be lost in this case. This will also cause
codec->cvt_setups to be out of sync. Handle this by implementing custom
suspend/resume handlers. If keep-alive is active for any converter, set
the quirk flags no_stream_clean_at_suspend and forced_resume. Upon
resume, keepalive programming is restored if needed.

Fixes: 15175a4f2b ("ALSA: hda/hdmi: add keep-alive support for ADL-P and DG2")
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20221209101822.3893675-4-kai.vehmanen@linux.intel.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-12-31 13:33:07 +01:00
..
ac97
sof ASoC: SOF: dai: move AMD_HS to end of list to restore backwards-compatibility 2022-11-18 11:39:46 +00:00
ac97_codec.h
aci.h
acp62_chip_offset_byte.h ASoC: amd: add Pink Sardine platform ACP IP register header 2022-08-29 23:14:06 +01:00
ad1816a.h
ad1843.h
adau1373.h
ak4xxx-adda.h
ak4113.h
ak4114.h
ak4117.h
ak4531_codec.h
ak4641.h
alc5623.h
asequencer.h
asound.h
asoundef.h
compress_driver.h ALSA: compress: Drop unused functions 2021-07-15 10:22:30 +02:00
control.h ALSA: control: add snd_ctl_rename() 2022-10-21 08:17:08 +02:00
core.h ALSA: core: Add async signal helpers 2022-07-29 12:57:10 +02:00
cs35l33.h
cs35l34.h
cs35l35.h
cs35l36.h
cs35l41.h ASoC: Updates for v5.20 2022-07-15 16:11:58 +02:00
cs42l42.h ASoC: cs42l83: Extend CS42L42 support to new part 2022-09-19 18:05:35 +01:00
cs42l52.h
cs42l56.h
cs42l73.h
cs4231-regs.h
cs4271.h
cs8403.h
cs8427.h
da7213.h
da7218.h
da7219-aad.h
da7219.h
da9055.h
designware_i2s.h
dmaengine_pcm.h ALSA: dmaengine: Fix missing return value comments for kernel docs 2022-07-13 13:42:35 +02:00
emu10k1_synth.h
emu10k1.h ALSA: emu10k1: Allocate resources with device-managed APIs 2021-07-19 16:16:56 +02:00
emu8000_reg.h
emu8000.h ALSA: sb: Allocate resources with device-managed APIs 2021-07-19 16:17:14 +02:00
emux_legacy.h
emux_synth.h
es1688.h ALSA: es1688: Avoid devres management for es1688 object creation 2021-08-05 08:24:17 +02:00
graph_card.h ASoC: audio-graph-card2: add Codec2Codec support 2021-10-15 16:10:41 +01:00
gus.h
hda_chmap.h
hda_codec.h ALSA: hda/hdmi: fix stream-id config keep-alive for rt suspend 2022-12-31 13:33:07 +01:00
hda_component.h
hda_hwdep.h
hda_i915.h
hda_register.h ALSA: hda: cleanup definitions for multi-link registers 2022-08-23 10:14:24 +02:00
hda_regmap.h
hda_verbs.h ALSA: cleanup double word in comment 2022-02-11 15:18:56 +01:00
hdaudio_ext.h ALSA: hda: Use hdac_ext prefix in snd_hdac_stream_free_all() for clarity 2022-09-20 08:08:14 +02:00
hdaudio.h ALSA: hda: Update register polling macros 2022-10-09 12:34:32 +02:00
hdmi-codec.h ASoC: hdmi-codec: Update to modern DAI terminology 2022-06-13 14:56:07 +01:00
hwdep.h
i2c.h
info.h
initval.h
intel-dsp-config.h ASoC: Intel: avs: PCI driver implementation 2022-05-17 11:58:04 +01:00
intel-nhlt.h ALSA: hda: intel-nhlt: add intel_nhlt_ssp_mclk_mask() 2022-09-20 12:25:03 +01:00
jack.h ALSA: jack: Access input_dev under mutex 2022-04-12 12:19:05 +02:00
l3.h
madera-pdata.h ASoC: madera: Replace kernel.h with the necessary inclusions 2022-07-05 13:00:49 +01:00
max9768.h
max98088.h
max98090.h
max98095.h
memalloc.h ALSA: memalloc: Drop special handling of GFP for CONTINUOUS allocation 2022-08-24 08:00:26 +02:00
minors.h
mixer_oss.h
mpu401.h
omap-hdmi-audio.h
opl3.h
opl4.h
pcm_drm_eld.h
pcm_iec958.h ALSA: iec958: Split status creation and fill 2021-06-08 17:05:41 +02:00
pcm_oss.h
pcm_params.h
pcm-indirect.h
pcm.h ALSA: pcm: fix undefined behavior in bit shift for SNDRV_PCM_RATE_KNOT 2022-12-31 13:32:14 +01:00
pt2258.h
pxa2xx-lib.h Input: touchscreen: use wrapper for pxa2xx ac97 registers 2022-05-07 22:55:48 +02:00
rawmidi.h ALSA: rawmidi: Move lock to snd_rawmidi_substream 2022-06-20 09:36:02 +02:00
rt286.h
rt298.h
rt1015.h
rt5514.h
rt5659.h
rt5660.h
rt5663.h
rt5665.h
rt5668.h
rt5682.h
rt5682s.h ASoC: rt5682s: add delay time to fix pop sound issue 2021-12-08 13:07:58 +00:00
s3c24xx_uda134x.h
sb.h
sb16_csp.h
seq_device.h
seq_kernel.h
seq_midi_emul.h
seq_midi_event.h
seq_oss_legacy.h
seq_oss.h
seq_virmidi.h
sh_dac_audio.h
sh_fsi.h
simple_card_utils.h ASoC: simple-card: Fix up checks for HW param fixups 2022-10-19 13:39:34 +01:00
simple_card.h
snd_wavefront.h
soc-acpi-intel-match.h ASoC: Intel: HSW and BDW updates 2022-08-16 17:33:11 +01:00
soc-acpi.h ASoC: Intel: avs: Generic soc component driver 2022-05-17 11:57:53 +01:00
soc-card.h ASoC: Introduce 'fixup_controls' card method 2022-06-10 13:32:20 +01:00
soc-component.h ASoC: soc-component: Remove non_legacy_dai_naming flag 2022-06-27 13:17:43 +01:00
soc-dai.h ASoC: soc-dai: Remove set_fmt_new callback 2022-06-06 12:34:21 +01:00
soc-dapm.h ASoC: Export DAI register and widget ctor and dctor functions 2022-03-11 16:23:53 +00:00
soc-dpcm.h ASoC: soc-pcm: improve BE transition for PAUSE_RELEASE 2022-04-19 16:33:51 +01:00
soc-jack.h ASoC: add soc-jack.h 2020-11-30 12:54:02 +00:00
soc-link.h ASoC: soc-pcm: care trigger rollback 2020-12-09 12:13:38 +00:00
soc-topology.h ASoC: topology: Fix stub for snd_soc_tplg_component_remove() 2021-10-25 17:41:26 +01:00
soc.h ASoC: soc.h: use array instead of playback/capture_widget 2022-09-20 12:19:32 +01:00
sof.h ASoC: SOF: Introduce function sof_of_machine_select 2022-08-23 18:22:29 +01:00
soundfont.h
spear_dma.h
spear_spdif.h
sta32x.h
sta350.h
tas2552-plat.h
tas5086.h
tea6330t.h
timer.h
tlv.h
tlv320aic3x.h
tlv320aic32x4.h
tlv320dac33-plat.h
tpa6130a2-plat.h
uda134x.h
uda1380.h
util_mem.h
vx_core.h
wavefront.h
wm0010.h
wm1250-ev1.h
wm2000.h
wm2200.h
wm5100.h
wm8903.h
wm8904.h
wm8955.h
wm8960.h
wm8962.h
wm8993.h
wm8996.h
wm9081.h
wm9090.h
wss.h