Lines Matching refs:ep

111 #define to_xusb_ep(ep)	 container_of((ep), struct xusb_ep, ep_usb)
118 * @ep: pointer to xusb_endpoint structure
123 struct xusb_ep *ep;
167 * @ep: an array of endpoint structures
184 struct xusb_ep ep[8];
265 struct xusb_ep *ep0 = &udc->ep[XUSB_EP_NUMBER_ZERO];
277 * @ep: pointer to the usb device endpoint structure.
283 static void xudc_epconfig(struct xusb_ep *ep, struct xusb_udc *udc)
291 epcfgreg = ((ep->is_in << 29) | (ep->is_iso << 28) |
292 (ep->ep_usb.maxpacket << 15) | (ep->rambase));
293 udc->write_fn(udc->addr, ep->offset, epcfgreg);
296 udc->write_fn(udc->addr, ep->offset + XUSB_EP_BUF0COUNT_OFFSET,
297 ep->buffer0count);
298 udc->write_fn(udc->addr, ep->offset + XUSB_EP_BUF1COUNT_OFFSET,
299 ep->buffer1count);
300 if (ep->buffer0ready)
302 1 << ep->epnumber);
303 if (ep->buffer1ready)
305 1 << (ep->epnumber + XUSB_STATUS_EP_BUFF2_SHIFT));
310 * @ep: pointer to the usb device endpoint structure.
320 static int xudc_start_dma(struct xusb_ep *ep, dma_addr_t src,
323 struct xusb_udc *udc = ep->udc;
370 * @ep: pointer to the usb device endpoint structure.
380 static int xudc_dma_send(struct xusb_ep *ep, struct xusb_req *req,
386 struct xusb_udc *udc = ep->udc;
392 if (!ep->curbufnum && !ep->buffer0ready) {
394 eprambase = (u32 __force *)(udc->addr + ep->rambase);
396 udc->write_fn(udc->addr, ep->offset +
399 XUSB_DMA_BRR_CTRL | (1 << ep->epnumber));
400 ep->buffer0ready = 1;
401 ep->curbufnum = 1;
402 } else if (ep->curbufnum && !ep->buffer1ready) {
404 eprambase = (u32 __force *)(udc->addr + ep->rambase +
405 ep->ep_usb.maxpacket);
407 udc->write_fn(udc->addr, ep->offset +
410 XUSB_DMA_BRR_CTRL | (1 << (ep->epnumber +
412 ep->buffer1ready = 1;
413 ep->curbufnum = 0;
419 return xudc_start_dma(ep, src, dst, length);
424 * @ep: pointer to the usb device endpoint structure.
434 static int xudc_dma_receive(struct xusb_ep *ep, struct xusb_req *req,
440 struct xusb_udc *udc = ep->udc;
443 if (!ep->curbufnum && !ep->buffer0ready) {
445 eprambase = (u32 __force *)(udc->addr + ep->rambase);
449 (1 << ep->epnumber));
450 ep->buffer0ready = 1;
451 ep->curbufnum = 1;
452 } else if (ep->curbufnum && !ep->buffer1ready) {
455 ep->rambase + ep->ep_usb.maxpacket);
459 (1 << (ep->epnumber +
461 ep->buffer1ready = 1;
462 ep->curbufnum = 0;
468 return xudc_start_dma(ep, src, dst, length);
473 * @ep: pointer to the usb endpoint configuration structure.
483 static int xudc_eptxrx(struct xusb_ep *ep, struct xusb_req *req,
489 struct xusb_udc *udc = ep->udc;
493 if (ep->is_in)
494 rc = xudc_dma_send(ep, req, bufferptr, bufferlen);
496 rc = xudc_dma_receive(ep, req, bufferptr, bufferlen);
500 if (!ep->curbufnum && !ep->buffer0ready) {
502 eprambase = (u32 __force *)(udc->addr + ep->rambase);
503 if (ep->is_in) {
505 udc->write_fn(udc->addr, ep->offset +
514 1 << ep->epnumber);
515 ep->buffer0ready = 1;
516 ep->curbufnum = 1;
517 } else if (ep->curbufnum && !ep->buffer1ready) {
519 eprambase = (u32 __force *)(udc->addr + ep->rambase +
520 ep->ep_usb.maxpacket);
521 if (ep->is_in) {
523 udc->write_fn(udc->addr, ep->offset +
532 1 << (ep->epnumber + XUSB_STATUS_EP_BUFF2_SHIFT));
533 ep->buffer1ready = 1;
534 ep->curbufnum = 0;
544 * @ep: pointer to the usb device endpoint structure.
551 static void xudc_done(struct xusb_ep *ep, struct xusb_req *req, int status)
553 struct xusb_udc *udc = ep->udc;
564 ep->ep_usb.name, req, status);
566 if (udc->dma_enabled && ep->epnumber && req->usb_req.length)
568 ep->is_in);
572 req->usb_req.complete(&ep->ep_usb, &req->usb_req);
579 * @ep: pointer to the usb device endpoint structure.
586 static int xudc_read_fifo(struct xusb_ep *ep, struct xusb_req *req)
594 struct xusb_udc *udc = ep->udc;
596 if (ep->buffer0ready && ep->buffer1ready) {
601 if (ep->curbufnum)
606 count = udc->read_fn(udc->addr + ep->offset + bufoffset);
608 if (!ep->buffer0ready && !ep->buffer1ready)
614 is_short = count < ep->ep_usb.maxpacket;
624 ep->ep_usb.name, count);
626 xudc_done(ep, req, -EOVERFLOW);
630 ret = xudc_eptxrx(ep, req, buf, count);
635 ep->ep_usb.name, count, is_short ? "/S" : "", req,
645 xudc_done(ep, req, 0);
659 xudc_done(ep, req, -ECONNRESET);
669 * @ep: pointer to the usb device endpoint structure.
676 static int xudc_write_fifo(struct xusb_ep *ep, struct xusb_req *req)
682 struct xusb_udc *udc = ep->udc;
686 max = le16_to_cpu(ep->desc->wMaxPacketSize);
692 ret = xudc_eptxrx(ep, req, buf, length);
706 __func__, ep->ep_usb.name, length, is_last ? "/L" : "",
711 xudc_done(ep, req, 0);
721 xudc_done(ep, req, -ECONNRESET);
731 * @ep: pointer to the usb device endpoint structure.
734 static void xudc_nuke(struct xusb_ep *ep, int status)
738 while (!list_empty(&ep->queue)) {
739 req = list_first_entry(&ep->queue, struct xusb_req, queue);
740 xudc_done(ep, req, status);
753 struct xusb_ep *ep = to_xusb_ep(_ep);
758 if (!_ep || (!ep->desc && ep->epnumber)) {
759 pr_debug("%s: bad ep or descriptor\n", __func__);
762 udc = ep->udc;
764 if (ep->is_in && (!list_empty(&ep->queue)) && value) {
769 if (ep->buffer0ready || ep->buffer1ready) {
778 epcfgreg = udc->read_fn(udc->addr + ep->offset);
780 udc->write_fn(udc->addr, ep->offset, epcfgreg);
783 epcfgreg = udc->read_fn(udc->addr + ep->offset);
785 udc->write_fn(udc->addr, ep->offset, epcfgreg);
786 if (ep->epnumber) {
788 epcfgreg = udc->read_fn(ep->udc->addr + ep->offset);
790 udc->write_fn(udc->addr, ep->offset, epcfgreg);
800 * @ep: pointer to the xusb endpoint structure.
805 static int __xudc_ep_enable(struct xusb_ep *ep,
808 struct xusb_udc *udc = ep->udc;
814 ep->is_in = ((desc->bEndpointAddress & USB_DIR_IN) != 0);
816 ep->epnumber = (desc->bEndpointAddress & 0x0f);
817 ep->desc = desc;
818 ep->ep_usb.desc = desc;
820 ep->ep_usb.maxpacket = maxpacket = le16_to_cpu(desc->wMaxPacketSize);
826 ep->is_iso = 0;
830 ep->is_iso = 0;
838 ep->is_iso = 0;
847 ep->is_iso = 1;
851 ep->buffer0ready = 0;
852 ep->buffer1ready = 0;
853 ep->curbufnum = 0;
854 ep->rambase = rambase[ep->epnumber];
855 xudc_epconfig(ep, udc);
858 ep->epnumber, maxpacket);
861 epcfg = udc->read_fn(udc->addr + ep->offset);
863 udc->write_fn(udc->addr, ep->offset, epcfg);
864 if (ep->epnumber)
865 ep->rambase <<= 2;
869 ier |= (XUSB_STATUS_INTR_BUFF_COMP_SHIFT_MASK << ep->epnumber);
873 if (ep->epnumber && !ep->is_in) {
875 1 << ep->epnumber);
876 ep->buffer0ready = 1;
878 (1 << (ep->epnumber +
880 ep->buffer1ready = 1;
896 struct xusb_ep *ep;
902 pr_debug("%s: bad ep or descriptor\n", __func__);
906 ep = to_xusb_ep(_ep);
907 udc = ep->udc;
915 ret = __xudc_ep_enable(ep, desc);
929 struct xusb_ep *ep;
935 pr_debug("%s: invalid ep\n", __func__);
939 ep = to_xusb_ep(_ep);
940 udc = ep->udc;
944 xudc_nuke(ep, -ESHUTDOWN);
947 ep->desc = NULL;
948 ep->ep_usb.desc = NULL;
950 dev_dbg(udc->dev, "USB Ep %d disable\n ", ep->epnumber);
952 epcfg = udc->read_fn(udc->addr + ep->offset);
954 udc->write_fn(udc->addr, ep->offset, epcfg);
970 struct xusb_ep *ep = to_xusb_ep(_ep);
974 udc = ep->udc;
981 req->ep = ep;
1084 struct xusb_ep *ep = to_xusb_ep(_ep);
1085 struct xusb_udc *udc = ep->udc;
1089 if (!ep->desc) {
1091 __func__, ep->name);
1107 ep->is_in);
1109 dev_dbg(udc->dev, "gadget_map failed ep%d\n",
1110 ep->epnumber);
1116 if (list_empty(&ep->queue)) {
1117 if (ep->is_in) {
1119 if (!xudc_write_fifo(ep, req))
1123 if (!xudc_read_fifo(ep, req))
1129 list_add_tail(&req->queue, &ep->queue);
1144 struct xusb_ep *ep = to_xusb_ep(_ep);
1146 struct xusb_udc *udc = ep->udc;
1151 list_for_each_entry(req, &ep->queue, queue) {
1156 spin_unlock_irqrestore(&ep->udc->lock, flags);
1159 xudc_done(ep, req, -ECONNRESET);
1167 * @ep: pointer to the usb endpoint structure.
1174 static int xudc_ep0_enable(struct usb_ep *ep,
1182 * @ep: pointer to the usb endpoint structure.
1188 static int xudc_ep0_disable(struct usb_ep *ep)
1310 struct xusb_ep *ep = &udc->ep[ep_number];
1313 list_add_tail(&ep->ep_usb.ep_list,
1315 usb_ep_set_maxpacket_limit(&ep->ep_usb,
1317 snprintf(ep->name, EPNAME_SIZE, "ep%d", ep_number);
1318 ep->ep_usb.name = ep->name;
1319 ep->ep_usb.ops = &xusb_ep_ops;
1321 ep->ep_usb.name = ep0name;
1322 usb_ep_set_maxpacket_limit(&ep->ep_usb, EP0_MAX_PACKET);
1323 ep->ep_usb.ops = &xusb_ep0_ops;
1326 ep->udc = udc;
1327 ep->epnumber = ep_number;
1328 ep->desc = NULL;
1333 ep->offset = XUSB_EP0_CONFIG_OFFSET + (ep_number * 0x10);
1334 ep->is_in = 0;
1335 ep->is_iso = 0;
1336 ep->maxpacket = 0;
1337 xudc_epconfig(ep, udc);
1340 INIT_LIST_HEAD(&ep->queue);
1351 struct xusb_ep *ep;
1354 ep = &udc->ep[i];
1355 xudc_nuke(ep, -ESHUTDOWN);
1370 struct xusb_ep *ep0 = &udc->ep[XUSB_EP_NUMBER_ZERO];
1442 struct xusb_ep *ep;
1447 ep = &udc->ep[i];
1448 epcfgreg = udc->read_fn(udc->addr + ep->offset);
1450 udc->write_fn(udc->addr, ep->offset, epcfgreg);
1451 if (ep->epnumber) {
1453 epcfgreg = udc->read_fn(udc->addr + ep->offset);
1455 udc->write_fn(udc->addr, ep->offset, epcfgreg);
1561 struct xusb_ep *ep0 = &udc->ep[XUSB_EP_NUMBER_ZERO];
1576 struct xusb_ep *ep0 = &udc->ep[0];
1597 struct xusb_ep *ep0 = &udc->ep[0];
1617 target_ep = &udc->ep[epnum];
1652 struct xusb_ep *ep0 = &udc->ep[0];
1684 target_ep = &udc->ep[endpoint];
1738 struct xusb_ep *ep0 = &udc->ep[0];
1804 struct xusb_ep *ep0 = &udc->ep[0];
1853 struct xusb_ep *ep0 = &udc->ep[0];
1951 struct xusb_ep *ep;
1953 ep = &udc->ep[epnum];
1956 ep->buffer0ready = 0;
1958 ep->buffer1ready = 0;
1960 if (list_empty(&ep->queue))
1963 req = list_first_entry(&ep->queue, struct xusb_req, queue);
1965 if (ep->is_in)
1966 xudc_write_fifo(ep, req);
1968 xudc_read_fifo(ep, req);
2096 udc->gadget.ep0 = &udc->ep[XUSB_EP_NUMBER_ZERO].ep_usb;
2114 ep0 = &udc->ep[0];