Lines Matching defs:ep

31 	struct isp1760_ep *ep;
40 static inline struct isp1760_ep *ep_to_udc_ep(struct usb_ep *ep)
42 return container_of(ep, struct isp1760_ep, ep);
116 return &udc->ep[0];
118 for (i = 1; i < ARRAY_SIZE(udc->ep); ++i) {
119 if (udc->ep[i].addr == index)
120 return udc->ep[i].desc ? &udc->ep[i] : NULL;
127 struct isp1760_ep *ep, int dir)
129 isp1760_udc_write(udc, DC_ENDPIDX, ep->addr & USB_ENDPOINT_NUMBER_MASK);
139 * @ep: The endpoint
150 struct isp1760_ep *ep)
152 __isp1760_udc_select_ep(udc, ep, ep->addr & USB_ENDPOINT_DIR_MASK);
156 static void isp1760_udc_ctrl_send_status(struct isp1760_ep *ep, int dir)
158 struct isp1760_udc *udc = ep->udc;
181 static void isp1760_udc_request_complete(struct isp1760_ep *ep,
185 struct isp1760_udc *udc = ep->udc;
188 dev_dbg(ep->udc->isp->dev, "completing request %p with status %d\n",
191 req->ep = NULL;
193 req->req.complete(&ep->ep, &req->req);
202 if (status == 0 && ep->addr == 0 && udc->ep0_dir == USB_DIR_OUT)
203 isp1760_udc_ctrl_send_status(ep, USB_DIR_OUT);
208 static void isp1760_udc_ctrl_send_stall(struct isp1760_ep *ep)
210 struct isp1760_udc *udc = ep->udc;
213 dev_dbg(ep->udc->isp->dev, "%s(ep%02x)\n", __func__, ep->addr);
218 __isp1760_udc_select_ep(udc, ep, USB_DIR_OUT);
220 __isp1760_udc_select_ep(udc, ep, USB_DIR_IN);
234 static bool isp1760_udc_receive(struct isp1760_ep *ep,
237 struct isp1760_udc *udc = ep->udc;
242 isp1760_udc_select_ep(udc, ep);
283 __func__, req, req->req.actual, req->req.length, ep->maxpacket,
286 ep->rx_pending = false;
292 if (req->req.actual == req->req.length || len < ep->maxpacket) {
300 static void isp1760_udc_transmit(struct isp1760_ep *ep,
303 struct isp1760_udc *udc = ep->udc;
308 ep->maxpacket);
314 __isp1760_udc_select_ep(udc, ep, USB_DIR_IN);
330 if (ep->addr == 0)
336 static void isp1760_ep_rx_ready(struct isp1760_ep *ep)
338 struct isp1760_udc *udc = ep->udc;
344 if (ep->addr == 0 && udc->ep0_state != ISP1760_CTRL_DATA_OUT) {
351 if (ep->addr != 0 && !ep->desc) {
353 dev_dbg(udc->isp->dev, "%s: ep%02x is disabled\n", __func__,
354 ep->addr);
358 if (list_empty(&ep->queue)) {
359 ep->rx_pending = true;
361 dev_dbg(udc->isp->dev, "%s: ep%02x (%p) has no request queued\n",
362 __func__, ep->addr, ep);
366 req = list_first_entry(&ep->queue, struct isp1760_request,
368 complete = isp1760_udc_receive(ep, req);
373 isp1760_udc_request_complete(ep, req, 0);
376 static void isp1760_ep_tx_complete(struct isp1760_ep *ep)
378 struct isp1760_udc *udc = ep->udc;
385 if (ep->addr == 0 && udc->ep0_state != ISP1760_CTRL_DATA_IN) {
392 if (list_empty(&ep->queue)) {
398 if (ep->addr == 0) {
399 isp1760_udc_ctrl_send_status(ep, USB_DIR_IN);
405 dev_dbg(udc->isp->dev, "%s: ep%02x has no request queued\n",
406 __func__, ep->addr);
410 req = list_first_entry(&ep->queue, struct isp1760_request,
415 !(req->req.length % ep->maxpacket) &&
420 req, req->req.actual, req->req.length, ep->maxpacket,
431 if (ep->addr == 0)
432 isp1760_udc_ctrl_send_status(ep, USB_DIR_IN);
434 if (!list_empty(&ep->queue))
435 req = list_first_entry(&ep->queue,
448 isp1760_udc_transmit(ep, req);
453 isp1760_udc_request_complete(ep, complete, 0);
456 static int __isp1760_udc_set_halt(struct isp1760_ep *ep, bool halt)
458 struct isp1760_udc *udc = ep->udc;
460 dev_dbg(udc->isp->dev, "%s: %s halt on ep%02x\n", __func__,
461 halt ? "set" : "clear", ep->addr);
463 if (ep->desc && usb_endpoint_xfer_isoc(ep->desc)) {
464 dev_dbg(udc->isp->dev, "%s: ep%02x is isochronous\n", __func__,
465 ep->addr);
469 isp1760_udc_select_ep(udc, ep);
476 if (ep->addr == 0) {
478 __isp1760_udc_select_ep(udc, ep, USB_DIR_IN);
495 if ((ep->addr & USB_DIR_IN) && !list_empty(&ep->queue)) {
498 req = list_first_entry(&ep->queue,
500 isp1760_udc_transmit(ep, req);
504 ep->halted = halt;
516 struct isp1760_ep *ep;
532 ep = isp1760_udc_find_ep(udc, le16_to_cpu(req->wIndex));
533 if (!ep)
537 if (ep->halted)
580 isp1760_udc_ctrl_send_status(&udc->ep[0], USB_DIR_OUT);
604 struct isp1760_ep *ep;
610 ep = isp1760_udc_find_ep(udc, index);
611 if (!ep)
621 if (!ep->wedged)
622 stall = __isp1760_udc_set_halt(ep, false);
627 isp1760_udc_ctrl_send_status(&udc->ep[0],
648 struct isp1760_ep *ep;
654 ep = isp1760_udc_find_ep(udc, index);
655 if (!ep)
660 stall = __isp1760_udc_set_halt(ep, true);
662 isp1760_udc_ctrl_send_status(&udc->ep[0],
728 isp1760_udc_ctrl_send_stall(&udc->ep[0]);
766 isp1760_udc_ctrl_send_stall(&udc->ep[0]);
773 static int isp1760_ep_enable(struct usb_ep *ep,
776 struct isp1760_ep *uep = ep_to_udc_ep(ep);
790 le16_to_cpu(desc->wMaxPacketSize) > ep->maxpacket) {
792 "%s: invalid descriptor type %u addr %02x ep addr %02x max packet size %u/%u\n",
795 le16_to_cpu(desc->wMaxPacketSize), ep->maxpacket);
837 static int isp1760_ep_disable(struct usb_ep *ep)
839 struct isp1760_ep *uep = ep_to_udc_ep(ep);
876 static struct usb_request *isp1760_ep_alloc_request(struct usb_ep *ep,
888 static void isp1760_ep_free_request(struct usb_ep *ep, struct usb_request *_req)
895 static int isp1760_ep_queue(struct usb_ep *ep, struct usb_request *_req,
899 struct isp1760_ep *uep = ep_to_udc_ep(ep);
911 "%s: req %p (%u bytes%s) ep %p(0x%02x)\n", __func__, _req,
914 req->ep = uep;
961 "%s: can't queue request to disabled ep%02x\n",
968 req->ep = NULL;
978 static int isp1760_ep_dequeue(struct usb_ep *ep, struct usb_request *_req)
981 struct isp1760_ep *uep = ep_to_udc_ep(ep);
985 dev_dbg(uep->udc->isp->dev, "%s(ep%02x)\n", __func__, uep->addr);
989 if (req->ep != uep)
1022 dev_dbg(udc->isp->dev, "%s: ep%02x is disabled\n", __func__,
1031 "%s: ep%02x has request pending\n", __func__,
1058 static int isp1760_ep_set_halt(struct usb_ep *ep, int value)
1060 struct isp1760_ep *uep = ep_to_udc_ep(ep);
1064 dev_dbg(uep->udc->isp->dev, "%s: %s halt on ep%02x\n", __func__,
1074 static int isp1760_ep_set_wedge(struct usb_ep *ep)
1076 struct isp1760_ep *uep = ep_to_udc_ep(ep);
1080 dev_dbg(uep->udc->isp->dev, "%s: set wedge on ep%02x)\n", __func__,
1090 static void isp1760_ep_fifo_flush(struct usb_ep *ep)
1092 struct isp1760_ep *uep = ep_to_udc_ep(ep);
1381 struct isp1760_ep *ep = &udc->ep[i*2];
1385 isp1760_ep_tx_complete(ep);
1390 isp1760_ep_rx_ready(i ? ep - 1 : ep);
1450 for (i = 0; i < ARRAY_SIZE(udc->ep); ++i) {
1451 struct isp1760_ep *ep = &udc->ep[i];
1455 ep->udc = udc;
1457 INIT_LIST_HEAD(&ep->queue);
1459 ep->addr = (ep_num && is_in ? USB_DIR_IN : USB_DIR_OUT)
1461 ep->desc = NULL;
1463 sprintf(ep->name, "ep%u%s", ep_num,
1466 ep->ep.ops = &isp1760_ep_ops;
1467 ep->ep.name = ep->name;
1475 usb_ep_set_maxpacket_limit(&ep->ep, 64);
1476 ep->ep.caps.type_control = true;
1477 ep->ep.caps.dir_in = true;
1478 ep->ep.caps.dir_out = true;
1479 ep->maxpacket = 64;
1480 udc->gadget.ep0 = &ep->ep;
1482 usb_ep_set_maxpacket_limit(&ep->ep, 512);
1483 ep->ep.caps.type_iso = true;
1484 ep->ep.caps.type_bulk = true;
1485 ep->ep.caps.type_int = true;
1486 ep->maxpacket = 0;
1487 list_add_tail(&ep->ep.ep_list, &udc->gadget.ep_list);
1491 ep->ep.caps.dir_in = true;
1493 ep->ep.caps.dir_out = true;