Hi, I couldn't get my UA-5 to work even in standard mode for playback (recording is fine in either standard or advanced mode based on the quirk I submitted recently and Clemens helped put in CVS) so I spent some time working on this problem tonight.
I hit two different problems; the first one has already been mentioned on the list a couple days ago and shows up as: ALSA sound/usb/usbaudio.c:685: cannot submit datapipe for urb 0, err = -22 (-22 is -EINVAL) After some parsing of usb_submit_urb, I added some debugs in usbaudio.c and found out that urb->interval was set to 0, an invalid value. So I forced it to 1 and things started to work. (Obviously the proper fix may be to find why it's not properly initialized in the first place.) However I still had the "bad: scheduling while atomic!" problem I reported earlier on the list; sometimes I'd also get "Debug: sleeping function called from illegal context at kernel/sched.c:1489". Looking at the output from my debugs I saw that in some cases we were calling usb_submit_urb with a non-NULL urb->hcpriv, which isn't valid either. So, I'm not sure what the root cause for this last problem is (besides the fact that schedule() is called within schedule()), but I kind of worked around it by guarding all the usb_submit_urb calls with a check for a NULL urb->hcpriv. I still get the same oopses when opening the device, and sound quality gets down under load (lost packets), but otherwise things seem to be working much better. Attached are the diffs I made; it's getting late here so I'll check back on it tomorrow, but hopefully that'll give somebody some ideas of what I did. :-] Tested with Kernel 2.5.75 + alsa-kernel CVS as of tonight. Stephane
lowcpu.diff.gz
Description: Binary data