Lines Matching refs:ep
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()
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()
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
544 dev_vdbg(ep->dev->dev, "read_fifo %s actual %d len %d\n", in net2272_read_fifo()
545 ep->ep.name, req->req.actual, req->req.length); in net2272_read_fifo()
552 count = (net2272_ep_read(ep, EP_AVAIL1) << 8) in net2272_read_fifo()
553 | net2272_ep_read(ep, EP_AVAIL0); in net2272_read_fifo()
555 net2272_ep_write(ep, EP_STAT0, in net2272_read_fifo()
562 if ((tmp % ep->ep.maxpacket) != 0) { in net2272_read_fifo()
563 dev_err(ep->dev->dev, in net2272_read_fifo()
565 ep->ep.name, count, tmp); in net2272_read_fifo()
571 is_short = net2272_read_packet(ep, buf, req, count); in net2272_read_fifo()
578 net2272_out_flush(ep); in net2272_read_fifo()
579 net2272_done(ep, req, -EOVERFLOW); in net2272_read_fifo()
581 net2272_done(ep, req, 0); in net2272_read_fifo()
587 if (unlikely(ep->num == 0)) { in net2272_read_fifo()
588 net2272_ep_write(ep, EP_TRANSFER2, 0); in net2272_read_fifo()
589 net2272_ep_write(ep, EP_TRANSFER1, 0); in net2272_read_fifo()
590 net2272_ep_write(ep, EP_TRANSFER0, 0); in net2272_read_fifo()
593 if (!list_empty(&ep->queue)) { in net2272_read_fifo()
594 req = list_entry(ep->queue.next, in net2272_read_fifo()
596 status = net2272_kick_dma(ep, req); in net2272_read_fifo()
598 !(net2272_ep_read(ep, EP_STAT0) & (1 << BUFFER_EMPTY))) in net2272_read_fifo()
603 } while (!(net2272_ep_read(ep, EP_STAT0) & (1 << BUFFER_EMPTY))); in net2272_read_fifo()
609 net2272_pio_advance(struct net2272_ep *ep) in net2272_pio_advance() argument
613 if (unlikely(list_empty(&ep->queue))) in net2272_pio_advance()
616 req = list_entry(ep->queue.next, struct net2272_request, queue); in net2272_pio_advance()
617 (ep->is_in ? net2272_write_fifo : net2272_read_fifo)(ep, req); in net2272_pio_advance()
622 net2272_request_dma(struct net2272 *dev, unsigned ep, u32 buf, in net2272_request_dma() argument
626 ep, buf, len, dir); in net2272_request_dma()
678 ((ep >> 1) << DMA_ENDPOINT_SELECT)); in net2272_request_dma()
701 net2272_kick_dma(struct net2272_ep *ep, struct net2272_request *req) in net2272_kick_dma() argument
706 if (!use_dma || (ep->num < 1) || (ep->num > 2) || !ep->dma) in net2272_kick_dma()
715 dev_vdbg(ep->dev->dev, "kick_dma %s req %p dma %08llx\n", in net2272_kick_dma()
716 ep->ep.name, req, (unsigned long long) req->req.dma); in net2272_kick_dma()
718 net2272_ep_write(ep, EP_RSPSET, 1 << ALT_NAK_OUT_PACKETS); in net2272_kick_dma()
721 if (ep->dev->dma_busy) in net2272_kick_dma()
731 if (ep->is_in) { in net2272_kick_dma()
733 if (net2272_request_dma(ep->dev, ep->num, req->req.dma, size, 0)) in net2272_kick_dma()
740 tmp = net2272_ep_read(ep, EP_STAT0); in net2272_kick_dma()
743 if (net2272_request_dma(ep->dev, ep->num, req->req.dma, size, 1)) in net2272_kick_dma()
748 ep->not_empty = 1; in net2272_kick_dma()
750 ep->not_empty = 0; in net2272_kick_dma()
754 net2272_ep_write(ep, EP_RSPCLR, 1 << ALT_NAK_OUT_PACKETS); in net2272_kick_dma()
762 net2272_write(ep->dev, DMAREQ, in net2272_kick_dma()
766 (ep->dev->dma_eot_polarity << EOT_POLARITY) | in net2272_kick_dma()
767 (ep->dev->dma_dack_polarity << DACK_POLARITY) | in net2272_kick_dma()
768 (ep->dev->dma_dreq_polarity << DREQ_POLARITY) | in net2272_kick_dma()
769 ((ep->num >> 1) << DMA_ENDPOINT_SELECT)); in net2272_kick_dma()
776 net2272_ep_write(ep, EP_IRQENB, 0); in net2272_kick_dma()
778 net2272_start_dma(ep->dev); in net2272_kick_dma()
810 struct net2272_ep *ep; in net2272_queue() local
820 ep = container_of(_ep, struct net2272_ep, ep); in net2272_queue()
821 if (!_ep || (!ep->desc && ep->num != 0)) in net2272_queue()
823 dev = ep->dev; in net2272_queue()
828 if (use_dma && ep->dma) { in net2272_queue()
830 ep->is_in); in net2272_queue()
845 if (list_empty(&ep->queue) && !ep->stopped) { in net2272_queue()
847 if (ep->num == 0 && _req->length == 0) { in net2272_queue()
848 net2272_done(ep, req, 0); in net2272_queue()
849 dev_vdbg(dev->dev, "%s status ack\n", ep->ep.name); in net2272_queue()
854 s = net2272_ep_read(ep, EP_STAT0); in net2272_queue()
858 net2272_ep_read(ep, EP_STAT1) & (1 << LOCAL_OUT_ZLP)) { in net2272_queue()
864 status = net2272_read_fifo(ep, req); in net2272_queue()
866 net2272_ep_write(ep, EP_STAT0, (1 << NAK_OUT_PACKETS)); in net2272_queue()
872 status = net2272_kick_dma(ep, req); in net2272_queue()
880 if (ep->is_in) in net2272_queue()
881 status = net2272_write_fifo(ep, req); in net2272_queue()
883 s = net2272_ep_read(ep, EP_STAT0); in net2272_queue()
885 status = net2272_read_fifo(ep, req); in net2272_queue()
896 list_add_tail(&req->queue, &ep->queue); in net2272_queue()
898 if (likely(!list_empty(&ep->queue))) in net2272_queue()
899 net2272_ep_write(ep, EP_RSPCLR, 1 << ALT_NAK_OUT_PACKETS); in net2272_queue()
908 net2272_dequeue_all(struct net2272_ep *ep) in net2272_dequeue_all() argument
913 ep->stopped = 1; in net2272_dequeue_all()
915 while (!list_empty(&ep->queue)) { in net2272_dequeue_all()
916 req = list_entry(ep->queue.next, in net2272_dequeue_all()
919 net2272_done(ep, req, -ESHUTDOWN); in net2272_dequeue_all()
927 struct net2272_ep *ep; in net2272_dequeue() local
932 ep = container_of(_ep, struct net2272_ep, ep); in net2272_dequeue()
933 if (!_ep || (!ep->desc && ep->num != 0) || !_req) in net2272_dequeue()
936 spin_lock_irqsave(&ep->dev->lock, flags); in net2272_dequeue()
937 stopped = ep->stopped; in net2272_dequeue()
938 ep->stopped = 1; in net2272_dequeue()
941 list_for_each_entry(req, &ep->queue, queue) { in net2272_dequeue()
946 ep->stopped = stopped; in net2272_dequeue()
947 spin_unlock_irqrestore(&ep->dev->lock, flags); in net2272_dequeue()
952 if (ep->queue.next == &req->queue) { in net2272_dequeue()
953 dev_dbg(ep->dev->dev, "unlink (%s) pio\n", _ep->name); in net2272_dequeue()
954 net2272_done(ep, req, -ECONNRESET); in net2272_dequeue()
957 ep->stopped = stopped; in net2272_dequeue()
959 spin_unlock_irqrestore(&ep->dev->lock, flags); in net2272_dequeue()
968 struct net2272_ep *ep; in net2272_set_halt_and_wedge() local
972 ep = container_of(_ep, struct net2272_ep, ep); in net2272_set_halt_and_wedge()
973 if (!_ep || (!ep->desc && ep->num != 0)) in net2272_set_halt_and_wedge()
975 if (!ep->dev->driver || ep->dev->gadget.speed == USB_SPEED_UNKNOWN) in net2272_set_halt_and_wedge()
977 if (ep->desc /* not ep0 */ && usb_endpoint_xfer_isoc(ep->desc)) in net2272_set_halt_and_wedge()
980 spin_lock_irqsave(&ep->dev->lock, flags); in net2272_set_halt_and_wedge()
981 if (!list_empty(&ep->queue)) in net2272_set_halt_and_wedge()
983 else if (ep->is_in && value && net2272_fifo_status(_ep) != 0) in net2272_set_halt_and_wedge()
986 dev_vdbg(ep->dev->dev, "%s %s %s\n", _ep->name, in net2272_set_halt_and_wedge()
991 if (ep->num == 0) in net2272_set_halt_and_wedge()
992 ep->dev->protocol_stall = 1; in net2272_set_halt_and_wedge()
994 set_halt(ep); in net2272_set_halt_and_wedge()
996 ep->wedged = 1; in net2272_set_halt_and_wedge()
998 clear_halt(ep); in net2272_set_halt_and_wedge()
999 ep->wedged = 0; in net2272_set_halt_and_wedge()
1002 spin_unlock_irqrestore(&ep->dev->lock, flags); in net2272_set_halt_and_wedge()
1024 struct net2272_ep *ep; in net2272_fifo_status() local
1027 ep = container_of(_ep, struct net2272_ep, ep); in net2272_fifo_status()
1028 if (!_ep || (!ep->desc && ep->num != 0)) in net2272_fifo_status()
1030 if (!ep->dev->driver || ep->dev->gadget.speed == USB_SPEED_UNKNOWN) in net2272_fifo_status()
1033 avail = net2272_ep_read(ep, EP_AVAIL1) << 8; in net2272_fifo_status()
1034 avail |= net2272_ep_read(ep, EP_AVAIL0); in net2272_fifo_status()
1035 if (avail > ep->fifo_size) in net2272_fifo_status()
1037 if (ep->is_in) in net2272_fifo_status()
1038 avail = ep->fifo_size - avail; in net2272_fifo_status()
1045 struct net2272_ep *ep; in net2272_fifo_flush() local
1047 ep = container_of(_ep, struct net2272_ep, ep); in net2272_fifo_flush()
1048 if (!_ep || (!ep->desc && ep->num != 0)) in net2272_fifo_flush()
1050 if (!ep->dev->driver || ep->dev->gadget.speed == USB_SPEED_UNKNOWN) in net2272_fifo_flush()
1053 net2272_ep_write(ep, EP_STAT1, 1 << BUFFER_FLUSH); in net2272_fifo_flush()
1225 struct net2272_ep *ep; in registers_show() local
1227 ep = &dev->ep[i]; in registers_show()
1228 if (i && !ep->desc) in registers_show()
1231 t1 = net2272_ep_read(ep, EP_CFG); in registers_show()
1232 t2 = net2272_ep_read(ep, EP_RSPSET); in registers_show()
1236 ep->ep.name, t1, t2, in registers_show()
1245 net2272_ep_read(ep, EP_IRQENB)); in registers_show()
1252 net2272_ep_read(ep, EP_STAT0), in registers_show()
1253 net2272_ep_read(ep, EP_STAT1), in registers_show()
1254 (net2272_ep_read(ep, EP_AVAIL1) << 8) | net2272_ep_read(ep, EP_AVAIL0), in registers_show()
1256 ep->is_in ? "in" : "out", in registers_show()
1258 ep->stopped ? "*" : ""); in registers_show()
1264 ((net2272_ep_read(ep, EP_TRANSFER2) & 0xff) << 16) | in registers_show()
1265 ((net2272_ep_read(ep, EP_TRANSFER1) & 0xff) << 8) | in registers_show()
1266 ((net2272_ep_read(ep, EP_TRANSFER0) & 0xff))); in registers_show()
1270 t1 = net2272_ep_read(ep, EP_BUFF_STATES) & 0x03; in registers_show()
1271 t2 = (net2272_ep_read(ep, EP_BUFF_STATES) >> 2) & 0x03; in registers_show()
1300 list_add_tail(&dev->ep[1].ep.ep_list, &dev->gadget.ep_list); in net2272_set_fifo_mode()
1304 list_add_tail(&dev->ep[2].ep.ep_list, &dev->gadget.ep_list); in net2272_set_fifo_mode()
1305 dev->ep[1].fifo_size = dev->ep[2].fifo_size = 512; 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 = 1024; in net2272_set_fifo_mode()
1310 dev->ep[2].fifo_size = 512; in net2272_set_fifo_mode()
1313 list_add_tail(&dev->ep[2].ep.ep_list, &dev->gadget.ep_list); in net2272_set_fifo_mode()
1314 dev->ep[1].fifo_size = dev->ep[2].fifo_size = 1024; in net2272_set_fifo_mode()
1317 dev->ep[1].fifo_size = 1024; in net2272_set_fifo_mode()
1322 list_add_tail(&dev->ep[3].ep.ep_list, &dev->gadget.ep_list); in net2272_set_fifo_mode()
1323 dev->ep[3].fifo_size = 512; in net2272_set_fifo_mode()
1369 struct net2272_ep *ep = &dev->ep[i]; in net2272_usb_reinit() local
1371 ep->ep.name = ep_name[i]; in net2272_usb_reinit()
1372 ep->dev = dev; in net2272_usb_reinit()
1373 ep->num = i; in net2272_usb_reinit()
1374 ep->not_empty = 0; in net2272_usb_reinit()
1376 if (use_dma && ep->num == dma_ep) in net2272_usb_reinit()
1377 ep->dma = 1; in net2272_usb_reinit()
1380 ep->fifo_size = 512; in net2272_usb_reinit()
1382 ep->fifo_size = 64; in net2272_usb_reinit()
1383 net2272_ep_reset(ep); in net2272_usb_reinit()
1386 ep->ep.caps.type_control = true; in net2272_usb_reinit()
1388 ep->ep.caps.type_iso = true; in net2272_usb_reinit()
1389 ep->ep.caps.type_bulk = true; in net2272_usb_reinit()
1390 ep->ep.caps.type_int = true; in net2272_usb_reinit()
1393 ep->ep.caps.dir_in = true; in net2272_usb_reinit()
1394 ep->ep.caps.dir_out = true; in net2272_usb_reinit()
1396 usb_ep_set_maxpacket_limit(&dev->ep[0].ep, 64); in net2272_usb_reinit()
1398 dev->gadget.ep0 = &dev->ep[0].ep; in net2272_usb_reinit()
1399 dev->ep[0].stopped = 0; in net2272_usb_reinit()
1406 struct net2272_ep *ep0 = &dev->ep[0]; in net2272_ep0_start()
1447 dev->ep[i].irqs = 0; in net2272_start()
1475 net2272_dequeue_all(&dev->ep[i]); in stop_activity()
1506 net2272_handle_dma(struct net2272_ep *ep) in net2272_handle_dma() argument
1512 if (!list_empty(&ep->queue)) in net2272_handle_dma()
1513 req = list_entry(ep->queue.next, in net2272_handle_dma()
1518 dev_vdbg(ep->dev->dev, "handle_dma %s req %p\n", ep->ep.name, req); in net2272_handle_dma()
1521 net2272_write(ep->dev, DMAREQ, in net2272_handle_dma()
1525 | (ep->dev->dma_eot_polarity << EOT_POLARITY) in net2272_handle_dma()
1526 | (ep->dev->dma_dack_polarity << DACK_POLARITY) in net2272_handle_dma()
1527 | (ep->dev->dma_dreq_polarity << DREQ_POLARITY) in net2272_handle_dma()
1528 | (ep->dma << DMA_ENDPOINT_SELECT)); in net2272_handle_dma()
1530 ep->dev->dma_busy = 0; in net2272_handle_dma()
1532 net2272_ep_write(ep, EP_IRQENB, in net2272_handle_dma()
1535 | net2272_ep_read(ep, EP_IRQENB)); in net2272_handle_dma()
1538 if (ep->is_in) { in net2272_handle_dma()
1540 if ((req->req.length % ep->ep.maxpacket != 0) || in net2272_handle_dma()
1542 set_fifo_bytecount(ep, 0); in net2272_handle_dma()
1544 net2272_done(ep, req, 0); in net2272_handle_dma()
1545 if (!list_empty(&ep->queue)) { in net2272_handle_dma()
1546 req = list_entry(ep->queue.next, in net2272_handle_dma()
1548 status = net2272_kick_dma(ep, req); in net2272_handle_dma()
1550 net2272_pio_advance(ep); in net2272_handle_dma()
1556 if (net2272_read(ep->dev, IRQSTAT0) & in net2272_handle_dma()
1559 net2272_cancel_dma(ep->dev); in net2272_handle_dma()
1567 len = (net2272_ep_read(ep, EP_TRANSFER2) << 16) in net2272_handle_dma()
1568 | (net2272_ep_read(ep, EP_TRANSFER1) << 8) in net2272_handle_dma()
1569 | (net2272_ep_read(ep, EP_TRANSFER0)); in net2272_handle_dma()
1571 if (ep->not_empty) in net2272_handle_dma()
1577 net2272_pio_advance(ep); in net2272_handle_dma()
1584 net2272_handle_ep(struct net2272_ep *ep) in net2272_handle_ep() argument
1589 if (!list_empty(&ep->queue)) in net2272_handle_ep()
1590 req = list_entry(ep->queue.next, in net2272_handle_ep()
1596 stat0 = net2272_ep_read(ep, EP_STAT0); in net2272_handle_ep()
1597 stat1 = net2272_ep_read(ep, EP_STAT1); in net2272_handle_ep()
1598 ep->irqs++; in net2272_handle_ep()
1600 dev_vdbg(ep->dev->dev, "%s ack ep_stat0 %02x, ep_stat1 %02x, req %p\n", in net2272_handle_ep()
1601 ep->ep.name, stat0, stat1, req ? &req->req : NULL); in net2272_handle_ep()
1603 net2272_ep_write(ep, EP_STAT0, stat0 & in net2272_handle_ep()
1606 net2272_ep_write(ep, EP_STAT1, stat1); in net2272_handle_ep()
1612 if (!ep->is_in && (stat0 & (1 << DATA_PACKET_RECEIVED_INTERRUPT))) in net2272_handle_ep()
1613 net2272_pio_advance(ep); in net2272_handle_ep()
1616 net2272_pio_advance(ep); in net2272_handle_ep()
1622 struct net2272_ep *ep; in net2272_get_ep_by_addr() local
1625 return &dev->ep[0]; in net2272_get_ep_by_addr()
1627 list_for_each_entry(ep, &dev->gadget.ep_list, ep.ep_list) { in net2272_get_ep_by_addr()
1630 if (!ep->desc) in net2272_get_ep_by_addr()
1632 bEndpointAddress = ep->desc->bEndpointAddress; in net2272_get_ep_by_addr()
1636 return ep; in net2272_get_ep_by_addr()
1706 struct net2272_ep *ep; in net2272_handle_stat0_irqs() local
1727 ep = &dev->ep[0]; in net2272_handle_stat0_irqs()
1728 ep->irqs++; in net2272_handle_stat0_irqs()
1732 while (!list_empty(&ep->queue)) { in net2272_handle_stat0_irqs()
1733 req = list_entry(ep->queue.next, in net2272_handle_stat0_irqs()
1735 net2272_done(ep, req, in net2272_handle_stat0_irqs()
1738 ep->stopped = 0; in net2272_handle_stat0_irqs()
1740 net2272_ep_write(ep, EP_STAT0, in net2272_handle_stat0_irqs()
1746 net2272_ep_write(ep, EP_STAT1, in net2272_handle_stat0_irqs()
1792 ep->is_in = (u.r.bRequestType & USB_DIR_IN) != 0; in net2272_handle_stat0_irqs()
1793 if (ep->is_in) { in net2272_handle_stat0_irqs()
1797 stop_out_naking(ep); in net2272_handle_stat0_irqs()
1802 net2272_ep_write(ep, EP_IRQENB, scratch); in net2272_handle_stat0_irqs()
1822 net2272_ep_write(&dev->ep[0], EP_IRQENB, 0); in net2272_handle_stat0_irqs()
1824 set_fifo_bytecount(&dev->ep[0], 0); in net2272_handle_stat0_irqs()
1825 allow_status(ep); in net2272_handle_stat0_irqs()
1827 ep->ep.name, status); in net2272_handle_stat0_irqs()
1836 net2272_ep_write(&dev->ep[0], EP_IRQENB, 0); in net2272_handle_stat0_irqs()
1838 set_fifo_bytecount(&dev->ep[0], 0); in net2272_handle_stat0_irqs()
1839 allow_status(ep); in net2272_handle_stat0_irqs()
1847 net2272_ep_write(&dev->ep[0], EP_IRQENB, 0); in net2272_handle_stat0_irqs()
1849 set_fifo_bytecount(&dev->ep[0], 0); in net2272_handle_stat0_irqs()
1850 allow_status(ep); in net2272_handle_stat0_irqs()
1870 ep->ep.name); in net2272_handle_stat0_irqs()
1872 dev_vdbg(dev->dev, "%s clear halt\n", ep->ep.name); in net2272_handle_stat0_irqs()
1875 allow_status(ep); in net2272_handle_stat0_irqs()
1884 allow_status(ep); in net2272_handle_stat0_irqs()
1896 allow_status(ep); in net2272_handle_stat0_irqs()
1897 dev_vdbg(dev->dev, "%s set halt\n", ep->ep.name); in net2272_handle_stat0_irqs()
1902 allow_status(ep); in net2272_handle_stat0_irqs()
1911 net2272_ep_read(ep, EP_CFG)); in net2272_handle_stat0_irqs()
1932 ep = &dev->ep[num]; in net2272_handle_stat0_irqs()
1933 net2272_handle_dma(ep); in net2272_handle_stat0_irqs()
1949 ep = &dev->ep[num]; in net2272_handle_stat0_irqs()
1950 net2272_handle_ep(ep); in net2272_handle_stat0_irqs()
2072 net2272_handle_dma(&dev->ep[2]); in net2272_irq()
2074 net2272_handle_dma(&dev->ep[1]); in net2272_irq()