|
@@ -809,12 +809,6 @@ static void dwc3_ep0_xfer_complete(struct dwc3 *dwc,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void dwc3_ep0_do_control_setup(struct dwc3 *dwc,
|
|
|
- const struct dwc3_event_depevt *event)
|
|
|
-{
|
|
|
- dwc3_ep0_out_start(dwc);
|
|
|
-}
|
|
|
-
|
|
|
static void __dwc3_ep0_do_control_data(struct dwc3 *dwc,
|
|
|
struct dwc3_ep *dep, struct dwc3_request *req)
|
|
|
{
|
|
@@ -926,50 +920,7 @@ static void dwc3_ep0_xfernotready(struct dwc3 *dwc,
|
|
|
{
|
|
|
dwc->setup_packet_pending = true;
|
|
|
|
|
|
- /*
|
|
|
- * This part is very tricky: If we have just handled
|
|
|
- * XferNotReady(Setup) and we're now expecting a
|
|
|
- * XferComplete but, instead, we receive another
|
|
|
- * XferNotReady(Setup), we should STALL and restart
|
|
|
- * the state machine.
|
|
|
- *
|
|
|
- * In all other cases, we just continue waiting
|
|
|
- * for the XferComplete event.
|
|
|
- *
|
|
|
- * We are a little bit unsafe here because we're
|
|
|
- * not trying to ensure that last event was, indeed,
|
|
|
- * XferNotReady(Setup).
|
|
|
- *
|
|
|
- * Still, we don't expect any condition where that
|
|
|
- * should happen and, even if it does, it would be
|
|
|
- * another error condition.
|
|
|
- */
|
|
|
- if (dwc->ep0_next_event == DWC3_EP0_COMPLETE) {
|
|
|
- switch (event->status) {
|
|
|
- case DEPEVT_STATUS_CONTROL_SETUP:
|
|
|
- dev_vdbg(dwc->dev, "Unexpected XferNotReady(Setup)\n");
|
|
|
- dwc3_ep0_stall_and_restart(dwc);
|
|
|
- break;
|
|
|
- case DEPEVT_STATUS_CONTROL_DATA:
|
|
|
- /* FALLTHROUGH */
|
|
|
- case DEPEVT_STATUS_CONTROL_STATUS:
|
|
|
- /* FALLTHROUGH */
|
|
|
- default:
|
|
|
- dev_vdbg(dwc->dev, "waiting for XferComplete\n");
|
|
|
- }
|
|
|
-
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
switch (event->status) {
|
|
|
- case DEPEVT_STATUS_CONTROL_SETUP:
|
|
|
- dev_vdbg(dwc->dev, "Control Setup\n");
|
|
|
-
|
|
|
- dwc->ep0state = EP0_SETUP_PHASE;
|
|
|
-
|
|
|
- dwc3_ep0_do_control_setup(dwc, event);
|
|
|
- break;
|
|
|
-
|
|
|
case DEPEVT_STATUS_CONTROL_DATA:
|
|
|
dev_vdbg(dwc->dev, "Control Data\n");
|
|
|
|