On Sat, 13 Apr 2019 15:18:12 +0200, libin.yang@xxxxxxxxx wrote: > > From: Libin Yang <libin.yang@xxxxxxxxx> > > In resume from S3, HDAC HDMI codec driver dapm event callback may be > operated before HDMI codec driver turns on the display audio power > domain because of the contest between display driver and hdmi codec driver. > > This patch adds the device_link between soc card device (consumer) and > hdmi codec device (supplier) to make sure the sequence is always correct. > > Signed-off-by: Libin Yang <libin.yang@xxxxxxxxx> Reviewed-by: Takashi Iwai <tiwai@xxxxxxx> Is it an issue that has been present for older released kernels? If so, it deserves for Cc-to-stable. thanks, Takashi > --- > sound/soc/codecs/hdac_hdmi.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/sound/soc/codecs/hdac_hdmi.c b/sound/soc/codecs/hdac_hdmi.c > index 5eeb0fe..4de1fbf 100644 > --- a/sound/soc/codecs/hdac_hdmi.c > +++ b/sound/soc/codecs/hdac_hdmi.c > @@ -1855,6 +1855,17 @@ static int hdmi_codec_probe(struct snd_soc_component *component) > hdmi->card = dapm->card->snd_card; > > /* > + * Setup a device_link between card device and HDMI codec device. > + * The card device is the consumer and the HDMI codec device is > + * the supplier. With this setting, we can make sure that the audio > + * domain in display power will be always turned on before operating > + * on the HDMI audio codec registers. > + * Let's use the flag DL_FLAG_AUTOREMOVE_CONSUMER. This can make > + * sure the device link is freed when the machine driver is removed. > + */ > + device_link_add(component->card->dev, &hdev->dev, DL_FLAG_RPM_ACTIVE | > + DL_FLAG_AUTOREMOVE_CONSUMER); > + /* > * hdac_device core already sets the state to active and calls > * get_noresume. So enable runtime and set the device to suspend. > */ > -- > 2.7.4 > _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx https://mailman.alsa-project.org/mailman/listinfo/alsa-devel