[alsa-devel] Should we really use POS_FIX_VIACOMBO for AMD/ATI chipsets?
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