[alsa-devel] link between HDMI ELD and PCM devices
David Henningsson
david.henningsson at canonical.com
Wed Sep 21 15:55:06 CEST 2011
On 09/21/2011 03:20 PM, Pierre-Louis Bossart wrote:
>> This won't work - in the case of several HDMI codecs (common with
>> NVidia) there will be more than one "HDMI 0".
>
> No, the code doesn't use a constant,
It's actually four constants, please see generic_hdmi_pcm_names in
patch_hdmi.c. But my point is that this restarts from 0 on every codec.
> it's assigned in the same way as the
> device name. You would have HDMI 0, HDMI 1..4. I don't have this kind of
> hardware, it'd be good if someone could verify that the name is indeed
> dynamic.
On a 3.0 based kernel, here's part of my aplay -l output:
card 3: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 3: NVidia [HDA NVidia], device 7: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 3: NVidia [HDA NVidia], device 8: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 3: NVidia [HDA NVidia], device 9: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
>> The solution is to actually find the device number out, like this:
>>
>> struct hdmi_spec *spec = codec->spec;
>> int pcmdev = spec->pcm_rec[pin_idx].device;
>
> That's what I wanted initially, but this device field is not
> used/initialized, and like I said the device assignment comes after the pin
> sensing and all the ELD handling
A good place to do this is generic_hdmi_build_controls, both because it
is normally used to add controls (which is what you do), and because it
is triggered after the pcm device is assigned.
(A side note to Takashi: for some reason hda-emu has the calls to
build_controls and build_pcms switched, compared to the real
implementation.)
--
David Henningsson, Canonical Ltd.
http://launchpad.net/~diwic
More information about the Alsa-devel
mailing list