diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index 8162e1f2a02d..1f41b05e26b8 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -2550,6 +2550,9 @@ static void dwc3_endpoint_interrupt(struct dwc3 *dwc, } if (epnum == 0 || epnum == 1) { + if (!dwc->connected && + event->endpoint_event == DWC3_DEPEVT_XFERCOMPLETE) + dwc->connected = true; dwc3_ep0_interrupt(dwc, event); return; } @@ -2716,8 +2719,6 @@ static void dwc3_gadget_reset_interrupt(struct dwc3 *dwc) { u32 reg; - dwc->connected = true; - /* * WORKAROUND: DWC3 revisions <1.88a have an issue which * would cause a missing Disconnect Event if there's a