Lines Matching defs:mep

13 void mtu3_req_complete(struct mtu3_ep *mep,
15 __releases(mep->mtu->lock)
16 __acquires(mep->mtu->lock)
28 if (mep->epnum)
29 usb_gadget_unmap_request(&mtu->g, req, mep->is_in);
32 mep->name, req, req->status, req->actual, req->length);
35 usb_gadget_giveback_request(&mep->ep, req);
39 static void nuke(struct mtu3_ep *mep, const int status)
43 if (list_empty(&mep->req_list))
46 dev_dbg(mep->mtu->dev, "abort %s's req: sts %d\n", mep->name, status);
49 if (mep->epnum)
50 mtu3_qmu_flush(mep);
52 while (!list_empty(&mep->req_list)) {
53 mreq = list_first_entry(&mep->req_list,
55 mtu3_req_complete(mep, &mreq->request, status);
59 static int mtu3_ep_enable(struct mtu3_ep *mep)
63 struct mtu3 *mtu = mep->mtu;
69 desc = mep->desc;
70 comp_desc = mep->comp_desc;
71 mep->type = usb_endpoint_type(desc);
72 mep->maxp = usb_endpoint_maxp(desc);
108 __func__, mep->maxp, interval, burst, mult);
110 mep->ep.maxpacket = mep->maxp;
111 mep->ep.desc = desc;
112 mep->ep.comp_desc = comp_desc;
115 mep->slot = usb_endpoint_xfer_int(desc) ? 0 : mtu->slot;
117 ret = mtu3_config_ep(mtu, mep, interval, burst, mult);
121 ret = mtu3_gpd_ring_alloc(mep);
123 mtu3_deconfig_ep(mtu, mep);
127 mtu3_qmu_start(mep);
132 static int mtu3_ep_disable(struct mtu3_ep *mep)
134 struct mtu3 *mtu = mep->mtu;
137 nuke(mep, -ESHUTDOWN);
138 mtu3_qmu_stop(mep);
139 mtu3_deconfig_ep(mtu, mep);
140 mtu3_gpd_ring_free(mep);
142 mep->desc = NULL;
143 mep->ep.desc = NULL;
144 mep->comp_desc = NULL;
145 mep->type = 0;
146 mep->flags = 0;
154 struct mtu3_ep *mep;
168 mep = to_mtu3_ep(ep);
169 mtu = mep->mtu;
172 if (usb_endpoint_num(desc) != mep->epnum)
175 if (!!usb_endpoint_dir_in(desc) ^ !!mep->is_in)
180 if (mep->flags & MTU3_EP_ENABLED) {
182 mep->name);
187 mep->desc = desc;
188 mep->comp_desc = ep->comp_desc;
190 ret = mtu3_ep_enable(mep);
194 mep->flags = MTU3_EP_ENABLED;
201 trace_mtu3_gadget_ep_enable(mep);
208 struct mtu3_ep *mep = to_mtu3_ep(ep);
209 struct mtu3 *mtu = mep->mtu;
212 dev_dbg(mtu->dev, "%s %s\n", __func__, mep->name);
213 trace_mtu3_gadget_ep_disable(mep);
215 if (!(mep->flags & MTU3_EP_ENABLED)) {
216 dev_warn(mtu->dev, "%s is already disabled\n", mep->name);
221 mtu3_ep_disable(mep);
222 mep->flags = 0;
234 struct mtu3_ep *mep = to_mtu3_ep(ep);
242 mreq->epnum = mep->epnum;
243 mreq->mep = mep;
261 struct mtu3_ep *mep = to_mtu3_ep(ep);
263 struct mtu3 *mtu = mep->mtu;
270 if (mreq->mep != mep)
274 __func__, mep->is_in ? "TX" : "RX", mreq->epnum, ep->name,
287 if (!mep->desc) {
297 ret = usb_gadget_map_request(&mtu->g, req, mep->is_in);
305 if (mtu3_prepare_transfer(mep)) {
310 list_add_tail(&mreq->list, &mep->req_list);
311 mtu3_insert_gpd(mep, mreq);
312 mtu3_qmu_resume(mep);
323 struct mtu3_ep *mep = to_mtu3_ep(ep);
326 struct mtu3 *mtu = mep->mtu;
330 if (mreq->mep != mep)
338 list_for_each_entry(r, &mep->req_list, list) {
348 mtu3_qmu_flush(mep); /* REVISIT: set BPS ?? */
349 mtu3_req_complete(mep, req, -ECONNRESET);
350 mtu3_qmu_start(mep);
364 struct mtu3_ep *mep = to_mtu3_ep(ep);
365 struct mtu3 *mtu = mep->mtu;
374 if (mep->type == USB_ENDPOINT_XFER_ISOC) {
379 mreq = next_request(mep);
393 mep->flags &= ~MTU3_EP_WEDGE;
398 mtu3_ep_stall_set(mep, value);
402 trace_mtu3_gadget_ep_set_halt(mep);
410 struct mtu3_ep *mep = to_mtu3_ep(ep);
412 mep->flags |= MTU3_EP_WEDGE;
646 static void init_hw_ep(struct mtu3 *mtu, struct mtu3_ep *mep,
649 mep->epnum = epnum;
650 mep->mtu = mtu;
651 mep->is_in = is_in;
653 INIT_LIST_HEAD(&mep->req_list);
655 sprintf(mep->name, "ep%d%s", epnum,
658 mep->ep.name = mep->name;
659 INIT_LIST_HEAD(&mep->ep.ep_list);
663 usb_ep_set_maxpacket_limit(&mep->ep, 512);
664 mep->ep.caps.type_control = true;
665 mep->ep.ops = &mtu3_ep0_ops;
666 mtu->g.ep0 = &mep->ep;
668 usb_ep_set_maxpacket_limit(&mep->ep, 1024);
669 mep->ep.caps.type_iso = true;
670 mep->ep.caps.type_bulk = true;
671 mep->ep.caps.type_int = true;
672 mep->ep.ops = &mtu3_ep_ops;
673 list_add_tail(&mep->ep.ep_list, &mtu->g.ep_list);
676 dev_dbg(mtu->dev, "%s, name=%s, maxp=%d\n", __func__, mep->ep.name,
677 mep->ep.maxpacket);
680 mep->ep.caps.dir_in = true;
681 mep->ep.caps.dir_out = true;
683 mep->ep.caps.dir_in = true;
685 mep->ep.caps.dir_out = true;