aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/dwc3/ep0.c
diff options
context:
space:
mode:
authorFelipe Balbi <balbi@ti.com>2011-10-14 08:11:49 -0400
committerFelipe Balbi <balbi@ti.com>2011-12-12 04:48:42 -0500
commitdf62df56e13d73cb0dd4c54649d4fe13557128f8 (patch)
tree1436686e851eb583433c98963496e53be1d3420b /drivers/usb/dwc3/ep0.c
parent05870c5ba2002c7d49adf8875cca49ee062af894 (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.c3
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)
726static void dwc3_ep0_xfernotready(struct dwc3 *dwc, 727static 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