[alsa-devel] [pulseaudio-discuss] Issue with multiple hdmi codecs in radeonhd, hacked to work

Anssi Hannula anssi.hannula at iki.fi
Sun Dec 8 01:59:01 CET 2013


07.12.2013 09:18, Raymond Yau kirjoitti:
>     I just changed my RadeonHD 4670 for a 7870, and now when I type
>     "aplay -l"  I get many HDMI codecs instead of just one like for the
>     previous
> 
> 
> Do your card specification support Discrete Digital Multi-Point Audio
> (DDMA) /?/
> 
> DDMA enables Radeon™HD 7700-7900 Series GPUs with the ability to output
> multiple and independent audio streams simultaneously through digital
> interfaces that support audio, such as DisplayPort and HDMI®. Each audio
> stream can be multi-channel (up to 8 channels)

AFAIK yes, the multi-hdmi-device AMD cards are "DDMA".

[...]
> monitor_present        1
> eld_valid        1
> monitor_name       
> connection_type        HDMI
> eld_version        [0x2] CEA-861D or below
> edid_version        [0x0] no CEA EDID Timing Extension block present
> manufacture_id        0x0
> product_id        0x0
> port_id            0x0
> support_hdcp        0
> support_ai        0
> audio_sync_delay    0
> speakers        [0x5f] FL/FR LFE FC RL/RR RC RLC/RRC
> sad_count        6
> sad0_coding_type    [0x1] LPCM
> sad0_channels        8
> sad0_rates        [0x1ee0] 32000 44100 48000 88200 96000 176400 192000
> sad0_bits        [0xe0000] 16 20 24
> sad1_coding_type    [0x2] AC-3
> sad1_channels        6
> sad1_rates        [0xe0] 32000 44100 48000
> sad1_max_bitrate    640000
> sad2_coding_type    [0x7] DTS
> sad2_channels        6
> sad2_rates        [0x6c0] 44100 48000 88200 96000
> sad2_max_bitrate    1536000
> sad3_coding_type    [0xa] E-AC-3/DD+ (Dolby Digital Plus)
> sad3_channels        8
> sad3_rates        [0xc0] 44100 48000
> sad4_coding_type    [0xb] DTS-HD
> sad4_channels        8
> sad4_rates        [0x1ec0] 44100 48000 88200 96000 176400 192000
> sad5_coding_type    [0xc] MLP (Dolby TrueHD)
> sad5_channels        8
> sad5_rates        [0x1ec0] 44100 48000 88200 96000 176400 192000
> monitor_present        1
> eld_valid        0
> monitor_present        1
> eld_valid        0
> monitor_present        1
> eld_valid        0
> monitor_present        1
> eld_valid        0
> monitor_present        1
> eld_valid        0
> 
> e.g. HDMI status message in function hdmi_present_sense in patch_hdmi.c
> 
> need to find out why eld->monitor_present was set  for all six complexes
> 
> the value return by function atihdmi_pin_get_eld since it change
> eld->eld_valid to false when it is negative

When CONFIG_SND_DEBUG_VERBOSE is enabled, hdmi_present_sense() prints
the actual hw Presence_Detect/ELD_Valid before eld->eld_valid is
overridden to 0 (and hdmi_intrinsic_event() prints the hot plug event
values).

Alex, do you have information regarding why "Presence detect" (aka
monitor_present above) seems to be set for all HDMI pins in the response
of Pin Sense 0xF09 verb (or if it is even expected), and/or if we should
use alternate means of getting jack status?

CONFIG_SND_DEBUG_VERBOSE log might also be interesting, I wonder if
eld_valid is also 1 for every pin or not (before ALSA forces 0). Also, I
wonder if all monitor_present fields are 1 with fglrx driver as well, or
when all displays are unplugged...

[...]

-- 
Anssi Hannula


More information about the Alsa-devel mailing list