]> git.karo-electronics.de Git - linux-beck.git/commitdiff
usb: dwc3: gadget: use update transfer command
authorFelipe Balbi <balbi@ti.com>
Mon, 28 Sep 2015 19:49:02 +0000 (14:49 -0500)
committerFelipe Balbi <balbi@ti.com>
Mon, 28 Sep 2015 20:19:31 +0000 (15:19 -0500)
If we get a Xfer Not Ready event with reason
"Transfer Active" it means endpoint is still
transferring data and we can use that to issue
update transfer for this particular endpoint
in case we have pending requests in our queue.

Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/dwc3/gadget.c

index c57e2002bcff5b1d0b101981fd8be45df0227ec4..ee3d05fa674d36d308b248c66e105d0c364f8b25 100644 (file)
@@ -2012,15 +2012,16 @@ static void dwc3_endpoint_interrupt(struct dwc3 *dwc,
                if (usb_endpoint_xfer_isoc(dep->endpoint.desc)) {
                        dwc3_gadget_start_isoc(dwc, dep, event);
                } else {
+                       int active;
                        int ret;
 
+                       active = event->status & DEPEVT_STATUS_TRANSFER_ACTIVE;
+
                        dwc3_trace(trace_dwc3_gadget, "%s: reason %s",
-                                       dep->name, event->status &
-                                       DEPEVT_STATUS_TRANSFER_ACTIVE
-                                       ? "Transfer Active"
+                                       dep->name, active ? "Transfer Active"
                                        : "Transfer Not Active");
 
-                       ret = __dwc3_gadget_kick_transfer(dep, 0, 1);
+                       ret = __dwc3_gadget_kick_transfer(dep, 0, !active);
                        if (!ret || ret == -EBUSY)
                                return;