At Wed, 14 Apr 2010 13:54:48 +0200, Éric Piel wrote:
On 14/04/10 13:22, Éric Piel wrote: :
I don't fully grasp the meaning of bdl_pos_adj, so I don't know if it's a bug to not play correctly when forcing it to 0. Is it?
I'll ask to another reporter who had the same problem if bdl_pos_adj is also set to 0...
Frank (cc'd here) has the same problem of music going too fast (on a 2.6.33 kernel with the "culprit" commit applied). On his system "cat /sys/module/snd_hda_intel/parameters/bdl_pos_adj" gives: 32,32,-1,-1,-1,-1,-1,-1
He also mentioned that on another system also using snd_hda_intel, with the same bdl_pos_adj, it works fine.
bdl_pos_adj is really a workaround for devices that report wrong DMA position (or at the wrong timing). I guess position_fix=1 may fix better.
Although the driver already has a dynamic switching of position_fix method, it checks only the very first read. If it gives a (more or less) sane value, it prefers the position-buffer method (corresponding to position_fix=2) rather than reading LPIB register (position_fix=1).
It seems, however, that more devices work sanely with LPIB reg nowdays. This wasn't the case formerly. So, it might be better to use position_fix=1 as default for modern systems...
Takashi