At Sat, 25 Apr 2009 17:28:55 -0400, Jon Smirl wrote:
These new patches have broken audio support on the mpc5200....
Then the lowlevel callbacks are likely wrong :)
They assume that the hardware is capable of telling where the DMA engine is in the middle of an operation.
Well, nothing new by these patches. The original PCM core implementation has been designed in that way. These changes may check some bogus value more strictly.
If the hardware doesn't support it, it needs report at least some "sane" value; i.e. it must not be over the real position, but not below the previous pointer. In the worst case, the driver just needs to report the same position at the previous period boundary until the next snd_pcm_period_elapsed().
Takashi
I'm still checking to see if I can get that data out of the Bestcomm DMA engine.
jonsmirl@terra:/home/linus/sound/core$ git log pcm_lib.c commit bbf6ad1399e9516b0a95de3ad58ffbaed670e4cc Author: Jaroslav Kysela perex@perex.cz Date: Fri Apr 10 12:28:58 2009 +0200
[ALSA] pcm-midlevel: Add more strict buffer position checks based on jiffies Some drivers like Intel8x0 or Intel HDA are broken for some
hardware variants. This patch adds more strict buffer position checks based on jiffies when internal hw_ptr is updated. Enable xrun_debug to see mangling of wrong positions.
As a side effect, the hw_ptr interrupt update routine might do
slightly better job when many interrupts are lost.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
commit 8b22d943c34b616eefbd6d2f8f197a53b1f29fd0 Author: Takashi Iwai tiwai@suse.de Date: Fri Mar 20 16:26:15 2009 +0100
ALSA: pcm - Safer boundary checks Make the boundary checks a bit safer. These caese are rare or theoretically won't happen, but nothing bad to keep the checks safer... Signed-off-by: Takashi Iwai <tiwai@suse.de>
commit ded652f7024bc2d7b6118b561a44187af30841b0 Author: Takashi Iwai tiwai@suse.de Date: Thu Mar 19 10:08:49 2009 +0100
ALSA: pcm - Fix delta calculation at boundary overlap When the hw_ptr_interrupt reaches the boundary, it must check whether the hw_base was already lapped and corret the delta value appropriately. Also, rebasing the hw_ptr needs a correction because buffer_size isn't always aligned to period_size. Signed-off-by: Takashi Iwai <tiwai@suse.de>
commit 5f513e1197f27e9a0bcfec0feaac59f976f4a37e Author: Takashi Iwai tiwai@suse.de Date: Thu Mar 19 10:01:47 2009 +0100
ALSA: pcm - Reset invalid position even without debug option Always reset the invalind hw_ptr position returned by the pointer callback. The behavior should be consitent independently from the debug option. Also, add the printk_ratelimit() check to avoid flooding debug prints. Signed-off-by: Takashi Iwai <tiwai@suse.de>
-- Jon Smirl jonsmirl@gmail.com _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel