ASoC: codec: hdac_hdmi add device_link to card device
[sfrench/cifs-2.6.git] / sound / soc / codecs / hdac_hdmi.c
index 5eeb0fe836a9a98028d3854e9b7679b4d8b3e222..4de1fbfa882782ad605e3d8048308b7b17df6dd5 100644 (file)
@@ -1854,6 +1854,17 @@ static int hdmi_codec_probe(struct snd_soc_component *component)
        /* Imp: Store the card pointer in hda_codec */
        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.