diff options
Diffstat (limited to 'sound/usb')
-rw-r--r-- | sound/usb/usbmidi.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/sound/usb/usbmidi.c b/sound/usb/usbmidi.c index 4bacb50e9ad9..6330788c1c2b 100644 --- a/sound/usb/usbmidi.c +++ b/sound/usb/usbmidi.c | |||
@@ -1351,6 +1351,13 @@ static int snd_usbmidi_get_ms_info(struct snd_usb_midi* umidi, | |||
1351 | endpoints[epidx].out_ep = ep->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK; | 1351 | endpoints[epidx].out_ep = ep->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK; |
1352 | if ((ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT) | 1352 | if ((ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT) |
1353 | endpoints[epidx].out_interval = ep->bInterval; | 1353 | endpoints[epidx].out_interval = ep->bInterval; |
1354 | else if (snd_usb_get_speed(umidi->chip->dev) == USB_SPEED_LOW) | ||
1355 | /* | ||
1356 | * Low speed bulk transfers don't exist, so | ||
1357 | * force interrupt transfers for devices like | ||
1358 | * ESI MIDI Mate that try to use them anyway. | ||
1359 | */ | ||
1360 | endpoints[epidx].out_interval = 1; | ||
1354 | endpoints[epidx].out_cables = (1 << ms_ep->bNumEmbMIDIJack) - 1; | 1361 | endpoints[epidx].out_cables = (1 << ms_ep->bNumEmbMIDIJack) - 1; |
1355 | snd_printdd(KERN_INFO "EP %02X: %d jack(s)\n", | 1362 | snd_printdd(KERN_INFO "EP %02X: %d jack(s)\n", |
1356 | ep->bEndpointAddress, ms_ep->bNumEmbMIDIJack); | 1363 | ep->bEndpointAddress, ms_ep->bNumEmbMIDIJack); |
@@ -1364,6 +1371,8 @@ static int snd_usbmidi_get_ms_info(struct snd_usb_midi* umidi, | |||
1364 | endpoints[epidx].in_ep = ep->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK; | 1371 | endpoints[epidx].in_ep = ep->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK; |
1365 | if ((ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT) | 1372 | if ((ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT) |
1366 | endpoints[epidx].in_interval = ep->bInterval; | 1373 | endpoints[epidx].in_interval = ep->bInterval; |
1374 | else if (snd_usb_get_speed(umidi->chip->dev) == USB_SPEED_LOW) | ||
1375 | endpoints[epidx].in_interval = 1; | ||
1367 | endpoints[epidx].in_cables = (1 << ms_ep->bNumEmbMIDIJack) - 1; | 1376 | endpoints[epidx].in_cables = (1 << ms_ep->bNumEmbMIDIJack) - 1; |
1368 | snd_printdd(KERN_INFO "EP %02X: %d jack(s)\n", | 1377 | snd_printdd(KERN_INFO "EP %02X: %d jack(s)\n", |
1369 | ep->bEndpointAddress, ms_ep->bNumEmbMIDIJack); | 1378 | ep->bEndpointAddress, ms_ep->bNumEmbMIDIJack); |