[alsa-devel] [PATCH] ALSA: hda: hdmi: Hint matching between input devices and pcm devices

Takashi Iwai tiwai at suse.de
Wed Sep 21 10:31:47 CEST 2011


At Wed, 21 Sep 2011 09:18:08 +0200,
David Henningsson wrote:
> 
> Hi Takashi,
> 
> You went on vacation when this patch was posted and discussed, but would 
> you mind reviewing/committing this patch now that you're back?
> 
> It was reviewed by Stephen Warren who thought the patch was okay, but 
> had some thoughts on doing other changes to the format of that string at 
> the same time [1].
> 
> I had to distro patch a 3.0 adapted version of this patch into Ubuntu in 
> order to meet the Ubuntu 11.10 kernel deadline, so for that reason I'd 
> say that the ",pcm=x" format would be preferrable for me, and while I 
> don't mind further improvements to the string format in the future, this 
> would be a step in the right direction and IMO this patch should not 
> block on such future improvements.

Applied now.  Sorry for overlooking.


thanks,

Takashi

> 
> -- 
> David Henningsson, Canonical Ltd.
> http://launchpad.net/~diwic
> 
> [1] 
> http://mailman.alsa-project.org/pipermail/alsa-devel/2011-August/043258.html
> [2 0001-ALSA-hda-hdmi-Hint-matching-between-input-devices-an.patch <text/x-patch (7bit)>]
> >From ab5ef7898ca0a6e86401428a3ca77f05db9eb7c9 Mon Sep 17 00:00:00 2001
> From: David Henningsson <david.henningsson at canonical.com>
> Date: Tue, 23 Aug 2011 16:56:03 +0200
> Subject: [PATCH] ALSA: hda: hdmi: Hint matching between input devices and pcm devices
> 
> Since modern HDMI cards often have more than one output pin and thus
> input device, we need to know which one has actually been plugged in.
> 
> This patch adds a name hint that indicates which PCM device is connected 
> to which pin.
> 
> Signed-off-by: David Henningsson <david.henningsson at canonical.com>
> ---
>  sound/pci/hda/patch_hdmi.c |   31 ++++++++++++++++++++++++-------
>  1 files changed, 24 insertions(+), 7 deletions(-)
> 
> diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
> index 19cb72d..8c83ec4 100644
> --- a/sound/pci/hda/patch_hdmi.c
> +++ b/sound/pci/hda/patch_hdmi.c
> @@ -967,19 +967,12 @@ static int hdmi_add_pin(struct hda_codec *codec, hda_nid_t pin_nid)
>  
>  	per_pin->pin_nid = pin_nid;
>  
> -	err = snd_hda_input_jack_add(codec, pin_nid,
> -				     SND_JACK_VIDEOOUT, NULL);
> -	if (err < 0)
> -		return err;
> -
>  	err = hdmi_read_pin_conn(codec, pin_idx);
>  	if (err < 0)
>  		return err;
>  
>  	spec->num_pins++;
>  
> -	hdmi_present_sense(codec, pin_nid, eld);
> -
>  	return 0;
>  }
>  
> @@ -1162,6 +1155,25 @@ static int generic_hdmi_build_pcms(struct hda_codec *codec)
>  	return 0;
>  }
>  
> +static int generic_hdmi_build_jack(struct hda_codec *codec, int pin_idx)
> +{
> +	int err;
> +	char hdmi_str[32];
> +	struct hdmi_spec *spec = codec->spec;
> +	struct hdmi_spec_per_pin *per_pin = &spec->pins[pin_idx];
> +	int pcmdev = spec->pcm_rec[pin_idx].device;
> +
> +	snprintf(hdmi_str, sizeof(hdmi_str), "HDMI/DP,pcm=%d", pcmdev);
> +
> +	err = snd_hda_input_jack_add(codec, per_pin->pin_nid,
> +			     SND_JACK_VIDEOOUT, pcmdev > 0 ? hdmi_str : NULL);
> +	if (err < 0)
> +		return err;
> +
> +	hdmi_present_sense(codec, per_pin->pin_nid, &per_pin->sink_eld);
> +	return 0;
> +}
> +
>  static int generic_hdmi_build_controls(struct hda_codec *codec)
>  {
>  	struct hdmi_spec *spec = codec->spec;
> @@ -1170,6 +1182,11 @@ static int generic_hdmi_build_controls(struct hda_codec *codec)
>  
>  	for (pin_idx = 0; pin_idx < spec->num_pins; pin_idx++) {
>  		struct hdmi_spec_per_pin *per_pin = &spec->pins[pin_idx];
> +
> +		err = generic_hdmi_build_jack(codec, pin_idx);
> +		if (err < 0)
> +			return err;
> +
>  		err = snd_hda_create_spdif_out_ctls(codec,
>  						    per_pin->pin_nid,
>  						    per_pin->mux_nids[0]);
> -- 
> 1.7.4.1
> 


More information about the Alsa-devel mailing list