[alsa-devel] [RESEND PATCH 1/1] Allow any MIDI endpoint to drive use of interrupt transfer on newer Roland devices

Takashi Iwai tiwai at suse.de
Sun Oct 11 18:21:48 CEST 2015


On Sun, 11 Oct 2015 16:19:48 +0200,
maillist at superlative.org wrote:
> 
> From: "Keith A. Milner" <maillist at superlative.org>
> 
> This patch enables interrupt transfer mode for MIDI ports on newer
> Boss/Roland devices such as the GT-100/001 which support interrupt
> transfer on both IN and OUT MIDI endpoints. Previously this wasn't being
> enabled for these devices as the code was specifically looking for the
> scenario where the IN endpoint supported interrupt transfer and the OUT
> endpoint was bulk transfer. Newer devices support interrupt transfer for
> both endpoints.
> 
> This has been tested on Boss devices GT-001, BR-80 and JS-8 and Roland
> VS-20.
> 
> It would benefit from some regresison testing with other devices if
> possible.
> 
> Signed-off-by: Keith A. Milner <maillist at superlative.org>

Thanks, now it looks much better.

But the patch didn't apply cleanly to the latest kernel, so I had to
adjust manually.  At the next time, please try to align with the
latest kernel tree.


Takashi

> 
> diff --git a/sound/usb/midi.c b/sound/usb/midi.c
> index b901f46..d50c649 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
> 


More information about the Alsa-devel mailing list