[alsa-devel] [PATCH] ALSA: hda - fix broken HDMI jack detection after S3
Takashi Iwai
tiwai at suse.de
Wed Aug 22 14:22:02 CEST 2012
At Wed, 22 Aug 2012 14:01:41 +0200,
David Henningsson wrote:
>
> 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: stable at kernel.org (3.3+)
> BugLink: https://bugs.launchpad.net/bugs/1040030
> Signed-off-by: David Henningsson <david.henningsson at canonical.com>
> ---
> sound/pci/hda/patch_hdmi.c | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
>
> diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
> index 8f23374..6a3ac05 100644
> --- a/sound/pci/hda/patch_hdmi.c
> +++ b/sound/pci/hda/patch_hdmi.c
> @@ -1315,6 +1315,16 @@ static int generic_hdmi_init(struct hda_codec *codec)
> return 0;
> }
>
> +#ifdef CONFIG_PM
> +static int generic_hdmi_resume(struct hda_codec *codec)
> +{
> + snd_hda_codec_resume_cache(codec);
> + snd_hda_jack_set_dirty_all(codec);
> + snd_hda_jack_report_sync(codec);
> + return 0;
Hm, is this really needed?
snd_hda_jack_set_dirty_all() is already called in
hda_call_codec_resume(), and snd_hda_jack_report_sync() is called in
the init callback.
Takashi
> +}
> +#endif
> +
> static void generic_hdmi_free(struct hda_codec *codec)
> {
> struct hdmi_spec *spec = codec->spec;
> @@ -1338,6 +1348,9 @@ static const struct hda_codec_ops generic_hdmi_patch_ops = {
> .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
> };
>
> static int patch_generic_hdmi(struct hda_codec *codec)
> --
> 1.7.9.5
>
More information about the Alsa-devel
mailing list