Re: [alsa-devel] Problem with snd_hda_intel from 05-27-2010 snapshot
On Thu, 27 May 2010, VDR User wrote:
On Thu, May 27, 2010 at 12:37 AM, Jaroslav Kysela perex@perex.cz wrote:
Check any suspicious lines in /var/log/messages and follow proc xrun_debug settings noted in bug above. I need at least 20 first lines after the playback is started.
By this do you mean compile the drivers with pcm-xrun-debug --with-debug=verbose --enable-verbose-procfs options? Also, is there a way to disable all the debug logging in maybe /etc/modprobe.d/alsa-base.conf? My system is installed on a CF and I can't have alsa hammering it with writes is they're not needed but the only way I know to turn the debug logging off is to not compile it in the first place.
I asked for one run, so you can recompile ALSA driver without debugging support after test. I think that the problem might be that the WALLCLK register gives wrong values for your hardware (but the Intel specification says that implementation of this register is MANDATORY).
Here is a patch which might show the bug:
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 170610e..a1e7c97 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -1891,6 +1891,7 @@ static int azx_position_ok(struct azx *chip, struct azx_dev *azx_dev) int stream;
wallclk = azx_readl(chip, WALLCLK) - azx_dev->start_wallclk; + printk("wallclk: %u, %u\n", wallclk, azx_readl(chip, WALLCLK)); if (wallclk < (azx_dev->period_wallclk * 2) / 3) return -1; /* bogus (too early) interrupt */
Also, use 'aplay -Dplughw:0' from the alsa-utils package to trigger the playback.
The hdmi device I'm using is 1,3:
test:~$ aplay -l **** List of PLAYBACK Hardware Devices **** card 0: NVidia [HDA NVidia], device 0: ALC883 Analog [ALC883 Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: NVidia [HDA NVidia], device 1: ALC883 Digital [ALC883 Digital] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: NVidia_1 [HDA NVidia], device 3: NVIDIA HDMI [NVIDIA HDMI] Subdevices: 0/1 Subdevice #0: subdevice #0
So what exactly do I need to do then with aplay? Do I need some file to play? Sorry, I've never used Linux as a desktop so I'm only familiar with running VDR from command line.
If you use HDMI device, use 'aplay plughw:1,0 <some_wav_file>'. Some_wav_file means a .wav type audio file.
Jaroslav
----- Jaroslav Kysela perex@perex.cz Linux Kernel Sound Maintainer ALSA Project, Red Hat, Inc.
Here are the results. Attached file is /var/log/messages.
test:~$ aplay -Dplughw:1,3 /test/test.wav Playing WAVE '/test/test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo underrun!!! (at least 0.016 ms long) underrun!!! (at least 0.002 ms long) underrun!!! (at least 0.001 ms long) underrun!!! (at least 0.001 ms long) underrun!!! (at least 0.001 ms long) underrun!!! (at least 0.001 ms long) underrun!!! (at least 0.001 ms long) underrun!!! (at least 0.001 ms long) underrun!!! (at least 0.001 ms long) underrun!!! (at least 0.001 ms long) underrun!!! (at least 0.001 ms long) underrun!!! (at least 0.001 ms long) underrun!!! (at least 0.001 ms long) ^CAborted by signal Interrupt... test:~$
On Sat, 29 May 2010, VDR User wrote:
Here are the results. Attached file is /var/log/messages.
test:~$ aplay -Dplughw:1,3 /test/test.wav Playing WAVE '/test/test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo underrun!!! (at least 0.016 ms long)
Thanks. The wallclock register seems working OK. Please, use value 29 for the xrun_debug file to do more accurate inspection what's going wrong (as I suggested in my first reply):
http://www.alsa-project.org/main/index.php/XRUN_Debug
Jaroslav
----- Jaroslav Kysela perex@perex.cz Linux Kernel Sound Maintainer ALSA Project, Red Hat, Inc.
participants (2)
-
Jaroslav Kysela
-
VDR User