Lines Matching refs:req

39 	struct usba_request *req, *req_copy;  in queue_dbg_open()  local
48 list_for_each_entry(req, &ep->queue, queue) { in queue_dbg_open()
49 req_copy = kmemdup(req, sizeof(*req_copy), GFP_ATOMIC); in queue_dbg_open()
61 list_for_each_entry_safe(req, req_copy, queue_data, queue) { in queue_dbg_open()
62 list_del(&req->queue); in queue_dbg_open()
63 kfree(req); in queue_dbg_open()
87 struct usba_request *req, *tmp_req; in queue_dbg_read() local
95 list_for_each_entry_safe(req, tmp_req, queue, queue) { in queue_dbg_read()
98 req->req.buf, req->req.length, in queue_dbg_read()
99 req->req.no_interrupt ? 'i' : 'I', in queue_dbg_read()
100 req->req.zero ? 'Z' : 'z', in queue_dbg_read()
101 req->req.short_not_ok ? 's' : 'S', in queue_dbg_read()
102 req->req.status, in queue_dbg_read()
103 req->submitted ? 'F' : 'f', in queue_dbg_read()
104 req->using_dma ? 'D' : 'd', in queue_dbg_read()
105 req->last_transaction ? 'L' : 'l'); in queue_dbg_read()
110 list_del(&req->queue); in queue_dbg_read()
111 kfree(req); in queue_dbg_read()
129 struct usba_request *req, *tmp_req; in queue_dbg_release() local
131 list_for_each_entry_safe(req, tmp_req, queue_data, queue) { in queue_dbg_release()
132 list_del(&req->queue); in queue_dbg_release()
133 kfree(req); in queue_dbg_release()
358 static void next_fifo_transaction(struct usba_ep *ep, struct usba_request *req) in next_fifo_transaction() argument
362 transaction_len = req->req.length - req->req.actual; in next_fifo_transaction()
363 req->last_transaction = 1; in next_fifo_transaction()
366 req->last_transaction = 0; in next_fifo_transaction()
367 } else if (transaction_len == ep->ep.maxpacket && req->req.zero) in next_fifo_transaction()
368 req->last_transaction = 0; in next_fifo_transaction()
371 ep->ep.name, req, transaction_len, in next_fifo_transaction()
372 req->last_transaction ? ", done" : ""); in next_fifo_transaction()
374 memcpy_toio(ep->fifo, req->req.buf + req->req.actual, transaction_len); in next_fifo_transaction()
376 req->req.actual += transaction_len; in next_fifo_transaction()
379 static void submit_request(struct usba_ep *ep, struct usba_request *req) in submit_request() argument
382 ep->ep.name, req, req->req.length); in submit_request()
384 req->req.actual = 0; in submit_request()
385 req->submitted = 1; in submit_request()
387 if (req->using_dma) { in submit_request()
388 if (req->req.length == 0) { in submit_request()
393 if (req->req.zero) in submit_request()
398 usba_dma_writel(ep, ADDRESS, req->req.dma); in submit_request()
399 usba_dma_writel(ep, CONTROL, req->ctrl); in submit_request()
401 next_fifo_transaction(ep, req); in submit_request()
402 if (req->last_transaction) { in submit_request()
414 struct usba_request *req; in submit_next_request() local
421 req = list_entry(ep->queue.next, struct usba_request, queue); in submit_next_request()
422 if (!req->submitted) in submit_next_request()
423 submit_request(ep, req); in submit_next_request()
436 struct usba_request *req; in receive_data() local
451 req = list_entry(ep->queue.next, in receive_data()
458 if (req->req.actual + bytecount >= req->req.length) { in receive_data()
460 bytecount = req->req.length - req->req.actual; in receive_data()
463 memcpy_fromio(req->req.buf + req->req.actual, in receive_data()
465 req->req.actual += bytecount; in receive_data()
471 req->req.status = 0; in receive_data()
472 list_del_init(&req->queue); in receive_data()
475 usb_gadget_giveback_request(&ep->ep, &req->req); in receive_data()
490 request_complete(struct usba_ep *ep, struct usba_request *req, int status) in request_complete() argument
494 WARN_ON(!list_empty(&req->queue)); in request_complete()
496 if (req->req.status == -EINPROGRESS) in request_complete()
497 req->req.status = status; in request_complete()
499 if (req->using_dma) in request_complete()
500 usb_gadget_unmap_request(&udc->gadget, &req->req, ep->is_in); in request_complete()
504 ep->ep.name, req, req->req.status, req->req.actual); in request_complete()
507 usb_gadget_giveback_request(&ep->ep, &req->req); in request_complete()
514 struct usba_request *req, *tmp_req; in request_complete_list() local
516 list_for_each_entry_safe(req, tmp_req, list, queue) { in request_complete_list()
517 list_del_init(&req->queue); in request_complete_list()
518 request_complete(ep, req, status); in request_complete_list()
677 struct usba_request *req; in usba_ep_alloc_request() local
681 req = kzalloc(sizeof(*req), gfp_flags); in usba_ep_alloc_request()
682 if (!req) in usba_ep_alloc_request()
685 INIT_LIST_HEAD(&req->queue); in usba_ep_alloc_request()
687 return &req->req; in usba_ep_alloc_request()
693 struct usba_request *req = to_usba_req(_req); in usba_ep_free_request() local
697 kfree(req); in usba_ep_free_request()
701 struct usba_request *req, gfp_t gfp_flags) in queue_dma() argument
707 ep->ep.name, req->req.length, &req->req.dma, in queue_dma()
708 req->req.zero ? 'Z' : 'z', in queue_dma()
709 req->req.short_not_ok ? 'S' : 's', in queue_dma()
710 req->req.no_interrupt ? 'I' : 'i'); in queue_dma()
712 if (req->req.length > 0x10000) { in queue_dma()
714 DBG(DBG_ERR, "invalid request length %u\n", req->req.length); in queue_dma()
718 ret = usb_gadget_map_request(&udc->gadget, &req->req, ep->is_in); in queue_dma()
722 req->using_dma = 1; in queue_dma()
723 req->ctrl = USBA_BF(DMA_BUF_LEN, req->req.length) in queue_dma()
728 req->ctrl |= USBA_DMA_END_TR_EN | USBA_DMA_END_TR_IE; in queue_dma()
739 submit_request(ep, req); in queue_dma()
741 list_add_tail(&req->queue, &ep->queue); in queue_dma()
752 struct usba_request *req = to_usba_req(_req); in usba_ep_queue() local
759 ep->ep.name, req, _req->length); in usba_ep_queue()
765 req->submitted = 0; in usba_ep_queue()
766 req->using_dma = 0; in usba_ep_queue()
767 req->last_transaction = 0; in usba_ep_queue()
773 return queue_dma(udc, ep, req, gfp_flags); in usba_ep_queue()
779 list_add_tail(&req->queue, &ep->queue); in usba_ep_queue()
796 usba_update_req(struct usba_ep *ep, struct usba_request *req, u32 status) in usba_update_req() argument
798 req->req.actual = req->req.length - USBA_BFEXT(DMA_BUF_LEN, status); in usba_update_req()
837 struct usba_request *req; in usba_ep_dequeue() local
842 ep->ep.name, req); in usba_ep_dequeue()
846 list_for_each_entry(req, &ep->queue, queue) { in usba_ep_dequeue()
847 if (&req->req == _req) in usba_ep_dequeue()
851 if (&req->req != _req) { in usba_ep_dequeue()
856 if (req->using_dma) { in usba_ep_dequeue()
861 if (ep->queue.next == &req->queue) { in usba_ep_dequeue()
872 usba_update_req(ep, req, status); in usba_ep_dequeue()
880 list_del_init(&req->queue); in usba_ep_dequeue()
882 request_complete(ep, req, -ECONNRESET); in usba_ep_dequeue()
1039 struct usba_request *req, *tmp_req; in reset_all_endpoints() local
1044 list_for_each_entry_safe(req, tmp_req, &ep->queue, queue) { in reset_all_endpoints()
1045 list_del_init(&req->queue); in reset_all_endpoints()
1046 request_complete(ep, req, -ECONNRESET); in reset_all_endpoints()
1347 struct usba_request *req; in usba_control_irq() local
1358 req = NULL; in usba_control_irq()
1360 req = list_entry(ep->queue.next, in usba_control_irq()
1364 if (req->submitted) in usba_control_irq()
1365 next_fifo_transaction(ep, req); in usba_control_irq()
1367 submit_request(ep, req); in usba_control_irq()
1369 if (req->last_transaction) { in usba_control_irq()
1392 if (req) { in usba_control_irq()
1393 list_del_init(&req->queue); in usba_control_irq()
1394 request_complete(ep, req, 0); in usba_control_irq()
1422 if (req) { in usba_control_irq()
1423 list_del_init(&req->queue); in usba_control_irq()
1424 request_complete(ep, req, 0); in usba_control_irq()
1472 if (req) { in usba_control_irq()
1473 list_del_init(&req->queue); in usba_control_irq()
1474 request_complete(ep, req, status); in usba_control_irq()
1535 struct usba_request *req; in usba_ep_irq() local
1553 req = list_entry(ep->queue.next, struct usba_request, queue); in usba_ep_irq()
1555 if (req->using_dma) { in usba_ep_irq()
1561 list_del_init(&req->queue); in usba_ep_irq()
1563 request_complete(ep, req, 0); in usba_ep_irq()
1565 if (req->submitted) in usba_ep_irq()
1566 next_fifo_transaction(ep, req); in usba_ep_irq()
1568 submit_request(ep, req); in usba_ep_irq()
1570 if (req->last_transaction) { in usba_ep_irq()
1571 list_del_init(&req->queue); in usba_ep_irq()
1573 request_complete(ep, req, 0); in usba_ep_irq()
1588 struct usba_request *req; in usba_dma_irq() local
1617 req = list_entry(ep->queue.next, struct usba_request, queue); in usba_dma_irq()
1618 usba_update_req(ep, req, status); in usba_dma_irq()
1620 list_del_init(&req->queue); in usba_dma_irq()
1622 request_complete(ep, req, 0); in usba_dma_irq()