Lines Matching refs:req
71 static void done(struct at91_ep *ep, struct at91_request *req, int status) in done() argument
76 list_del_init(&req->queue); in done()
77 if (req->req.status == -EINPROGRESS) in done()
78 req->req.status = status; in done()
80 status = req->req.status; in done()
82 VDBG("%s done %p, status %d\n", ep->ep.name, req, status); in done()
86 req->req.complete(&ep->ep, &req->req); in done()
122 static int read_fifo (struct at91_ep *ep, struct at91_request *req) in read_fifo() argument
130 buf = req->req.buf + req->req.actual; in read_fifo()
131 bufferspace = req->req.length - req->req.actual; in read_fifo()
147 req->req.status = -EOVERFLOW; in read_fifo()
166 req->req.actual += count; in read_fifo()
171 PACKET("%s %p out/%d%s\n", ep->ep.name, &req->req, count, in read_fifo()
179 done(ep, req, 0); in read_fifo()
197 static int write_fifo(struct at91_ep *ep, struct at91_request *req) in write_fifo() argument
228 buf = req->req.buf + req->req.actual; in write_fifo()
230 total = req->req.length - req->req.actual; in write_fifo()
236 is_last = (count < ep->ep.maxpacket) || !req->req.zero; in write_fifo()
256 req->req.actual += count; in write_fifo()
258 PACKET("%s %p in/%d%s\n", ep->ep.name, &req->req, count, in write_fifo()
261 done(ep, req, 0); in write_fifo()
267 struct at91_request *req; in nuke() local
276 req = list_entry(ep->queue.next, struct at91_request, queue); in nuke()
277 done(ep, req, status); in nuke()
397 struct at91_request *req; in at91_ep_alloc_request() local
399 req = kzalloc(sizeof (struct at91_request), gfp_flags); in at91_ep_alloc_request()
400 if (!req) in at91_ep_alloc_request()
403 INIT_LIST_HEAD(&req->queue); in at91_ep_alloc_request()
404 return &req->req; in at91_ep_alloc_request()
409 struct at91_request *req; in at91_ep_free_request() local
411 req = container_of(_req, struct at91_request, req); in at91_ep_free_request()
412 BUG_ON(!list_empty(&req->queue)); in at91_ep_free_request()
413 kfree(req); in at91_ep_free_request()
419 struct at91_request *req; in at91_ep_queue() local
425 req = container_of(_req, struct at91_request, req); in at91_ep_queue()
429 || !_req->buf || !list_empty(&req->queue)) { in at91_ep_queue()
482 if (req->req.length == 0) { in at91_ep_queue()
496 status = write_fifo(ep, req); in at91_ep_queue()
498 status = read_fifo(ep, req); in at91_ep_queue()
507 if (req && !status) { in at91_ep_queue()
508 list_add_tail (&req->queue, &ep->queue); in at91_ep_queue()
519 struct at91_request *req; in at91_ep_dequeue() local
529 list_for_each_entry (req, &ep->queue, queue) { in at91_ep_dequeue()
530 if (&req->req == _req) in at91_ep_dequeue()
533 if (&req->req != _req) { in at91_ep_dequeue()
538 done(ep, req, -ECONNRESET); in at91_ep_dequeue()
809 struct at91_request *req; in handle_ep() local
814 req = list_entry(ep->queue.next, in handle_ep()
817 req = NULL; in handle_ep()
825 if (req) in handle_ep()
826 return write_fifo(ep, req); in handle_ep()
831 if (ep->is_iso && req) in handle_ep()
832 req->req.status = -EILSEQ; in handle_ep()
838 if (req && (csr & RX_DATA_READY)) in handle_ep()
839 return read_fifo(ep, req); in handle_ep()
1080 struct at91_request *req; in handle_ep0() local
1099 req = NULL; in handle_ep0()
1101 req = list_entry(ep0->queue.next, struct at91_request, queue); in handle_ep0()
1109 if (req && ep0->is_in) { in handle_ep0()
1153 if (req) { in handle_ep0()
1192 if (req) in handle_ep0()
1193 done(ep0, req, 0); in handle_ep0()