diff options
author | Felipe Balbi <balbi@ti.com> | 2011-10-14 08:11:49 -0400 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2011-12-12 04:48:42 -0500 |
commit | df62df56e13d73cb0dd4c54649d4fe13557128f8 (patch) | |
tree | 1436686e851eb583433c98963496e53be1d3420b /drivers/usb/dwc3/ep0.c | |
parent | 05870c5ba2002c7d49adf8875cca49ee062af894 (diff) |
usb: dwc3: workaround: missing disconnect event
DWC3 revisions <1.88a have an issue which would
case a missing Disconnect event if cable is
disconnected while there's a Setup packet
pending the FIFO.
Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb/dwc3/ep0.c')
-rw-r--r-- | drivers/usb/dwc3/ep0.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c index 314acb289d23..ed44525c8d62 100644 --- a/drivers/usb/dwc3/ep0.c +++ b/drivers/usb/dwc3/ep0.c | |||
@@ -625,6 +625,7 @@ static void dwc3_ep0_xfer_complete(struct dwc3 *dwc, | |||
625 | struct dwc3_ep *dep = dwc->eps[event->endpoint_number]; | 625 | struct dwc3_ep *dep = dwc->eps[event->endpoint_number]; |
626 | 626 | ||
627 | dep->flags &= ~DWC3_EP_BUSY; | 627 | dep->flags &= ~DWC3_EP_BUSY; |
628 | dwc->setup_packet_pending = false; | ||
628 | 629 | ||
629 | switch (dwc->ep0state) { | 630 | switch (dwc->ep0state) { |
630 | case EP0_SETUP_PHASE: | 631 | case EP0_SETUP_PHASE: |
@@ -726,6 +727,8 @@ static void dwc3_ep0_do_control_status(struct dwc3 *dwc, u32 epnum) | |||
726 | static void dwc3_ep0_xfernotready(struct dwc3 *dwc, | 727 | static void dwc3_ep0_xfernotready(struct dwc3 *dwc, |
727 | const struct dwc3_event_depevt *event) | 728 | const struct dwc3_event_depevt *event) |
728 | { | 729 | { |
730 | dwc->setup_packet_pending = true; | ||
731 | |||
729 | /* | 732 | /* |
730 | * This part is very tricky: If we has just handled | 733 | * This part is very tricky: If we has just handled |
731 | * XferNotReady(Setup) and we're now expecting a | 734 | * XferNotReady(Setup) and we're now expecting a |