OpenELEC/OpenELEC.tv — Issue #292: fglrx driver not parsing extended EDID data correctly for HDMI?
Author: fat-tony
Created: 2012-03-09 16:53:43+00:00
State: open

I have an issue (184) open on multichannel PCM problems over HDMI. Further investigation by me has identified an issue with the codec capabilities reported for the HDMI card in "/proc/asound/card0 codec#0" which might have a bearing on why I am only getting two channel PCM data from xbmc instead of the full 6 or 8 channel capability of my receiver.

It would seem that there is a default or basic list of card capabilities reported in this file, whereas the "EDID like data" (ELD sound data) provided by my receiver include all rates up to 192kHz, all bit depths to 32 bits and all formats up to and including DTS HD MAster Audio. The EDID data printed in the Xorg log seems to include only the primary 128 bytes of display
related info. The extended EDID information, which includes all the sound modes is not printed in the log, but there is a report of ELD valid data present.

However, the eld#0.0 file in /proc/asound/card0 shows the eld_valid flag as 0. Perhaps Xorg (or the fglrx driver) is not passing the ELD info properly and this is the root cause? Details of relevant files below:
[code]root /proc/asound/card0 # cat codec#0

Codec: ATI R6xx HDMI
Address: 0
AFG Function Id: 0x1 (unsol 0)
Vendor Id: 0x1002aa01
Subsystem Id: 0x00aa0100
Revision Id: 0x100200
No Modem Function Group found
Default PCM:
rates [0x70]: 32000 44100 48000
bits [0x2]: 16
formats [0x5]: PCM AC3
Default Amp-In caps: N/A
Default Amp-Out caps: N/A
GPIO: io=0, o=0, i=0, unsolicited=0, wake=0
Node 0x02 [Audio Output] wcaps 0x201: Stereo Digital
Converter: stream=1, channel=0
Digital: Enabled GenLevel
Digital category: 0x2
Node 0x03 [Pin Complex] wcaps 0x400381: Stereo Digital
Control: name="IEC958 Playback Con Mask", index=0, device=0
Control: name="IEC958 Playback Pro Mask", index=0, device=0
Control: name="IEC958 Playback Default", index=0, device=0
Control: name="IEC958 Playback Switch", index=0, device=0
Control: name="ELD", index=0, device=3
Pincap 0x00000094: OUT Detect HDMI
Pin Default 0x18560010: [Jack] Digital Out at Int HDMI
Conn = Digital, Color = Unknown
DefAssociation = 0x1, Sequence = 0x0
Pin-ctls: 0x00:
Unsolicited: tag=03, enabled=1
Connection: 1
0x02

root /proc/asound/card0 # cat id

Generic

root /proc/asound/card0 # cat eld#0.0

monitor_present 1
eld_valid 0[/code]