[alsa-devel] Should we really use POS_FIX_VIACOMBO for AMD/ATI chipsets?

Takashi Iwai tiwai at suse.de
Fri May 20 15:46:37 CEST 2011

At Fri, 20 May 2011 15:33:56 +0200,
David Henningsson wrote:
> I'm far from sure, but I could be on to something...
> Looking at the code for azx_via_get_position, it seems that for 
> recording streams, it accesses a register at position 
> VIA_IN_STREAM0_FIFO_SIZE_OFFSET = 0x90. Looking at the datasheet for 
> SB700, that register is not even present. This does not seem right to me.
> Could it be that we should use POS_FIX_LPIB by default for AMD/ATI 
> chipsets instead? It seems more reasonable to me.
> In addition, I looked through some of the commits for quirking to 
> POS_FIX_LPIB and the four I checked were all ATI chipsets.
> So; I've tried adding:
> options snd-hda-intel position_fix=1
> to /etc/modprobe.d/alsa-base.conf
> ...to my machine with the infamous [1002:4383] controller (and 
> rebooted), and the few times I've tested, recording worked successfully 
> with pulseaudio. So could you please follow this up with testing on your 
> machines to see if we have actually managed to solve this long-standing bug?
> The only annoying thing is that I didn't realise this earlier :-/

Hmm, I took this as default as it seems fixing the issue on machines,
indeed.  Actually I had to use this option first for removing
recording noises on AMD Hudson.  But, maybe I need to double-check
again after the snoop bit and other workarounds.

The FIFO size might got wrong on AMD.  In that case, the driver
calculates as if FIFO = 0.  But, it can still help for correcting the
position via position-buffer vs LPIB comparison.

For the real check, we should put some debug prints on real machines.


More information about the Alsa-devel mailing list