ALSA: hda/hdmi - poll eld at resume time
authorWang Xingchao <xingchao.wang@linux.intel.com>
Mon, 24 Jun 2013 11:45:23 +0000 (07:45 -0400)
committerTakashi Iwai <tiwai@suse.de>
Tue, 25 Jun 2013 07:07:57 +0000 (09:07 +0200)
Hdmi driver may not receive intrinsic event from gfx side when
it's in runtime suspend mode. There's no ELD info when exit from
runtime suspend. This patch avoid missing ELD info.

Signed-off-by: Wang Xingchao <xingchao.wang@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/patch_hdmi.c

index 8428763de153ac85bb0645fe41ccc79aac909bb8..540bdef2f9040dc8276cee974429065c5121e63f 100644 (file)
@@ -1864,12 +1864,33 @@ static void generic_hdmi_free(struct hda_codec *codec)
        kfree(spec);
 }
 
+#ifdef CONFIG_PM
+static int generic_hdmi_resume(struct hda_codec *codec)
+{
+       struct hdmi_spec *spec = codec->spec;
+       int pin_idx;
+
+       generic_hdmi_init(codec);
+       snd_hda_codec_resume_amp(codec);
+       snd_hda_codec_resume_cache(codec);
+
+       for (pin_idx = 0; pin_idx < spec->num_pins; pin_idx++) {
+               struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx);
+               hdmi_present_sense(per_pin, 1);
+       }
+       return 0;
+}
+#endif
+
 static const struct hda_codec_ops generic_hdmi_patch_ops = {
        .init                   = generic_hdmi_init,
        .free                   = generic_hdmi_free,
        .build_pcms             = generic_hdmi_build_pcms,
        .build_controls         = generic_hdmi_build_controls,
        .unsol_event            = hdmi_unsol_event,
+#ifdef CONFIG_PM
+       .resume                 = generic_hdmi_resume,
+#endif
 };