Lines Matching refs:req

40 	struct usba_request *req, *req_copy;  in queue_dbg_open()  local
49 list_for_each_entry(req, &ep->queue, queue) { in queue_dbg_open()
50 req_copy = kmemdup(req, sizeof(*req_copy), GFP_ATOMIC); in queue_dbg_open()
62 list_for_each_entry_safe(req, req_copy, queue_data, queue) { in queue_dbg_open()
63 list_del(&req->queue); in queue_dbg_open()
64 kfree(req); in queue_dbg_open()
88 struct usba_request *req, *tmp_req; in queue_dbg_read() local
96 list_for_each_entry_safe(req, tmp_req, queue, queue) { in queue_dbg_read()
99 req->req.buf, req->req.length, in queue_dbg_read()
100 req->req.no_interrupt ? 'i' : 'I', in queue_dbg_read()
101 req->req.zero ? 'Z' : 'z', in queue_dbg_read()
102 req->req.short_not_ok ? 's' : 'S', in queue_dbg_read()
103 req->req.status, in queue_dbg_read()
104 req->submitted ? 'F' : 'f', in queue_dbg_read()
105 req->using_dma ? 'D' : 'd', in queue_dbg_read()
106 req->last_transaction ? 'L' : 'l'); in queue_dbg_read()
111 list_del(&req->queue); in queue_dbg_read()
112 kfree(req); in queue_dbg_read()
130 struct usba_request *req, *tmp_req; in queue_dbg_release() local
132 list_for_each_entry_safe(req, tmp_req, queue_data, queue) { in queue_dbg_release()
133 list_del(&req->queue); in queue_dbg_release()
134 kfree(req); in queue_dbg_release()
359 static void next_fifo_transaction(struct usba_ep *ep, struct usba_request *req) in next_fifo_transaction() argument
363 transaction_len = req->req.length - req->req.actual; in next_fifo_transaction()
364 req->last_transaction = 1; in next_fifo_transaction()
367 req->last_transaction = 0; in next_fifo_transaction()
368 } else if (transaction_len == ep->ep.maxpacket && req->req.zero) in next_fifo_transaction()
369 req->last_transaction = 0; in next_fifo_transaction()
372 ep->ep.name, req, transaction_len, in next_fifo_transaction()
373 req->last_transaction ? ", done" : ""); in next_fifo_transaction()
375 memcpy_toio(ep->fifo, req->req.buf + req->req.actual, transaction_len); in next_fifo_transaction()
377 req->req.actual += transaction_len; in next_fifo_transaction()
380 static void submit_request(struct usba_ep *ep, struct usba_request *req) in submit_request() argument
383 ep->ep.name, req, req->req.length); in submit_request()
385 req->req.actual = 0; in submit_request()
386 req->submitted = 1; in submit_request()
388 if (req->using_dma) { in submit_request()
389 if (req->req.length == 0) { in submit_request()
394 if (req->req.zero) in submit_request()
399 usba_dma_writel(ep, ADDRESS, req->req.dma); in submit_request()
400 usba_dma_writel(ep, CONTROL, req->ctrl); in submit_request()
402 next_fifo_transaction(ep, req); in submit_request()
403 if (req->last_transaction) { in submit_request()
415 struct usba_request *req; in submit_next_request() local
422 req = list_entry(ep->queue.next, struct usba_request, queue); in submit_next_request()
423 if (!req->submitted) in submit_next_request()
424 submit_request(ep, req); in submit_next_request()
437 struct usba_request *req; in receive_data() local
452 req = list_entry(ep->queue.next, in receive_data()
459 if (req->req.actual + bytecount >= req->req.length) { in receive_data()
461 bytecount = req->req.length - req->req.actual; in receive_data()
464 memcpy_fromio(req->req.buf + req->req.actual, in receive_data()
466 req->req.actual += bytecount; in receive_data()
472 req->req.status = 0; in receive_data()
473 list_del_init(&req->queue); in receive_data()
476 usb_gadget_giveback_request(&ep->ep, &req->req); in receive_data()
491 request_complete(struct usba_ep *ep, struct usba_request *req, int status) in request_complete() argument
495 WARN_ON(!list_empty(&req->queue)); in request_complete()
497 if (req->req.status == -EINPROGRESS) in request_complete()
498 req->req.status = status; in request_complete()
500 if (req->using_dma) in request_complete()
501 usb_gadget_unmap_request(&udc->gadget, &req->req, ep->is_in); in request_complete()
505 ep->ep.name, req, req->req.status, req->req.actual); in request_complete()
508 usb_gadget_giveback_request(&ep->ep, &req->req); in request_complete()
515 struct usba_request *req, *tmp_req; in request_complete_list() local
517 list_for_each_entry_safe(req, tmp_req, list, queue) { in request_complete_list()
518 list_del_init(&req->queue); in request_complete_list()
519 request_complete(ep, req, status); in request_complete_list()
678 struct usba_request *req; in usba_ep_alloc_request() local
682 req = kzalloc(sizeof(*req), gfp_flags); in usba_ep_alloc_request()
683 if (!req) in usba_ep_alloc_request()
686 INIT_LIST_HEAD(&req->queue); in usba_ep_alloc_request()
688 return &req->req; in usba_ep_alloc_request()
694 struct usba_request *req = to_usba_req(_req); in usba_ep_free_request() local
698 kfree(req); in usba_ep_free_request()
702 struct usba_request *req, gfp_t gfp_flags) in queue_dma() argument
708 ep->ep.name, req->req.length, req->req.dma, in queue_dma()
709 req->req.zero ? 'Z' : 'z', in queue_dma()
710 req->req.short_not_ok ? 'S' : 's', in queue_dma()
711 req->req.no_interrupt ? 'I' : 'i'); in queue_dma()
713 if (req->req.length > 0x10000) { in queue_dma()
715 DBG(DBG_ERR, "invalid request length %u\n", req->req.length); in queue_dma()
719 ret = usb_gadget_map_request(&udc->gadget, &req->req, ep->is_in); in queue_dma()
723 req->using_dma = 1; in queue_dma()
724 req->ctrl = USBA_BF(DMA_BUF_LEN, req->req.length) in queue_dma()
729 req->ctrl |= USBA_DMA_END_TR_EN | USBA_DMA_END_TR_IE; in queue_dma()
740 submit_request(ep, req); in queue_dma()
742 list_add_tail(&req->queue, &ep->queue); in queue_dma()
753 struct usba_request *req = to_usba_req(_req); in usba_ep_queue() local
760 ep->ep.name, req, _req->length); in usba_ep_queue()
766 req->submitted = 0; in usba_ep_queue()
767 req->using_dma = 0; in usba_ep_queue()
768 req->last_transaction = 0; in usba_ep_queue()
774 return queue_dma(udc, ep, req, gfp_flags); in usba_ep_queue()
780 list_add_tail(&req->queue, &ep->queue); in usba_ep_queue()
797 usba_update_req(struct usba_ep *ep, struct usba_request *req, u32 status) in usba_update_req() argument
799 req->req.actual = req->req.length - USBA_BFEXT(DMA_BUF_LEN, status); in usba_update_req()
838 struct usba_request *req; in usba_ep_dequeue() local
843 ep->ep.name, req); in usba_ep_dequeue()
847 list_for_each_entry(req, &ep->queue, queue) { in usba_ep_dequeue()
848 if (&req->req == _req) in usba_ep_dequeue()
852 if (&req->req != _req) { in usba_ep_dequeue()
857 if (req->using_dma) { in usba_ep_dequeue()
862 if (ep->queue.next == &req->queue) { in usba_ep_dequeue()
873 usba_update_req(ep, req, status); in usba_ep_dequeue()
881 list_del_init(&req->queue); in usba_ep_dequeue()
883 request_complete(ep, req, -ECONNRESET); in usba_ep_dequeue()
1040 struct usba_request *req, *tmp_req; in reset_all_endpoints() local
1045 list_for_each_entry_safe(req, tmp_req, &ep->queue, queue) { in reset_all_endpoints()
1046 list_del_init(&req->queue); in reset_all_endpoints()
1047 request_complete(ep, req, -ECONNRESET); in reset_all_endpoints()
1348 struct usba_request *req; in usba_control_irq() local
1359 req = NULL; in usba_control_irq()
1361 req = list_entry(ep->queue.next, in usba_control_irq()
1365 if (req->submitted) in usba_control_irq()
1366 next_fifo_transaction(ep, req); in usba_control_irq()
1368 submit_request(ep, req); in usba_control_irq()
1370 if (req->last_transaction) { in usba_control_irq()
1393 if (req) { in usba_control_irq()
1394 list_del_init(&req->queue); in usba_control_irq()
1395 request_complete(ep, req, 0); in usba_control_irq()
1423 if (req) { in usba_control_irq()
1424 list_del_init(&req->queue); in usba_control_irq()
1425 request_complete(ep, req, 0); in usba_control_irq()
1473 if (req) { in usba_control_irq()
1474 list_del_init(&req->queue); in usba_control_irq()
1475 request_complete(ep, req, status); in usba_control_irq()
1536 struct usba_request *req; in usba_ep_irq() local
1554 req = list_entry(ep->queue.next, struct usba_request, queue); in usba_ep_irq()
1556 if (req->using_dma) { in usba_ep_irq()
1562 list_del_init(&req->queue); in usba_ep_irq()
1564 request_complete(ep, req, 0); in usba_ep_irq()
1566 if (req->submitted) in usba_ep_irq()
1567 next_fifo_transaction(ep, req); in usba_ep_irq()
1569 submit_request(ep, req); in usba_ep_irq()
1571 if (req->last_transaction) { in usba_ep_irq()
1572 list_del_init(&req->queue); in usba_ep_irq()
1574 request_complete(ep, req, 0); in usba_ep_irq()
1589 struct usba_request *req; in usba_dma_irq() local
1618 req = list_entry(ep->queue.next, struct usba_request, queue); in usba_dma_irq()
1619 usba_update_req(ep, req, status); in usba_dma_irq()
1621 list_del_init(&req->queue); in usba_dma_irq()
1623 request_complete(ep, req, 0); in usba_dma_irq()