aboutsummaryrefslogtreecommitdiffstats
path: root/sound/usb/usbaudio.c
diff options
context:
space:
mode:
authorClemens Ladisch <clemens@ladisch.de>2007-08-21 02:56:54 -0400
committerJaroslav Kysela <perex@perex.cz>2007-10-16 09:59:19 -0400
commit076639f6aca365d83a01ee48343f13ec62b23af1 (patch)
tree5615c3e0eff946566c21e2668652f5e5fd0a3111 /sound/usb/usbaudio.c
parenta6a712aeb17ff30206ae1bc827d50497d884602a (diff)
[ALSA] usb-audio: allow low speed MIDI devices
Allow low speed MIDI devices because newer devices from ESI do not support full speed. Signed-off-by: Clemens Ladisch <clemens@ladisch.de> Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Diffstat (limited to 'sound/usb/usbaudio.c')
-rw-r--r--sound/usb/usbaudio.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/sound/usb/usbaudio.c b/sound/usb/usbaudio.c
index cbe8b335147c..e1558a6c42d8 100644
--- a/sound/usb/usbaudio.c
+++ b/sound/usb/usbaudio.c
@@ -2840,6 +2840,10 @@ static int snd_usb_create_streams(struct snd_usb_audio *chip, int ctrlif)
2840 /* skip non-supported classes */ 2840 /* skip non-supported classes */
2841 continue; 2841 continue;
2842 } 2842 }
2843 if (snd_usb_get_speed(dev) == USB_SPEED_LOW) {
2844 snd_printk(KERN_ERR "low speed audio streaming not supported\n");
2845 continue;
2846 }
2843 if (! parse_audio_endpoints(chip, j)) { 2847 if (! parse_audio_endpoints(chip, j)) {
2844 usb_set_interface(dev, j, 0); /* reset the current interface */ 2848 usb_set_interface(dev, j, 0); /* reset the current interface */
2845 usb_driver_claim_interface(&usb_audio_driver, iface, (void *)-1L); 2849 usb_driver_claim_interface(&usb_audio_driver, iface, (void *)-1L);
@@ -3382,7 +3386,8 @@ static int snd_usb_audio_create(struct usb_device *dev, int idx,
3382 3386
3383 *rchip = NULL; 3387 *rchip = NULL;
3384 3388
3385 if (snd_usb_get_speed(dev) != USB_SPEED_FULL && 3389 if (snd_usb_get_speed(dev) != USB_SPEED_LOW &&
3390 snd_usb_get_speed(dev) != USB_SPEED_FULL &&
3386 snd_usb_get_speed(dev) != USB_SPEED_HIGH) { 3391 snd_usb_get_speed(dev) != USB_SPEED_HIGH) {
3387 snd_printk(KERN_ERR "unknown device speed %d\n", snd_usb_get_speed(dev)); 3392 snd_printk(KERN_ERR "unknown device speed %d\n", snd_usb_get_speed(dev));
3388 return -ENXIO; 3393 return -ENXIO;
@@ -3456,7 +3461,9 @@ static int snd_usb_audio_create(struct usb_device *dev, int idx,
3456 usb_make_path(dev, card->longname + len, sizeof(card->longname) - len); 3461 usb_make_path(dev, card->longname + len, sizeof(card->longname) - len);
3457 3462
3458 strlcat(card->longname, 3463 strlcat(card->longname,
3459 snd_usb_get_speed(dev) == USB_SPEED_FULL ? ", full speed" : ", high speed", 3464 snd_usb_get_speed(dev) == USB_SPEED_LOW ? ", low speed" :
3465 snd_usb_get_speed(dev) == USB_SPEED_FULL ? ", full speed" :
3466 ", high speed",
3460 sizeof(card->longname)); 3467 sizeof(card->longname));
3461 3468
3462 snd_usb_audio_create_proc(chip); 3469 snd_usb_audio_create_proc(chip);