From: Clemens Ladisch Date: Mon, 7 May 2007 07:29:32 +0000 (+0200) Subject: [ALSA] usb-audio: work around wrong wMaxPacketSize on ESI M4U X-Git-Tag: v2.6.22-rc1~22^2~4 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=490cbd92ed4d9915b582f4e40c605eeb977e5d40;p=linux-2.6 [ALSA] usb-audio: work around wrong wMaxPacketSize on ESI M4U Add a workaround for the ESI M4U that claims to support 32-byte packets but ignores the remaining bytes of packets bigger than four bytes. Signed-off-by: Clemens Ladisch Signed-off-by: Jaroslav Kysela --- diff --git a/sound/usb/usbmidi.c b/sound/usb/usbmidi.c index 911f4482b5..99295f9b76 100644 --- a/sound/usb/usbmidi.c +++ b/sound/usb/usbmidi.c @@ -965,7 +965,11 @@ static int snd_usbmidi_out_endpoint_create(struct snd_usb_midi* umidi, } /* we never use interrupt output pipes */ pipe = usb_sndbulkpipe(umidi->chip->dev, ep_info->out_ep); - ep->max_transfer = usb_maxpacket(umidi->chip->dev, pipe, 1); + if (umidi->chip->usb_id == USB_ID(0x0a92, 0x1020)) /* ESI M4U */ + /* FIXME: we need more URBs to get reasonable bandwidth here: */ + ep->max_transfer = 4; + else + ep->max_transfer = usb_maxpacket(umidi->chip->dev, pipe, 1); buffer = usb_buffer_alloc(umidi->chip->dev, ep->max_transfer, GFP_KERNEL, &ep->urb->transfer_dma); if (!buffer) {