|
@@ -1351,6 +1351,13 @@ static int snd_usbmidi_get_ms_info(struct snd_usb_midi* umidi,
|
|
endpoints[epidx].out_ep = ep->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK;
|
|
endpoints[epidx].out_ep = ep->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK;
|
|
if ((ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT)
|
|
if ((ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT)
|
|
endpoints[epidx].out_interval = ep->bInterval;
|
|
endpoints[epidx].out_interval = ep->bInterval;
|
|
|
|
+ else if (snd_usb_get_speed(umidi->chip->dev) == USB_SPEED_LOW)
|
|
|
|
+ /*
|
|
|
|
+ * Low speed bulk transfers don't exist, so
|
|
|
|
+ * force interrupt transfers for devices like
|
|
|
|
+ * ESI MIDI Mate that try to use them anyway.
|
|
|
|
+ */
|
|
|
|
+ endpoints[epidx].out_interval = 1;
|
|
endpoints[epidx].out_cables = (1 << ms_ep->bNumEmbMIDIJack) - 1;
|
|
endpoints[epidx].out_cables = (1 << ms_ep->bNumEmbMIDIJack) - 1;
|
|
snd_printdd(KERN_INFO "EP %02X: %d jack(s)\n",
|
|
snd_printdd(KERN_INFO "EP %02X: %d jack(s)\n",
|
|
ep->bEndpointAddress, ms_ep->bNumEmbMIDIJack);
|
|
ep->bEndpointAddress, ms_ep->bNumEmbMIDIJack);
|
|
@@ -1364,6 +1371,8 @@ static int snd_usbmidi_get_ms_info(struct snd_usb_midi* umidi,
|
|
endpoints[epidx].in_ep = ep->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK;
|
|
endpoints[epidx].in_ep = ep->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK;
|
|
if ((ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT)
|
|
if ((ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT)
|
|
endpoints[epidx].in_interval = ep->bInterval;
|
|
endpoints[epidx].in_interval = ep->bInterval;
|
|
|
|
+ else if (snd_usb_get_speed(umidi->chip->dev) == USB_SPEED_LOW)
|
|
|
|
+ endpoints[epidx].in_interval = 1;
|
|
endpoints[epidx].in_cables = (1 << ms_ep->bNumEmbMIDIJack) - 1;
|
|
endpoints[epidx].in_cables = (1 << ms_ep->bNumEmbMIDIJack) - 1;
|
|
snd_printdd(KERN_INFO "EP %02X: %d jack(s)\n",
|
|
snd_printdd(KERN_INFO "EP %02X: %d jack(s)\n",
|
|
ep->bEndpointAddress, ms_ep->bNumEmbMIDIJack);
|
|
ep->bEndpointAddress, ms_ep->bNumEmbMIDIJack);
|