|
@@ -1123,7 +1123,21 @@ static void dwc3_ep0_xfernotready(struct dwc3 *dwc,
|
|
dwc->ep0state = EP0_STATUS_PHASE;
|
|
dwc->ep0state = EP0_STATUS_PHASE;
|
|
|
|
|
|
if (dwc->delayed_status) {
|
|
if (dwc->delayed_status) {
|
|
|
|
+ struct dwc3_ep *dep = dwc->eps[0];
|
|
|
|
+
|
|
WARN_ON_ONCE(event->endpoint_number != 1);
|
|
WARN_ON_ONCE(event->endpoint_number != 1);
|
|
|
|
+ /*
|
|
|
|
+ * We should handle the delay STATUS phase here if the
|
|
|
|
+ * request for handling delay STATUS has been queued
|
|
|
|
+ * into the list.
|
|
|
|
+ */
|
|
|
|
+ if (!list_empty(&dep->pending_list)) {
|
|
|
|
+ dwc->delayed_status = false;
|
|
|
|
+ usb_gadget_set_state(&dwc->gadget,
|
|
|
|
+ USB_STATE_CONFIGURED);
|
|
|
|
+ dwc3_ep0_do_control_status(dwc, event);
|
|
|
|
+ }
|
|
|
|
+
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|