[alsa-devel] playback write error(DMA or IRQ trouble?)
Raymond Yau
superquad.vortex2 at gmail.com
Fri May 20 07:22:40 CEST 2011
2011/5/20 <innoway at mymelody.com>:
> I develop an embedded system on the Linux board with Freescale i.MX27
> (ARM processor). I succeed on sound, which is transferred using
> Synchronous Serial Interface (SSI). It,s fine and then I try to do test
> of inserting or pulling out a USB memory stick in the USB host connector
> while sounding. I get the following error message from
> snd_pcm_lib_write1() of <linux src>/sound /core/pcm_lib.c after waiting
> for a while (about 10sec). playback write error (DMA or IRQ
> trouble?) and then from snd_pcm_drain() of <linux
> src>/sound/core/pcm_native.c playback drain error (DMA or IRQ
> trouble?) (No sound during this period)
>
> and then it is sounding again.
>
> I want to prevent the sound from stopping even if something happens
> suddenly such as the USB memory stick is plugged in or out.
>
> I try to fix the above programs, but I don't succeed.
>
> Can someone give me the clue? [13:21:38]:/proc# cat interrupts
> CPU0
> 12: 3456 - mxc_i2c
> 16: 141 - CSPI_IRQ
> 18: 952 - mxcintuart
> 26: 1051255 - MXC Timer Tick
> 28: 29446 - PCMCIA IRQ, ide0
> 50: 33 - fec
> 54: 793 - ehci_hcd:usb1
> 56: 1 - arc_udc
> 61: 0 - LCDC
> 117: 0 - m66291_udc
> 147: 0 - PMIC_IRQ
> 157: 337179 - SMSC_LAN911x_ISR
> 176: 0 - fec(MII)
>
> [13:35:03]:/proc# cat dma
> dma channel 0: unused
> dma channel 1: unused
> dma channel 2: unused
> dma channel 3: unused
> dma channel 4: unused
> dma channel 5: unused
> dma channel 6: unused
> dma channel 7: unused
> dma channel 8: unused
> dma channel 9: unused
> dma channel 10: unused
> dma channel 11: unused
> dma channel 12: unused
> dma channel 13: unused
> dma channel 14: unused
> dma channel 15: unused Thank you
>
> Masanori Inoue
>
This error also occur in snd-hda-intel
echo 32768 > /proc/asound/Intel/pcm0p/sub0/prealloc
speaker-test which use maximum buffer size also have (DMA or IRQ error
in system log
THis seem to be related to the schedule_timeout
tout = schedule_timeout(msecs_to_jiffies(10000));
I guess this is why PA server treat avail > 10 seconds is invalid
More information about the Alsa-devel
mailing list