Lines Matching refs:ep

39 	struct usba_ep *ep = inode->i_private;  in queue_dbg_open()  local
48 spin_lock_irq(&ep->udc->lock); in queue_dbg_open()
49 list_for_each_entry(req, &ep->queue, queue) { in queue_dbg_open()
55 spin_unlock_irq(&ep->udc->lock); in queue_dbg_open()
61 spin_unlock_irq(&ep->udc->lock); in queue_dbg_open()
203 struct usba_ep *ep) in usba_ep_init_debugfs() argument
207 ep_root = debugfs_create_dir(ep->ep.name, udc->debugfs_root); in usba_ep_init_debugfs()
208 ep->debugfs_dir = ep_root; in usba_ep_init_debugfs()
210 debugfs_create_file("queue", 0400, ep_root, ep, &queue_dbg_fops); in usba_ep_init_debugfs()
211 if (ep->can_dma) in usba_ep_init_debugfs()
213 &ep->last_dma_status); in usba_ep_init_debugfs()
214 if (ep_is_control(ep)) in usba_ep_init_debugfs()
215 debugfs_create_u32("state", 0400, ep_root, &ep->state); in usba_ep_init_debugfs()
218 static void usba_ep_cleanup_debugfs(struct usba_ep *ep) in usba_ep_cleanup_debugfs() argument
220 debugfs_remove_recursive(ep->debugfs_dir); in usba_ep_cleanup_debugfs()
250 struct usba_ep *ep) in usba_ep_init_debugfs() argument
255 static inline void usba_ep_cleanup_debugfs(struct usba_ep *ep) in usba_ep_cleanup_debugfs() argument
405 static void next_fifo_transaction(struct usba_ep *ep, struct usba_request *req) in next_fifo_transaction() argument
411 if (transaction_len > ep->ep.maxpacket) { in next_fifo_transaction()
412 transaction_len = ep->ep.maxpacket; in next_fifo_transaction()
414 } else if (transaction_len == ep->ep.maxpacket && req->req.zero) in next_fifo_transaction()
418 ep->ep.name, req, transaction_len, in next_fifo_transaction()
421 memcpy_toio(ep->fifo, req->req.buf + req->req.actual, transaction_len); in next_fifo_transaction()
422 usba_ep_writel(ep, SET_STA, USBA_TX_PK_RDY); in next_fifo_transaction()
426 static void submit_request(struct usba_ep *ep, struct usba_request *req) in submit_request() argument
429 ep->ep.name, req, req->req.length); in submit_request()
436 usba_ep_writel(ep, CTL_ENB, USBA_TX_PK_RDY); in submit_request()
441 usba_ep_writel(ep, CTL_ENB, USBA_SHORT_PACKET); in submit_request()
443 usba_ep_writel(ep, CTL_DIS, USBA_SHORT_PACKET); in submit_request()
445 usba_dma_writel(ep, ADDRESS, req->req.dma); in submit_request()
446 usba_dma_writel(ep, CONTROL, req->ctrl); in submit_request()
448 next_fifo_transaction(ep, req); in submit_request()
450 usba_ep_writel(ep, CTL_DIS, USBA_TX_PK_RDY); in submit_request()
451 if (ep_is_control(ep)) in submit_request()
452 usba_ep_writel(ep, CTL_ENB, USBA_TX_COMPLETE); in submit_request()
454 if (ep_is_control(ep)) in submit_request()
455 usba_ep_writel(ep, CTL_DIS, USBA_TX_COMPLETE); in submit_request()
456 usba_ep_writel(ep, CTL_ENB, USBA_TX_PK_RDY); in submit_request()
461 static void submit_next_request(struct usba_ep *ep) in submit_next_request() argument
465 if (list_empty(&ep->queue)) { in submit_next_request()
466 usba_ep_writel(ep, CTL_DIS, USBA_TX_PK_RDY | USBA_RX_BK_RDY); in submit_next_request()
470 req = list_entry(ep->queue.next, struct usba_request, queue); in submit_next_request()
472 submit_request(ep, req); in submit_next_request()
475 static void send_status(struct usba_udc *udc, struct usba_ep *ep) in send_status() argument
477 ep->state = STATUS_STAGE_IN; in send_status()
478 usba_ep_writel(ep, SET_STA, USBA_TX_PK_RDY); in send_status()
479 usba_ep_writel(ep, CTL_ENB, USBA_TX_COMPLETE); in send_status()
482 static void receive_data(struct usba_ep *ep) in receive_data() argument
484 struct usba_udc *udc = ep->udc; in receive_data()
490 status = usba_ep_readl(ep, STA); in receive_data()
496 if (list_empty(&ep->queue)) { in receive_data()
497 usba_ep_writel(ep, CTL_DIS, USBA_RX_BK_RDY); in receive_data()
500 req = list_entry(ep->queue.next, in receive_data()
513 ep->fifo, bytecount); in receive_data()
516 usba_ep_writel(ep, CLR_STA, USBA_RX_BK_RDY); in receive_data()
519 DBG(DBG_QUEUE, "%s: request done\n", ep->ep.name); in receive_data()
522 usba_ep_writel(ep, CTL_DIS, USBA_RX_BK_RDY); in receive_data()
524 usb_gadget_giveback_request(&ep->ep, &req->req); in receive_data()
528 status = usba_ep_readl(ep, STA); in receive_data()
531 if (is_complete && ep_is_control(ep)) { in receive_data()
532 send_status(udc, ep); in receive_data()
539 request_complete(struct usba_ep *ep, struct usba_request *req, int status) in request_complete() argument
541 struct usba_udc *udc = ep->udc; in request_complete()
549 usb_gadget_unmap_request(&udc->gadget, &req->req, ep->is_in); in request_complete()
553 ep->ep.name, req, req->req.status, req->req.actual); in request_complete()
556 usb_gadget_giveback_request(&ep->ep, &req->req); in request_complete()
561 request_complete_list(struct usba_ep *ep, struct list_head *list, int status) in request_complete_list() argument
567 request_complete(ep, req, status); in request_complete_list()
574 struct usba_ep *ep = to_usba_ep(_ep); in usba_ep_enable() local
575 struct usba_udc *udc = ep->udc; in usba_ep_enable()
579 DBG(DBG_GADGET, "%s: ep_enable: desc=%p\n", ep->ep.name, desc); in usba_ep_enable()
583 if (((desc->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK) != ep->index) in usba_ep_enable()
584 || ep->index == 0 in usba_ep_enable()
587 || maxpacket > ep->fifo_size) { in usba_ep_enable()
592 ep->is_isoc = 0; in usba_ep_enable()
593 ep->is_in = 0; in usba_ep_enable()
596 ep->ep.name, ep->ept_cfg, maxpacket); in usba_ep_enable()
599 ep->is_in = 1; in usba_ep_enable()
600 ep->ept_cfg |= USBA_EPT_DIR_IN; in usba_ep_enable()
605 ep->ept_cfg |= USBA_BF(EPT_TYPE, USBA_EPT_TYPE_CONTROL); in usba_ep_enable()
608 if (!ep->can_isoc) { in usba_ep_enable()
610 ep->ep.name); in usba_ep_enable()
622 ep->is_isoc = 1; in usba_ep_enable()
623 ep->ept_cfg |= USBA_BF(EPT_TYPE, USBA_EPT_TYPE_ISO); in usba_ep_enable()
624 ep->ept_cfg |= USBA_BF(NB_TRANS, nr_trans); in usba_ep_enable()
628 ep->ept_cfg |= USBA_BF(EPT_TYPE, USBA_EPT_TYPE_BULK); in usba_ep_enable()
631 ep->ept_cfg |= USBA_BF(EPT_TYPE, USBA_EPT_TYPE_INT); in usba_ep_enable()
635 spin_lock_irqsave(&ep->udc->lock, flags); in usba_ep_enable()
637 ep->ep.desc = desc; in usba_ep_enable()
638 ep->ep.maxpacket = maxpacket; in usba_ep_enable()
640 usba_ep_writel(ep, CFG, ep->ept_cfg); in usba_ep_enable()
641 usba_ep_writel(ep, CTL_ENB, USBA_EPT_ENABLE); in usba_ep_enable()
643 if (ep->can_dma) { in usba_ep_enable()
646 usba_int_enb_set(udc, USBA_BF(EPT_INT, 1 << ep->index) | in usba_ep_enable()
647 USBA_BF(DMA_INT, 1 << ep->index)); in usba_ep_enable()
649 usba_ep_writel(ep, CTL_ENB, ctrl); in usba_ep_enable()
651 usba_int_enb_set(udc, USBA_BF(EPT_INT, 1 << ep->index)); in usba_ep_enable()
656 DBG(DBG_HW, "EPT_CFG%d after init: %#08lx\n", ep->index, in usba_ep_enable()
657 (unsigned long)usba_ep_readl(ep, CFG)); in usba_ep_enable()
666 struct usba_ep *ep = to_usba_ep(_ep); in usba_ep_disable() local
667 struct usba_udc *udc = ep->udc; in usba_ep_disable()
671 DBG(DBG_GADGET, "ep_disable: %s\n", ep->ep.name); in usba_ep_disable()
675 if (!ep->ep.desc) { in usba_ep_disable()
677 DBG(DBG_ERR, "ep_disable: %s not enabled\n", ep->ep.name); in usba_ep_disable()
680 ep->ep.desc = NULL; in usba_ep_disable()
682 list_splice_init(&ep->queue, &req_list); in usba_ep_disable()
683 if (ep->can_dma) { in usba_ep_disable()
684 usba_dma_writel(ep, CONTROL, 0); in usba_ep_disable()
685 usba_dma_writel(ep, ADDRESS, 0); in usba_ep_disable()
686 usba_dma_readl(ep, STATUS); in usba_ep_disable()
688 usba_ep_writel(ep, CTL_DIS, USBA_EPT_ENABLE); in usba_ep_disable()
689 usba_int_enb_clear(udc, USBA_BF(EPT_INT, 1 << ep->index)); in usba_ep_disable()
691 request_complete_list(ep, &req_list, -ESHUTDOWN); in usba_ep_disable()
724 static int queue_dma(struct usba_udc *udc, struct usba_ep *ep, in queue_dma() argument
731 ep->ep.name, req->req.length, &req->req.dma, in queue_dma()
742 ret = usb_gadget_map_request(&udc->gadget, &req->req, ep->is_in); in queue_dma()
751 if (!ep->is_in) in queue_dma()
761 if (ep->ep.desc) { in queue_dma()
762 if (list_empty(&ep->queue)) in queue_dma()
763 submit_request(ep, req); in queue_dma()
765 list_add_tail(&req->queue, &ep->queue); in queue_dma()
777 struct usba_ep *ep = to_usba_ep(_ep); in usba_ep_queue() local
778 struct usba_udc *udc = ep->udc; in usba_ep_queue()
783 ep->ep.name, req, _req->length); in usba_ep_queue()
786 !ep->ep.desc) in usba_ep_queue()
796 if (ep->can_dma) in usba_ep_queue()
797 return queue_dma(udc, ep, req, gfp_flags); in usba_ep_queue()
802 if (ep->ep.desc) { in usba_ep_queue()
803 list_add_tail(&req->queue, &ep->queue); in usba_ep_queue()
805 if ((!ep_is_control(ep) && ep->is_in) || in usba_ep_queue()
806 (ep_is_control(ep) in usba_ep_queue()
807 && (ep->state == DATA_STAGE_IN in usba_ep_queue()
808 || ep->state == STATUS_STAGE_IN))) in usba_ep_queue()
809 usba_ep_writel(ep, CTL_ENB, USBA_TX_PK_RDY); in usba_ep_queue()
811 usba_ep_writel(ep, CTL_ENB, USBA_RX_BK_RDY); in usba_ep_queue()
820 usba_update_req(struct usba_ep *ep, struct usba_request *req, u32 status) in usba_update_req() argument
825 static int stop_dma(struct usba_ep *ep, u32 *pstatus) in stop_dma() argument
834 usba_dma_writel(ep, CONTROL, 0); in stop_dma()
838 status = usba_dma_readl(ep, STATUS); in stop_dma()
848 dev_err(&ep->udc->pdev->dev, in stop_dma()
850 ep->ep.name); in stop_dma()
859 struct usba_ep *ep = to_usba_ep(_ep); in usba_ep_dequeue() local
860 struct usba_udc *udc = ep->udc; in usba_ep_dequeue()
867 ep->ep.name, _req); in usba_ep_dequeue()
871 list_for_each_entry(iter, &ep->queue, queue) { in usba_ep_dequeue()
888 if (ep->queue.next == &req->queue) { in usba_ep_dequeue()
889 status = usba_dma_readl(ep, STATUS); in usba_ep_dequeue()
891 stop_dma(ep, &status); in usba_ep_dequeue()
894 ep->last_dma_status = status; in usba_ep_dequeue()
897 usba_writel(udc, EPT_RST, 1 << ep->index); in usba_ep_dequeue()
899 usba_update_req(ep, req, status); in usba_ep_dequeue()
909 request_complete(ep, req, -ECONNRESET); in usba_ep_dequeue()
912 submit_next_request(ep); in usba_ep_dequeue()
920 struct usba_ep *ep = to_usba_ep(_ep); in usba_ep_set_halt() local
921 struct usba_udc *udc = ep->udc; in usba_ep_set_halt()
925 DBG(DBG_GADGET, "endpoint %s: %s HALT\n", ep->ep.name, in usba_ep_set_halt()
928 if (!ep->ep.desc) { in usba_ep_set_halt()
930 ep->ep.name); in usba_ep_set_halt()
933 if (ep->is_isoc) { in usba_ep_set_halt()
935 ep->ep.name); in usba_ep_set_halt()
945 if (!list_empty(&ep->queue) in usba_ep_set_halt()
946 || ((value && ep->is_in && (usba_ep_readl(ep, STA) in usba_ep_set_halt()
951 usba_ep_writel(ep, SET_STA, USBA_FORCE_STALL); in usba_ep_set_halt()
953 usba_ep_writel(ep, CLR_STA, in usba_ep_set_halt()
955 usba_ep_readl(ep, STA); in usba_ep_set_halt()
965 struct usba_ep *ep = to_usba_ep(_ep); in usba_ep_fifo_status() local
967 return USBA_BFEXT(BYTE_COUNT, usba_ep_readl(ep, STA)); in usba_ep_fifo_status()
972 struct usba_ep *ep = to_usba_ep(_ep); in usba_ep_fifo_flush() local
973 struct usba_udc *udc = ep->udc; in usba_ep_fifo_flush()
975 usba_writel(udc, EPT_RST, 1 << ep->index); in usba_ep_fifo_flush()
1042 struct usba_ep *ep; in atmel_usba_match_ep() local
1056 ep = to_usba_ep(_ep); in atmel_usba_match_ep()
1060 ep->nr_banks = 1; in atmel_usba_match_ep()
1064 ep->fifo_size = 1024; in atmel_usba_match_ep()
1065 if (ep->udc->ep_prealloc) in atmel_usba_match_ep()
1066 ep->nr_banks = 2; in atmel_usba_match_ep()
1070 ep->fifo_size = 512; in atmel_usba_match_ep()
1071 if (ep->udc->ep_prealloc) in atmel_usba_match_ep()
1072 ep->nr_banks = 1; in atmel_usba_match_ep()
1077 ep->fifo_size = in atmel_usba_match_ep()
1080 ep->fifo_size = in atmel_usba_match_ep()
1082 if (ep->udc->ep_prealloc) in atmel_usba_match_ep()
1083 ep->nr_banks = 1; in atmel_usba_match_ep()
1088 usb_ep_set_maxpacket_limit(&ep->ep, ep->fifo_size); in atmel_usba_match_ep()
1091 if (ep->fifo_size <= 8) in atmel_usba_match_ep()
1092 ep->ept_cfg = USBA_BF(EPT_SIZE, USBA_EPT_SIZE_8); in atmel_usba_match_ep()
1095 ep->ept_cfg = in atmel_usba_match_ep()
1096 USBA_BF(EPT_SIZE, fls(ep->fifo_size - 1) - 3); in atmel_usba_match_ep()
1098 ep->ept_cfg |= USBA_BF(BK_NUMBER, ep->nr_banks); in atmel_usba_match_ep()
1135 struct usba_ep *ep; in reset_all_endpoints() local
1140 ep = to_usba_ep(udc->gadget.ep0); in reset_all_endpoints()
1141 list_for_each_entry_safe(req, tmp_req, &ep->queue, queue) { in reset_all_endpoints()
1143 request_complete(ep, req, -ECONNRESET); in reset_all_endpoints()
1149 struct usba_ep *ep; in get_ep_by_addr() local
1154 list_for_each_entry (ep, &udc->gadget.ep_list, ep.ep_list) { in get_ep_by_addr()
1157 if (!ep->ep.desc) in get_ep_by_addr()
1159 bEndpointAddress = ep->ep.desc->bEndpointAddress; in get_ep_by_addr()
1164 return ep; in get_ep_by_addr()
1171 static inline void set_protocol_stall(struct usba_udc *udc, struct usba_ep *ep) in set_protocol_stall() argument
1173 usba_ep_writel(ep, SET_STA, USBA_FORCE_STALL); in set_protocol_stall()
1174 ep->state = WAIT_FOR_SETUP; in set_protocol_stall()
1177 static inline int is_stalled(struct usba_udc *udc, struct usba_ep *ep) in is_stalled() argument
1179 if (usba_ep_readl(ep, STA) & USBA_FORCE_STALL) in is_stalled()
1211 struct usba_ep *ep; in do_test_mode() local
1236 ep = &udc->usba_ep[0]; in do_test_mode()
1239 usba_ep_writel(ep, CFG, in do_test_mode()
1244 if (!(usba_ep_readl(ep, CFG) & USBA_EPT_MAPPED)) { in do_test_mode()
1245 set_protocol_stall(udc, ep); in do_test_mode()
1248 usba_ep_writel(ep, CTL_ENB, USBA_EPT_ENABLE); in do_test_mode()
1254 ep = &udc->usba_ep[0]; in do_test_mode()
1255 usba_ep_writel(ep, CFG, in do_test_mode()
1260 if (!(usba_ep_readl(ep, CFG) & USBA_EPT_MAPPED)) { in do_test_mode()
1261 set_protocol_stall(udc, ep); in do_test_mode()
1264 usba_ep_writel(ep, CTL_ENB, USBA_EPT_ENABLE); in do_test_mode()
1266 memcpy_toio(ep->fifo, test_packet_buffer, in do_test_mode()
1268 usba_ep_writel(ep, SET_STA, USBA_TX_PK_RDY); in do_test_mode()
1302 static int handle_ep0_setup(struct usba_udc *udc, struct usba_ep *ep, in handle_ep0_setup() argument
1333 ep->state = DATA_STAGE_IN; in handle_ep0_setup()
1334 writew_relaxed(status, ep->fifo); in handle_ep0_setup()
1335 usba_ep_writel(ep, SET_STA, USBA_TX_PK_RDY); in handle_ep0_setup()
1365 send_status(udc, ep); in handle_ep0_setup()
1372 send_status(udc, ep); in handle_ep0_setup()
1373 ep->state = STATUS_STAGE_TEST; in handle_ep0_setup()
1396 send_status(udc, ep); in handle_ep0_setup()
1405 send_status(udc, ep); in handle_ep0_setup()
1406 ep->state = STATUS_STAGE_ADDR; in handle_ep0_setup()
1421 ep->ep.name, crq->bRequestType, crq->bRequest, in handle_ep0_setup()
1424 set_protocol_stall(udc, ep); in handle_ep0_setup()
1428 static void usba_control_irq(struct usba_udc *udc, struct usba_ep *ep) in usba_control_irq() argument
1435 epstatus = usba_ep_readl(ep, STA); in usba_control_irq()
1436 epctrl = usba_ep_readl(ep, CTL); in usba_control_irq()
1439 ep->ep.name, ep->state, epstatus, epctrl); in usba_control_irq()
1442 if (!list_empty(&ep->queue)) in usba_control_irq()
1443 req = list_entry(ep->queue.next, in usba_control_irq()
1448 next_fifo_transaction(ep, req); in usba_control_irq()
1450 submit_request(ep, req); in usba_control_irq()
1453 usba_ep_writel(ep, CTL_DIS, USBA_TX_PK_RDY); in usba_control_irq()
1454 usba_ep_writel(ep, CTL_ENB, USBA_TX_COMPLETE); in usba_control_irq()
1459 usba_ep_writel(ep, CLR_STA, USBA_TX_COMPLETE); in usba_control_irq()
1461 switch (ep->state) { in usba_control_irq()
1463 usba_ep_writel(ep, CTL_ENB, USBA_RX_BK_RDY); in usba_control_irq()
1464 usba_ep_writel(ep, CTL_DIS, USBA_TX_COMPLETE); in usba_control_irq()
1465 ep->state = STATUS_STAGE_OUT; in usba_control_irq()
1471 usba_ep_writel(ep, CTL_DIS, USBA_TX_COMPLETE); in usba_control_irq()
1472 ep->state = WAIT_FOR_SETUP; in usba_control_irq()
1477 request_complete(ep, req, 0); in usba_control_irq()
1478 submit_next_request(ep); in usba_control_irq()
1480 usba_ep_writel(ep, CTL_DIS, USBA_TX_COMPLETE); in usba_control_irq()
1481 ep->state = WAIT_FOR_SETUP; in usba_control_irq()
1484 usba_ep_writel(ep, CTL_DIS, USBA_TX_COMPLETE); in usba_control_irq()
1485 ep->state = WAIT_FOR_SETUP; in usba_control_irq()
1487 set_protocol_stall(udc, ep); in usba_control_irq()
1492 ep->ep.name, ep->state); in usba_control_irq()
1493 set_protocol_stall(udc, ep); in usba_control_irq()
1500 switch (ep->state) { in usba_control_irq()
1502 usba_ep_writel(ep, CLR_STA, USBA_RX_BK_RDY); in usba_control_irq()
1503 usba_ep_writel(ep, CTL_DIS, USBA_RX_BK_RDY); in usba_control_irq()
1507 request_complete(ep, req, 0); in usba_control_irq()
1509 ep->state = WAIT_FOR_SETUP; in usba_control_irq()
1513 receive_data(ep); in usba_control_irq()
1517 usba_ep_writel(ep, CLR_STA, USBA_RX_BK_RDY); in usba_control_irq()
1518 usba_ep_writel(ep, CTL_DIS, USBA_RX_BK_RDY); in usba_control_irq()
1521 ep->ep.name, ep->state); in usba_control_irq()
1522 set_protocol_stall(udc, ep); in usba_control_irq()
1536 if (ep->state != WAIT_FOR_SETUP) { in usba_control_irq()
1549 if (ep->state == STATUS_STAGE_OUT in usba_control_irq()
1550 || ep->state == STATUS_STAGE_IN) { in usba_control_irq()
1551 usba_ep_writel(ep, CTL_DIS, USBA_RX_BK_RDY); in usba_control_irq()
1557 request_complete(ep, req, status); in usba_control_irq()
1561 pkt_len = USBA_BFEXT(BYTE_COUNT, usba_ep_readl(ep, STA)); in usba_control_irq()
1566 set_protocol_stall(udc, ep); in usba_control_irq()
1570 DBG(DBG_FIFO, "Copying ctrl request from 0x%p:\n", ep->fifo); in usba_control_irq()
1571 memcpy_fromio(crq.data, ep->fifo, sizeof(crq)); in usba_control_irq()
1575 usba_ep_writel(ep, CLR_STA, USBA_RX_SETUP); in usba_control_irq()
1588 ep->state = DATA_STAGE_IN; in usba_control_irq()
1591 ep->state = DATA_STAGE_OUT; in usba_control_irq()
1593 ep->state = STATUS_STAGE_IN; in usba_control_irq()
1597 if (ep->index == 0) in usba_control_irq()
1598 ret = handle_ep0_setup(udc, ep, &crq.crq); in usba_control_irq()
1607 le16_to_cpu(crq.crq.wLength), ep->state, ret); in usba_control_irq()
1611 set_protocol_stall(udc, ep); in usba_control_irq()
1616 static void usba_ep_irq(struct usba_udc *udc, struct usba_ep *ep) in usba_ep_irq() argument
1622 epstatus = usba_ep_readl(ep, STA); in usba_ep_irq()
1623 epctrl = usba_ep_readl(ep, CTL); in usba_ep_irq()
1625 DBG(DBG_INT, "%s: interrupt, status: 0x%08x\n", ep->ep.name, epstatus); in usba_ep_irq()
1628 DBG(DBG_BUS, "%s: TX PK ready\n", ep->ep.name); in usba_ep_irq()
1630 if (list_empty(&ep->queue)) { in usba_ep_irq()
1632 usba_ep_writel(ep, CTL_DIS, USBA_TX_PK_RDY); in usba_ep_irq()
1636 req = list_entry(ep->queue.next, struct usba_request, queue); in usba_ep_irq()
1640 usba_ep_writel(ep, SET_STA, in usba_ep_irq()
1642 usba_ep_writel(ep, CTL_DIS, in usba_ep_irq()
1645 submit_next_request(ep); in usba_ep_irq()
1646 request_complete(ep, req, 0); in usba_ep_irq()
1649 next_fifo_transaction(ep, req); in usba_ep_irq()
1651 submit_request(ep, req); in usba_ep_irq()
1655 submit_next_request(ep); in usba_ep_irq()
1656 request_complete(ep, req, 0); in usba_ep_irq()
1660 epstatus = usba_ep_readl(ep, STA); in usba_ep_irq()
1661 epctrl = usba_ep_readl(ep, CTL); in usba_ep_irq()
1664 DBG(DBG_BUS, "%s: RX data ready\n", ep->ep.name); in usba_ep_irq()
1665 receive_data(ep); in usba_ep_irq()
1669 static void usba_dma_irq(struct usba_udc *udc, struct usba_ep *ep) in usba_dma_irq() argument
1674 status = usba_dma_readl(ep, STATUS); in usba_dma_irq()
1675 control = usba_dma_readl(ep, CONTROL); in usba_dma_irq()
1677 ep->last_dma_status = status; in usba_dma_irq()
1695 if (list_empty(&ep->queue)) in usba_dma_irq()
1700 req = list_entry(ep->queue.next, struct usba_request, queue); in usba_dma_irq()
1701 usba_update_req(ep, req, status); in usba_dma_irq()
1704 submit_next_request(ep); in usba_dma_irq()
1705 request_complete(ep, req, 0); in usba_dma_irq()
1791 struct usba_ep *ep0, *ep; in usba_udc_irq() local
1815 ep0->ep.desc = &usba_ep0_desc; in usba_udc_irq()
1841 ep = &udc->usba_ep[i]; in usba_udc_irq()
1842 if (ep->ep.claimed) { in usba_udc_irq()
1843 usba_ep_writel(ep, CFG, ep->ept_cfg); in usba_udc_irq()
1844 if (!(usba_ep_readl(ep, CFG) & USBA_EPT_MAPPED)) in usba_udc_irq()
2140 struct usba_ep *eps, *ep; in atmel_udc_of_init() local
2180 udc->gadget.ep0 = &eps[0].ep; in atmel_udc_of_init()
2182 INIT_LIST_HEAD(&eps[0].ep.ep_list); in atmel_udc_of_init()
2188 ep = &eps[i]; in atmel_udc_of_init()
2190 ep->index = fifo_mode ? udc->fifo_cfg[i].hw_ep_num : i; in atmel_udc_of_init()
2193 if (ep->index == 0) in atmel_udc_of_init()
2194 ep->fifo_size = 64; in atmel_udc_of_init()
2196 ep->fifo_size = 1024; in atmel_udc_of_init()
2199 if (ep->fifo_size < udc->fifo_cfg[i].fifo_size) in atmel_udc_of_init()
2203 ep->fifo_size = udc->fifo_cfg[i].fifo_size; in atmel_udc_of_init()
2206 ep->nr_banks = ep_cfg->nr_banks; in atmel_udc_of_init()
2208 if (ep->nr_banks < udc->fifo_cfg[i].nr_banks) in atmel_udc_of_init()
2212 ep->nr_banks = udc->fifo_cfg[i].nr_banks; in atmel_udc_of_init()
2215 ep->can_dma = ep_cfg->can_dma; in atmel_udc_of_init()
2216 ep->can_isoc = ep_cfg->can_isoc; in atmel_udc_of_init()
2218 sprintf(ep->name, "ep%d", ep->index); in atmel_udc_of_init()
2219 ep->ep.name = ep->name; in atmel_udc_of_init()
2221 ep->ep_regs = udc->regs + USBA_EPT_BASE(i); in atmel_udc_of_init()
2222 ep->dma_regs = udc->regs + USBA_DMA_BASE(i); in atmel_udc_of_init()
2223 ep->fifo = udc->fifo + USBA_FIFO_BASE(i); in atmel_udc_of_init()
2224 ep->ep.ops = &usba_ep_ops; in atmel_udc_of_init()
2225 usb_ep_set_maxpacket_limit(&ep->ep, ep->fifo_size); in atmel_udc_of_init()
2226 ep->udc = udc; in atmel_udc_of_init()
2227 INIT_LIST_HEAD(&ep->queue); in atmel_udc_of_init()
2229 if (ep->index == 0) { in atmel_udc_of_init()
2230 ep->ep.caps.type_control = true; in atmel_udc_of_init()
2232 ep->ep.caps.type_iso = ep->can_isoc; in atmel_udc_of_init()
2233 ep->ep.caps.type_bulk = true; in atmel_udc_of_init()
2234 ep->ep.caps.type_int = true; in atmel_udc_of_init()
2237 ep->ep.caps.dir_in = true; in atmel_udc_of_init()
2238 ep->ep.caps.dir_out = true; in atmel_udc_of_init()
2245 if (ep->fifo_size <= 8) in atmel_udc_of_init()
2246 ep->ept_cfg = USBA_BF(EPT_SIZE, USBA_EPT_SIZE_8); in atmel_udc_of_init()
2249 ep->ept_cfg = in atmel_udc_of_init()
2250 USBA_BF(EPT_SIZE, fls(ep->fifo_size - 1) - 3); in atmel_udc_of_init()
2252 ep->ept_cfg |= USBA_BF(BK_NUMBER, ep->nr_banks); in atmel_udc_of_init()
2256 list_add_tail(&ep->ep.ep_list, &udc->gadget.ep_list); in atmel_udc_of_init()