usb: dwc3: gadget: Clear started flag for non-IOC
authorThinh Nguyen <Thinh.Nguyen@synopsys.com>
Wed, 27 Nov 2019 21:10:47 +0000 (13:10 -0800)
committerFelipe Balbi <balbi@kernel.org>
Tue, 10 Dec 2019 12:52:41 +0000 (14:52 +0200)
Normally the END_TRANSFER command completion handler will clear the
DWC3_EP_TRANSFER_STARTED flag. However, if the command was sent without
interrupt on completion, then the flag will not be cleared. Make sure to
clear the flag in this case.

Cc: stable@vger.kernel.org
Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
Signed-off-by: Felipe Balbi <balbi@kernel.org>
drivers/usb/dwc3/gadget.c

index 6ff6ee4..0c960a9 100644 (file)
@@ -2719,6 +2719,9 @@ static void dwc3_stop_active_transfer(struct dwc3_ep *dep, bool force,
        WARN_ON_ONCE(ret);
        dep->resource_index = 0;
 
+       if (!interrupt)
+               dep->flags &= ~DWC3_EP_TRANSFER_STARTED;
+
        if (dwc3_is_usb31(dwc) || dwc->revision < DWC3_REVISION_310A)
                udelay(100);
 }