[alsa-devel] [PATCH 1/1] Allow any MIDI endpoint to drive use of interrupt transfer on Roland devices
From: "Keith A. Milner" kamilner@superlative.org
Signed-off-by: Keith A. Milner maillist@superlative.org
diff --git a/sound/usb/midi.c b/sound/usb/midi.c index b901f46..52b8c72 100644 --- a/sound/usb/midi.c +++ b/sound/usb/midi.c @@ -1860,9 +1860,14 @@ static void snd_usbmidi_switch_roland_altsetting(struct snd_usb_midi* umidi)
hostif = &intf->altsetting[1]; intfd = get_iface_desc(hostif); + /* If either or both of the endpoints support interrupt transfer, + * then use the alternate setting + */ if (intfd->bNumEndpoints != 2 || - (get_endpoint(hostif, 0)->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) != USB_ENDPOINT_XFER_BULK || - (get_endpoint(hostif, 1)->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) != USB_ENDPOINT_XFER_INT) + !((get_endpoint(hostif, 0)->bmAttributes + & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT || + (get_endpoint(hostif, 1)->bmAttributes + & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT)) return;
snd_printdd(KERN_INFO "switching to altsetting %d with int ep\n",
On Sat, 10 Oct 2015 20:59:01 +0200, maillist@superlative.org wrote:
From: "Keith A. Milner" kamilner@superlative.org
Signed-off-by: Keith A. Milner maillist@superlative.org
The most important piece is missing -- why this change is needed at all. Could you give more detailed description?
thanks,
Takashi
diff --git a/sound/usb/midi.c b/sound/usb/midi.c index b901f46..52b8c72 100644 --- a/sound/usb/midi.c +++ b/sound/usb/midi.c @@ -1860,9 +1860,14 @@ static void snd_usbmidi_switch_roland_altsetting(struct snd_usb_midi* umidi)
hostif = &intf->altsetting[1]; intfd = get_iface_desc(hostif);
- /* If either or both of the endpoints support interrupt transfer,
* then use the alternate setting
if (intfd->bNumEndpoints != 2 ||*/
(get_endpoint(hostif, 0)->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) != USB_ENDPOINT_XFER_BULK ||
(get_endpoint(hostif, 1)->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) != USB_ENDPOINT_XFER_INT)
!((get_endpoint(hostif, 0)->bmAttributes
& USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT ||
(get_endpoint(hostif, 1)->bmAttributes
& USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT))
return;
snd_printdd(KERN_INFO "switching to altsetting %d with int ep\n",
-- 1.9.1
participants (2)
-
maillist@superlative.org
-
Takashi Iwai