Lines Matching full:ep
44 "ep-a", "ep-b", "ep-c",
60 * dma_ep: selects the endpoint for use with dma (1=ep-a, 2=ep-b)
89 * mode 0 == ep-{a,b,c} 512db each
90 * mode 1 == ep-a 1k, ep-{b,c} 512db
91 * mode 2 == ep-a 1k, ep-b 1k, ep-c 512db
92 * mode 3 == ep-a 1k, ep-b disabled, ep-c 512db
106 static void assert_out_naking(struct net2272_ep *ep, const char *where) in assert_out_naking() argument
114 tmp = net2272_ep_read(ep, EP_STAT0); in assert_out_naking()
116 dev_dbg(ep->dev->dev, "%s %s %02x !NAK\n", in assert_out_naking()
117 ep->ep.name, where, tmp); in assert_out_naking()
118 net2272_ep_write(ep, EP_RSPSET, 1 << ALT_NAK_OUT_PACKETS); in assert_out_naking()
121 #define ASSERT_OUT_NAKING(ep) assert_out_naking(ep, __func__) argument
123 static void stop_out_naking(struct net2272_ep *ep) in stop_out_naking() argument
125 u8 tmp = net2272_ep_read(ep, EP_STAT0); in stop_out_naking()
128 net2272_ep_write(ep, EP_RSPCLR, 1 << ALT_NAK_OUT_PACKETS); in stop_out_naking()
178 struct net2272_ep *ep; in net2272_enable() local
183 ep = container_of(_ep, struct net2272_ep, ep); in net2272_enable()
184 if (!_ep || !desc || ep->desc || _ep->name == ep0name in net2272_enable()
187 dev = ep->dev; in net2272_enable()
195 ep->desc = desc; in net2272_enable()
198 ep->stopped = 0; in net2272_enable()
199 ep->wedged = 0; in net2272_enable()
202 net2272_ep_write(ep, EP_MAXPKT0, max & 0xff); in net2272_enable()
203 net2272_ep_write(ep, EP_MAXPKT1, (max & 0xff00) >> 8); in net2272_enable()
206 net2272_ep_write(ep, EP_STAT1, 1 << BUFFER_FLUSH); in net2272_enable()
216 ep->is_iso = usb_endpoint_xfer_isoc(desc) ? 1 : 0; in net2272_enable()
223 ep->is_in = usb_endpoint_dir_in(desc); in net2272_enable()
224 if (!ep->is_in) in net2272_enable()
225 net2272_ep_write(ep, EP_RSPSET, 1 << ALT_NAK_OUT_PACKETS); in net2272_enable()
227 net2272_ep_write(ep, EP_CFG, tmp); in net2272_enable()
230 tmp = (1 << ep->num) | net2272_read(dev, IRQENB0); in net2272_enable()
235 | net2272_ep_read(ep, EP_IRQENB); in net2272_enable()
236 net2272_ep_write(ep, EP_IRQENB, tmp); in net2272_enable()
239 dev_dbg(dev->dev, "enabled %s (ep%d%s-%s) max %04x cfg %02x\n", in net2272_enable()
242 net2272_ep_read(ep, EP_CFG)); in net2272_enable()
248 static void net2272_ep_reset(struct net2272_ep *ep) in net2272_ep_reset() argument
252 ep->desc = NULL; in net2272_ep_reset()
253 INIT_LIST_HEAD(&ep->queue); in net2272_ep_reset()
255 usb_ep_set_maxpacket_limit(&ep->ep, ~0); in net2272_ep_reset()
256 ep->ep.ops = &net2272_ep_ops; in net2272_ep_reset()
259 net2272_ep_write(ep, EP_IRQENB, 0); in net2272_ep_reset()
265 net2272_ep_write(ep, EP_RSPSET, tmp); in net2272_ep_reset()
268 if (ep->num != 0) in net2272_ep_reset()
271 net2272_ep_write(ep, EP_RSPCLR, tmp); in net2272_ep_reset()
274 net2272_ep_write(ep, EP_STAT0, in net2272_ep_reset()
281 net2272_ep_write(ep, EP_STAT1, in net2272_ep_reset()
296 struct net2272_ep *ep; in net2272_disable() local
299 ep = container_of(_ep, struct net2272_ep, ep); in net2272_disable()
300 if (!_ep || !ep->desc || _ep->name == ep0name) in net2272_disable()
303 spin_lock_irqsave(&ep->dev->lock, flags); in net2272_disable()
304 net2272_dequeue_all(ep); in net2272_disable()
305 net2272_ep_reset(ep); in net2272_disable()
307 dev_vdbg(ep->dev->dev, "disabled %s\n", _ep->name); in net2272_disable()
309 spin_unlock_irqrestore(&ep->dev->lock, flags); in net2272_disable()
346 net2272_done(struct net2272_ep *ep, struct net2272_request *req, int status) in net2272_done() argument
349 unsigned stopped = ep->stopped; in net2272_done()
351 if (ep->num == 0) { in net2272_done()
352 if (ep->dev->protocol_stall) { in net2272_done()
353 ep->stopped = 1; in net2272_done()
354 set_halt(ep); in net2272_done()
356 allow_status(ep); in net2272_done()
366 dev = ep->dev; in net2272_done()
367 if (use_dma && ep->dma) in net2272_done()
369 ep->is_in); in net2272_done()
373 ep->ep.name, &req->req, status, in net2272_done()
377 ep->stopped = 1; in net2272_done()
379 usb_gadget_giveback_request(&ep->ep, &req->req); in net2272_done()
381 ep->stopped = stopped; in net2272_done()
385 net2272_write_packet(struct net2272_ep *ep, u8 *buf, in net2272_write_packet() argument
388 u16 __iomem *ep_data = net2272_reg_addr(ep->dev, EP_DATA); in net2272_write_packet()
396 dev_vdbg(ep->dev->dev, "write packet %s req %p max %u len %u avail %u\n", in net2272_write_packet()
397 ep->ep.name, req, max, length, in net2272_write_packet()
398 (net2272_ep_read(ep, EP_AVAIL1) << 8) | net2272_ep_read(ep, EP_AVAIL0)); in net2272_write_packet()
412 tmp = net2272_read(ep->dev, LOCCTL); in net2272_write_packet()
413 net2272_write(ep->dev, LOCCTL, tmp & ~(1 << DATA_WIDTH)); in net2272_write_packet()
415 net2272_write(ep->dev, LOCCTL, tmp); in net2272_write_packet()
422 net2272_write_fifo(struct net2272_ep *ep, struct net2272_request *req) in net2272_write_fifo() argument
428 dev_vdbg(ep->dev->dev, "write_fifo %s actual %d len %d\n", in net2272_write_fifo()
429 ep->ep.name, req->req.actual, req->req.length); in net2272_write_fifo()
441 net2272_ep_write(ep, EP_STAT0, (1 << DATA_PACKET_TRANSMITTED_INTERRUPT)); in net2272_write_fifo()
442 while (!(net2272_ep_read(ep, EP_STAT0) & (1 << BUFFER_FULL))) { in net2272_write_fifo()
447 net2272_ep_read(ep, EP_STAT0); in net2272_write_fifo()
449 max = (net2272_ep_read(ep, EP_AVAIL1) << 8) | in net2272_write_fifo()
450 (net2272_ep_read(ep, EP_AVAIL0)); in net2272_write_fifo()
452 if (max < ep->ep.maxpacket) in net2272_write_fifo()
453 max = (net2272_ep_read(ep, EP_AVAIL1) << 8) in net2272_write_fifo()
454 | (net2272_ep_read(ep, EP_AVAIL0)); in net2272_write_fifo()
456 count = net2272_write_packet(ep, buf, req, max); in net2272_write_fifo()
460 if (count < ep->ep.maxpacket) in net2272_write_fifo()
461 set_fifo_bytecount(ep, 0); in net2272_write_fifo()
462 net2272_done(ep, req, 0); in net2272_write_fifo()
464 if (!list_empty(&ep->queue)) { in net2272_write_fifo()
465 req = list_entry(ep->queue.next, in net2272_write_fifo()
468 status = net2272_kick_dma(ep, req); in net2272_write_fifo()
471 if ((net2272_ep_read(ep, EP_STAT0) in net2272_write_fifo()
477 net2272_ep_write(ep, EP_STAT0, (1 << DATA_PACKET_TRANSMITTED_INTERRUPT)); in net2272_write_fifo()
483 net2272_out_flush(struct net2272_ep *ep) in net2272_out_flush() argument
485 ASSERT_OUT_NAKING(ep); in net2272_out_flush()
487 net2272_ep_write(ep, EP_STAT0, (1 << DATA_OUT_TOKEN_INTERRUPT) in net2272_out_flush()
489 net2272_ep_write(ep, EP_STAT1, 1 << BUFFER_FLUSH); in net2272_out_flush()
493 net2272_read_packet(struct net2272_ep *ep, u8 *buf, in net2272_read_packet() argument
496 u16 __iomem *ep_data = net2272_reg_addr(ep->dev, EP_DATA); in net2272_read_packet()
502 dev_vdbg(ep->dev->dev, "read packet %s req %p len %u avail %u\n", in net2272_read_packet()
503 ep->ep.name, req, avail, in net2272_read_packet()
504 (net2272_ep_read(ep, EP_AVAIL1) << 8) | net2272_ep_read(ep, EP_AVAIL0)); in net2272_read_packet()
506 is_short = (avail < ep->ep.maxpacket); in net2272_read_packet()
526 * ep stat0 twice in the case of a short transfer in net2272_read_packet()
528 if (net2272_ep_read(ep, EP_STAT0) & (1 << SHORT_PACKET_TRANSFERRED_INTERRUPT)) in net2272_read_packet()
529 net2272_ep_read(ep, EP_STAT0); in net2272_read_packet()
535 net2272_read_fifo(struct net2272_ep *ep, struct net2272_request *req) in net2272_read_fifo() argument
543 dev_vdbg(ep->dev->dev, "read_fifo %s actual %d len %d\n", in net2272_read_fifo()
544 ep->ep.name, req->req.actual, req->req.length); in net2272_read_fifo()
551 count = (net2272_ep_read(ep, EP_AVAIL1) << 8) in net2272_read_fifo()
552 | net2272_ep_read(ep, EP_AVAIL0); in net2272_read_fifo()
554 net2272_ep_write(ep, EP_STAT0, in net2272_read_fifo()
561 if ((tmp % ep->ep.maxpacket) != 0) { in net2272_read_fifo()
562 dev_err(ep->dev->dev, in net2272_read_fifo()
564 ep->ep.name, count, tmp); in net2272_read_fifo()
570 is_short = net2272_read_packet(ep, buf, req, count); in net2272_read_fifo()
577 net2272_out_flush(ep); in net2272_read_fifo()
578 net2272_done(ep, req, -EOVERFLOW); in net2272_read_fifo()
580 net2272_done(ep, req, 0); in net2272_read_fifo()
586 if (unlikely(ep->num == 0)) { in net2272_read_fifo()
587 net2272_ep_write(ep, EP_TRANSFER2, 0); in net2272_read_fifo()
588 net2272_ep_write(ep, EP_TRANSFER1, 0); in net2272_read_fifo()
589 net2272_ep_write(ep, EP_TRANSFER0, 0); in net2272_read_fifo()
592 if (!list_empty(&ep->queue)) { in net2272_read_fifo()
595 req = list_entry(ep->queue.next, in net2272_read_fifo()
597 status = net2272_kick_dma(ep, req); in net2272_read_fifo()
599 !(net2272_ep_read(ep, EP_STAT0) & (1 << BUFFER_EMPTY))) in net2272_read_fifo()
604 } while (!(net2272_ep_read(ep, EP_STAT0) & (1 << BUFFER_EMPTY))); in net2272_read_fifo()
610 net2272_pio_advance(struct net2272_ep *ep) in net2272_pio_advance() argument
614 if (unlikely(list_empty(&ep->queue))) in net2272_pio_advance()
617 req = list_entry(ep->queue.next, struct net2272_request, queue); in net2272_pio_advance()
618 (ep->is_in ? net2272_write_fifo : net2272_read_fifo)(ep, req); in net2272_pio_advance()
623 net2272_request_dma(struct net2272 *dev, unsigned ep, u32 buf, in net2272_request_dma() argument
626 dev_vdbg(dev->dev, "request_dma ep %d buf %08x len %d dir %d\n", in net2272_request_dma()
627 ep, buf, len, dir); in net2272_request_dma()
679 ((ep >> 1) << DMA_ENDPOINT_SELECT)); in net2272_request_dma()
702 net2272_kick_dma(struct net2272_ep *ep, struct net2272_request *req) in net2272_kick_dma() argument
707 if (!use_dma || (ep->num < 1) || (ep->num > 2) || !ep->dma) in net2272_kick_dma()
716 dev_vdbg(ep->dev->dev, "kick_dma %s req %p dma %08llx\n", in net2272_kick_dma()
717 ep->ep.name, req, (unsigned long long) req->req.dma); in net2272_kick_dma()
719 net2272_ep_write(ep, EP_RSPSET, 1 << ALT_NAK_OUT_PACKETS); in net2272_kick_dma()
722 if (ep->dev->dma_busy) in net2272_kick_dma()
732 if (ep->is_in) { in net2272_kick_dma()
734 if (net2272_request_dma(ep->dev, ep->num, req->req.dma, size, 0)) in net2272_kick_dma()
741 tmp = net2272_ep_read(ep, EP_STAT0); in net2272_kick_dma()
744 if (net2272_request_dma(ep->dev, ep->num, req->req.dma, size, 1)) in net2272_kick_dma()
749 ep->not_empty = 1; in net2272_kick_dma()
751 ep->not_empty = 0; in net2272_kick_dma()
755 net2272_ep_write(ep, EP_RSPCLR, 1 << ALT_NAK_OUT_PACKETS); in net2272_kick_dma()
763 net2272_write(ep->dev, DMAREQ, in net2272_kick_dma()
767 (ep->dev->dma_eot_polarity << EOT_POLARITY) | in net2272_kick_dma()
768 (ep->dev->dma_dack_polarity << DACK_POLARITY) | in net2272_kick_dma()
769 (ep->dev->dma_dreq_polarity << DREQ_POLARITY) | in net2272_kick_dma()
770 ((ep->num >> 1) << DMA_ENDPOINT_SELECT)); in net2272_kick_dma()
777 net2272_ep_write(ep, EP_IRQENB, 0); in net2272_kick_dma()
779 net2272_start_dma(ep->dev); in net2272_kick_dma()
811 struct net2272_ep *ep; in net2272_queue() local
821 ep = container_of(_ep, struct net2272_ep, ep); in net2272_queue()
822 if (!_ep || (!ep->desc && ep->num != 0)) in net2272_queue()
824 dev = ep->dev; in net2272_queue()
829 if (use_dma && ep->dma) { in net2272_queue()
831 ep->is_in); in net2272_queue()
846 if (list_empty(&ep->queue) && !ep->stopped) { in net2272_queue()
848 if (ep->num == 0 && _req->length == 0) { in net2272_queue()
849 net2272_done(ep, req, 0); in net2272_queue()
850 dev_vdbg(dev->dev, "%s status ack\n", ep->ep.name); in net2272_queue()
855 s = net2272_ep_read(ep, EP_STAT0); in net2272_queue()
859 net2272_ep_read(ep, EP_STAT1) & (1 << LOCAL_OUT_ZLP)) { in net2272_queue()
865 status = net2272_read_fifo(ep, req); in net2272_queue()
867 net2272_ep_write(ep, EP_STAT0, (1 << NAK_OUT_PACKETS)); in net2272_queue()
873 status = net2272_kick_dma(ep, req); in net2272_queue()
881 if (ep->is_in) in net2272_queue()
882 status = net2272_write_fifo(ep, req); in net2272_queue()
884 s = net2272_ep_read(ep, EP_STAT0); in net2272_queue()
886 status = net2272_read_fifo(ep, req); in net2272_queue()
897 list_add_tail(&req->queue, &ep->queue); in net2272_queue()
899 if (likely(!list_empty(&ep->queue))) in net2272_queue()
900 net2272_ep_write(ep, EP_RSPCLR, 1 << ALT_NAK_OUT_PACKETS); in net2272_queue()
909 net2272_dequeue_all(struct net2272_ep *ep) in net2272_dequeue_all() argument
914 ep->stopped = 1; in net2272_dequeue_all()
916 while (!list_empty(&ep->queue)) { in net2272_dequeue_all()
917 req = list_entry(ep->queue.next, in net2272_dequeue_all()
920 net2272_done(ep, req, -ESHUTDOWN); in net2272_dequeue_all()
928 struct net2272_ep *ep; in net2272_dequeue() local
933 ep = container_of(_ep, struct net2272_ep, ep); in net2272_dequeue()
934 if (!_ep || (!ep->desc && ep->num != 0) || !_req) in net2272_dequeue()
937 spin_lock_irqsave(&ep->dev->lock, flags); in net2272_dequeue()
938 stopped = ep->stopped; in net2272_dequeue()
939 ep->stopped = 1; in net2272_dequeue()
942 list_for_each_entry(iter, &ep->queue, queue) { in net2272_dequeue()
949 ep->stopped = stopped; in net2272_dequeue()
950 spin_unlock_irqrestore(&ep->dev->lock, flags); in net2272_dequeue()
955 if (ep->queue.next == &req->queue) { in net2272_dequeue()
956 dev_dbg(ep->dev->dev, "unlink (%s) pio\n", _ep->name); in net2272_dequeue()
957 net2272_done(ep, req, -ECONNRESET); in net2272_dequeue()
959 ep->stopped = stopped; in net2272_dequeue()
961 spin_unlock_irqrestore(&ep->dev->lock, flags); in net2272_dequeue()
970 struct net2272_ep *ep; in net2272_set_halt_and_wedge() local
974 ep = container_of(_ep, struct net2272_ep, ep); in net2272_set_halt_and_wedge()
975 if (!_ep || (!ep->desc && ep->num != 0)) in net2272_set_halt_and_wedge()
977 if (!ep->dev->driver || ep->dev->gadget.speed == USB_SPEED_UNKNOWN) in net2272_set_halt_and_wedge()
979 if (ep->desc /* not ep0 */ && usb_endpoint_xfer_isoc(ep->desc)) in net2272_set_halt_and_wedge()
982 spin_lock_irqsave(&ep->dev->lock, flags); in net2272_set_halt_and_wedge()
983 if (!list_empty(&ep->queue)) in net2272_set_halt_and_wedge()
985 else if (ep->is_in && value && net2272_fifo_status(_ep) != 0) in net2272_set_halt_and_wedge()
988 dev_vdbg(ep->dev->dev, "%s %s %s\n", _ep->name, in net2272_set_halt_and_wedge()
993 if (ep->num == 0) in net2272_set_halt_and_wedge()
994 ep->dev->protocol_stall = 1; in net2272_set_halt_and_wedge()
996 set_halt(ep); in net2272_set_halt_and_wedge()
998 ep->wedged = 1; in net2272_set_halt_and_wedge()
1000 clear_halt(ep); in net2272_set_halt_and_wedge()
1001 ep->wedged = 0; in net2272_set_halt_and_wedge()
1004 spin_unlock_irqrestore(&ep->dev->lock, flags); in net2272_set_halt_and_wedge()
1026 struct net2272_ep *ep; in net2272_fifo_status() local
1029 ep = container_of(_ep, struct net2272_ep, ep); in net2272_fifo_status()
1030 if (!_ep || (!ep->desc && ep->num != 0)) in net2272_fifo_status()
1032 if (!ep->dev->driver || ep->dev->gadget.speed == USB_SPEED_UNKNOWN) in net2272_fifo_status()
1035 avail = net2272_ep_read(ep, EP_AVAIL1) << 8; in net2272_fifo_status()
1036 avail |= net2272_ep_read(ep, EP_AVAIL0); in net2272_fifo_status()
1037 if (avail > ep->fifo_size) in net2272_fifo_status()
1039 if (ep->is_in) in net2272_fifo_status()
1040 avail = ep->fifo_size - avail; in net2272_fifo_status()
1047 struct net2272_ep *ep; in net2272_fifo_flush() local
1049 ep = container_of(_ep, struct net2272_ep, ep); in net2272_fifo_flush()
1050 if (!_ep || (!ep->desc && ep->num != 0)) in net2272_fifo_flush()
1052 if (!ep->dev->driver || ep->dev->gadget.speed == USB_SPEED_UNKNOWN) in net2272_fifo_flush()
1055 net2272_ep_write(ep, EP_STAT1, 1 << BUFFER_FLUSH); in net2272_fifo_flush()
1229 struct net2272_ep *ep; in registers_show() local
1231 ep = &dev->ep[i]; in registers_show()
1232 if (i && !ep->desc) in registers_show()
1235 t1 = net2272_ep_read(ep, EP_CFG); in registers_show()
1236 t2 = net2272_ep_read(ep, EP_RSPSET); in registers_show()
1240 ep->ep.name, t1, t2, in registers_show()
1249 net2272_ep_read(ep, EP_IRQENB)); in registers_show()
1255 "(ep%d%s-%s)%s\n", in registers_show()
1256 net2272_ep_read(ep, EP_STAT0), in registers_show()
1257 net2272_ep_read(ep, EP_STAT1), in registers_show()
1258 (net2272_ep_read(ep, EP_AVAIL1) << 8) | net2272_ep_read(ep, EP_AVAIL0), in registers_show()
1260 ep->is_in ? "in" : "out", in registers_show()
1262 ep->stopped ? "*" : ""); in registers_show()
1268 ((net2272_ep_read(ep, EP_TRANSFER2) & 0xff) << 16) | in registers_show()
1269 ((net2272_ep_read(ep, EP_TRANSFER1) & 0xff) << 8) | in registers_show()
1270 ((net2272_ep_read(ep, EP_TRANSFER0) & 0xff))); in registers_show()
1274 t1 = net2272_ep_read(ep, EP_BUFF_STATES) & 0x03; in registers_show()
1275 t2 = (net2272_ep_read(ep, EP_BUFF_STATES) >> 2) & 0x03; in registers_show()
1303 /* always ep-a, ep-c ... maybe not ep-b */ in net2272_set_fifo_mode()
1304 list_add_tail(&dev->ep[1].ep.ep_list, &dev->gadget.ep_list); in net2272_set_fifo_mode()
1308 list_add_tail(&dev->ep[2].ep.ep_list, &dev->gadget.ep_list); in net2272_set_fifo_mode()
1309 dev->ep[1].fifo_size = dev->ep[2].fifo_size = 512; in net2272_set_fifo_mode()
1312 list_add_tail(&dev->ep[2].ep.ep_list, &dev->gadget.ep_list); in net2272_set_fifo_mode()
1313 dev->ep[1].fifo_size = 1024; in net2272_set_fifo_mode()
1314 dev->ep[2].fifo_size = 512; in net2272_set_fifo_mode()
1317 list_add_tail(&dev->ep[2].ep.ep_list, &dev->gadget.ep_list); in net2272_set_fifo_mode()
1318 dev->ep[1].fifo_size = dev->ep[2].fifo_size = 1024; in net2272_set_fifo_mode()
1321 dev->ep[1].fifo_size = 1024; in net2272_set_fifo_mode()
1325 /* ep-c is always 2 512 byte buffers */ in net2272_set_fifo_mode()
1326 list_add_tail(&dev->ep[3].ep.ep_list, &dev->gadget.ep_list); in net2272_set_fifo_mode()
1327 dev->ep[3].fifo_size = 512; in net2272_set_fifo_mode()
1358 /* Set the NET2272 ep fifo data width to 16-bit mode and for correct byte swapping in net2272_usb_reset()
1373 struct net2272_ep *ep = &dev->ep[i]; in net2272_usb_reinit() local
1375 ep->ep.name = ep_name[i]; in net2272_usb_reinit()
1376 ep->dev = dev; in net2272_usb_reinit()
1377 ep->num = i; in net2272_usb_reinit()
1378 ep->not_empty = 0; in net2272_usb_reinit()
1380 if (use_dma && ep->num == dma_ep) in net2272_usb_reinit()
1381 ep->dma = 1; in net2272_usb_reinit()
1384 ep->fifo_size = 512; in net2272_usb_reinit()
1386 ep->fifo_size = 64; in net2272_usb_reinit()
1387 net2272_ep_reset(ep); in net2272_usb_reinit()
1390 ep->ep.caps.type_control = true; in net2272_usb_reinit()
1392 ep->ep.caps.type_iso = true; in net2272_usb_reinit()
1393 ep->ep.caps.type_bulk = true; in net2272_usb_reinit()
1394 ep->ep.caps.type_int = true; in net2272_usb_reinit()
1397 ep->ep.caps.dir_in = true; in net2272_usb_reinit()
1398 ep->ep.caps.dir_out = true; in net2272_usb_reinit()
1400 usb_ep_set_maxpacket_limit(&dev->ep[0].ep, 64); in net2272_usb_reinit()
1402 dev->gadget.ep0 = &dev->ep[0].ep; in net2272_usb_reinit()
1403 dev->ep[0].stopped = 0; in net2272_usb_reinit()
1410 struct net2272_ep *ep0 = &dev->ep[0]; in net2272_ep0_start()
1451 dev->ep[i].irqs = 0; in net2272_start()
1478 net2272_dequeue_all(&dev->ep[i]); in stop_activity()
1516 /* handle ep-a/ep-b dma completions */
1518 net2272_handle_dma(struct net2272_ep *ep) in net2272_handle_dma() argument
1524 if (!list_empty(&ep->queue)) in net2272_handle_dma()
1525 req = list_entry(ep->queue.next, in net2272_handle_dma()
1530 dev_vdbg(ep->dev->dev, "handle_dma %s req %p\n", ep->ep.name, req); in net2272_handle_dma()
1533 net2272_write(ep->dev, DMAREQ, in net2272_handle_dma()
1537 | (ep->dev->dma_eot_polarity << EOT_POLARITY) in net2272_handle_dma()
1538 | (ep->dev->dma_dack_polarity << DACK_POLARITY) in net2272_handle_dma()
1539 | (ep->dev->dma_dreq_polarity << DREQ_POLARITY) in net2272_handle_dma()
1540 | (ep->dma << DMA_ENDPOINT_SELECT)); in net2272_handle_dma()
1542 ep->dev->dma_busy = 0; in net2272_handle_dma()
1544 net2272_ep_write(ep, EP_IRQENB, in net2272_handle_dma()
1547 | net2272_ep_read(ep, EP_IRQENB)); in net2272_handle_dma()
1550 if (ep->is_in) { in net2272_handle_dma()
1552 if ((req->req.length % ep->ep.maxpacket != 0) || in net2272_handle_dma()
1554 set_fifo_bytecount(ep, 0); in net2272_handle_dma()
1556 net2272_done(ep, req, 0); in net2272_handle_dma()
1557 if (!list_empty(&ep->queue)) { in net2272_handle_dma()
1558 req = list_entry(ep->queue.next, in net2272_handle_dma()
1560 status = net2272_kick_dma(ep, req); in net2272_handle_dma()
1562 net2272_pio_advance(ep); in net2272_handle_dma()
1568 if (net2272_read(ep->dev, IRQSTAT0) & in net2272_handle_dma()
1571 net2272_cancel_dma(ep->dev); in net2272_handle_dma()
1579 len = (net2272_ep_read(ep, EP_TRANSFER2) << 16) in net2272_handle_dma()
1580 | (net2272_ep_read(ep, EP_TRANSFER1) << 8) in net2272_handle_dma()
1581 | (net2272_ep_read(ep, EP_TRANSFER0)); in net2272_handle_dma()
1583 if (ep->not_empty) in net2272_handle_dma()
1589 net2272_pio_advance(ep); in net2272_handle_dma()
1596 net2272_handle_ep(struct net2272_ep *ep) in net2272_handle_ep() argument
1601 if (!list_empty(&ep->queue)) in net2272_handle_ep()
1602 req = list_entry(ep->queue.next, in net2272_handle_ep()
1608 stat0 = net2272_ep_read(ep, EP_STAT0); in net2272_handle_ep()
1609 stat1 = net2272_ep_read(ep, EP_STAT1); in net2272_handle_ep()
1610 ep->irqs++; in net2272_handle_ep()
1612 dev_vdbg(ep->dev->dev, "%s ack ep_stat0 %02x, ep_stat1 %02x, req %p\n", in net2272_handle_ep()
1613 ep->ep.name, stat0, stat1, req ? &req->req : NULL); in net2272_handle_ep()
1615 net2272_ep_write(ep, EP_STAT0, stat0 & in net2272_handle_ep()
1618 net2272_ep_write(ep, EP_STAT1, stat1); in net2272_handle_ep()
1624 if (!ep->is_in && (stat0 & (1 << DATA_PACKET_RECEIVED_INTERRUPT))) in net2272_handle_ep()
1625 net2272_pio_advance(ep); in net2272_handle_ep()
1628 net2272_pio_advance(ep); in net2272_handle_ep()
1634 struct net2272_ep *ep; in net2272_get_ep_by_addr() local
1637 return &dev->ep[0]; in net2272_get_ep_by_addr()
1639 list_for_each_entry(ep, &dev->gadget.ep_list, ep.ep_list) { in net2272_get_ep_by_addr()
1642 if (!ep->desc) in net2272_get_ep_by_addr()
1644 bEndpointAddress = ep->desc->bEndpointAddress; in net2272_get_ep_by_addr()
1648 return ep; in net2272_get_ep_by_addr()
1718 struct net2272_ep *ep; in net2272_handle_stat0_irqs() local
1739 ep = &dev->ep[0]; in net2272_handle_stat0_irqs()
1740 ep->irqs++; in net2272_handle_stat0_irqs()
1744 while (!list_empty(&ep->queue)) { in net2272_handle_stat0_irqs()
1745 req = list_entry(ep->queue.next, in net2272_handle_stat0_irqs()
1747 net2272_done(ep, req, in net2272_handle_stat0_irqs()
1750 ep->stopped = 0; in net2272_handle_stat0_irqs()
1752 net2272_ep_write(ep, EP_STAT0, in net2272_handle_stat0_irqs()
1758 net2272_ep_write(ep, EP_STAT1, in net2272_handle_stat0_irqs()
1804 ep->is_in = (u.r.bRequestType & USB_DIR_IN) != 0; in net2272_handle_stat0_irqs()
1805 if (ep->is_in) { in net2272_handle_stat0_irqs()
1809 stop_out_naking(ep); in net2272_handle_stat0_irqs()
1814 net2272_ep_write(ep, EP_IRQENB, scratch); in net2272_handle_stat0_irqs()
1834 net2272_ep_write(&dev->ep[0], EP_IRQENB, 0); in net2272_handle_stat0_irqs()
1836 set_fifo_bytecount(&dev->ep[0], 0); in net2272_handle_stat0_irqs()
1837 allow_status(ep); in net2272_handle_stat0_irqs()
1839 ep->ep.name, status); in net2272_handle_stat0_irqs()
1848 net2272_ep_write(&dev->ep[0], EP_IRQENB, 0); in net2272_handle_stat0_irqs()
1850 set_fifo_bytecount(&dev->ep[0], 0); in net2272_handle_stat0_irqs()
1851 allow_status(ep); in net2272_handle_stat0_irqs()
1859 net2272_ep_write(&dev->ep[0], EP_IRQENB, 0); in net2272_handle_stat0_irqs()
1861 set_fifo_bytecount(&dev->ep[0], 0); in net2272_handle_stat0_irqs()
1862 allow_status(ep); in net2272_handle_stat0_irqs()
1882 ep->ep.name); in net2272_handle_stat0_irqs()
1884 dev_vdbg(dev->dev, "%s clear halt\n", ep->ep.name); in net2272_handle_stat0_irqs()
1887 allow_status(ep); in net2272_handle_stat0_irqs()
1896 allow_status(ep); in net2272_handle_stat0_irqs()
1908 allow_status(ep); in net2272_handle_stat0_irqs()
1909 dev_vdbg(dev->dev, "%s set halt\n", ep->ep.name); in net2272_handle_stat0_irqs()
1914 allow_status(ep); in net2272_handle_stat0_irqs()
1923 net2272_ep_read(ep, EP_CFG)); in net2272_handle_stat0_irqs()
1946 ep = &dev->ep[num]; in net2272_handle_stat0_irqs()
1947 net2272_handle_dma(ep); in net2272_handle_stat0_irqs()
1963 ep = &dev->ep[num]; in net2272_handle_stat0_irqs()
1964 net2272_handle_ep(ep); in net2272_handle_stat0_irqs()
2086 net2272_handle_dma(&dev->ep[2]); in net2272_irq()
2088 net2272_handle_dma(&dev->ep[1]); in net2272_irq()