drm/radeon: HDMI broken on non-default resolutions by 1c3439f: update modesetting

Rafał Miłecki zajec5 at gmail.com
Sun Jan 20 05:36:34 PST 2013


2012/10/29 Matthijs Kooijman <matthijs at stdin.nl>:
> I'm using some evergreen systems with HDMI output, which got broken by a
> recent commit. In commit 1c3439f (drm/radeon/hdmi: update modesetting),
> the HDMI_ACR_SOURCE bit is set in the HDMI_ACR_PACKET_CONTROL register.
>
> However, setting this bit breaks my HDMI audio when a non-default
> resolution is used. This problem only occurs on some TV's (it's broken
> on a Philips, Sharp and Sony TV and seems to be working on a few LG
> TV's).
>
> On the Sony, there are short pulses of distorted audio (couple of
> hundred ms audio, then half a second or so silence, then some audio
> again, etc.). On the Philips and Shart TV's, the audio is completely
> muted.
>
> It seems setting this bit causes the audio infoframe timings to be
> controlled by software instead. I suspect that the timings are not
> properly (re)calculated when a non-default resolution is used, causing
> the audio to break.
>
> Alex Deucher mentioned on IRC that the proper timing code needs to be
> ported over. I might have a look at that, if I can find enough time and
> understanding, but that might take a while. Would it make sense to
> disable this particular bit for the time being, to make audio working
> again? Is there any particular reason to not keep the bit disabled and
> let the timings be determined by the hardware in any case?

I've (finally) taken a look at fglrx and it also doesn't set that bit:
RREG32(0x0001203c); -> 0x00010000
WREG32(0x0001203c, 0x00011000);

0x0001203c = HDMI_ACR_PACKET_CONTROL
0x00011000 = HDMI_ACR_AUTO_SEND | HDMI_ACR_N_MULTIPLE(1)

I think maybe we should ignore Alex's code [0] based on (probably)
some internal specs and just copy fglrx behavior. I guess the fglrx
team discovered some issues with the specs and fixed just the code.

[0] http://people.freedesktop.org/~agd5f/0001-WIP-port-of-hdmi-dp-audio-code-to-newer-kernel.patch

-- 
Rafał


More information about the dri-devel mailing list