]> git.baikalelectronics.ru Git - kernel.git/commit
ASoC: SOF: Intel: hda: fix hotplug when only codec is suspended
authorKai Vehmanen <kai.vehmanen@linux.intel.com>
Fri, 5 Nov 2021 11:16:55 +0000 (13:16 +0200)
committerMark Brown <broonie@kernel.org>
Fri, 5 Nov 2021 12:58:11 +0000 (12:58 +0000)
commit184d18aed8c532dff095147a71831a79fa3fac1e
tree9c68e55f12bc93d96f41c15f62ab3f30e2c88236
parentc68ca9c3ae606e6515d8d56a674a01d9335181a8
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: cacdedad4710 ("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>
sound/soc/sof/intel/hda-bus.c
sound/soc/sof/intel/hda-dsp.c
sound/soc/sof/intel/hda.c