[alsa-devel] [PATCH] ALSA: hda - hdmi: Re-setup pin and infoframe on plug-in on all codecs
Takashi Iwai
tiwai at suse.de
Fri Oct 25 01:05:03 CEST 2013
At Fri, 25 Oct 2013 01:45:18 +0300,
Anssi Hannula wrote:
>
> hdmi_setup_audio_infoframe() does not set up pin and infoframe if there
> is no connected sink. If a sink is connected while audio playback is
> already in progress, the pin and infoframe will not be properly set up,
> causing no audio or wrongly mapped audio.
>
> On Intel Haswell codecs the hdmi_setup_audio_infoframe() is already
> called again from hdmi_present_sense() when an ELD appears because
> transcoder:port mapping may have changed.
>
> Make the call non-Haswell-specific so that audio will be properly set up
> if the playback was started before a sink was connected.
>
> Tested on non-Haswell Intel HDMI codec by plugging sink in during
> playback.
>
> Signed-off-by: Anssi Hannula <anssi.hannula at iki.fi>
Applied this one, too. Thanks.
Takashi
> ---
> sound/pci/hda/patch_hdmi.c | 9 +++++----
> 1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
> index 804adb8..a1fe4bb 100644
> --- a/sound/pci/hda/patch_hdmi.c
> +++ b/sound/pci/hda/patch_hdmi.c
> @@ -1462,11 +1462,12 @@ static void hdmi_present_sense(struct hdmi_spec_per_pin *per_pin, int repoll)
> pin_eld->eld_size = eld->eld_size;
> pin_eld->info = eld->info;
>
> - /* Haswell-specific workaround: re-setup when the transcoder is
> - * changed during the stream playback
> + /*
> + * Re-setup pin and infoframe. This is needed e.g. when
> + * - sink is first plugged-in (infoframe is not set up if !monitor_present)
> + * - transcoder can change during stream playback on Haswell
> */
> - if (is_haswell(codec) &&
> - eld->eld_valid && !old_eld_valid && per_pin->setup)
> + if (eld->eld_valid && !old_eld_valid && per_pin->setup)
> hdmi_setup_audio_infoframe(codec, per_pin,
> per_pin->non_pcm);
> }
> --
> 1.8.1.5
>
More information about the Alsa-devel
mailing list