|
@@ -2899,8 +2899,9 @@ static int hda_codec_runtime_suspend(struct device *dev)
|
|
|
list_for_each_entry(pcm, &codec->pcm_list_head, list)
|
|
|
snd_pcm_suspend_all(pcm->pcm);
|
|
|
state = hda_call_codec_suspend(codec);
|
|
|
- if (codec_has_clkstop(codec) && codec_has_epss(codec) &&
|
|
|
- (state & AC_PWRST_CLK_STOP_OK))
|
|
|
+ if (codec->link_down_at_suspend ||
|
|
|
+ (codec_has_clkstop(codec) && codec_has_epss(codec) &&
|
|
|
+ (state & AC_PWRST_CLK_STOP_OK)))
|
|
|
snd_hdac_codec_link_down(&codec->core);
|
|
|
snd_hdac_link_power(&codec->core, false);
|
|
|
return 0;
|