[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