On Tue, 15 Jan 2019 17:49:56 +0100, Pierre-Louis Bossart wrote:
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c index 9f8d59e7e89f..ff6dbed4d3cd 100644 --- a/sound/pci/hda/hda_codec.c +++ b/sound/pci/hda/hda_codec.c @@ -2927,8 +2927,6 @@ static int hda_codec_runtime_suspend(struct device *dev) unsigned int state; cancel_delayed_work_sync(&codec->jackpoll_work);
- list_for_each_entry(pcm, &codec->pcm_list_head, list)
state = hda_call_codec_suspend(codec); if (codec->link_down_at_suspend || (codec_has_clkstop(codec) && codec_has_epss(codec) &&snd_pcm_suspend_all(pcm->pcm);
question: since we now use HDAudio codecs in an ASoC-based implementation (both with the Skylake and SOF drivers), is this creating a case where suspend no longer works? I see no suspend support in sound/soc/codec/hdac_hda.c
As mentioned in patch#1, ASoC calls snd_pcm_suspend_all() in snd_soc_suspend(), which is the canonical place.
But, the suspend / resume for hdac-hda need revisited as well as hdac-hdmi, I suppose. They shouldn't use the device PM ops but just use the ASoC component codec / suspend callbacks. Some more plumbing might be required.
thanks,
Takashi
I just added a quick trace in the lines being deleted and those lines were definitively executed.
list_for_each_entry(pcm, &codec->pcm_list_head, list) { pr_err("plb: suspending pcm\n"); snd_pcm_suspend_all(pcm->pcm); }
[ 2.516349] plb: suspending pcm [ 2.516350] plb: suspending pcm