
David Henningsson wrote at Wednesday, September 21, 2011 7:55 AM:
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
Just as an FYI, this is a little HW-dependent.
For GPUs that have multiple codecs, everything David said is true.
Very recent NVIDIA GPUs such as GeForce 520, and at least some Intel GPUs which Pierre-Louis may be testing with (e.g. my wife's Ibex Peak) have just one codec, which supports multiple PCMs, and then are numbered like:
card 1: NVidia_1 [HDA NVidia], device 3: HDMI 0 [HDMI 0] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: NVidia_1 [HDA NVidia], device 7: HDMI 1 [HDMI 1] Subdevices: 1/1 Subdevice #0: subdevice #0