diff -uNrp kernel-3.1.fc16.orig/sound/usb/stream.c kernel-3.1.fc16.new/sound/usb/stream.c --- kernel-3.1.fc16.orig/sound/usb/stream.c 2011-12-10 18:03:29.658729051 +0000 +++ kernel-3.1.fc16.new/sound/usb/stream.c 2011-12-10 18:08:41.468694907 +0000 @@ -164,6 +164,12 @@ static int parse_uac_endpoint_attributes csep = snd_usb_find_desc(alts->endpoint[0].extra, alts->endpoint[0].extralen, NULL, USB_DT_CS_ENDPOINT); + /* Jabra SPEAK 410 USB has CS_ENDPOINT before ordinary ENDPOINT, + * which confuses the USB descriptor parsing code. Try looking + * for CS_ENDPOINT in the interface->extra - RWMJ. */ + if (!csep) + csep = snd_usb_find_desc(alts->extra, alts->extralen, NULL, USB_DT_CS_ENDPOINT); + /* Creamware Noah has this descriptor after the 2nd endpoint */ if (!csep && altsd->bNumEndpoints >= 2) csep = snd_usb_find_desc(alts->endpoint[1].extra, alts->endpoint[1].extralen, NULL, USB_DT_CS_ENDPOINT);