The HDMI codec (an NVIDIA one in this case) forgot that its pins
were unsol enabled, while it was suspended. Therefore jack detection
was broken after S3.
With this patch, we reenable the unsol events on resume,
and also do an extra check afterwards, to see if the HDMI monitor was
plugged/unplugged while in S3.
The HDMI codec (an NVIDIA one in this case) forgot that its pins
were unsol enabled, while it was suspended. Therefore jack detection
was broken after S3.
With this patch, we reenable the unsol events on resume,
and also do an extra check afterwards, to see if the HDMI monitor was
plugged/unplugged while in S3.
Cc: <email address hidden> (3.3+) /bugs.launchpad .net/bugs/ 1040030 pci/hda/ patch_hdmi. c | 13 +++++++++++++
BugLink: https:/
Signed-off-by: David Henningsson <email address hidden>
---
sound/
1 file changed, 13 insertions(+)
diff --git a/sound/ pci/hda/ patch_hdmi. c b/sound/ pci/hda/ patch_hdmi. c pci/hda/ patch_hdmi. c pci/hda/ patch_hdmi. c hdmi_init( struct hda_codec *codec)
index 8f23374..6a3ac05 100644
--- a/sound/
+++ b/sound/
@@ -1315,6 +1315,16 @@ static int generic_
return 0;
}
+#ifdef CONFIG_PM hdmi_resume( struct hda_codec *codec) codec_resume_ cache(codec) ; jack_set_ dirty_all( codec); jack_report_ sync(codec) ; hdmi_free( struct hda_codec *codec) hdmi_patch_ ops = { hdmi_build_ pcms, hdmi_build_ controls, hdmi_resume,
+static int generic_
+{
+ snd_hda_
+ snd_hda_
+ snd_hda_
+ return 0;
+}
+#endif
+
static void generic_
{
struct hdmi_spec *spec = codec->spec;
@@ -1338,6 +1348,9 @@ static const struct hda_codec_ops generic_
.build_pcms = generic_
.build_controls = generic_
.unsol_event = hdmi_unsol_event,
+#ifdef CONFIG_PM
+ .resume = generic_
+#endif
};
static int patch_generic_ hdmi(struct hda_codec *codec)
--
1.7.9.5