2011/8/29 Scott Jiang scott.jiang.linux@gmail.com:
Indeed we use dmix. But now we can't open the same device twice. Our alsa lib and utils version is 1.0.18. The test command: aplay 1.wav &; aplay 1.wav In 2.6.34, strace open("/dev/snd/pcmC0D0p", O_RDWR|O_NONBLOCK) = 4 open("/dev/snd/pcmC0D0p", O_RDWR|O_APPEND|O_NONBLOCK) = 4
In 3.0, strace open("/dev/snd/pcmC0D0p", O_RDWR|O_NONBLOCK) = 4 open("/dev/snd/pcmC0D0p", O_RDWR|O_NONBLOCK) = -1 EBUSY (Device or resource busy)
The O_APPEND flag missed in new kernel. But we use the same lib and utils. It's strange. And I found the prefer subdevice changes from 0 to -1. These two changes cause kernel return device busy.
Mark, can you do this simple test on your board? I appreciate your help. Thank you very much.
I know the reason. The card config file didn't read properly. Asoc doesn't copy codec name to card->driver now. I guess it is because multiple codecs are supported. I add driver_name in my snd_soc_card to solve this bug. But I scan other drivers in asoc, nobody did this. Maybe nobody are aware of this. Are there any better way to solve this bug?
Regards, Scott