Lines Matching refs:dep
30 static void __dwc3_ep0_do_control_status(struct dwc3 *dwc, struct dwc3_ep *dep);
32 struct dwc3_ep *dep, struct dwc3_request *req);
34 static void dwc3_ep0_prepare_one_trb(struct dwc3_ep *dep,
40 dwc = dep->dwc;
41 trb = &dwc->ep0_trb[dep->trb_enqueue];
44 dep->trb_enqueue++;
60 trace_dwc3_prepare_trb(dep, trb);
63 static int dwc3_ep0_start_trans(struct dwc3_ep *dep)
69 if (dep->flags & DWC3_EP_TRANSFER_STARTED)
72 dwc = dep->dwc;
78 ret = dwc3_send_gadget_ep_cmd(dep, DWC3_DEPCMD_STARTTRANSFER, ¶ms);
87 static int __dwc3_gadget_ep0_queue(struct dwc3_ep *dep,
90 struct dwc3 *dwc = dep->dwc;
94 req->epnum = dep->number;
96 list_add_tail(&req->list, &dep->pending_list);
107 if (dep->flags & DWC3_EP_PENDING_REQUEST) {
110 direction = !!(dep->flags & DWC3_EP0_DIR_IN);
119 dep->flags &= ~(DWC3_EP_PENDING_REQUEST |
182 dep->flags &= ~DWC3_EP0_DIR_IN;
192 struct dwc3_ep *dep = to_dwc3_ep(ep);
193 struct dwc3 *dwc = dep->dwc;
200 if (!dep->endpoint.desc || !dwc->pullups_connected) {
202 dep->name);
208 if (!list_empty(&dep->pending_list)) {
213 ret = __dwc3_gadget_ep0_queue(dep, req);
223 struct dwc3_ep *dep;
226 dep = dwc->eps[1];
227 dep->flags = DWC3_EP_ENABLED;
230 dep = dwc->eps[0];
231 __dwc3_gadget_ep_set_halt(dep, 1, false);
232 dep->flags = DWC3_EP_ENABLED;
235 if (!list_empty(&dep->pending_list)) {
238 req = next_request(&dep->pending_list);
240 dwc3_gadget_giveback(dep, req, -ESHUTDOWN);
242 dwc3_gadget_giveback(dep, req, -ECONNRESET);
251 struct dwc3_ep *dep = to_dwc3_ep(ep);
252 struct dwc3 *dwc = dep->dwc;
261 struct dwc3_ep *dep = to_dwc3_ep(ep);
262 struct dwc3 *dwc = dep->dwc;
275 struct dwc3_ep *dep;
280 dep = dwc->eps[0];
281 dwc3_ep0_prepare_one_trb(dep, dwc->ep0_trb_addr, 8,
283 ret = dwc3_ep0_start_trans(dep);
289 struct dwc3_ep *dep;
297 dep = dwc->eps[epnum];
298 if (dep == NULL)
301 if (dep->flags & DWC3_EP_ENABLED)
302 return dep;
316 struct dwc3_ep *dep;
355 dep = dwc3_wIndex_to_dep(dwc, ctrl->wIndex);
356 if (!dep)
359 if (dep->flags & DWC3_EP_STALL)
369 dep = dwc->eps[0];
370 dwc->ep0_usb_req.dep = dep;
375 return __dwc3_gadget_ep0_queue(dep, &dwc->ep0_usb_req);
515 struct dwc3_ep *dep;
523 dep = dwc3_wIndex_to_dep(dwc, ctrl->wIndex);
524 if (!dep)
527 if (set == 0 && (dep->flags & DWC3_EP_WEDGE))
530 ret = __dwc3_gadget_ep_set_halt(dep, set, true);
535 if (!set && (dep->flags & DWC3_EP_END_TRANSFER_PENDING))
666 struct dwc3_ep *dep = to_dwc3_ep(ep);
667 struct dwc3 *dwc = dep->dwc;
710 struct dwc3_ep *dep;
733 dep = dwc->eps[0];
734 dwc->ep0_usb_req.dep = dep;
735 dwc->ep0_usb_req.request.length = dep->endpoint.maxpacket;
739 return __dwc3_gadget_ep0_queue(dep, &dwc->ep0_usb_req);
892 struct dwc3_ep *dep;
896 dep = dwc->eps[0];
899 trace_dwc3_complete_trb(dep, trb);
901 if (!list_empty(&dep->pending_list)) {
902 r = next_request(&dep->pending_list);
904 dwc3_gadget_giveback(dep, r, 0);
930 struct dwc3_ep *dep = dwc->eps[event->endpoint_number];
932 dep->flags &= ~DWC3_EP_TRANSFER_STARTED;
933 dep->resource_index = 0;
954 struct dwc3_ep *dep, struct dwc3_request *req)
959 req->direction = !!dep->number;
963 trb_length = dep->endpoint.maxpacket;
965 dwc3_ep0_prepare_one_trb(dep, dwc->bounce_addr, trb_length,
967 ret = dwc3_ep0_start_trans(dep);
968 } else if (!IS_ALIGNED(req->request.length, dep->endpoint.maxpacket)
969 && (dep->number == 0)) {
974 &req->request, dep->number);
978 maxpacket = dep->endpoint.maxpacket;
983 dwc3_ep0_prepare_one_trb(dep, req->request.dma,
988 req->trb = &dwc->ep0_trb[dep->trb_enqueue - 1];
991 dwc3_ep0_prepare_one_trb(dep, dwc->bounce_addr,
995 ret = dwc3_ep0_start_trans(dep);
996 } else if (IS_ALIGNED(req->request.length, dep->endpoint.maxpacket) &&
1000 &req->request, dep->number);
1005 dwc3_ep0_prepare_one_trb(dep, req->request.dma,
1010 req->trb = &dwc->ep0_trb[dep->trb_enqueue - 1];
1013 trb_length = dep->endpoint.maxpacket;
1016 dwc3_ep0_prepare_one_trb(dep, dwc->bounce_addr,
1019 ret = dwc3_ep0_start_trans(dep);
1022 &req->request, dep->number);
1026 dwc3_ep0_prepare_one_trb(dep, req->request.dma,
1030 req->trb = &dwc->ep0_trb[dep->trb_enqueue];
1032 ret = dwc3_ep0_start_trans(dep);
1038 static int dwc3_ep0_start_control_status(struct dwc3_ep *dep)
1040 struct dwc3 *dwc = dep->dwc;
1046 dwc3_ep0_prepare_one_trb(dep, dwc->ep0_trb_addr, 0, type, false);
1047 return dwc3_ep0_start_trans(dep);
1050 static void __dwc3_ep0_do_control_status(struct dwc3 *dwc, struct dwc3_ep *dep)
1052 WARN_ON(dwc3_ep0_start_control_status(dep));
1058 struct dwc3_ep *dep = dwc->eps[event->endpoint_number];
1060 __dwc3_ep0_do_control_status(dwc, dep);
1075 static void dwc3_ep0_end_control_data(struct dwc3 *dwc, struct dwc3_ep *dep)
1081 if (!dep->resource_index)
1086 cmd |= DWC3_DEPCMD_PARAM(dep->resource_index);
1088 ret = dwc3_send_gadget_ep_cmd(dep, cmd, ¶ms);
1090 dep->resource_index = 0;
1108 struct dwc3_ep *dep = dwc->eps[dwc->ep0_expect_in];
1111 dwc3_ep0_end_control_data(dwc, dep);
1125 struct dwc3_ep *dep = dwc->eps[0];
1133 if (!list_empty(&dep->pending_list)) {
1150 struct dwc3_ep *dep = dwc->eps[event->endpoint_number];
1170 dep->flags &= ~DWC3_EP_END_TRANSFER_PENDING;
1171 dep->flags &= ~DWC3_EP_TRANSFER_STARTED;