Lines Matching defs:req
91 struct gr_request *req)
93 int buflen = ep->is_in ? req->req.length : req->req.actual;
97 dev_dbg(ep->dev->dev, "%s: 0x%p, %d bytes data%s:\n", str, req, buflen,
100 rowlen, 4, req->req.buf, plen, false);
112 struct gr_request *req) {}
129 struct gr_request *req;
162 list_for_each_entry(req, &ep->queue, queue) {
166 seq_printf(seq, " 0x%p: 0x%p %d %d\n", req,
167 &req->req.buf, req->req.actual, req->req.length);
169 next = req->first_desc;
174 desc == req->curr_desc ? 'c' : ' ',
176 } while (desc != req->last_desc);
254 static void gr_free_dma_desc_chain(struct gr_udc *dev, struct gr_request *req)
259 next = req->first_desc;
267 } while (desc != req->last_desc);
269 req->first_desc = NULL;
270 req->curr_desc = NULL;
271 req->last_desc = NULL;
274 static void gr_ep0_setup(struct gr_udc *dev, struct gr_request *req);
282 static void gr_finish_request(struct gr_ep *ep, struct gr_request *req,
289 list_del_init(&req->queue);
291 if (likely(req->req.status == -EINPROGRESS))
292 req->req.status = status;
294 status = req->req.status;
297 usb_gadget_unmap_request(&dev->gadget, &req->req, ep->is_in);
298 gr_free_dma_desc_chain(dev, req);
300 if (ep->is_in) { /* For OUT, req->req.actual gets updated bit by bit */
301 req->req.actual = req->req.length;
302 } else if (req->oddlen && req->req.actual > req->evenlen) {
308 char *buftail = ((char *)req->req.buf + req->evenlen);
310 memcpy(buftail, ep->tailbuf, req->oddlen);
312 if (req->req.actual > req->req.length) {
316 gr_dbgprint_request("OVFL", ep, req);
317 req->req.status = -EOVERFLOW;
323 gr_dbgprint_request("SENT", ep, req);
325 gr_dbgprint_request("RECV", ep, req);
330 if (req == dev->ep0reqo && !status) {
331 if (req->setup)
332 gr_ep0_setup(dev, req);
336 } else if (req->req.complete) {
339 usb_gadget_giveback_request(&ep->ep, &req->req);
348 struct gr_request *req;
350 req = kzalloc(sizeof(*req), gfp_flags);
351 if (!req)
354 INIT_LIST_HEAD(&req->queue);
356 return &req->req;
366 struct gr_request *req;
374 req = list_first_entry(&ep->queue, struct gr_request, queue);
377 BUG_ON(!req->curr_desc);
385 if (!ep->is_in && req->oddlen)
386 req->last_desc->data = ep->tailbuf_paddr;
391 gr_write32(&ep->regs->dmaaddr, req->curr_desc->paddr);
408 struct gr_request *req;
410 req = list_first_entry(&ep->queue, struct gr_request, queue);
411 gr_finish_request(ep, req, status);
436 static int gr_add_dma_desc(struct gr_ep *ep, struct gr_request *req,
452 if (!req->first_desc) {
453 req->first_desc = desc;
454 req->curr_desc = desc;
456 req->last_desc->next_desc = desc;
457 req->last_desc->next = desc->paddr;
458 req->last_desc->ctrl |= GR_DESC_OUT_CTRL_NX;
460 req->last_desc = desc;
467 * together covers req->req.length bytes of the buffer at DMA address
468 * req->req.dma for the OUT direction.
475 static int gr_setup_out_desc_list(struct gr_ep *ep, struct gr_request *req,
482 req->first_desc = NULL; /* Signals that no allocation is done yet */
483 bytes_left = req->req.length;
486 dma_addr_t start = req->req.dma + bytes_used;
491 req->evenlen = req->req.length - bytes_left;
492 req->oddlen = size;
495 ret = gr_add_dma_desc(ep, req, start, size, gfp_flags);
503 req->first_desc->ctrl |= GR_DESC_OUT_CTRL_EN;
508 gr_free_dma_desc_chain(ep->dev, req);
515 * together covers req->req.length bytes of the buffer at DMA address
516 * req->req.dma for the IN direction.
528 static int gr_setup_in_desc_list(struct gr_ep *ep, struct gr_request *req,
531 u16 bytes_left; /* Bytes left in req to provide descriptors for */
532 u16 bytes_used; /* Bytes in req accommodated for */
535 req->first_desc = NULL; /* Signals that no allocation is done yet */
536 bytes_left = req->req.length;
539 dma_addr_t start = req->req.dma + bytes_used;
542 ret = gr_add_dma_desc(ep, req, start, size, gfp_flags);
552 * available when req->req.zero is set and the data length is even
555 if (req->req.zero && (req->req.length % ep->ep.maxpacket == 0)) {
556 ret = gr_add_dma_desc(ep, req, 0, 0, gfp_flags);
565 req->last_desc->ctrl |= GR_DESC_IN_CTRL_PI;
570 gr_free_dma_desc_chain(ep->dev, req);
576 static int gr_queue(struct gr_ep *ep, struct gr_request *req, gfp_t gfp_flags)
586 if (unlikely(!req->req.buf || !list_empty(&req->queue))) {
589 ep->ep.name, req->req.buf, list_empty(&req->queue));
605 ret = usb_gadget_map_request(&dev->gadget, &req->req, ep->is_in);
612 ret = gr_setup_in_desc_list(ep, req, gfp_flags);
614 ret = gr_setup_out_desc_list(ep, req, gfp_flags);
618 req->req.status = -EINPROGRESS;
619 req->req.actual = 0;
620 list_add_tail(&req->queue, &ep->queue);
634 static inline int gr_queue_int(struct gr_ep *ep, struct gr_request *req,
638 gr_dbgprint_request("RESP", ep, req);
640 return gr_queue(ep, req, gfp_flags);
653 struct gr_request *req;
660 req = list_first_entry(&ep->queue, struct gr_request, queue);
661 gr_finish_request(ep, req, -ESHUTDOWN);
821 struct usb_request *req))
823 u8 *reqbuf = dev->ep0reqi->req.buf;
829 dev->ep0reqi->req.length = length;
830 dev->ep0reqi->req.complete = complete;
1041 static void gr_ep0_setup(struct gr_udc *dev, struct gr_request *req)
1061 if (!req->req.actual)
1067 if (req->req.actual > 0)
1080 } else if (!req->req.actual) {
1087 for (i = 0; i < req->req.actual; i++)
1088 u.raw[i] = ((u8 *)req->req.buf)[i];
1238 struct gr_request *req;
1240 req = list_first_entry(&ep->queue, struct gr_request, queue);
1241 if (!req->last_desc)
1244 if (READ_ONCE(req->last_desc->ctrl) & GR_DESC_IN_CTRL_EN)
1266 struct gr_request *req;
1269 req = list_first_entry(&ep->queue, struct gr_request, queue);
1270 if (!req->curr_desc)
1273 ctrl = READ_ONCE(req->curr_desc->ctrl);
1279 req->req.actual += len;
1281 req->setup = 1;
1283 if (len < ep->ep.maxpacket || req->req.actual >= req->req.length) {
1300 req->curr_desc = req->curr_desc->next_desc;
1301 req->curr_desc->ctrl |= GR_DESC_OUT_CTRL_EN;
1637 struct gr_request *req;
1641 req = container_of(_req, struct gr_request, req);
1644 WARN(!list_empty(&req->queue),
1647 kfree(req);
1655 struct gr_request *req;
1663 req = container_of(_req, struct gr_request, req);
1680 gr_dbgprint_request("EXTERN", ep, req);
1682 ret = gr_queue(ep, req, GFP_ATOMIC);
1692 struct gr_request *req = NULL, *iter;
1713 if (&iter->req != _req)
1715 req = iter;
1718 if (!req) {
1723 if (list_first_entry(&ep->queue, struct gr_request, queue) == req) {
1727 gr_finish_request(ep, req, -ECONNRESET);
1730 } else if (!list_empty(&req->queue)) {
1732 gr_finish_request(ep, req, -ECONNRESET);
1961 struct gr_request *req;
1993 req = container_of(_req, struct gr_request, req);
1994 req->req.buf = buf;
1995 req->req.length = MAX_CTRL_PL_SIZE;
1998 dev->ep0reqi = req; /* Complete gets set as used */
2000 dev->ep0reqo = req; /* Completion treated separately */
2109 gr_free_request(&dev->epi[0].ep, &dev->ep0reqi->req);
2110 gr_free_request(&dev->epo[0].ep, &dev->ep0reqo->req);