diff options
author | Clemens Ladisch <clemens@ladisch.de> | 2007-05-07 03:29:32 -0400 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2007-05-11 10:56:17 -0400 |
commit | 490cbd92ed4d9915b582f4e40c605eeb977e5d40 (patch) | |
tree | afbe6759e98fe65ac4015869139c347b52ef8f44 /sound | |
parent | d05cc104320210e1c38ff9675c5038cffb2d86dc (diff) |
[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 <clemens@ladisch.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/usb/usbmidi.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sound/usb/usbmidi.c b/sound/usb/usbmidi.c index 911f4482b5e1..99295f9b7691 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, | |||
965 | } | 965 | } |
966 | /* we never use interrupt output pipes */ | 966 | /* we never use interrupt output pipes */ |
967 | pipe = usb_sndbulkpipe(umidi->chip->dev, ep_info->out_ep); | 967 | pipe = usb_sndbulkpipe(umidi->chip->dev, ep_info->out_ep); |
968 | ep->max_transfer = usb_maxpacket(umidi->chip->dev, pipe, 1); | 968 | if (umidi->chip->usb_id == USB_ID(0x0a92, 0x1020)) /* ESI M4U */ |
969 | /* FIXME: we need more URBs to get reasonable bandwidth here: */ | ||
970 | ep->max_transfer = 4; | ||
971 | else | ||
972 | ep->max_transfer = usb_maxpacket(umidi->chip->dev, pipe, 1); | ||
969 | buffer = usb_buffer_alloc(umidi->chip->dev, ep->max_transfer, | 973 | buffer = usb_buffer_alloc(umidi->chip->dev, ep->max_transfer, |
970 | GFP_KERNEL, &ep->urb->transfer_dma); | 974 | GFP_KERNEL, &ep->urb->transfer_dma); |
971 | if (!buffer) { | 975 | if (!buffer) { |