Lines Matching refs:mep
13 void mtu3_req_complete(struct mtu3_ep *mep, in mtu3_req_complete() argument
15 __releases(mep->mtu->lock) in mtu3_req_complete()
16 __acquires(mep->mtu->lock) in mtu3_req_complete()
20 int busy = mep->busy; in mtu3_req_complete()
28 mep->busy = 1; in mtu3_req_complete()
34 if (mep->epnum) in mtu3_req_complete()
35 usb_gadget_unmap_request(&mtu->g, req, mep->is_in); in mtu3_req_complete()
37 dev_dbg(mtu->dev, "%s complete req: %p, sts %d, %d/%d\n", mep->name, in mtu3_req_complete()
40 usb_gadget_giveback_request(&mep->ep, &mreq->request); in mtu3_req_complete()
43 mep->busy = busy; in mtu3_req_complete()
46 static void nuke(struct mtu3_ep *mep, const int status) in nuke() argument
50 mep->busy = 1; in nuke()
51 if (list_empty(&mep->req_list)) in nuke()
54 dev_dbg(mep->mtu->dev, "abort %s's req: sts %d\n", mep->name, status); in nuke()
57 if (mep->epnum) in nuke()
58 mtu3_qmu_flush(mep); in nuke()
60 while (!list_empty(&mep->req_list)) { in nuke()
61 mreq = list_first_entry(&mep->req_list, in nuke()
63 mtu3_req_complete(mep, &mreq->request, status); in nuke()
67 static int mtu3_ep_enable(struct mtu3_ep *mep) in mtu3_ep_enable() argument
71 struct mtu3 *mtu = mep->mtu; in mtu3_ep_enable()
78 desc = mep->desc; in mtu3_ep_enable()
79 comp_desc = mep->comp_desc; in mtu3_ep_enable()
80 mep->type = usb_endpoint_type(desc); in mtu3_ep_enable()
82 mep->maxp = max_packet & GENMASK(10, 0); in mtu3_ep_enable()
111 __func__, mep->maxp, interval, burst, mult); in mtu3_ep_enable()
113 mep->ep.maxpacket = mep->maxp; in mtu3_ep_enable()
114 mep->ep.desc = desc; in mtu3_ep_enable()
115 mep->ep.comp_desc = comp_desc; in mtu3_ep_enable()
118 mep->slot = usb_endpoint_xfer_int(desc) ? 0 : mtu->slot; in mtu3_ep_enable()
120 ret = mtu3_config_ep(mtu, mep, interval, burst, mult); in mtu3_ep_enable()
124 ret = mtu3_gpd_ring_alloc(mep); in mtu3_ep_enable()
126 mtu3_deconfig_ep(mtu, mep); in mtu3_ep_enable()
130 mtu3_qmu_start(mep); in mtu3_ep_enable()
135 static int mtu3_ep_disable(struct mtu3_ep *mep) in mtu3_ep_disable() argument
137 struct mtu3 *mtu = mep->mtu; in mtu3_ep_disable()
139 mtu3_qmu_stop(mep); in mtu3_ep_disable()
142 nuke(mep, -ESHUTDOWN); in mtu3_ep_disable()
143 mtu3_deconfig_ep(mtu, mep); in mtu3_ep_disable()
144 mtu3_gpd_ring_free(mep); in mtu3_ep_disable()
146 mep->desc = NULL; in mtu3_ep_disable()
147 mep->ep.desc = NULL; in mtu3_ep_disable()
148 mep->comp_desc = NULL; in mtu3_ep_disable()
149 mep->type = 0; in mtu3_ep_disable()
150 mep->flags = 0; in mtu3_ep_disable()
158 struct mtu3_ep *mep; in mtu3_gadget_ep_enable() local
172 mep = to_mtu3_ep(ep); in mtu3_gadget_ep_enable()
173 mtu = mep->mtu; in mtu3_gadget_ep_enable()
176 if (usb_endpoint_num(desc) != mep->epnum) in mtu3_gadget_ep_enable()
179 if (!!usb_endpoint_dir_in(desc) ^ !!mep->is_in) in mtu3_gadget_ep_enable()
184 if (mep->flags & MTU3_EP_ENABLED) { in mtu3_gadget_ep_enable()
186 mep->name); in mtu3_gadget_ep_enable()
191 mep->desc = desc; in mtu3_gadget_ep_enable()
192 mep->comp_desc = ep->comp_desc; in mtu3_gadget_ep_enable()
194 ret = mtu3_ep_enable(mep); in mtu3_gadget_ep_enable()
198 mep->busy = 0; in mtu3_gadget_ep_enable()
199 mep->wedged = 0; in mtu3_gadget_ep_enable()
200 mep->flags |= MTU3_EP_ENABLED; in mtu3_gadget_ep_enable()
207 trace_mtu3_gadget_ep_enable(mep); in mtu3_gadget_ep_enable()
214 struct mtu3_ep *mep = to_mtu3_ep(ep); in mtu3_gadget_ep_disable() local
215 struct mtu3 *mtu = mep->mtu; in mtu3_gadget_ep_disable()
218 dev_dbg(mtu->dev, "%s %s\n", __func__, mep->name); in mtu3_gadget_ep_disable()
219 trace_mtu3_gadget_ep_disable(mep); in mtu3_gadget_ep_disable()
221 if (!(mep->flags & MTU3_EP_ENABLED)) { in mtu3_gadget_ep_disable()
222 dev_warn(mtu->dev, "%s is already disabled\n", mep->name); in mtu3_gadget_ep_disable()
227 mtu3_ep_disable(mep); in mtu3_gadget_ep_disable()
228 mep->flags &= ~MTU3_EP_ENABLED; in mtu3_gadget_ep_disable()
240 struct mtu3_ep *mep = to_mtu3_ep(ep); in mtu3_alloc_request() local
248 mreq->epnum = mep->epnum; in mtu3_alloc_request()
249 mreq->mep = mep; in mtu3_alloc_request()
266 struct mtu3_ep *mep; in mtu3_gadget_queue() local
278 mep = to_mtu3_ep(ep); in mtu3_gadget_queue()
279 mtu = mep->mtu; in mtu3_gadget_queue()
283 if (mreq->mep != mep) in mtu3_gadget_queue()
287 __func__, mep->is_in ? "TX" : "RX", mreq->epnum, ep->name, in mtu3_gadget_queue()
300 if (!mep->desc) { in mtu3_gadget_queue()
309 ret = usb_gadget_map_request(&mtu->g, req, mep->is_in); in mtu3_gadget_queue()
317 if (mtu3_prepare_transfer(mep)) { in mtu3_gadget_queue()
322 list_add_tail(&mreq->list, &mep->req_list); in mtu3_gadget_queue()
323 mtu3_insert_gpd(mep, mreq); in mtu3_gadget_queue()
324 mtu3_qmu_resume(mep); in mtu3_gadget_queue()
335 struct mtu3_ep *mep = to_mtu3_ep(ep); in mtu3_gadget_dequeue() local
340 struct mtu3 *mtu = mep->mtu; in mtu3_gadget_dequeue()
342 if (!ep || !req || mreq->mep != mep) in mtu3_gadget_dequeue()
350 list_for_each_entry(r, &mep->req_list, list) { in mtu3_gadget_dequeue()
360 mtu3_qmu_flush(mep); /* REVISIT: set BPS ?? */ in mtu3_gadget_dequeue()
361 mtu3_req_complete(mep, req, -ECONNRESET); in mtu3_gadget_dequeue()
362 mtu3_qmu_start(mep); in mtu3_gadget_dequeue()
376 struct mtu3_ep *mep = to_mtu3_ep(ep); in mtu3_gadget_ep_set_halt() local
377 struct mtu3 *mtu = mep->mtu; in mtu3_gadget_ep_set_halt()
389 if (mep->type == USB_ENDPOINT_XFER_ISOC) { in mtu3_gadget_ep_set_halt()
394 mreq = next_request(mep); in mtu3_gadget_ep_set_halt()
408 mep->wedged = 0; in mtu3_gadget_ep_set_halt()
413 mtu3_ep_stall_set(mep, value); in mtu3_gadget_ep_set_halt()
417 trace_mtu3_gadget_ep_set_halt(mep); in mtu3_gadget_ep_set_halt()
425 struct mtu3_ep *mep = to_mtu3_ep(ep); in mtu3_gadget_ep_set_wedge() local
430 mep->wedged = 1; in mtu3_gadget_ep_set_wedge()
613 static void init_hw_ep(struct mtu3 *mtu, struct mtu3_ep *mep, in init_hw_ep() argument
616 mep->epnum = epnum; in init_hw_ep()
617 mep->mtu = mtu; in init_hw_ep()
618 mep->is_in = is_in; in init_hw_ep()
620 INIT_LIST_HEAD(&mep->req_list); in init_hw_ep()
622 sprintf(mep->name, "ep%d%s", epnum, in init_hw_ep()
625 mep->ep.name = mep->name; in init_hw_ep()
626 INIT_LIST_HEAD(&mep->ep.ep_list); in init_hw_ep()
630 usb_ep_set_maxpacket_limit(&mep->ep, 512); in init_hw_ep()
631 mep->ep.caps.type_control = true; in init_hw_ep()
632 mep->ep.ops = &mtu3_ep0_ops; in init_hw_ep()
633 mtu->g.ep0 = &mep->ep; in init_hw_ep()
635 usb_ep_set_maxpacket_limit(&mep->ep, 1024); in init_hw_ep()
636 mep->ep.caps.type_iso = true; in init_hw_ep()
637 mep->ep.caps.type_bulk = true; in init_hw_ep()
638 mep->ep.caps.type_int = true; in init_hw_ep()
639 mep->ep.ops = &mtu3_ep_ops; in init_hw_ep()
640 list_add_tail(&mep->ep.ep_list, &mtu->g.ep_list); in init_hw_ep()
643 dev_dbg(mtu->dev, "%s, name=%s, maxp=%d\n", __func__, mep->ep.name, in init_hw_ep()
644 mep->ep.maxpacket); in init_hw_ep()
647 mep->ep.caps.dir_in = true; in init_hw_ep()
648 mep->ep.caps.dir_out = true; in init_hw_ep()
650 mep->ep.caps.dir_in = true; in init_hw_ep()
652 mep->ep.caps.dir_out = true; in init_hw_ep()