linux/sound/soc/sof
Kai Vehmanen fd572393ba
ASoC: SOF: Intel: hda: fix hotplug when only codec is suspended
If codec is in runtime suspend, but controller is not, hotplug events
are missed as the codec has no way to alert the controller. Problem does
not occur if both controller and codec are active, or when both are
suspended.

An easy way to reproduce is to play an audio stream on one codec (e.g.
to HDMI/DP display codec), wait for other HDA codec to go to runtime
suspend, and then plug in a headset to the suspended codec. The jack
event is not reported correctly in this case. Another way to reproduce
is to force controller to stay active with
"snd_sof_pci.sof_pci_debug=0x1"

Fix the issue by reconfiguring the WAKEEN register when powering up/down
individual links, and handling control events in the interrupt handler.

Fixes: 87fc20e4a0 ("ASoC: SOF: Intel: hda: use hdac_ext fine-grained link management")
Reported-by: Hui Wang <hui.wang@canonical.com>
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/20211105111655.668777-1-kai.vehmanen@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2021-11-05 12:58:11 +00:00
..
imx Linux 5.15-rc6 2021-10-18 13:50:42 +01:00
intel ASoC: SOF: Intel: hda: fix hotplug when only codec is suspended 2021-11-05 12:58:11 +00:00
xtensa Linux 5.15-rc6 2021-10-18 13:50:42 +01:00
compress.c ASoC: SOF: Introduce fragment elapsed notification API 2021-10-07 16:57:57 +01:00
control.c ASoC: SOF:control: Fix variable type in snd_sof_refresh_control() 2021-11-04 13:33:22 +00:00
core.c Linux 5.15-rc6 2021-10-18 13:50:42 +01:00
debug.c ASoC: SOF: debug: Print out the fw_state along with the DSP dump 2021-10-07 15:45:33 +01:00
ipc.c ASoC: SOF: prepare code to allocate IPC messages in fw_ready 2021-10-08 13:51:16 +01:00
Kconfig ASoC: SOF: Introduce fragment elapsed notification API 2021-10-07 16:57:57 +01:00
loader.c Linux 5.15-rc6 2021-10-18 13:50:42 +01:00
Makefile ASoC: SOF: Introduce fragment elapsed notification API 2021-10-07 16:57:57 +01:00
nocodec.c ASOC: SOF: simplify nocodec mode 2021-04-12 17:05:55 +01:00
ops.c ASoC: SOF: ops: Force DSP panic dumps to be printed 2021-10-07 15:45:35 +01:00
ops.h Merge series "Introduce new SOF helpers" from Daniel Baluta <daniel.baluta@oss.nxp.com> 2021-10-07 22:24:58 +01:00
pcm.c ASoC: SOF: Introduce fragment elapsed notification API 2021-10-07 16:57:57 +01:00
pm.c Merge series "ASoC: SOF: Improvements for debugging" from Peter Ujfalusi <peter.ujfalusi@linux.intel.com>: 2021-10-07 22:24:56 +01:00
sof-acpi-dev.c ASoC: SOF: Check desc->ops directly in acpi/pci/of probe functions 2021-05-21 13:13:35 +01:00
sof-acpi-dev.h ASoC: SOF: ACPI: avoid reverse module dependency 2021-03-02 15:31:40 +01:00
sof-audio.c ASoC: SOF: pipelines: Harmonize all functions to use struct snd_sof_dev 2021-10-07 15:45:45 +01:00
sof-audio.h Merge series "Introduce new SOF helpers" from Daniel Baluta <daniel.baluta@oss.nxp.com> 2021-10-07 22:24:58 +01:00
sof-of-dev.c ASoC: SOF: OF: Add fw_path and tplg_path parameters 2021-10-05 13:09:59 +01:00
sof-pci-dev.c ASoC: SOF: Intel: Use DMI string to search for adl_mx98373_rt5682 variant 2021-08-03 18:26:10 +01:00
sof-pci-dev.h ASoC: SOF: pci: split PCI into different drivers 2021-03-02 15:32:00 +01:00
sof-priv.h ASoC: SOF: prepare code to allocate IPC messages in fw_ready 2021-10-08 13:51:16 +01:00
sof-probes.c ASoC: SOF: sof-probes: Correct the function names used for snd_soc_cdai_ops 2021-09-16 14:04:15 +01:00
sof-probes.h ASoC: SOF: probe: Merge and clean up the probe and compress files 2021-09-16 14:04:13 +01:00
stream-ipc.c ASoC: SOF: Make Intel IPC stream ops generic 2021-10-07 16:57:54 +01:00
topology.c Merge series "Introduce new SOF helpers" from Daniel Baluta <daniel.baluta@oss.nxp.com> 2021-10-07 22:24:58 +01:00
trace.c Linux 5.15-rc6 2021-10-18 13:50:42 +01:00
utils.c ASoC: SOF: core: Do not use 'bar' as parameter for block_read/write 2021-09-15 16:25:04 +01:00