diff options
author | Paul Zimmerman <Paul.Zimmerman@synopsys.com> | 2012-02-25 02:32:18 +0100 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2012-03-02 11:12:11 +0100 |
commit | c2df85ca31645ed3c68c56bd30a3673e034224f1 (patch) | |
tree | 1a344944e22d7e4407c5d1c341323c73bf26fa16 /drivers/usb/dwc3/gadget.c | |
parent | usb: dwc3: take lock while modifying flags (diff) | |
download | linux-c2df85ca31645ed3c68c56bd30a3673e034224f1.tar.xz linux-c2df85ca31645ed3c68c56bd30a3673e034224f1.zip |
usb: dwc3: clear 'res_trans_idx' as soon as it becomes invalid
Transfer resource index is cleared in hardware when XFERCOMPLETE
event is generated, so clear the driver's res_trans_idx variable
immediately after that event is received. The upcoming hibernation
patches depend on this change.
Signed-off-by: Paul Zimmerman <paulz@synopsys.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb/dwc3/gadget.c')
-rw-r--r-- | drivers/usb/dwc3/gadget.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index bfdfd4f151f8..da317f6a8bce 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -1628,10 +1628,8 @@ static void dwc3_endpoint_transfer_complete(struct dwc3 *dwc, status = -ECONNRESET; clean_busy = dwc3_cleanup_done_reqs(dwc, dep, event, status); - if (clean_busy) { + if (clean_busy) dep->flags &= ~DWC3_EP_BUSY; - dep->res_trans_idx = 0; - } /* * WORKAROUND: This is the 2nd half of U1/U2 -> U0 workaround. @@ -1736,6 +1734,8 @@ static void dwc3_endpoint_interrupt(struct dwc3 *dwc, switch (event->endpoint_event) { case DWC3_DEPEVT_XFERCOMPLETE: + dep->res_trans_idx = 0; + if (usb_endpoint_xfer_isoc(dep->desc)) { dev_dbg(dwc->dev, "%s is an Isochronous endpoint\n", dep->name); |