[Intel-gfx] [PATCH 4/4] ALSA: hda - Wake the codec up on hotplug notify events

Yang, Libin libin.yang at intel.com
Sun Jul 26 19:24:17 PDT 2015


> -----Original Message-----
> From: Intel-gfx [mailto:intel-gfx-bounces at lists.freedesktop.org] On
> Behalf Of David Henningsson
> Sent: Thursday, July 23, 2015 11:26 PM
> To: Koul, Vinod; jani.nikula at linux.intel.com; Vetter, Daniel;
> tiwai at suse.de; intel-gfx at lists.freedesktop.org; alsa-devel at alsa-
> project.org
> Cc: David Henningsson
> Subject: [Intel-gfx] [PATCH 4/4] ALSA: hda - Wake the codec up on
> hotplug notify events
> 
> Whenever there is an event from the i915 driver, wake the codec
> and recheck plug/unplug + ELD status.
> 
> This fixes the issue with lost unsol events in power save mode,
> the codec and controller can now sleep in D3 and still know when
> the HDMI monitor has been connected.
> 
> Signed-off-by: David Henningsson <david.henningsson at canonical.com>
> ---
>  sound/pci/hda/patch_hdmi.c |   13 ++++++++++++-
>  1 file changed, 12 insertions(+), 1 deletion(-)
> 
> diff --git a/sound/pci/hda/patch_hdmi.c
> b/sound/pci/hda/patch_hdmi.c
> index 2f24338..6cc1524 100644
> --- a/sound/pci/hda/patch_hdmi.c
> +++ b/sound/pci/hda/patch_hdmi.c
> @@ -2316,6 +2316,15 @@ static void haswell_set_power_state(struct
> hda_codec *codec, hda_nid_t fg,
>  	snd_hda_codec_set_power_to_all(codec, fg, power_state);
>  }
> 
> +static void intel_hotplug_notify(struct hdac_device *dev, int port,
> +				 int port_mst_index)
> +{
> +	struct hda_codec *codec = container_of(dev, struct
> hda_codec, core);
> +	int pin_nid = is_valleyview(codec) ? 0x03 : port + 0x04;

Valleyview should be the same as others.

Regards,
Libin

> +
> +	check_presence_and_report(codec, pin_nid);
> +}
> +
>  static int patch_generic_hdmi(struct hda_codec *codec)
>  {
>  	struct hdmi_spec *spec;
> @@ -2342,8 +2351,10 @@ static int patch_generic_hdmi(struct
> hda_codec *codec)
>  	if (is_valleyview_plus(codec) || is_skylake(codec))
>  		codec->core.link_power_control = 1;
> 
> -	if (is_haswell_plus(codec) || is_valleyview_plus(codec))
> +	if (is_haswell_plus(codec) || is_valleyview_plus(codec)) {
>  		codec->depop_delay = 0;
> +		codec->core.i915_hotplug_notify =
> intel_hotplug_notify;
> +	}
> 
>  	if (hdmi_parse_codec(codec) < 0) {
>  		codec->spec = NULL;
> --
> 1.7.9.5
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx


More information about the Intel-gfx mailing list