[alsa-devel] Problem with snd_hda_intel from 05-27-2010 snapshot
Jaroslav Kysela
perex at perex.cz
Sat May 29 08:25:11 CEST 2010
On Thu, 27 May 2010, VDR User wrote:
> On Thu, May 27, 2010 at 12:37 AM, Jaroslav Kysela <perex at 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 at perex.cz>
Linux Kernel Sound Maintainer
ALSA Project, Red Hat, Inc.
More information about the Alsa-devel
mailing list