Lines Matching full:dwc

30 static void __dwc3_ep0_do_control_status(struct dwc3 *dwc, struct dwc3_ep *dep);
31 static void __dwc3_ep0_do_control_data(struct dwc3 *dwc,
33 static int dwc3_ep0_delegate_req(struct dwc3 *dwc,
40 struct dwc3 *dwc; in dwc3_ep0_prepare_one_trb() local
42 dwc = dep->dwc; in dwc3_ep0_prepare_one_trb()
43 trb = &dwc->ep0_trb[dep->trb_enqueue]; in dwc3_ep0_prepare_one_trb()
68 struct dwc3 *dwc; in dwc3_ep0_start_trans() local
74 dwc = dep->dwc; in dwc3_ep0_start_trans()
77 params.param0 = upper_32_bits(dwc->ep0_trb_addr); in dwc3_ep0_start_trans()
78 params.param1 = lower_32_bits(dwc->ep0_trb_addr); in dwc3_ep0_start_trans()
84 dwc->ep0_next_event = DWC3_EP0_COMPLETE; in dwc3_ep0_start_trans()
92 struct dwc3 *dwc = dep->dwc; in __dwc3_gadget_ep0_queue() local
114 if (dwc->ep0state != EP0_DATA_PHASE) { in __dwc3_gadget_ep0_queue()
115 dev_WARN(dwc->dev, "Unexpected pending request\n"); in __dwc3_gadget_ep0_queue()
119 __dwc3_ep0_do_control_data(dwc, dwc->eps[direction], req); in __dwc3_gadget_ep0_queue()
131 if (dwc->delayed_status) { in __dwc3_gadget_ep0_queue()
134 direction = !dwc->ep0_expect_in; in __dwc3_gadget_ep0_queue()
135 dwc->delayed_status = false; in __dwc3_gadget_ep0_queue()
136 usb_gadget_set_state(dwc->gadget, USB_STATE_CONFIGURED); in __dwc3_gadget_ep0_queue()
138 if (dwc->ep0state == EP0_STATUS_PHASE) in __dwc3_gadget_ep0_queue()
139 __dwc3_ep0_do_control_status(dwc, dwc->eps[direction]); in __dwc3_gadget_ep0_queue()
176 if (dwc->three_stage_setup) { in __dwc3_gadget_ep0_queue()
179 direction = dwc->ep0_expect_in; in __dwc3_gadget_ep0_queue()
180 dwc->ep0state = EP0_DATA_PHASE; in __dwc3_gadget_ep0_queue()
182 __dwc3_ep0_do_control_data(dwc, dwc->eps[direction], req); in __dwc3_gadget_ep0_queue()
195 struct dwc3 *dwc = dep->dwc; in dwc3_gadget_ep0_queue() local
201 spin_lock_irqsave(&dwc->lock, flags); in dwc3_gadget_ep0_queue()
202 if (!dep->endpoint.desc || !dwc->pullups_connected || !dwc->connected) { in dwc3_gadget_ep0_queue()
203 dev_err(dwc->dev, "%s: can't queue to disabled endpoint\n", in dwc3_gadget_ep0_queue()
218 spin_unlock_irqrestore(&dwc->lock, flags); in dwc3_gadget_ep0_queue()
223 void dwc3_ep0_stall_and_restart(struct dwc3 *dwc) in dwc3_ep0_stall_and_restart() argument
228 dep = dwc->eps[1]; in dwc3_ep0_stall_and_restart()
233 dep = dwc->eps[0]; in dwc3_ep0_stall_and_restart()
237 dwc->delayed_status = false; in dwc3_ep0_stall_and_restart()
243 if (!dwc->connected) in dwc3_ep0_stall_and_restart()
249 dwc->eps[0]->trb_enqueue = 0; in dwc3_ep0_stall_and_restart()
250 dwc->eps[1]->trb_enqueue = 0; in dwc3_ep0_stall_and_restart()
251 dwc->ep0state = EP0_SETUP_PHASE; in dwc3_ep0_stall_and_restart()
252 dwc3_ep0_out_start(dwc); in dwc3_ep0_stall_and_restart()
258 struct dwc3 *dwc = dep->dwc; in __dwc3_gadget_ep0_set_halt() local
260 dwc3_ep0_stall_and_restart(dwc); in __dwc3_gadget_ep0_set_halt()
268 struct dwc3 *dwc = dep->dwc; in dwc3_gadget_ep0_set_halt() local
272 spin_lock_irqsave(&dwc->lock, flags); in dwc3_gadget_ep0_set_halt()
274 spin_unlock_irqrestore(&dwc->lock, flags); in dwc3_gadget_ep0_set_halt()
279 void dwc3_ep0_out_start(struct dwc3 *dwc) in dwc3_ep0_out_start() argument
285 complete(&dwc->ep0_in_setup); in dwc3_ep0_out_start()
287 dep = dwc->eps[0]; in dwc3_ep0_out_start()
288 dwc3_ep0_prepare_one_trb(dep, dwc->ep0_trb_addr, 8, in dwc3_ep0_out_start()
292 dev_err(dwc->dev, "ep0 out start transfer failed: %d\n", ret); in dwc3_ep0_out_start()
297 dwc3_ep = dwc->eps[i]; in dwc3_ep0_out_start()
305 if (dwc->connected) in dwc3_ep0_out_start()
308 dwc3_remove_requests(dwc, dwc3_ep, -ESHUTDOWN); in dwc3_ep0_out_start()
312 static struct dwc3_ep *dwc3_wIndex_to_dep(struct dwc3 *dwc, __le16 wIndex_le) in dwc3_wIndex_to_dep() argument
322 dep = dwc->eps[epnum]; in dwc3_wIndex_to_dep()
338 static int dwc3_ep0_handle_status(struct dwc3 *dwc, in dwc3_ep0_handle_status() argument
359 usb_status |= dwc->gadget->is_selfpowered; in dwc3_ep0_handle_status()
361 if ((dwc->speed == DWC3_DSTS_SUPERSPEED) || in dwc3_ep0_handle_status()
362 (dwc->speed == DWC3_DSTS_SUPERSPEED_PLUS)) { in dwc3_ep0_handle_status()
363 reg = dwc3_readl(dwc->regs, DWC3_DCTL); in dwc3_ep0_handle_status()
369 usb_status |= dwc->gadget->wakeup_armed << in dwc3_ep0_handle_status()
380 return dwc3_ep0_delegate_req(dwc, ctrl); in dwc3_ep0_handle_status()
383 dep = dwc3_wIndex_to_dep(dwc, ctrl->wIndex); in dwc3_ep0_handle_status()
394 response_pkt = (__le16 *) dwc->setup_buf; in dwc3_ep0_handle_status()
397 dep = dwc->eps[0]; in dwc3_ep0_handle_status()
398 dwc->ep0_usb_req.dep = dep; in dwc3_ep0_handle_status()
399 dwc->ep0_usb_req.request.length = sizeof(*response_pkt); in dwc3_ep0_handle_status()
400 dwc->ep0_usb_req.request.buf = dwc->setup_buf; in dwc3_ep0_handle_status()
401 dwc->ep0_usb_req.request.complete = dwc3_ep0_status_cmpl; in dwc3_ep0_handle_status()
403 return __dwc3_gadget_ep0_queue(dep, &dwc->ep0_usb_req); in dwc3_ep0_handle_status()
406 static int dwc3_ep0_handle_u1(struct dwc3 *dwc, enum usb_device_state state, in dwc3_ep0_handle_u1() argument
413 if ((dwc->speed != DWC3_DSTS_SUPERSPEED) && in dwc3_ep0_handle_u1()
414 (dwc->speed != DWC3_DSTS_SUPERSPEED_PLUS)) in dwc3_ep0_handle_u1()
416 if (set && dwc->dis_u1_entry_quirk) in dwc3_ep0_handle_u1()
419 reg = dwc3_readl(dwc->regs, DWC3_DCTL); in dwc3_ep0_handle_u1()
424 dwc3_writel(dwc->regs, DWC3_DCTL, reg); in dwc3_ep0_handle_u1()
429 static int dwc3_ep0_handle_u2(struct dwc3 *dwc, enum usb_device_state state, in dwc3_ep0_handle_u2() argument
437 if ((dwc->speed != DWC3_DSTS_SUPERSPEED) && in dwc3_ep0_handle_u2()
438 (dwc->speed != DWC3_DSTS_SUPERSPEED_PLUS)) in dwc3_ep0_handle_u2()
440 if (set && dwc->dis_u2_entry_quirk) in dwc3_ep0_handle_u2()
443 reg = dwc3_readl(dwc->regs, DWC3_DCTL); in dwc3_ep0_handle_u2()
448 dwc3_writel(dwc->regs, DWC3_DCTL, reg); in dwc3_ep0_handle_u2()
453 static int dwc3_ep0_handle_test(struct dwc3 *dwc, enum usb_device_state state, in dwc3_ep0_handle_test() argument
467 dwc->test_mode_nr = wIndex >> 8; in dwc3_ep0_handle_test()
468 dwc->test_mode = true; in dwc3_ep0_handle_test()
477 static int dwc3_ep0_handle_device(struct dwc3 *dwc, in dwc3_ep0_handle_device() argument
487 state = dwc->gadget->state; in dwc3_ep0_handle_device()
491 if (dwc->wakeup_configured) in dwc3_ep0_handle_device()
492 dwc->gadget->wakeup_armed = set; in dwc3_ep0_handle_device()
501 ret = dwc3_ep0_handle_u1(dwc, state, set); in dwc3_ep0_handle_device()
504 ret = dwc3_ep0_handle_u2(dwc, state, set); in dwc3_ep0_handle_device()
510 ret = dwc3_ep0_handle_test(dwc, state, wIndex, set); in dwc3_ep0_handle_device()
519 static int dwc3_ep0_handle_intf(struct dwc3 *dwc, in dwc3_ep0_handle_intf() argument
529 ret = dwc3_ep0_delegate_req(dwc, ctrl); in dwc3_ep0_handle_intf()
538 static int dwc3_ep0_handle_endpoint(struct dwc3 *dwc, in dwc3_ep0_handle_endpoint() argument
549 dep = dwc3_wIndex_to_dep(dwc, ctrl->wIndex); in dwc3_ep0_handle_endpoint()
572 static int dwc3_ep0_handle_feature(struct dwc3 *dwc, in dwc3_ep0_handle_feature() argument
582 ret = dwc3_ep0_handle_device(dwc, ctrl, set); in dwc3_ep0_handle_feature()
585 ret = dwc3_ep0_handle_intf(dwc, ctrl, set); in dwc3_ep0_handle_feature()
588 ret = dwc3_ep0_handle_endpoint(dwc, ctrl, set); in dwc3_ep0_handle_feature()
597 static int dwc3_ep0_set_address(struct dwc3 *dwc, struct usb_ctrlrequest *ctrl) in dwc3_ep0_set_address() argument
599 enum usb_device_state state = dwc->gadget->state; in dwc3_ep0_set_address()
605 dev_err(dwc->dev, "invalid device address %d\n", addr); in dwc3_ep0_set_address()
610 dev_err(dwc->dev, "can't SetAddress() from Configured State\n"); in dwc3_ep0_set_address()
614 reg = dwc3_readl(dwc->regs, DWC3_DCFG); in dwc3_ep0_set_address()
617 dwc3_writel(dwc->regs, DWC3_DCFG, reg); in dwc3_ep0_set_address()
620 usb_gadget_set_state(dwc->gadget, USB_STATE_ADDRESS); in dwc3_ep0_set_address()
622 usb_gadget_set_state(dwc->gadget, USB_STATE_DEFAULT); in dwc3_ep0_set_address()
627 static int dwc3_ep0_delegate_req(struct dwc3 *dwc, struct usb_ctrlrequest *ctrl) in dwc3_ep0_delegate_req() argument
631 if (dwc->async_callbacks) { in dwc3_ep0_delegate_req()
632 spin_unlock(&dwc->lock); in dwc3_ep0_delegate_req()
633 ret = dwc->gadget_driver->setup(dwc->gadget, ctrl); in dwc3_ep0_delegate_req()
634 spin_lock(&dwc->lock); in dwc3_ep0_delegate_req()
639 static int dwc3_ep0_set_config(struct dwc3 *dwc, struct usb_ctrlrequest *ctrl) in dwc3_ep0_set_config() argument
641 enum usb_device_state state = dwc->gadget->state; in dwc3_ep0_set_config()
653 dwc3_gadget_start_config(dwc, 2); in dwc3_ep0_set_config()
654 dwc3_gadget_clear_tx_fifos(dwc); in dwc3_ep0_set_config()
656 ret = dwc3_ep0_delegate_req(dwc, ctrl); in dwc3_ep0_set_config()
667 usb_gadget_set_state(dwc->gadget, in dwc3_ep0_set_config()
674 reg = dwc3_readl(dwc->regs, DWC3_DCTL); in dwc3_ep0_set_config()
675 if (!dwc->dis_u1_entry_quirk) in dwc3_ep0_set_config()
677 if (!dwc->dis_u2_entry_quirk) in dwc3_ep0_set_config()
679 dwc3_writel(dwc->regs, DWC3_DCTL, reg); in dwc3_ep0_set_config()
684 ret = dwc3_ep0_delegate_req(dwc, ctrl); in dwc3_ep0_set_config()
686 usb_gadget_set_state(dwc->gadget, in dwc3_ep0_set_config()
698 struct dwc3 *dwc = dep->dwc; in dwc3_ep0_set_sel_cmpl() local
714 dwc->u1sel = timing.u1sel; in dwc3_ep0_set_sel_cmpl()
715 dwc->u1pel = timing.u1pel; in dwc3_ep0_set_sel_cmpl()
716 dwc->u2sel = le16_to_cpu(timing.u2sel); in dwc3_ep0_set_sel_cmpl()
717 dwc->u2pel = le16_to_cpu(timing.u2pel); in dwc3_ep0_set_sel_cmpl()
719 reg = dwc3_readl(dwc->regs, DWC3_DCTL); in dwc3_ep0_set_sel_cmpl()
721 param = dwc->u2pel; in dwc3_ep0_set_sel_cmpl()
723 param = dwc->u1pel; in dwc3_ep0_set_sel_cmpl()
734 ret = dwc3_send_gadget_generic_command(dwc, in dwc3_ep0_set_sel_cmpl()
739 static int dwc3_ep0_set_sel(struct dwc3 *dwc, struct usb_ctrlrequest *ctrl) in dwc3_ep0_set_sel() argument
742 enum usb_device_state state = dwc->gadget->state; in dwc3_ep0_set_sel()
751 dev_err(dwc->dev, "Set SEL should be 6 bytes, got %d\n", in dwc3_ep0_set_sel()
764 dep = dwc->eps[0]; in dwc3_ep0_set_sel()
765 dwc->ep0_usb_req.dep = dep; in dwc3_ep0_set_sel()
766 dwc->ep0_usb_req.request.length = dep->endpoint.maxpacket; in dwc3_ep0_set_sel()
767 dwc->ep0_usb_req.request.buf = dwc->setup_buf; in dwc3_ep0_set_sel()
768 dwc->ep0_usb_req.request.complete = dwc3_ep0_set_sel_cmpl; in dwc3_ep0_set_sel()
770 return __dwc3_gadget_ep0_queue(dep, &dwc->ep0_usb_req); in dwc3_ep0_set_sel()
773 static int dwc3_ep0_set_isoch_delay(struct dwc3 *dwc, struct usb_ctrlrequest *ctrl) in dwc3_ep0_set_isoch_delay() argument
786 dwc->gadget->isoch_delay = wValue; in dwc3_ep0_set_isoch_delay()
791 static int dwc3_ep0_std_request(struct dwc3 *dwc, struct usb_ctrlrequest *ctrl) in dwc3_ep0_std_request() argument
797 ret = dwc3_ep0_handle_status(dwc, ctrl); in dwc3_ep0_std_request()
800 ret = dwc3_ep0_handle_feature(dwc, ctrl, 0); in dwc3_ep0_std_request()
803 ret = dwc3_ep0_handle_feature(dwc, ctrl, 1); in dwc3_ep0_std_request()
806 ret = dwc3_ep0_set_address(dwc, ctrl); in dwc3_ep0_std_request()
809 ret = dwc3_ep0_set_config(dwc, ctrl); in dwc3_ep0_std_request()
812 ret = dwc3_ep0_set_sel(dwc, ctrl); in dwc3_ep0_std_request()
815 ret = dwc3_ep0_set_isoch_delay(dwc, ctrl); in dwc3_ep0_std_request()
818 ret = dwc3_ep0_delegate_req(dwc, ctrl); in dwc3_ep0_std_request()
825 static void dwc3_ep0_inspect_setup(struct dwc3 *dwc, in dwc3_ep0_inspect_setup() argument
828 struct usb_ctrlrequest *ctrl = (void *) dwc->ep0_trb; in dwc3_ep0_inspect_setup()
832 if (!dwc->gadget_driver || !dwc->softconnect || !dwc->connected) in dwc3_ep0_inspect_setup()
839 dwc->three_stage_setup = false; in dwc3_ep0_inspect_setup()
840 dwc->ep0_expect_in = false; in dwc3_ep0_inspect_setup()
841 dwc->ep0_next_event = DWC3_EP0_NRDY_STATUS; in dwc3_ep0_inspect_setup()
843 dwc->three_stage_setup = true; in dwc3_ep0_inspect_setup()
844 dwc->ep0_expect_in = !!(ctrl->bRequestType & USB_DIR_IN); in dwc3_ep0_inspect_setup()
845 dwc->ep0_next_event = DWC3_EP0_NRDY_DATA; in dwc3_ep0_inspect_setup()
849 ret = dwc3_ep0_std_request(dwc, ctrl); in dwc3_ep0_inspect_setup()
851 ret = dwc3_ep0_delegate_req(dwc, ctrl); in dwc3_ep0_inspect_setup()
854 dwc->delayed_status = true; in dwc3_ep0_inspect_setup()
858 dwc3_ep0_stall_and_restart(dwc); in dwc3_ep0_inspect_setup()
861 static void dwc3_ep0_complete_data(struct dwc3 *dwc, in dwc3_ep0_complete_data() argument
874 ep0 = dwc->eps[0]; in dwc3_ep0_complete_data()
876 dwc->ep0_next_event = DWC3_EP0_NRDY_STATUS; in dwc3_ep0_complete_data()
877 trb = dwc->ep0_trb; in dwc3_ep0_complete_data()
886 dwc->setup_packet_pending = true; in dwc3_ep0_complete_data()
900 ur->length && ur->zero) || dwc->ep0_bounced) { in dwc3_ep0_complete_data()
906 dwc->eps[1]->trb_enqueue = 0; in dwc3_ep0_complete_data()
908 dwc->eps[0]->trb_enqueue = 0; in dwc3_ep0_complete_data()
910 dwc->ep0_bounced = false; in dwc3_ep0_complete_data()
914 dwc3_ep0_stall_and_restart(dwc); in dwc3_ep0_complete_data()
919 static void dwc3_ep0_complete_status(struct dwc3 *dwc, in dwc3_ep0_complete_status() argument
927 dep = dwc->eps[0]; in dwc3_ep0_complete_status()
928 trb = dwc->ep0_trb; in dwc3_ep0_complete_status()
938 if (dwc->test_mode) { in dwc3_ep0_complete_status()
941 ret = dwc3_gadget_set_test_mode(dwc, dwc->test_mode_nr); in dwc3_ep0_complete_status()
943 dev_err(dwc->dev, "invalid test #%d\n", in dwc3_ep0_complete_status()
944 dwc->test_mode_nr); in dwc3_ep0_complete_status()
945 dwc3_ep0_stall_and_restart(dwc); in dwc3_ep0_complete_status()
952 dwc->setup_packet_pending = true; in dwc3_ep0_complete_status()
954 dwc->ep0state = EP0_SETUP_PHASE; in dwc3_ep0_complete_status()
955 dwc3_ep0_out_start(dwc); in dwc3_ep0_complete_status()
958 static void dwc3_ep0_xfer_complete(struct dwc3 *dwc, in dwc3_ep0_xfer_complete() argument
961 struct dwc3_ep *dep = dwc->eps[event->endpoint_number]; in dwc3_ep0_xfer_complete()
965 dwc->setup_packet_pending = false; in dwc3_ep0_xfer_complete()
967 switch (dwc->ep0state) { in dwc3_ep0_xfer_complete()
969 dwc3_ep0_inspect_setup(dwc, event); in dwc3_ep0_xfer_complete()
973 dwc3_ep0_complete_data(dwc, event); in dwc3_ep0_xfer_complete()
977 dwc3_ep0_complete_status(dwc, event); in dwc3_ep0_xfer_complete()
980 WARN(true, "UNKNOWN ep0state %d\n", dwc->ep0state); in dwc3_ep0_xfer_complete()
984 static void __dwc3_ep0_do_control_data(struct dwc3 *dwc, in __dwc3_ep0_do_control_data() argument
996 dwc3_ep0_prepare_one_trb(dep, dwc->bounce_addr, trb_length, in __dwc3_ep0_do_control_data()
1004 ret = usb_gadget_map_request_by_dev(dwc->sysdev, in __dwc3_ep0_do_control_data()
1011 dwc->ep0_bounced = true; in __dwc3_ep0_do_control_data()
1019 req->trb = &dwc->ep0_trb[dep->trb_enqueue - 1]; in __dwc3_ep0_do_control_data()
1022 dwc3_ep0_prepare_one_trb(dep, dwc->bounce_addr, in __dwc3_ep0_do_control_data()
1030 ret = usb_gadget_map_request_by_dev(dwc->sysdev, in __dwc3_ep0_do_control_data()
1041 req->trb = &dwc->ep0_trb[dep->trb_enqueue - 1]; in __dwc3_ep0_do_control_data()
1047 dwc3_ep0_prepare_one_trb(dep, dwc->bounce_addr, in __dwc3_ep0_do_control_data()
1052 ret = usb_gadget_map_request_by_dev(dwc->sysdev, in __dwc3_ep0_do_control_data()
1061 req->trb = &dwc->ep0_trb[dep->trb_enqueue]; in __dwc3_ep0_do_control_data()
1067 dev_err(dwc->dev, in __dwc3_ep0_do_control_data()
1073 struct dwc3 *dwc = dep->dwc; in dwc3_ep0_start_control_status() local
1076 type = dwc->three_stage_setup ? DWC3_TRBCTL_CONTROL_STATUS3 in dwc3_ep0_start_control_status()
1079 dwc3_ep0_prepare_one_trb(dep, dwc->ep0_trb_addr, 0, type, false); in dwc3_ep0_start_control_status()
1083 static void __dwc3_ep0_do_control_status(struct dwc3 *dwc, struct dwc3_ep *dep) in __dwc3_ep0_do_control_status() argument
1089 dev_err(dwc->dev, in __dwc3_ep0_do_control_status()
1093 static void dwc3_ep0_do_control_status(struct dwc3 *dwc, in dwc3_ep0_do_control_status() argument
1096 struct dwc3_ep *dep = dwc->eps[event->endpoint_number]; in dwc3_ep0_do_control_status()
1098 __dwc3_ep0_do_control_status(dwc, dep); in dwc3_ep0_do_control_status()
1101 void dwc3_ep0_send_delayed_status(struct dwc3 *dwc) in dwc3_ep0_send_delayed_status() argument
1103 unsigned int direction = !dwc->ep0_expect_in; in dwc3_ep0_send_delayed_status()
1105 dwc->delayed_status = false; in dwc3_ep0_send_delayed_status()
1106 dwc->clear_stall_protocol = 0; in dwc3_ep0_send_delayed_status()
1108 if (dwc->ep0state != EP0_STATUS_PHASE) in dwc3_ep0_send_delayed_status()
1111 __dwc3_ep0_do_control_status(dwc, dwc->eps[direction]); in dwc3_ep0_send_delayed_status()
1114 void dwc3_ep0_end_control_data(struct dwc3 *dwc, struct dwc3_ep *dep) in dwc3_ep0_end_control_data() argument
1134 dev_err_ratelimited(dwc->dev, in dwc3_ep0_end_control_data()
1140 static void dwc3_ep0_xfernotready(struct dwc3 *dwc, in dwc3_ep0_xfernotready() argument
1145 if (!dwc->softconnect || !dwc->connected) in dwc3_ep0_xfernotready()
1156 if (dwc->ep0_expect_in != event->endpoint_number) { in dwc3_ep0_xfernotready()
1157 struct dwc3_ep *dep = dwc->eps[dwc->ep0_expect_in]; in dwc3_ep0_xfernotready()
1159 dev_err(dwc->dev, "unexpected direction for Data Phase\n"); in dwc3_ep0_xfernotready()
1160 dwc3_ep0_end_control_data(dwc, dep); in dwc3_ep0_xfernotready()
1161 dwc3_ep0_stall_and_restart(dwc); in dwc3_ep0_xfernotready()
1168 if (dwc->ep0_next_event != DWC3_EP0_NRDY_STATUS) in dwc3_ep0_xfernotready()
1171 if (dwc->setup_packet_pending) { in dwc3_ep0_xfernotready()
1172 dwc3_ep0_stall_and_restart(dwc); in dwc3_ep0_xfernotready()
1176 dwc->ep0state = EP0_STATUS_PHASE; in dwc3_ep0_xfernotready()
1178 if (dwc->delayed_status) { in dwc3_ep0_xfernotready()
1179 struct dwc3_ep *dep = dwc->eps[0]; in dwc3_ep0_xfernotready()
1188 dwc->delayed_status = false; in dwc3_ep0_xfernotready()
1189 usb_gadget_set_state(dwc->gadget, in dwc3_ep0_xfernotready()
1191 dwc3_ep0_do_control_status(dwc, event); in dwc3_ep0_xfernotready()
1197 dwc3_ep0_do_control_status(dwc, event); in dwc3_ep0_xfernotready()
1201 void dwc3_ep0_interrupt(struct dwc3 *dwc, in dwc3_ep0_interrupt() argument
1204 struct dwc3_ep *dep = dwc->eps[event->endpoint_number]; in dwc3_ep0_interrupt()
1209 dwc3_ep0_xfer_complete(dwc, event); in dwc3_ep0_interrupt()
1213 dwc3_ep0_xfernotready(dwc, event); in dwc3_ep0_interrupt()
1229 dev_err(dwc->dev, "unknown endpoint event %d\n", event->endpoint_event); in dwc3_ep0_interrupt()