Lines Matching refs:ep
120 static void assert_out_naking(struct net2272_ep *ep, const char *where) in assert_out_naking() argument
128 tmp = net2272_ep_read(ep, EP_STAT0); in assert_out_naking()
130 dev_dbg(ep->dev->dev, "%s %s %02x !NAK\n", in assert_out_naking()
131 ep->ep.name, where, tmp); in assert_out_naking()
132 net2272_ep_write(ep, EP_RSPSET, 1 << ALT_NAK_OUT_PACKETS); in assert_out_naking()
135 #define ASSERT_OUT_NAKING(ep) assert_out_naking(ep, __func__) argument
137 static void stop_out_naking(struct net2272_ep *ep) in stop_out_naking() argument
139 u8 tmp = net2272_ep_read(ep, EP_STAT0); in stop_out_naking()
142 net2272_ep_write(ep, EP_RSPCLR, 1 << ALT_NAK_OUT_PACKETS); in stop_out_naking()
192 struct net2272_ep *ep; in net2272_enable() local
197 ep = container_of(_ep, struct net2272_ep, ep); in net2272_enable()
198 if (!_ep || !desc || ep->desc || _ep->name == ep0name in net2272_enable()
201 dev = ep->dev; in net2272_enable()
209 ep->desc = desc; in net2272_enable()
212 ep->stopped = 0; in net2272_enable()
213 ep->wedged = 0; in net2272_enable()
216 net2272_ep_write(ep, EP_MAXPKT0, max & 0xff); in net2272_enable()
217 net2272_ep_write(ep, EP_MAXPKT1, (max & 0xff00) >> 8); in net2272_enable()
220 net2272_ep_write(ep, EP_STAT1, 1 << BUFFER_FLUSH); in net2272_enable()
230 ep->is_iso = usb_endpoint_xfer_isoc(desc) ? 1 : 0; in net2272_enable()
237 ep->is_in = usb_endpoint_dir_in(desc); in net2272_enable()
238 if (!ep->is_in) in net2272_enable()
239 net2272_ep_write(ep, EP_RSPSET, 1 << ALT_NAK_OUT_PACKETS); in net2272_enable()
241 net2272_ep_write(ep, EP_CFG, tmp); in net2272_enable()
244 tmp = (1 << ep->num) | net2272_read(dev, IRQENB0); in net2272_enable()
249 | net2272_ep_read(ep, EP_IRQENB); in net2272_enable()
250 net2272_ep_write(ep, EP_IRQENB, tmp); in net2272_enable()
256 net2272_ep_read(ep, EP_CFG)); in net2272_enable()
262 static void net2272_ep_reset(struct net2272_ep *ep) in net2272_ep_reset() argument
266 ep->desc = NULL; in net2272_ep_reset()
267 INIT_LIST_HEAD(&ep->queue); in net2272_ep_reset()
269 usb_ep_set_maxpacket_limit(&ep->ep, ~0); in net2272_ep_reset()
270 ep->ep.ops = &net2272_ep_ops; in net2272_ep_reset()
273 net2272_ep_write(ep, EP_IRQENB, 0); in net2272_ep_reset()
279 net2272_ep_write(ep, EP_RSPSET, tmp); in net2272_ep_reset()
282 if (ep->num != 0) in net2272_ep_reset()
285 net2272_ep_write(ep, EP_RSPCLR, tmp); in net2272_ep_reset()
288 net2272_ep_write(ep, EP_STAT0, in net2272_ep_reset()
295 net2272_ep_write(ep, EP_STAT1, in net2272_ep_reset()
310 struct net2272_ep *ep; in net2272_disable() local
313 ep = container_of(_ep, struct net2272_ep, ep); in net2272_disable()
314 if (!_ep || !ep->desc || _ep->name == ep0name) in net2272_disable()
317 spin_lock_irqsave(&ep->dev->lock, flags); in net2272_disable()
318 net2272_dequeue_all(ep); in net2272_disable()
319 net2272_ep_reset(ep); in net2272_disable()
321 dev_vdbg(ep->dev->dev, "disabled %s\n", _ep->name); in net2272_disable()
323 spin_unlock_irqrestore(&ep->dev->lock, flags); in net2272_disable()
332 struct net2272_ep *ep; in net2272_alloc_request() local
337 ep = container_of(_ep, struct net2272_ep, ep); in net2272_alloc_request()
351 struct net2272_ep *ep; in net2272_free_request() local
354 ep = container_of(_ep, struct net2272_ep, ep); in net2272_free_request()
364 net2272_done(struct net2272_ep *ep, struct net2272_request *req, int status) in net2272_done() argument
367 unsigned stopped = ep->stopped; in net2272_done()
369 if (ep->num == 0) { in net2272_done()
370 if (ep->dev->protocol_stall) { in net2272_done()
371 ep->stopped = 1; in net2272_done()
372 set_halt(ep); in net2272_done()
374 allow_status(ep); in net2272_done()
384 dev = ep->dev; in net2272_done()
385 if (use_dma && ep->dma) in net2272_done()
387 ep->is_in); in net2272_done()
391 ep->ep.name, &req->req, status, in net2272_done()
395 ep->stopped = 1; in net2272_done()
397 usb_gadget_giveback_request(&ep->ep, &req->req); in net2272_done()
399 ep->stopped = stopped; in net2272_done()
403 net2272_write_packet(struct net2272_ep *ep, u8 *buf, in net2272_write_packet() argument
406 u16 __iomem *ep_data = net2272_reg_addr(ep->dev, EP_DATA); in net2272_write_packet()
414 dev_vdbg(ep->dev->dev, "write packet %s req %p max %u len %u avail %u\n", in net2272_write_packet()
415 ep->ep.name, req, max, length, in net2272_write_packet()
416 (net2272_ep_read(ep, EP_AVAIL1) << 8) | net2272_ep_read(ep, EP_AVAIL0)); in net2272_write_packet()
430 tmp = net2272_read(ep->dev, LOCCTL); in net2272_write_packet()
431 net2272_write(ep->dev, LOCCTL, tmp & ~(1 << DATA_WIDTH)); in net2272_write_packet()
433 net2272_write(ep->dev, LOCCTL, tmp); in net2272_write_packet()
440 net2272_write_fifo(struct net2272_ep *ep, struct net2272_request *req) in net2272_write_fifo() argument
446 dev_vdbg(ep->dev->dev, "write_fifo %s actual %d len %d\n", in net2272_write_fifo()
447 ep->ep.name, req->req.actual, req->req.length); in net2272_write_fifo()
459 net2272_ep_write(ep, EP_STAT0, (1 << DATA_PACKET_TRANSMITTED_INTERRUPT)); in net2272_write_fifo()
460 while (!(net2272_ep_read(ep, EP_STAT0) & (1 << BUFFER_FULL))) { in net2272_write_fifo()
465 net2272_ep_read(ep, EP_STAT0); in net2272_write_fifo()
467 max = (net2272_ep_read(ep, EP_AVAIL1) << 8) | in net2272_write_fifo()
468 (net2272_ep_read(ep, EP_AVAIL0)); in net2272_write_fifo()
470 if (max < ep->ep.maxpacket) in net2272_write_fifo()
471 max = (net2272_ep_read(ep, EP_AVAIL1) << 8) in net2272_write_fifo()
472 | (net2272_ep_read(ep, EP_AVAIL0)); in net2272_write_fifo()
474 count = net2272_write_packet(ep, buf, req, max); in net2272_write_fifo()
478 if (count < ep->ep.maxpacket) in net2272_write_fifo()
479 set_fifo_bytecount(ep, 0); in net2272_write_fifo()
480 net2272_done(ep, req, 0); in net2272_write_fifo()
482 if (!list_empty(&ep->queue)) { in net2272_write_fifo()
483 req = list_entry(ep->queue.next, in net2272_write_fifo()
486 status = net2272_kick_dma(ep, req); in net2272_write_fifo()
489 if ((net2272_ep_read(ep, EP_STAT0) in net2272_write_fifo()
495 net2272_ep_write(ep, EP_STAT0, (1 << DATA_PACKET_TRANSMITTED_INTERRUPT)); in net2272_write_fifo()
501 net2272_out_flush(struct net2272_ep *ep) in net2272_out_flush() argument
503 ASSERT_OUT_NAKING(ep); in net2272_out_flush()
505 net2272_ep_write(ep, EP_STAT0, (1 << DATA_OUT_TOKEN_INTERRUPT) in net2272_out_flush()
507 net2272_ep_write(ep, EP_STAT1, 1 << BUFFER_FLUSH); in net2272_out_flush()
511 net2272_read_packet(struct net2272_ep *ep, u8 *buf, in net2272_read_packet() argument
514 u16 __iomem *ep_data = net2272_reg_addr(ep->dev, EP_DATA); in net2272_read_packet()
520 dev_vdbg(ep->dev->dev, "read packet %s req %p len %u avail %u\n", in net2272_read_packet()
521 ep->ep.name, req, avail, in net2272_read_packet()
522 (net2272_ep_read(ep, EP_AVAIL1) << 8) | net2272_ep_read(ep, EP_AVAIL0)); in net2272_read_packet()
524 is_short = (avail < ep->ep.maxpacket); in net2272_read_packet()
546 if (net2272_ep_read(ep, EP_STAT0) & (1 << SHORT_PACKET_TRANSFERRED_INTERRUPT)) in net2272_read_packet()
547 net2272_ep_read(ep, EP_STAT0); in net2272_read_packet()
553 net2272_read_fifo(struct net2272_ep *ep, struct net2272_request *req) in net2272_read_fifo() argument
562 dev_vdbg(ep->dev->dev, "read_fifo %s actual %d len %d\n", in net2272_read_fifo()
563 ep->ep.name, req->req.actual, req->req.length); in net2272_read_fifo()
570 count = (net2272_ep_read(ep, EP_AVAIL1) << 8) in net2272_read_fifo()
571 | net2272_ep_read(ep, EP_AVAIL0); in net2272_read_fifo()
573 net2272_ep_write(ep, EP_STAT0, in net2272_read_fifo()
580 if ((tmp % ep->ep.maxpacket) != 0) { in net2272_read_fifo()
581 dev_err(ep->dev->dev, in net2272_read_fifo()
583 ep->ep.name, count, tmp); in net2272_read_fifo()
589 is_short = net2272_read_packet(ep, buf, req, count); in net2272_read_fifo()
597 net2272_out_flush(ep); in net2272_read_fifo()
598 net2272_done(ep, req, -EOVERFLOW); in net2272_read_fifo()
600 net2272_done(ep, req, 0); in net2272_read_fifo()
606 if (unlikely(ep->num == 0)) { in net2272_read_fifo()
607 net2272_ep_write(ep, EP_TRANSFER2, 0); in net2272_read_fifo()
608 net2272_ep_write(ep, EP_TRANSFER1, 0); in net2272_read_fifo()
609 net2272_ep_write(ep, EP_TRANSFER0, 0); in net2272_read_fifo()
612 if (!list_empty(&ep->queue)) { in net2272_read_fifo()
613 req = list_entry(ep->queue.next, in net2272_read_fifo()
615 status = net2272_kick_dma(ep, req); in net2272_read_fifo()
617 !(net2272_ep_read(ep, EP_STAT0) & (1 << BUFFER_EMPTY))) in net2272_read_fifo()
622 } while (!(net2272_ep_read(ep, EP_STAT0) & (1 << BUFFER_EMPTY))); in net2272_read_fifo()
628 net2272_pio_advance(struct net2272_ep *ep) in net2272_pio_advance() argument
632 if (unlikely(list_empty(&ep->queue))) in net2272_pio_advance()
635 req = list_entry(ep->queue.next, struct net2272_request, queue); in net2272_pio_advance()
636 (ep->is_in ? net2272_write_fifo : net2272_read_fifo)(ep, req); in net2272_pio_advance()
641 net2272_request_dma(struct net2272 *dev, unsigned ep, u32 buf, in net2272_request_dma() argument
645 ep, buf, len, dir); in net2272_request_dma()
697 ((ep >> 1) << DMA_ENDPOINT_SELECT)); in net2272_request_dma()
720 net2272_kick_dma(struct net2272_ep *ep, struct net2272_request *req) in net2272_kick_dma() argument
725 if (!use_dma || (ep->num < 1) || (ep->num > 2) || !ep->dma) in net2272_kick_dma()
734 dev_vdbg(ep->dev->dev, "kick_dma %s req %p dma %08llx\n", in net2272_kick_dma()
735 ep->ep.name, req, (unsigned long long) req->req.dma); in net2272_kick_dma()
737 net2272_ep_write(ep, EP_RSPSET, 1 << ALT_NAK_OUT_PACKETS); in net2272_kick_dma()
740 if (ep->dev->dma_busy) in net2272_kick_dma()
750 if (ep->is_in) { in net2272_kick_dma()
752 if (net2272_request_dma(ep->dev, ep->num, req->req.dma, size, 0)) in net2272_kick_dma()
759 tmp = net2272_ep_read(ep, EP_STAT0); in net2272_kick_dma()
762 if (net2272_request_dma(ep->dev, ep->num, req->req.dma, size, 1)) in net2272_kick_dma()
767 ep->not_empty = 1; in net2272_kick_dma()
769 ep->not_empty = 0; in net2272_kick_dma()
773 net2272_ep_write(ep, EP_RSPCLR, 1 << ALT_NAK_OUT_PACKETS); in net2272_kick_dma()
781 net2272_write(ep->dev, DMAREQ, in net2272_kick_dma()
785 (ep->dev->dma_eot_polarity << EOT_POLARITY) | in net2272_kick_dma()
786 (ep->dev->dma_dack_polarity << DACK_POLARITY) | in net2272_kick_dma()
787 (ep->dev->dma_dreq_polarity << DREQ_POLARITY) | in net2272_kick_dma()
788 ((ep->num >> 1) << DMA_ENDPOINT_SELECT)); in net2272_kick_dma()
795 net2272_ep_write(ep, EP_IRQENB, 0); in net2272_kick_dma()
797 net2272_start_dma(ep->dev); in net2272_kick_dma()
829 struct net2272_ep *ep; in net2272_queue() local
839 ep = container_of(_ep, struct net2272_ep, ep); in net2272_queue()
840 if (!_ep || (!ep->desc && ep->num != 0)) in net2272_queue()
842 dev = ep->dev; in net2272_queue()
847 if (use_dma && ep->dma) { in net2272_queue()
849 ep->is_in); in net2272_queue()
864 if (list_empty(&ep->queue) && !ep->stopped) { in net2272_queue()
866 if (ep->num == 0 && _req->length == 0) { in net2272_queue()
867 net2272_done(ep, req, 0); in net2272_queue()
868 dev_vdbg(dev->dev, "%s status ack\n", ep->ep.name); in net2272_queue()
873 s = net2272_ep_read(ep, EP_STAT0); in net2272_queue()
877 net2272_ep_read(ep, EP_STAT1) & (1 << LOCAL_OUT_ZLP)) { in net2272_queue()
883 status = net2272_read_fifo(ep, req); in net2272_queue()
885 net2272_ep_write(ep, EP_STAT0, (1 << NAK_OUT_PACKETS)); in net2272_queue()
891 status = net2272_kick_dma(ep, req); in net2272_queue()
899 if (ep->is_in) in net2272_queue()
900 status = net2272_write_fifo(ep, req); in net2272_queue()
902 s = net2272_ep_read(ep, EP_STAT0); in net2272_queue()
904 status = net2272_read_fifo(ep, req); in net2272_queue()
915 list_add_tail(&req->queue, &ep->queue); in net2272_queue()
917 if (likely(!list_empty(&ep->queue))) in net2272_queue()
918 net2272_ep_write(ep, EP_RSPCLR, 1 << ALT_NAK_OUT_PACKETS); in net2272_queue()
927 net2272_dequeue_all(struct net2272_ep *ep) in net2272_dequeue_all() argument
932 ep->stopped = 1; in net2272_dequeue_all()
934 while (!list_empty(&ep->queue)) { in net2272_dequeue_all()
935 req = list_entry(ep->queue.next, in net2272_dequeue_all()
938 net2272_done(ep, req, -ESHUTDOWN); in net2272_dequeue_all()
946 struct net2272_ep *ep; in net2272_dequeue() local
951 ep = container_of(_ep, struct net2272_ep, ep); in net2272_dequeue()
952 if (!_ep || (!ep->desc && ep->num != 0) || !_req) in net2272_dequeue()
955 spin_lock_irqsave(&ep->dev->lock, flags); in net2272_dequeue()
956 stopped = ep->stopped; in net2272_dequeue()
957 ep->stopped = 1; in net2272_dequeue()
960 list_for_each_entry(req, &ep->queue, queue) { in net2272_dequeue()
965 spin_unlock_irqrestore(&ep->dev->lock, flags); in net2272_dequeue()
970 if (ep->queue.next == &req->queue) { in net2272_dequeue()
971 dev_dbg(ep->dev->dev, "unlink (%s) pio\n", _ep->name); in net2272_dequeue()
972 net2272_done(ep, req, -ECONNRESET); in net2272_dequeue()
975 ep->stopped = stopped; in net2272_dequeue()
977 spin_unlock_irqrestore(&ep->dev->lock, flags); in net2272_dequeue()
986 struct net2272_ep *ep; in net2272_set_halt_and_wedge() local
990 ep = container_of(_ep, struct net2272_ep, ep); in net2272_set_halt_and_wedge()
991 if (!_ep || (!ep->desc && ep->num != 0)) in net2272_set_halt_and_wedge()
993 if (!ep->dev->driver || ep->dev->gadget.speed == USB_SPEED_UNKNOWN) in net2272_set_halt_and_wedge()
995 if (ep->desc /* not ep0 */ && usb_endpoint_xfer_isoc(ep->desc)) in net2272_set_halt_and_wedge()
998 spin_lock_irqsave(&ep->dev->lock, flags); in net2272_set_halt_and_wedge()
999 if (!list_empty(&ep->queue)) in net2272_set_halt_and_wedge()
1001 else if (ep->is_in && value && net2272_fifo_status(_ep) != 0) in net2272_set_halt_and_wedge()
1004 dev_vdbg(ep->dev->dev, "%s %s %s\n", _ep->name, in net2272_set_halt_and_wedge()
1009 if (ep->num == 0) in net2272_set_halt_and_wedge()
1010 ep->dev->protocol_stall = 1; in net2272_set_halt_and_wedge()
1012 set_halt(ep); in net2272_set_halt_and_wedge()
1014 ep->wedged = 1; in net2272_set_halt_and_wedge()
1016 clear_halt(ep); in net2272_set_halt_and_wedge()
1017 ep->wedged = 0; in net2272_set_halt_and_wedge()
1020 spin_unlock_irqrestore(&ep->dev->lock, flags); in net2272_set_halt_and_wedge()
1042 struct net2272_ep *ep; in net2272_fifo_status() local
1045 ep = container_of(_ep, struct net2272_ep, ep); in net2272_fifo_status()
1046 if (!_ep || (!ep->desc && ep->num != 0)) in net2272_fifo_status()
1048 if (!ep->dev->driver || ep->dev->gadget.speed == USB_SPEED_UNKNOWN) in net2272_fifo_status()
1051 avail = net2272_ep_read(ep, EP_AVAIL1) << 8; in net2272_fifo_status()
1052 avail |= net2272_ep_read(ep, EP_AVAIL0); in net2272_fifo_status()
1053 if (avail > ep->fifo_size) in net2272_fifo_status()
1055 if (ep->is_in) in net2272_fifo_status()
1056 avail = ep->fifo_size - avail; in net2272_fifo_status()
1063 struct net2272_ep *ep; in net2272_fifo_flush() local
1065 ep = container_of(_ep, struct net2272_ep, ep); in net2272_fifo_flush()
1066 if (!_ep || (!ep->desc && ep->num != 0)) in net2272_fifo_flush()
1068 if (!ep->dev->driver || ep->dev->gadget.speed == USB_SPEED_UNKNOWN) in net2272_fifo_flush()
1071 net2272_ep_write(ep, EP_STAT1, 1 << BUFFER_FLUSH); in net2272_fifo_flush()
1248 struct net2272_ep *ep; in registers_show() local
1250 ep = &dev->ep[i]; in registers_show()
1251 if (i && !ep->desc) in registers_show()
1254 t1 = net2272_ep_read(ep, EP_CFG); in registers_show()
1255 t2 = net2272_ep_read(ep, EP_RSPSET); in registers_show()
1259 ep->ep.name, t1, t2, in registers_show()
1268 net2272_ep_read(ep, EP_IRQENB)); in registers_show()
1275 net2272_ep_read(ep, EP_STAT0), in registers_show()
1276 net2272_ep_read(ep, EP_STAT1), in registers_show()
1277 (net2272_ep_read(ep, EP_AVAIL1) << 8) | net2272_ep_read(ep, EP_AVAIL0), in registers_show()
1279 ep->is_in ? "in" : "out", in registers_show()
1281 ep->stopped ? "*" : ""); in registers_show()
1287 ((net2272_ep_read(ep, EP_TRANSFER2) & 0xff) << 16) | in registers_show()
1288 ((net2272_ep_read(ep, EP_TRANSFER1) & 0xff) << 8) | in registers_show()
1289 ((net2272_ep_read(ep, EP_TRANSFER0) & 0xff))); in registers_show()
1293 t1 = net2272_ep_read(ep, EP_BUFF_STATES) & 0x03; in registers_show()
1294 t2 = (net2272_ep_read(ep, EP_BUFF_STATES) >> 2) & 0x03; in registers_show()
1323 list_add_tail(&dev->ep[1].ep.ep_list, &dev->gadget.ep_list); in net2272_set_fifo_mode()
1327 list_add_tail(&dev->ep[2].ep.ep_list, &dev->gadget.ep_list); in net2272_set_fifo_mode()
1328 dev->ep[1].fifo_size = dev->ep[2].fifo_size = 512; in net2272_set_fifo_mode()
1331 list_add_tail(&dev->ep[2].ep.ep_list, &dev->gadget.ep_list); in net2272_set_fifo_mode()
1332 dev->ep[1].fifo_size = 1024; in net2272_set_fifo_mode()
1333 dev->ep[2].fifo_size = 512; in net2272_set_fifo_mode()
1336 list_add_tail(&dev->ep[2].ep.ep_list, &dev->gadget.ep_list); in net2272_set_fifo_mode()
1337 dev->ep[1].fifo_size = dev->ep[2].fifo_size = 1024; in net2272_set_fifo_mode()
1340 dev->ep[1].fifo_size = 1024; in net2272_set_fifo_mode()
1345 list_add_tail(&dev->ep[3].ep.ep_list, &dev->gadget.ep_list); in net2272_set_fifo_mode()
1346 dev->ep[3].fifo_size = 512; in net2272_set_fifo_mode()
1392 struct net2272_ep *ep = &dev->ep[i]; in net2272_usb_reinit() local
1394 ep->ep.name = ep_name[i]; in net2272_usb_reinit()
1395 ep->dev = dev; in net2272_usb_reinit()
1396 ep->num = i; in net2272_usb_reinit()
1397 ep->not_empty = 0; in net2272_usb_reinit()
1399 if (use_dma && ep->num == dma_ep) in net2272_usb_reinit()
1400 ep->dma = 1; in net2272_usb_reinit()
1403 ep->fifo_size = 512; in net2272_usb_reinit()
1405 ep->fifo_size = 64; in net2272_usb_reinit()
1406 net2272_ep_reset(ep); in net2272_usb_reinit()
1409 ep->ep.caps.type_control = true; in net2272_usb_reinit()
1411 ep->ep.caps.type_iso = true; in net2272_usb_reinit()
1412 ep->ep.caps.type_bulk = true; in net2272_usb_reinit()
1413 ep->ep.caps.type_int = true; in net2272_usb_reinit()
1416 ep->ep.caps.dir_in = true; in net2272_usb_reinit()
1417 ep->ep.caps.dir_out = true; in net2272_usb_reinit()
1419 usb_ep_set_maxpacket_limit(&dev->ep[0].ep, 64); in net2272_usb_reinit()
1421 dev->gadget.ep0 = &dev->ep[0].ep; in net2272_usb_reinit()
1422 dev->ep[0].stopped = 0; in net2272_usb_reinit()
1429 struct net2272_ep *ep0 = &dev->ep[0]; in net2272_ep0_start()
1470 dev->ep[i].irqs = 0; in net2272_start()
1498 net2272_dequeue_all(&dev->ep[i]); in stop_activity()
1529 net2272_handle_dma(struct net2272_ep *ep) in net2272_handle_dma() argument
1535 if (!list_empty(&ep->queue)) in net2272_handle_dma()
1536 req = list_entry(ep->queue.next, in net2272_handle_dma()
1541 dev_vdbg(ep->dev->dev, "handle_dma %s req %p\n", ep->ep.name, req); in net2272_handle_dma()
1544 net2272_write(ep->dev, DMAREQ, in net2272_handle_dma()
1548 | (ep->dev->dma_eot_polarity << EOT_POLARITY) in net2272_handle_dma()
1549 | (ep->dev->dma_dack_polarity << DACK_POLARITY) in net2272_handle_dma()
1550 | (ep->dev->dma_dreq_polarity << DREQ_POLARITY) in net2272_handle_dma()
1551 | (ep->dma << DMA_ENDPOINT_SELECT)); in net2272_handle_dma()
1553 ep->dev->dma_busy = 0; in net2272_handle_dma()
1555 net2272_ep_write(ep, EP_IRQENB, in net2272_handle_dma()
1558 | net2272_ep_read(ep, EP_IRQENB)); in net2272_handle_dma()
1561 if (ep->is_in) { in net2272_handle_dma()
1563 if ((req->req.length % ep->ep.maxpacket != 0) || in net2272_handle_dma()
1565 set_fifo_bytecount(ep, 0); in net2272_handle_dma()
1567 net2272_done(ep, req, 0); in net2272_handle_dma()
1568 if (!list_empty(&ep->queue)) { in net2272_handle_dma()
1569 req = list_entry(ep->queue.next, in net2272_handle_dma()
1571 status = net2272_kick_dma(ep, req); in net2272_handle_dma()
1573 net2272_pio_advance(ep); in net2272_handle_dma()
1579 if (net2272_read(ep->dev, IRQSTAT0) & in net2272_handle_dma()
1582 net2272_cancel_dma(ep->dev); in net2272_handle_dma()
1590 len = (net2272_ep_read(ep, EP_TRANSFER2) << 16) in net2272_handle_dma()
1591 | (net2272_ep_read(ep, EP_TRANSFER1) << 8) in net2272_handle_dma()
1592 | (net2272_ep_read(ep, EP_TRANSFER0)); in net2272_handle_dma()
1594 if (ep->not_empty) in net2272_handle_dma()
1600 net2272_pio_advance(ep); in net2272_handle_dma()
1607 net2272_handle_ep(struct net2272_ep *ep) in net2272_handle_ep() argument
1612 if (!list_empty(&ep->queue)) in net2272_handle_ep()
1613 req = list_entry(ep->queue.next, in net2272_handle_ep()
1619 stat0 = net2272_ep_read(ep, EP_STAT0); in net2272_handle_ep()
1620 stat1 = net2272_ep_read(ep, EP_STAT1); in net2272_handle_ep()
1621 ep->irqs++; in net2272_handle_ep()
1623 dev_vdbg(ep->dev->dev, "%s ack ep_stat0 %02x, ep_stat1 %02x, req %p\n", in net2272_handle_ep()
1624 ep->ep.name, stat0, stat1, req ? &req->req : NULL); in net2272_handle_ep()
1626 net2272_ep_write(ep, EP_STAT0, stat0 & in net2272_handle_ep()
1629 net2272_ep_write(ep, EP_STAT1, stat1); in net2272_handle_ep()
1635 if (!ep->is_in && (stat0 & (1 << DATA_PACKET_RECEIVED_INTERRUPT))) in net2272_handle_ep()
1636 net2272_pio_advance(ep); in net2272_handle_ep()
1639 net2272_pio_advance(ep); in net2272_handle_ep()
1645 struct net2272_ep *ep; in net2272_get_ep_by_addr() local
1648 return &dev->ep[0]; in net2272_get_ep_by_addr()
1650 list_for_each_entry(ep, &dev->gadget.ep_list, ep.ep_list) { in net2272_get_ep_by_addr()
1653 if (!ep->desc) in net2272_get_ep_by_addr()
1655 bEndpointAddress = ep->desc->bEndpointAddress; in net2272_get_ep_by_addr()
1659 return ep; in net2272_get_ep_by_addr()
1729 struct net2272_ep *ep; in net2272_handle_stat0_irqs() local
1750 ep = &dev->ep[0]; in net2272_handle_stat0_irqs()
1751 ep->irqs++; in net2272_handle_stat0_irqs()
1755 while (!list_empty(&ep->queue)) { in net2272_handle_stat0_irqs()
1756 req = list_entry(ep->queue.next, in net2272_handle_stat0_irqs()
1758 net2272_done(ep, req, in net2272_handle_stat0_irqs()
1761 ep->stopped = 0; in net2272_handle_stat0_irqs()
1763 net2272_ep_write(ep, EP_STAT0, in net2272_handle_stat0_irqs()
1769 net2272_ep_write(ep, EP_STAT1, in net2272_handle_stat0_irqs()
1815 ep->is_in = (u.r.bRequestType & USB_DIR_IN) != 0; in net2272_handle_stat0_irqs()
1816 if (ep->is_in) { in net2272_handle_stat0_irqs()
1820 stop_out_naking(ep); in net2272_handle_stat0_irqs()
1825 net2272_ep_write(ep, EP_IRQENB, scratch); in net2272_handle_stat0_irqs()
1845 net2272_ep_write(&dev->ep[0], EP_IRQENB, 0); in net2272_handle_stat0_irqs()
1847 set_fifo_bytecount(&dev->ep[0], 0); in net2272_handle_stat0_irqs()
1848 allow_status(ep); in net2272_handle_stat0_irqs()
1850 ep->ep.name, status); 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()
1870 net2272_ep_write(&dev->ep[0], EP_IRQENB, 0); in net2272_handle_stat0_irqs()
1872 set_fifo_bytecount(&dev->ep[0], 0); in net2272_handle_stat0_irqs()
1873 allow_status(ep); in net2272_handle_stat0_irqs()
1893 ep->ep.name); in net2272_handle_stat0_irqs()
1895 dev_vdbg(dev->dev, "%s clear halt\n", ep->ep.name); in net2272_handle_stat0_irqs()
1898 allow_status(ep); in net2272_handle_stat0_irqs()
1907 allow_status(ep); in net2272_handle_stat0_irqs()
1919 allow_status(ep); in net2272_handle_stat0_irqs()
1920 dev_vdbg(dev->dev, "%s set halt\n", ep->ep.name); in net2272_handle_stat0_irqs()
1925 allow_status(ep); in net2272_handle_stat0_irqs()
1934 net2272_ep_read(ep, EP_CFG)); in net2272_handle_stat0_irqs()
1955 ep = &dev->ep[num]; in net2272_handle_stat0_irqs()
1956 net2272_handle_dma(ep); in net2272_handle_stat0_irqs()
1972 ep = &dev->ep[num]; in net2272_handle_stat0_irqs()
1973 net2272_handle_ep(ep); in net2272_handle_stat0_irqs()
2095 net2272_handle_dma(&dev->ep[2]); in net2272_irq()
2097 net2272_handle_dma(&dev->ep[1]); in net2272_irq()