[alsa-devel] [PATCH] ALSA: HDA: Remove unconnected PCM devices for Intel HDMI
David Henningsson
david.henningsson at canonical.com
Tue Nov 23 16:40:49 CET 2010
On 2010-11-23 16:15, Wu Fengguang wrote:
>> > From ca84aa8edbfb66e46266677249b141b5419d6e0a Mon Sep 17 00:00:00 2001
>> From: David Henningsson<david.henningsson at canonical.com>
>> Date: Tue, 23 Nov 2010 10:23:40 +0100
>> Subject: [PATCH] ALSA: HDA: Remove unconnected PCM devices for Intel HDMI
>>
>> Some newer chips have more than one HDMI output, but usually not
>
> Please point out the model name here (where this patch actually makes
> a difference)?
I'm attaching the codec-proc file for the relevant machine, which lists
as "Intel Cougarpoint HDMI".
>> all of them are exposed as physical jacks. Removing the unused
>> PCM devices (as indicated by BIOS in the pin config default) will
>> reduce user confusion as they currently have to choose between
>> several HDMI devices, some of them not working anyway.
>>
>> Signed-off-by: David Henningsson<david.henningsson at canonical.com>
>> ---
>> sound/pci/hda/patch_hdmi.c | 41 ++++++++++++++++++++++++++++++++---------
>> 1 files changed, 32 insertions(+), 9 deletions(-)
>>
>> diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
>> index d3e49aa..14a1087 100644
>> --- a/sound/pci/hda/patch_hdmi.c
>> +++ b/sound/pci/hda/patch_hdmi.c
>> @@ -905,23 +905,28 @@ static int hdmi_add_pin(struct hda_codec *codec, hda_nid_t pin_nid)
>> spec->pin[spec->num_pins] = pin_nid;
>> spec->num_pins++;
>>
>> - /*
>> - * It is assumed that converter nodes come first in the node list and
>> - * hence have been registered and usable now.
>> - */
>> return hdmi_read_pin_conn(codec, pin_nid);
>> }
>>
>> static int hdmi_add_cvt(struct hda_codec *codec, hda_nid_t nid)
>> {
>> + int i, found_pin = 0;
>> struct hdmi_spec *spec = codec->spec;
>>
>> - if (spec->num_cvts>= MAX_HDMI_CVTS) {
>> - snd_printk(KERN_WARNING
>> - "HDMI: no space for converter %d\n", nid);
>> - return -E2BIG;
>
>> + for (i = 0; i< spec->num_pins; i++)
>> + if (nid == spec->pin_cvt[i]) {
>> + found_pin = 1;
>> + break;
>> + }
>> +
>> + if (!found_pin) {
>
> Can test this instead:
>
> if (hda_node_index(spec->pin_cvt, nid)< 0) {
Yes, that would probably be simpler.
>> + snd_printdd("HDMI: Skipping node %d (no connection)\n", nid);
>> + return -EINVAL;
>> }
>
> The above return actually will hide the device for cvt 3:
>
> +---- pin 4
> /
> cvt 2 ------ pin 5
> \
> +---- pin 6
>
> cvt 3
>
> Which is the default connection for Intel ibexpeak/sandybridge codecs.
> It might be a problem when the user uses dual displays (which may be
> configured at runtime). I have no such a setup, so cannot assure
> things will work or not work..
Hmm, is this really relevant? Looking at the current patch_hdmi.c, I
can't see that it ever tries to change pin <-> cvt connections, but I
might be missing something.
In fact, I have yet to see an HDMI codec where you can actually perform
that change, perhaps you can post such a codec-proc file?
--
David Henningsson, Canonical Ltd.
http://launchpad.net/~diwic
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: hdmi-codec.txt
Url: http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20101123/4f30ff89/attachment.txt
More information about the Alsa-devel
mailing list