https://bugs.freedesktop.org/show_bug.cgi?id=46713
Bug #: 46713 Summary: HDMI audio played back at a wrong rate Classification: Unclassified Product: DRI Version: unspecified Platform: x86-64 (AMD64) OS/Version: Linux (All) Status: NEW Severity: normal Priority: medium Component: DRM/Radeon AssignedTo: dri-devel@lists.freedesktop.org ReportedBy: tvrtko.ursulin@onelan.co.uk
I am experiencing audio being played back at roughly 28665Hz instead of expected 44100Hz. This rate is derived for timing for how long it takes to play sample of a known size. Pitch of audio being played is obviously comical.
Hardware: AMD G-T56N (Radeon HD 6310) box connected to the monitor via native HDMI connector.
This is with kernel.org 3.3.0-rc4 kernel.
Only thing I see in kernel log with apparent relevance is this: [ 56.086500] HDMI hot plug event: Codec=0 Pin=3 Presence_Detect=1 ELD_Valid=1 [ 56.086526] HDMI status: Codec=0 Pin=3 Presence_Detect=1 ELD_Valid=1 [ 56.086545] ALSA sound/pci/hda/hda_eld.c:337 HDMI: ELD buf size is 0, force 128 [ 56.086561] ALSA sound/pci/hda/hda_eld.c:356 HDMI: invalid ELD data byte 0 [ 56.127063] HDMI hot plug event: Codec=0 Pin=3 Presence_Detect=0 ELD_Valid=1 [ 56.127090] HDMI status: Codec=0 Pin=3 Presence_Detect=1 ELD_Valid=1 [ 56.127109] ALSA sound/pci/hda/hda_eld.c:337 HDMI: ELD buf size is 0, force 128 [ 56.127125] ALSA sound/pci/hda/hda_eld.c:356 HDMI: invalid ELD data byte 0 [ 56.387045] HDMI status: Codec=0 Pin=3 Presence_Detect=1 ELD_Valid=1 [ 56.387069] ALSA sound/pci/hda/hda_eld.c:337 HDMI: ELD buf size is 0, force 128 [ 56.387086] ALSA sound/pci/hda/hda_eld.c:356 HDMI: invalid ELD data byte 0 [ 56.699469] HDMI status: Codec=0 Pin=3 Presence_Detect=1 ELD_Valid=1 [ 56.699494] ALSA sound/pci/hda/hda_eld.c:337 HDMI: ELD buf size is 0, force 128 [ 56.699510] ALSA sound/pci/hda/hda_eld.c:356 HDMI: invalid ELD data byte 0 [ 56.990752] HDMI hot plug event: Codec=0 Pin=3 Presence_Detect=1 ELD_Valid=1 [ 56.990777] HDMI status: Codec=0 Pin=3 Presence_Detect=1 ELD_Valid=1 [ 56.990795] ALSA sound/pci/hda/hda_eld.c:337 HDMI: ELD buf size is 0, force 128 [ 56.990811] ALSA sound/pci/hda/hda_eld.c:356 HDMI: invalid ELD data byte 0 [ 57.001054] HDMI status: Codec=0 Pin=3 Presence_Detect=1 ELD_Valid=1 [ 57.001079] ALSA sound/pci/hda/hda_eld.c:337 HDMI: ELD buf size is 0, force 128 [ 57.001095] ALSA sound/pci/hda/hda_eld.c:356 HDMI: invalid ELD data byte 0 [ 57.302064] HDMI status: Codec=0 Pin=3 Presence_Detect=1 ELD_Valid=1 [ 57.302092] ALSA sound/pci/hda/hda_eld.c:337 HDMI: ELD buf size is 0, force 128 [ 57.302108] ALSA sound/pci/hda/hda_eld.c:356 HDMI: invalid ELD data byte 0 [ 57.420102] HDMI hot plug event: Codec=0 Pin=3 Presence_Detect=0 ELD_Valid=1 [ 57.420130] HDMI status: Codec=0 Pin=3 Presence_Detect=1 ELD_Valid=1 [ 57.420149] ALSA sound/pci/hda/hda_eld.c:337 HDMI: ELD buf size is 0, force 128 [ 57.420165] ALSA sound/pci/hda/hda_eld.c:356 HDMI: invalid ELD data byte 0 [ 57.437447] HDMI hot plug event: Codec=0 Pin=3 Presence_Detect=1 ELD_Valid=1 [ 57.437471] HDMI status: Codec=0 Pin=3 Presence_Detect=1 ELD_Valid=1 [ 57.437489] ALSA sound/pci/hda/hda_eld.c:337 HDMI: ELD buf size is 0, force 128 [ 57.437505] ALSA sound/pci/hda/hda_eld.c:356 HDMI: invalid ELD data byte 0 [ 57.493091] HDMI hot plug event: Codec=0 Pin=3 Presence_Detect=0 ELD_Valid=1 [ 57.493117] HDMI status: Codec=0 Pin=3 Presence_Detect=1 ELD_Valid=1 [ 57.493136] ALSA sound/pci/hda/hda_eld.c:337 HDMI: ELD buf size is 0, force 128 [ 57.493152] ALSA sound/pci/hda/hda_eld.c:356 HDMI: invalid ELD data byte 0 [ 57.618528] HDMI status: Codec=0 Pin=3 Presence_Detect=1 ELD_Valid=1 [ 57.618552] ALSA sound/pci/hda/hda_eld.c:337 HDMI: ELD buf size is 0, force 128 [ 57.618568] ALSA sound/pci/hda/hda_eld.c:356 HDMI: invalid ELD data byte 0 [ 57.919028] HDMI status: Codec=0 Pin=3 Presence_Detect=1 ELD_Valid=1 [ 57.919059] ALSA sound/pci/hda/hda_eld.c:337 HDMI: ELD buf size is 0, force 128 [ 57.919075] ALSA sound/pci/hda/hda_eld.c:356 HDMI: invalid ELD data byte 0 [ 58.220081] HDMI status: Codec=0 Pin=3 Presence_Detect=1 ELD_Valid=1 [ 58.220115] ALSA sound/pci/hda/hda_eld.c:337 HDMI: ELD buf size is 0, force 128 [ 58.220131] ALSA sound/pci/hda/hda_eld.c:356 HDMI: invalid ELD data byte 0 [ 58.521039] HDMI status: Codec=0 Pin=3 Presence_Detect=1 ELD_Valid=1 [ 58.521071] ALSA sound/pci/hda/hda_eld.c:337 HDMI: ELD buf size is 0, force 128 [ 58.521087] ALSA sound/pci/hda/hda_eld.c:356 HDMI: invalid ELD data byte 0 [ 63.136948] hda-intel: IRQ timing workaround is activated for card #0. Suggest a bigger bdl_pos_adj.
While playing back hw_info looks fine:
aplay -l **** List of PLAYBACK Hardware Devices **** card 0: Generic [HD-Audio Generic], device 3: HDMI 0 [HDMI 0] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: SB [HDA ATI SB], device 0: ALC883 Analog [ALC883 Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: SB [HDA ATI SB], device 1: ALC883 Digital [ALC883 Digital] Subdevices: 1/1 Subdevice #0: subdevice #0
cat /proc/asound/card0/pcm3p/sub0/hw_params access: RW_INTERLEAVED format: S16_LE subformat: STD channels: 2 rate: 44100 (44100/1) period_size: 5504 buffer_size: 22016
Not sure what other info should I provide?
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #1 from Rafał Miłecki zajec5@gmail.com 2012-02-28 03:41:41 PST --- Hi Tvrtko,
Can you install rateontool (avivotool) from git master, and provide output from it?
Installation: git clone git://people.freedesktop.org/~airlied/radeontool cd radeontool ./autogen.sh && make && sudo make install
Grabbing regs dump: [start playing your audio over HDMI] avivotool regs hdmi
You can easily save output to the file by using avivotool regs hdmi > dump.txt
Please provide requested dump.
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #2 from Tvrtko Ursulin tvrtko.ursulin@onelan.co.uk 2012-02-28 04:16:05 PST --- Created attachment 57759 --> https://bugs.freedesktop.org/attachment.cgi?id=57759 "avivotool regs hdmi" output while audio was playing
https://bugs.freedesktop.org/show_bug.cgi?id=46713
Tom Gundersen teg@jklm.no changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |teg@jklm.no
--- Comment #3 from Tom Gundersen teg@jklm.no 2012-02-28 05:30:28 PST --- I have experienced a possibly similar issue, I could only reproduce it in the following scenario, so maybe this can be another data point:
A DVI output and a HDMI output are connected to the same graphics card. If their resolutions are different the pitch is wrong (the more different the resolutions the more wrong it is). However, if I unplug the DVI before booting the machine, or set the HDMI to the same resolution as the DVI the audio is fine.
I don't have the setup at the moment to verify that we are seeing the same bug, in which case I apologise for the noise.
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #4 from Tvrtko Ursulin tvrtko.ursulin@onelan.co.uk 2012-02-28 05:33:12 PST --- It's not that in my case since the motherboard I am using doesn't even have DVI. It has VGA and HDMI, with only HDMI connected.
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #5 from Tvrtko Ursulin tvrtko.ursulin@onelan.co.uk 2012-02-28 08:00:21 PST --- Monitor is Dell 2408WFP in case it matters.
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #6 from Rafał Miłecki zajec5@gmail.com 2012-03-08 02:10:48 PST --- 00007d04 02000000 (33554432) This register is 0x7c30 + R600_HDMI_IEC60958_1. AFAWK value 0x02000000 means 48000 rate. I've to understand how driver handles rates.
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #7 from Tvrtko Ursulin tvrtko.ursulin@onelan.co.uk 2012-03-08 02:19:26 PST --- Just to clarify, it is possible I was playing back at 48kHz when collecting the register dump. I was trying both 44.1kHz and 48kHz, the latter just to make sure my monitor is not mishandling the former, but in both cases heard and observed playback rate was wrong.
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #8 from Rafał Miłecki zajec5@gmail.com 2012-03-08 13:27:29 UTC --- Created attachment 58209 --> https://bugs.freedesktop.org/attachment.cgi?id=58209 drm/radeon/kms/audio: read correct regs on Evergreen
I guess this patch can fix the issue.
My problem is that I still don't know how much Evergreen is different from older cards. I still can't take a decision if it's worth splitting HDMI/audio code into R600 vs. Evergreen or not...
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #9 from Tvrtko Ursulin tvrtko.ursulin@onelan.co.uk 2012-03-09 01:18:51 PST --- Created attachment 58223 --> https://bugs.freedesktop.org/attachment.cgi?id=58223 avivotool register dump while 44100 sample was playing
Unfortunately playback rate is still wrong. I made another register dump while I was playing a 44100Hz wave file directly to the HDMI device. This file is 2m49s long, while playing it over HDMI takes 4m20s. Which gives us the same apparent 28665Hz playback rate as originally observed.
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #10 from Rafał Miłecki zajec5@gmail.com 2012-03-09 01:27:16 PST --- Ahh, sorry, I didn't understand your first problem description you posted in this bug report. I though the playback speed is alright, just the sampling rate used is incorrect.
The problem most probably lays in audio clocks. Values used by radeon seem to be: EVERGREEN_AUDIO_PLL1_MUL 00075300 EVERGREEN_AUDIO_PLL1_DIV 00177fa0 EVERGREEN_AUDIO_PLL1_UNK 00000071
Do you have fglrx installed? Is this possible for you to switch to the fglrx for a moment and do similar dump (using avivotool) while playing audio with it? To make debugging quicker: can you also dump "avivotool regsrange 0x500 0x600" just in case fglrx uses some other registers?
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #11 from Rafał Miłecki zajec5@gmail.com 2012-03-09 01:29:31 PST --- (In reply to comment #5)
Monitor is Dell 2408WFP in case it matters.
Are you using 1900x1200 resolution? Can you try some smaller one? Does it help?
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #12 from Tvrtko Ursulin tvrtko.ursulin@onelan.co.uk 2012-03-09 01:50:36 PST --- (In reply to comment #11)
(In reply to comment #5)
Monitor is Dell 2408WFP in case it matters.
Are you using 1900x1200 resolution? Can you try some smaller one? Does it help?
It changes the error:
1920x1200: 4m20s = 1.53x too slow 1280x1024: 3m2s = 1.07x too slow 1024x768: 1m49s = 1.55x too fast 800x600: 1m7s = 2.52x too fast
Sound also comes with various distortions in each test.
Is this enough of a hint on what is going wrong or you would still like me to test with fglrx? It may take some time to set it up since I have no experience with it.
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #13 from Rafał Miłecki zajec5@gmail.com 2012-03-09 03:04:03 PST --- I'm afraid I can not do anything without dump from fglrx :( There are 4 clocks related registers we are aware of, but I don't know how else we can try to program them. There may be also some other clock registers. I'm afraid only dump from fglrx can give us some hints and I can't get that info from my card, since it's working pretty well.
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #14 from Tvrtko Ursulin tvrtko.ursulin@onelan.co.uk 2012-03-12 04:27:51 PDT --- Created attachment 58306 --> https://bugs.freedesktop.org/attachment.cgi?id=58306 avivotool register dump under fglrx
I've managed to get fglrx running and initially playback speed was fine but audio quite distorted (hard to describe). I've noticed in the output a mention of 1024x768 output resolution on the LVDS connector which was unexpected, since the motherboard in question only has HDMI and VGA outputs. I disabled LVDS with xranrd and then audio was perfect. I will attach that register dump as well.
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #15 from Tvrtko Ursulin tvrtko.ursulin@onelan.co.uk 2012-03-12 04:28:27 PDT --- Created attachment 58307 --> https://bugs.freedesktop.org/attachment.cgi?id=58307 avivotool register dump under fglrx with non-existant LVDS output turned off
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #16 from Rafał Miłecki zajec5@gmail.com 2012-03-13 12:04:19 PDT --- Tvrtko: thanks a lot for your effort and dumps coming from fglrx.
What I can say now: it seems fglrx is using the same registers (EVERGREEN_AUDIO_PLL1_MUL and EVERGREEN_AUDIO_PLL1_DIV) for your card.
However: 1) radeon uses 480'000 for MUL 2) fglrx uses 960'000 for MUL
On the other hand fglrx uses 0x72 instead of 0x71 for EVERGREEN_AUDIO_PLL1_UNK. Maybe that 0x2 is some DIV? Maybe it tells GPU to take 960'000 and divide it by 2?
I've to investigate meaning of the register, but you gave me a track to follow, thanks a lot for your effors! I'll take a look on that after my vacations (next week).
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #17 from Rafał Miłecki zajec5@gmail.com 2012-03-13 12:05:38 PDT --- If you wish, you can try switching to radeon and: 1) Start playback 2) Make sure speed is still wrong 3) Execute: "avivotool regset 0x05b0 0x000ea600" 4) Execute: "avivotool regset 0x05bc 0x00000072"
Does it help?
https://bugs.freedesktop.org/show_bug.cgi?id=46713
Christian König deathsimple@vodafone.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED CC| |deathsimple@vodafone.de
--- Comment #18 from Christian König deathsimple@vodafone.de 2012-03-14 08:09:27 PDT --- Ok, I will try to get you the documentation for the PLL regs, they are not DRM or IP related. So there is a slightly chance that we can release them.
Christian.
https://bugs.freedesktop.org/show_bug.cgi?id=46713
Tvrtko Ursulin tvrtko.ursulin@onelan.co.uk changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |NEW
--- Comment #19 from Tvrtko Ursulin tvrtko.ursulin@onelan.co.uk 2012-03-20 08:57:42 PDT --- (In reply to comment #17)
If you wish, you can try switching to radeon and:
- Start playback
- Make sure speed is still wrong
- Execute: "avivotool regset 0x05b0 0x000ea600"
- Execute: "avivotool regset 0x05bc 0x00000072"
Does it help?
Unfortunately not. First line speeds it up (way to much) and the second one brings it down into too slow territory again.
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #20 from Vincenzov vincenzov72@hotmail.com 2012-03-23 10:36:52 PDT --- Hi, i have same problem hdmi audio slow. Radeon 5450. But dual screen hdmi+crt 1920 x 1080 audio works fine.
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #21 from Vincenzov vincenzov72@hotmail.com 2012-03-23 11:00:19 PDT --- ok 1280x720 radeon 5450 works
avivotool regset 0x05b0 0x00138800
works good
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #22 from Vincenzov vincenzov72@hotmail.com 2012-03-23 11:24:09 PDT --- vincenzo@AthlonII-260:~$ sudo avivotool regset 0x05b0 0x00138800 OLD: 0x05b0 (05b0) 0x00075300 (480000) NEW: 0x05b0 (05b0) 0x00138800 (1280000)
work only 1280x720
slow with 1920 x 1080
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #23 from Vincenzov vincenzov72@hotmail.com 2012-03-23 11:50:50 PDT --- sudo avivotool regset 0x05b0 0x00271000
works good whit 1920 x 1080
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #24 from Alex Deucher agd5f@yahoo.com 2012-04-04 08:50:44 PDT --- Please see: http://lists.freedesktop.org/archives/dri-devel/2012-March/020717.html http://lists.freedesktop.org/archives/dri-devel/2012-March/020855.html http://lists.freedesktop.org/archives/dri-devel/2012-March/020857.html http://people.freedesktop.org/~agd5f/0001-WIP-port-of-hdmi-dp-audio-code-to-...
As per the comments in the last patch:
+ /* Express [24MHz / target pixel clock] as an exact rational + * number (coefficient of two integer numbers. DCCG_AUDIO_DTOx_PHASE + * is the numerator, DCCG_AUDIO_DTOx_MODULE is the denominator + */
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #26 from Vincenzov vincenzov72@hotmail.com 2012-04-07 11:16:54 UTC --- Error when compiling.
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #25 from Vincenzov vincenzov72@hotmail.com 2012-04-07 09:51:19 PDT --- Hi i can't patch a kernel 3.4.0-rc1 i can't patch a kernel 3.3.0 :-( error radeon display
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #27 from Vincenzov vincenzov72@hotmail.com 2012-06-03 09:24:50 PDT --- hi , i have compiled kernel 3.5-rc1 but radeon 5450 audio slow.
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #30 from Vincenzov vincenzov72@hotmail.com 2012-06-09 08:38:39 UTC --- thanks Christian König and Rafał Miłecki for this work. Sorry my english is bad, i speak only italian :-).
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #28 from Vincenzov vincenzov72@hotmail.com 2012-06-09 08:11:05 PDT --- kernel 3.5.0-rc2 audio workgood. i have 2 monitor hdmi, after I changed the initial resolution of the monitor works fine 2. example
1 monitor 1920 x 1080 works 2 monitor 1920 x 1080 works.
after i turn off monitor 1, audio monitor 2 slow. configure monitor 2 and after all audio works good 1 & 2.
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #29 from Christian König deathsimple@vodafone.de 2012-06-09 08:33:50 PDT --- Yeah, the audio rate is controlled by the last output changed.
We should switch to another output if the output driving the audio signal is turned off.
It's on the todo list.
https://bugs.freedesktop.org/show_bug.cgi?id=46713
--- Comment #31 from Tvrtko Ursulin tvrtko.ursulin@onelan.co.uk 2012-08-24 13:46:28 UTC --- Just testing with 3.6.0-rc3+ from today's GIT and I can reproduce some sort of sound corruption depending on the video output resolution.
For example, 1360x768 and audio plays fine, while 1366x768 and it is bad.
avivotool register dump says this is the difference between good and bad setup:
-EVERGREEN_AUDIO_PLL1_DIV 000d0bd8 +EVERGREEN_AUDIO_PLL1_DIV 000d1ae2
https://bugs.freedesktop.org/show_bug.cgi?id=46713
Christian König deathsimple@vodafone.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |FIXED
--- Comment #32 from Christian König deathsimple@vodafone.de --- Any objections closing this four year old bug report now?
dri-devel@lists.freedesktop.org