Lines Matching refs:req
272 struct goku_request *req;
276 req = kzalloc(sizeof *req, gfp_flags);
277 if (!req)
280 INIT_LIST_HEAD(&req->queue);
281 return &req->req;
287 struct goku_request *req;
292 req = container_of(_req, struct goku_request, req);
293 WARN_ON(!list_empty(&req->queue));
294 kfree(req);
300 done(struct goku_ep *ep, struct goku_request *req, int status)
305 list_del_init(&req->queue);
307 if (likely(req->req.status == -EINPROGRESS))
308 req->req.status = status;
310 status = req->req.status;
315 usb_gadget_unmap_request(&dev->gadget, &req->req, ep->is_in);
320 VDBG(dev, "complete %s req %p stat %d len %u/%u\n",
321 ep->ep.name, &req->req, status,
322 req->req.actual, req->req.length);
327 usb_gadget_giveback_request(&ep->ep, &req->req);
335 write_packet(u32 __iomem *fifo, u8 *buf, struct goku_request *req, unsigned max)
339 length = min(req->req.length - req->req.actual, max);
340 req->req.actual += length;
349 static int write_fifo(struct goku_ep *ep, struct goku_request *req)
358 buf = req->req.buf + req->req.actual;
373 count = write_packet(ep->reg_fifo, buf, req, ep->ep.maxpacket);
384 if (likely(req->req.length != req->req.actual)
385 || req->req.zero)
394 req->req.length - req->req.actual, req);
401 done(ep, req, 0);
408 static int read_fifo(struct goku_ep *ep, struct goku_request *req)
417 buf = req->req.buf + req->req.actual;
431 bufferspace = req->req.length - req->req.actual;
449 req->req.actual += size;
452 VDBG(ep->dev, "read %s %u bytes%s OUT req %p %u/%u\n",
454 req, req->req.actual, req->req.length);
464 if (req->req.status != -EOVERFLOW)
467 req->req.status = -EOVERFLOW;
475 if (unlikely(is_short || req->req.actual == req->req.length)) {
488 done(ep, req, 0);
492 req = list_entry(ep->queue.next,
523 struct goku_request *req;
527 req = list_entry(ep->queue.next, struct goku_request, queue);
528 (ep->is_in ? write_fifo : read_fifo)(ep, req);
535 static int start_dma(struct goku_ep *ep, struct goku_request *req)
539 u32 start = req->req.dma;
540 u32 end = start + req->req.length - 1;
555 if (unlikely(req->req.length == 0))
557 else if ((req->req.length % ep->ep.maxpacket) != 0
558 || req->req.zero)
592 struct goku_request *req;
607 req = list_entry(ep->queue.next, struct goku_request, queue);
613 req->req.actual = readl(®s->in_dma_current);
621 req->req.actual = readl(®s->out_dma_current);
623 req->req.actual -= req->req.dma;
624 req->req.actual++;
627 VDBG(dev, "done %s %s dma, %u/%u bytes, req %p\n",
629 req->req.actual, req->req.length, req);
631 done(ep, req, 0);
634 req = list_entry(ep->queue.next, struct goku_request, queue);
635 (void) start_dma(ep, req);
641 struct goku_request *req;
652 req = list_entry(ep->queue.next, struct goku_request, queue);
690 req->req.actual = (curr - req->req.dma) + 1;
691 req->req.status = status;
695 req->req.actual, req->req.length);
704 req->req.actual = req->req.length;
705 req->req.status = 0;
713 struct goku_request *req;
720 req = container_of(_req, struct goku_request, req);
722 || !_req->buf || !list_empty(&req->queue)))
737 status = usb_gadget_map_request(&dev->gadget, &req->req,
744 VDBG(dev, "%s queue req %p, len %u buf %p\n",
766 status = start_dma(ep, req);
768 status = (ep->is_in ? write_fifo : read_fifo)(ep, req);
773 req = NULL;
778 if (likely(req != NULL))
779 list_add_tail(&req->queue, &ep->queue);
796 struct goku_request *req;
804 req = list_entry(ep->queue.next, struct goku_request, queue);
805 done(ep, req, status);
812 struct goku_request *req = NULL, *iter;
837 if (&iter->req != _req)
839 req = iter;
842 if (!req) {
847 if (ep->dma && ep->queue.next == &req->queue && !ep->stopped) {
849 done(ep, req, -ECONNRESET);
851 } else if (!list_empty(&req->queue))
852 done(ep, req, -ECONNRESET);
854 req = NULL;
857 return req ? 0 : -EOPNOTSUPP;
871 struct goku_request *req;
875 req = list_entry(ep->queue.next, struct goku_request,
877 (void) start_dma(ep, req);
1200 struct goku_request *req;
1226 list_for_each_entry(req, &ep->queue, queue) {
1227 if (ep->dma && req->queue.prev == &ep->queue) {
1232 tmp -= req->req.dma;
1235 tmp = req->req.actual;
1238 &req->req, tmp, req->req.length,
1239 req->req.buf);
1518 VDBG(dev, "req %02x.%02x protocol STALL; err %d\n",