[alsa-devel] Problems with alsa on ARM

Takashi Iwai tiwai at suse.de
Thu Jul 17 12:01:17 CEST 2008


At Thu, 17 Jul 2008 10:56:24 +0100,
Liam Girdwood wrote:
> 
> On Wed, 2008-07-16 at 21:22 +0100, Alan Horstmann wrote:
> > Hi,
> > 
> > I am trying to assist a collegue, we're working on ARM (AT91), and having 
> > probs with alsa stuff.
> > 
> > Can anyone help interpret this strace from aplay -v -Dhw:0 ourfile.wav?
> > I am comparing it to the same operation on a desktop PC.  After all sorts of 
> > pre-amble, it gets down to accessing snd devices:
> > 
> > open("/dev/snd/controlC0", O_RDONLY)    = 3
> > close(3)                                = 0
> > open("/dev/snd/controlC0", O_RDWR)      = 3
> > ioctl(3, USBDEVFS_CONTROL, 0xbecd36ac)  = 0
> > ioctl(3, 0x40045532, 0xbecd36b4)        = 0
> > open("/dev/snd/pcmC0D0p", O_RDWR|O_NONBLOCK) = 4
> > close(3)                                = 0
> > ioctl(4, AGPIOC_ACQUIRE or APM_IOC_STANDBY, 0xbecd34f8) = 0
> > fcntl(4, F_GETFL)                       = 0x802 (flags O_RDWR|O_NONBLOCK)
> > ioctl(4, AGPIOC_INFO, 0xbecd36a4)       = 0
> > ioctl(4, AGPIOC_RELEASE or APM_IOC_SUSPEND, 0xbecd369c) = 0
> > mmap2(NULL, 4096, PROT_READ, MAP_SHARED, 4, 0x80000) = -1 ENXIO (No such 
> > device or address)
> > ioctl(4, 0xc0844123, 0xbecd3618)        = 0
> > fcntl(4, F_GETFL)                       = 0x802 (flags O_RDWR|O_NONBLOCK)
> > fcntl(4, F_SETFL, O_RDWR)               = 0
> > ioctl(4, AGPIOC_ACQUIRE or APM_IOC_STANDBY, 0xbecd398c) = 0
> > 
> > The first failure is from mmap2(..).  Exactly the same line (and values) is 
> > successful on PC, but I don't know what it is doing or why it might fail.
> > 
> > There are no other negative returns at all, but after opening the wav file, 
> > the playback info is written out, and set_params begins:
> > 
> > ioctl(4, 0xc25c4110, 0xbecd3628)        = 0
> > ioctl(4, 0xc25c4110, 0xbecd3628)        = 0
> > ioctl(4, 0xc25c4110, 0xbecd3628)        = 0
> > ioctl(4, 0xc25c4110, 0xbecd3628)        = 0
> > ioctl(4, 0xc25c4111, 0xbecd3628)        = 0
> > ioctl(4, 0xc0844123, 0x1c210)           = 0
> > ioctl(4, 0xc0684113, 0xbecd3528)        = 0
> > ioctl(4, 0x4140, 0)                     = 0
> > ioctl(4, 0xc0844123, 0x1c210)           = 0
> > write(2, "aplay", 5aplay)                    = 5
> > write(2, ": ", 2: )                       = 2
> > write(2, "set_params", 10set_params)              = 10
> > write(2, ":", 1:)                        = 1
> > write(2, "1012", 41012)                     = 4
> > write(2, ": ", 2: )                       = 2
> > write(2, "unable to install sw params:", 28unable to install sw params:) = 28
> > 
> > All seems to go OK with hw_params, but sw_params must return error (not seen) 
> > as the error check fails.  The values printed out show xfer_align = 
> > 3201120484 which looks suspicious to me.
> > 
> > Any clues on either of these would be greatly appreciated.
> > 
> 
> This sounds similar to a recent gcc optimisation bug with ALSA on ARM. 

I remember a similar problem due to toolchain, too.

Note that the failure of mmap calls is OK.  The driver returns the
error intentionally because no status/control record mmap is supported
on ARM.


thanks,

Takashi


More information about the Alsa-devel mailing list