diff options
author | Clemens Ladisch <clemens@ladisch.de> | 2007-08-21 02:56:54 -0400 |
---|---|---|
committer | Jaroslav Kysela <perex@perex.cz> | 2007-10-16 09:59:19 -0400 |
commit | 076639f6aca365d83a01ee48343f13ec62b23af1 (patch) | |
tree | 5615c3e0eff946566c21e2668652f5e5fd0a3111 /sound/usb/usbaudio.c | |
parent | a6a712aeb17ff30206ae1bc827d50497d884602a (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.c | 11 |
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); |