On Sun, Nov 23, 2014 at 06:03:23PM -0800, Greg Kroah-Hartman wrote: > The xpad wireless endpoint is not a bulk endpoint on my devices, but > rather an interrupt one, so the USB core complains when it is submitted. > I'm guessing that the author really did mean that this should be an > interrupt urb, but as there are a zillion different xpad devices out > there, let's cover out bases and handle both bulk and interrupt > endpoints just as easily. > > Signed-off-by: "Pierre-Loup A. Griffais" <pgriffais@xxxxxxxxxxxxxxxxx> > Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > Cc: stable <stable@xxxxxxxxxxxxxxx> Applied, thank you. > --- > > This has been in my local tree since January, don't know why it never > got pushed out, sorry for the delay. Valve has been using a version of > this patch for a year now. > > drivers/input/joystick/xpad.c | 16 +++++++++++++--- > 1 file changed, 13 insertions(+), 3 deletions(-) > > --- a/drivers/input/joystick/xpad.c > +++ b/drivers/input/joystick/xpad.c > @@ -1179,9 +1179,19 @@ static int xpad_probe(struct usb_interfa > } > > ep_irq_in = &intf->cur_altsetting->endpoint[1].desc; > - usb_fill_bulk_urb(xpad->bulk_out, udev, > - usb_sndbulkpipe(udev, ep_irq_in->bEndpointAddress), > - xpad->bdata, XPAD_PKT_LEN, xpad_bulk_out, xpad); > + if (usb_endpoint_is_bulk_out(ep_irq_in)) { > + usb_fill_bulk_urb(xpad->bulk_out, udev, > + usb_sndbulkpipe(udev, > + ep_irq_in->bEndpointAddress), > + xpad->bdata, XPAD_PKT_LEN, > + xpad_bulk_out, xpad); > + } else { > + usb_fill_int_urb(xpad->bulk_out, udev, > + usb_sndintpipe(udev, > + ep_irq_in->bEndpointAddress), > + xpad->bdata, XPAD_PKT_LEN, > + xpad_bulk_out, xpad, 0); > + } > > /* > * Submit the int URB immediately rather than waiting for open -- Dmitry -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html