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" <[email protected]>
> Signed-off-by: Greg Kroah-Hartman <[email protected]>
> Cc: stable <[email protected]>
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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html