The attached patch fixes USB audio support for the Jabra SPEAK 410 USB.
The problem, as I understand it, is that the device contains a Class-Specific Endpoint (CS_ENDPOINT) descriptor before the Endpoint (ENDPOINT) descriptor. The USB code all assumes that CS_ENDPOINT can only appear after ENDPOINT. Therefore the USB code divides up the interface descriptor into "stuff before ENDPOINT" (in interface->extra) and "stuff after ENDPOINT" (in interface->endpoint[0]->extra). For this device, this division does not work.
You can see lsusb for my device here: http://mailman.alsa-project.org/pipermail/alsa-devel/2011-December/047036.ht... Notice the "** UNRECOGNIZED: 07 25 01 81 02 00 00" line which is the CS_ENDPOINT descriptor.
The solution (which is a hack ...) is to also search interface->extra looking for the missing descriptor.
For me, this fully enables the functions of this device.
Rich.