Lines Matching defs:mep
14 void mtu3_req_complete(struct mtu3_ep *mep,
16 __releases(mep->mtu->lock)
17 __acquires(mep->mtu->lock)
29 if (mep->epnum)
30 usb_gadget_unmap_request(&mtu->g, req, mep->is_in);
33 mep->name, req, req->status, req->actual, req->length);
36 usb_gadget_giveback_request(&mep->ep, req);
40 static void nuke(struct mtu3_ep *mep, const int status)
44 if (list_empty(&mep->req_list))
47 dev_dbg(mep->mtu->dev, "abort %s's req: sts %d\n", mep->name, status);
50 if (mep->epnum)
51 mtu3_qmu_flush(mep);
53 while (!list_empty(&mep->req_list)) {
54 mreq = list_first_entry(&mep->req_list,
56 mtu3_req_complete(mep, &mreq->request, status);
60 static int mtu3_ep_enable(struct mtu3_ep *mep)
64 struct mtu3 *mtu = mep->mtu;
70 desc = mep->desc;
71 comp_desc = mep->comp_desc;
72 mep->type = usb_endpoint_type(desc);
73 mep->maxp = usb_endpoint_maxp(desc);
109 __func__, mep->maxp, interval, burst, mult);
111 mep->ep.maxpacket = mep->maxp;
112 mep->ep.desc = desc;
113 mep->ep.comp_desc = comp_desc;
116 mep->slot = usb_endpoint_xfer_int(desc) ? 0 : mtu->slot;
118 ret = mtu3_config_ep(mtu, mep, interval, burst, mult);
122 ret = mtu3_gpd_ring_alloc(mep);
124 mtu3_deconfig_ep(mtu, mep);
128 mtu3_qmu_start(mep);
133 static int mtu3_ep_disable(struct mtu3_ep *mep)
135 struct mtu3 *mtu = mep->mtu;
138 nuke(mep, -ESHUTDOWN);
139 mtu3_qmu_stop(mep);
140 mtu3_deconfig_ep(mtu, mep);
141 mtu3_gpd_ring_free(mep);
143 mep->desc = NULL;
144 mep->ep.desc = NULL;
145 mep->comp_desc = NULL;
146 mep->type = 0;
147 mep->flags = 0;
155 struct mtu3_ep *mep;
169 mep = to_mtu3_ep(ep);
170 mtu = mep->mtu;
173 if (usb_endpoint_num(desc) != mep->epnum)
176 if (!!usb_endpoint_dir_in(desc) ^ !!mep->is_in)
181 if (mep->flags & MTU3_EP_ENABLED) {
183 mep->name);
188 mep->desc = desc;
189 mep->comp_desc = ep->comp_desc;
191 ret = mtu3_ep_enable(mep);
195 mep->flags = MTU3_EP_ENABLED;
202 trace_mtu3_gadget_ep_enable(mep);
209 struct mtu3_ep *mep = to_mtu3_ep(ep);
210 struct mtu3 *mtu = mep->mtu;
213 dev_dbg(mtu->dev, "%s %s\n", __func__, mep->name);
214 trace_mtu3_gadget_ep_disable(mep);
216 if (!(mep->flags & MTU3_EP_ENABLED)) {
217 dev_warn(mtu->dev, "%s is already disabled\n", mep->name);
222 mtu3_ep_disable(mep);
223 mep->flags = 0;
235 struct mtu3_ep *mep = to_mtu3_ep(ep);
243 mreq->epnum = mep->epnum;
244 mreq->mep = mep;
262 struct mtu3_ep *mep = to_mtu3_ep(ep);
264 struct mtu3 *mtu = mep->mtu;
271 if (mreq->mep != mep)
275 __func__, mep->is_in ? "TX" : "RX", mreq->epnum, ep->name,
288 if (!mep->desc) {
298 ret = usb_gadget_map_request(&mtu->g, req, mep->is_in);
306 if (mtu3_prepare_transfer(mep)) {
311 list_add_tail(&mreq->list, &mep->req_list);
312 mtu3_insert_gpd(mep, mreq);
313 mtu3_qmu_resume(mep);
324 struct mtu3_ep *mep = to_mtu3_ep(ep);
327 struct mtu3 *mtu = mep->mtu;
331 if (mreq->mep != mep)
339 list_for_each_entry(r, &mep->req_list, list) {
349 mtu3_qmu_flush(mep); /* REVISIT: set BPS ?? */
350 mtu3_req_complete(mep, req, -ECONNRESET);
351 mtu3_qmu_start(mep);
365 struct mtu3_ep *mep = to_mtu3_ep(ep);
366 struct mtu3 *mtu = mep->mtu;
375 if (mep->type == USB_ENDPOINT_XFER_ISOC) {
380 mreq = next_request(mep);
394 mep->flags &= ~MTU3_EP_WEDGE;
399 mtu3_ep_stall_set(mep, value);
403 trace_mtu3_gadget_ep_set_halt(mep);
411 struct mtu3_ep *mep = to_mtu3_ep(ep);
413 mep->flags |= MTU3_EP_WEDGE;
647 static void init_hw_ep(struct mtu3 *mtu, struct mtu3_ep *mep,
650 mep->epnum = epnum;
651 mep->mtu = mtu;
652 mep->is_in = is_in;
654 INIT_LIST_HEAD(&mep->req_list);
656 sprintf(mep->name, "ep%d%s", epnum,
659 mep->ep.name = mep->name;
660 INIT_LIST_HEAD(&mep->ep.ep_list);
664 usb_ep_set_maxpacket_limit(&mep->ep, 512);
665 mep->ep.caps.type_control = true;
666 mep->ep.ops = &mtu3_ep0_ops;
667 mtu->g.ep0 = &mep->ep;
669 usb_ep_set_maxpacket_limit(&mep->ep, 1024);
670 mep->ep.caps.type_iso = true;
671 mep->ep.caps.type_bulk = true;
672 mep->ep.caps.type_int = true;
673 mep->ep.ops = &mtu3_ep_ops;
674 list_add_tail(&mep->ep.ep_list, &mtu->g.ep_list);
677 dev_dbg(mtu->dev, "%s, name=%s, maxp=%d\n", __func__, mep->ep.name,
678 mep->ep.maxpacket);
681 mep->ep.caps.dir_in = true;
682 mep->ep.caps.dir_out = true;
684 mep->ep.caps.dir_in = true;
686 mep->ep.caps.dir_out = true;