Lines Matching refs:req
387 struct pxa25x_request *req; in pxa25x_ep_alloc_request() local
389 req = kzalloc(sizeof(*req), gfp_flags); in pxa25x_ep_alloc_request()
390 if (!req) in pxa25x_ep_alloc_request()
393 INIT_LIST_HEAD(&req->queue); in pxa25x_ep_alloc_request()
394 return &req->req; in pxa25x_ep_alloc_request()
404 struct pxa25x_request *req; in pxa25x_ep_free_request() local
406 req = container_of(_req, struct pxa25x_request, req); in pxa25x_ep_free_request()
407 WARN_ON(!list_empty(&req->queue)); in pxa25x_ep_free_request()
408 kfree(req); in pxa25x_ep_free_request()
416 static void done(struct pxa25x_ep *ep, struct pxa25x_request *req, int status) in done() argument
420 list_del_init(&req->queue); in done()
422 if (likely(req->req.status == -EINPROGRESS)) in done()
423 req->req.status = status; in done()
425 status = req->req.status; in done()
429 ep->ep.name, &req->req, status, in done()
430 req->req.actual, req->req.length); in done()
434 req->req.complete(&ep->ep, &req->req); in done()
445 write_packet(u32 *uddr, struct pxa25x_request *req, unsigned max) in write_packet() argument
452 buf = req->req.buf + req->req.actual; in write_packet()
456 length = min(req->req.length - req->req.actual, max); in write_packet()
457 req->req.actual += length; in write_packet()
472 write_fifo(struct pxa25x_ep *ep, struct pxa25x_request *req) in write_fifo() argument
481 count = write_packet(ep->reg_uddr, req, max); in write_fifo()
487 if (likely(req->req.length != req->req.actual) in write_fifo()
488 || req->req.zero) in write_fifo()
499 req->req.length - req->req.actual, req); in write_fifo()
512 done(ep, req, 0); in write_fifo()
544 write_ep0_fifo(struct pxa25x_ep *ep, struct pxa25x_request *req) in write_ep0_fifo() argument
549 count = write_packet(&ep->dev->regs->uddr0, req, EP0_FIFO_SIZE); in write_ep0_fifo()
556 req->req.length - req->req.actual, req); in write_ep0_fifo()
564 count = req->req.length; in write_ep0_fifo()
565 done(ep, req, 0); in write_ep0_fifo()
605 read_fifo(struct pxa25x_ep *ep, struct pxa25x_request *req) in read_fifo() argument
620 buf = req->req.buf + req->req.actual; in read_fifo()
622 bufferspace = req->req.length - req->req.actual; in read_fifo()
627 req->req.actual += min(count, bufferspace); in read_fifo()
634 req, req->req.actual, req->req.length); in read_fifo()
644 if (req->req.status != -EOVERFLOW) in read_fifo()
647 req->req.status = -EOVERFLOW; in read_fifo()
659 req->req.status = -EHOSTUNREACH; in read_fifo()
665 if (is_short || req->req.actual == req->req.length) { in read_fifo()
666 done(ep, req, 0); in read_fifo()
684 read_ep0_fifo(struct pxa25x_ep *ep, struct pxa25x_request *req) in read_ep0_fifo() argument
689 buf = req->req.buf + req->req.actual; in read_ep0_fifo()
690 bufferspace = req->req.length - req->req.actual; in read_ep0_fifo()
701 if (req->req.status != -EOVERFLOW) in read_ep0_fifo()
703 req->req.status = -EOVERFLOW; in read_ep0_fifo()
706 req->req.actual++; in read_ep0_fifo()
714 if (req->req.actual >= req->req.length) in read_ep0_fifo()
726 struct pxa25x_request *req; in pxa25x_ep_queue() local
731 req = container_of(_req, struct pxa25x_request, req); in pxa25x_ep_queue()
733 || !list_empty(&req->queue))) { in pxa25x_ep_queue()
756 && req->req.length > in pxa25x_ep_queue()
776 if (write_ep0_fifo(ep, req)) in pxa25x_ep_queue()
777 req = NULL; in pxa25x_ep_queue()
790 done(ep, req, 0); in pxa25x_ep_queue()
801 && read_ep0_fifo(ep, req))) { in pxa25x_ep_queue()
803 done(ep, req, 0); in pxa25x_ep_queue()
804 req = NULL; in pxa25x_ep_queue()
817 && write_fifo(ep, req)) in pxa25x_ep_queue()
818 req = NULL; in pxa25x_ep_queue()
820 && read_fifo(ep, req)) { in pxa25x_ep_queue()
821 req = NULL; in pxa25x_ep_queue()
824 if (likely(req && ep->desc)) in pxa25x_ep_queue()
829 if (likely(req != NULL)) in pxa25x_ep_queue()
830 list_add_tail(&req->queue, &ep->queue); in pxa25x_ep_queue()
842 struct pxa25x_request *req; in nuke() local
846 req = list_entry(ep->queue.next, in nuke()
849 done(ep, req, status); in nuke()
860 struct pxa25x_request *req; in pxa25x_ep_dequeue() local
870 list_for_each_entry(req, &ep->queue, queue) { in pxa25x_ep_dequeue()
871 if (&req->req == _req) in pxa25x_ep_dequeue()
874 if (&req->req != _req) { in pxa25x_ep_dequeue()
879 done(ep, req, -ECONNRESET); in pxa25x_ep_dequeue()
1218 struct pxa25x_request *req; in handle_ep0() local
1226 req = NULL; in handle_ep0()
1228 req = list_entry(ep->queue.next, struct pxa25x_request, queue); in handle_ep0()
1416 if (req) in handle_ep0()
1417 done(ep, req, 0); in handle_ep0()
1420 if (req) { in handle_ep0()
1423 (void) write_ep0_fifo(ep, req); in handle_ep0()
1429 if (req) { in handle_ep0()
1431 if (read_ep0_fifo(ep, req)) in handle_ep0()
1432 done(ep, req, 0); in handle_ep0()
1437 if (req) in handle_ep0()
1438 done(ep, req, 0); in handle_ep0()
1443 if (req) in handle_ep0()
1444 done(ep, req, 0); in handle_ep0()
1463 struct pxa25x_request *req; in handle_ep() local
1471 req = list_entry(ep->queue.next, in handle_ep()
1474 req = NULL; in handle_ep()
1486 if (req && likely((udccs & UDCCS_BI_TFS) != 0)) in handle_ep()
1487 completed = write_fifo(ep, req); in handle_ep()
1499 if (likely(req)) in handle_ep()
1500 completed = read_fifo(ep, req); in handle_ep()