Lines Matching full:request

33 static inline void map_dma_buffer(struct musb_request *request,  in map_dma_buffer()  argument
39 request->map_state = UN_MAPPED; in map_dma_buffer()
44 /* Check if DMA engine can handle this request. in map_dma_buffer()
45 * DMA code must reject the USB request explicitly. in map_dma_buffer()
46 * Default behaviour is to map the request. in map_dma_buffer()
50 musb_ep->packet_sz, request->request.buf, in map_dma_buffer()
51 request->request.length); in map_dma_buffer()
55 if (request->request.dma == DMA_ADDR_INVALID) { in map_dma_buffer()
61 request->request.buf, in map_dma_buffer()
62 request->request.length, in map_dma_buffer()
63 request->tx in map_dma_buffer()
70 request->request.dma = dma_addr; in map_dma_buffer()
71 request->map_state = MUSB_MAPPED; in map_dma_buffer()
74 request->request.dma, in map_dma_buffer()
75 request->request.length, in map_dma_buffer()
76 request->tx in map_dma_buffer()
79 request->map_state = PRE_MAPPED; in map_dma_buffer()
84 static inline void unmap_dma_buffer(struct musb_request *request, in unmap_dma_buffer() argument
87 struct musb_ep *musb_ep = request->ep; in unmap_dma_buffer()
89 if (!is_buffer_mapped(request) || !musb_ep->dma) in unmap_dma_buffer()
92 if (request->request.dma == DMA_ADDR_INVALID) { in unmap_dma_buffer()
97 if (request->map_state == MUSB_MAPPED) { in unmap_dma_buffer()
99 request->request.dma, in unmap_dma_buffer()
100 request->request.length, in unmap_dma_buffer()
101 request->tx in unmap_dma_buffer()
104 request->request.dma = DMA_ADDR_INVALID; in unmap_dma_buffer()
107 request->request.dma, in unmap_dma_buffer()
108 request->request.length, in unmap_dma_buffer()
109 request->tx in unmap_dma_buffer()
113 request->map_state = UN_MAPPED; in unmap_dma_buffer()
117 * Immediately complete a request.
119 * @param request the request to complete
120 * @param status the status to complete the request with
125 struct usb_request *request, in musb_g_giveback() argument
134 req = to_musb_request(request); in musb_g_giveback()
137 if (req->request.status == -EINPROGRESS) in musb_g_giveback()
138 req->request.status = status; in musb_g_giveback()
144 if (!dma_mapping_error(&musb->g.dev, request->dma)) in musb_g_giveback()
148 usb_gadget_giveback_request(&req->ep->end_point, &req->request); in musb_g_giveback()
196 musb_g_giveback(ep, &req->request, status); in nuke()
219 * the IRQ routine or from ep.queue() to kickstart a request on an
229 struct usb_request *request; in txstate() local
237 musb_dbg(musb, "ep:%s disabled - ignore request", in txstate()
251 request = &req->request; in txstate()
253 (int)(request->length - request->actual)); in txstate()
277 request_size = min_t(size_t, request->length - request->actual, in txstate()
280 use_dma = (request->dma != DMA_ADDR_INVALID && request_size); in txstate()
293 request->dma + request->actual, request_size); in txstate()
361 request->dma + request->actual, in txstate()
373 request->zero, in txstate()
374 request->dma + request->actual, in txstate()
387 (u8 *) (request->buf + request->actual)); in txstate()
388 request->actual += fifo_count; in txstate()
397 request->actual, request->length, in txstate()
411 struct usb_request *request; in musb_g_tx() local
419 request = &req->request; in musb_g_tx()
443 epnum, request); in musb_g_tx()
466 request->actual += musb_ep->dma->actual_len; in musb_g_tx()
468 epnum, csr, musb_ep->dma->actual_len, request); in musb_g_tx()
475 if ((request->zero && request->length) in musb_g_tx()
476 && (request->length % musb_ep->packet_sz == 0) in musb_g_tx()
477 && (request->actual == request->length)) { in musb_g_tx()
488 request->zero = 0; in musb_g_tx()
491 if (request->actual == request->length) { in musb_g_tx()
492 musb_g_giveback(musb_ep, request, 0); in musb_g_tx()
522 struct usb_request *request = &req->request; in rxstate() local
540 musb_dbg(musb, "ep:%s disabled - ignore request", in rxstate()
568 !request->short_not_ok, in rxstate()
569 request->dma + request->actual, in rxstate()
570 request->length - request->actual)) { in rxstate()
593 if (request->short_not_ok && fifo_count == musb_ep->packet_sz) in rxstate()
598 if (request->actual < request->length) { in rxstate()
616 * in advance. For mass storage class, request->length = what the host in rxstate()
618 * request->length is routinely more than what the host sends. For in rxstate()
649 request->length - in rxstate()
650 request->actual, in rxstate()
660 transfer_size = min(request->length - request->actual, in rxstate()
669 request->dma in rxstate()
670 + request->actual, in rxstate()
678 (request->actual < request->length)) { in rxstate()
690 else if (request->short_not_ok) in rxstate()
692 request->length - in rxstate()
693 request->actual, in rxstate()
697 request->length - in rxstate()
698 request->actual, in rxstate()
719 request->dma in rxstate()
720 + request->actual, in rxstate()
726 len = request->length - request->actual; in rxstate()
737 u32 dma_addr = request->dma + request->actual; in rxstate()
765 request->length - request->actual, in rxstate()
768 (request->buf + request->actual)); in rxstate()
769 request->actual += fifo_count; in rxstate()
783 if (request->actual == request->length || in rxstate()
785 musb_g_giveback(musb_ep, request, 0); in rxstate()
789 * Data ready for a request; called from IRQ
795 struct usb_request *request; in musb_g_rx() local
814 request = &req->request; in musb_g_rx()
820 csr, dma ? " (dma)" : "", request); in musb_g_rx()
834 musb_dbg(musb, "%s iso overrun on %p", musb_ep->name, request); in musb_g_rx()
835 if (request->status == -EINPROGRESS) in musb_g_rx()
836 request->status = -EOVERFLOW; in musb_g_rx()
857 request->actual += musb_ep->dma->actual_len; in musb_g_rx()
871 if ((request->actual < request->length) in musb_g_rx()
884 musb_g_giveback(musb_ep, request, 0); in musb_g_rx()
903 /* Analyze request */ in musb_g_rx()
1128 * Allocate a request for an endpoint.
1134 struct musb_request *request; in musb_alloc_request() local
1136 request = kzalloc(sizeof *request, gfp_flags); in musb_alloc_request()
1137 if (!request) in musb_alloc_request()
1140 request->request.dma = DMA_ADDR_INVALID; in musb_alloc_request()
1141 request->epnum = musb_ep->current_epnum; in musb_alloc_request()
1142 request->ep = musb_ep; in musb_alloc_request()
1144 trace_musb_req_alloc(request); in musb_alloc_request()
1145 return &request->request; in musb_alloc_request()
1149 * Free a request
1154 struct musb_request *request = to_musb_request(req); in musb_free_request() local
1156 trace_musb_req_free(request); in musb_free_request()
1157 kfree(request); in musb_free_request()
1193 struct musb_request *request; in musb_gadget_queue() local
1206 request = to_musb_request(req); in musb_gadget_queue()
1207 request->musb = musb; in musb_gadget_queue()
1209 if (request->ep != musb_ep) in musb_gadget_queue()
1223 trace_musb_req_enq(request); in musb_gadget_queue()
1225 /* request is mine now... */ in musb_gadget_queue()
1226 request->request.actual = 0; in musb_gadget_queue()
1227 request->request.status = -EINPROGRESS; in musb_gadget_queue()
1228 request->epnum = musb_ep->current_epnum; in musb_gadget_queue()
1229 request->tx = musb_ep->is_in; in musb_gadget_queue()
1231 map_dma_buffer(request, musb, musb_ep); in musb_gadget_queue()
1240 unmap_dma_buffer(request, musb); in musb_gadget_queue()
1244 /* add request to the list */ in musb_gadget_queue()
1245 list_add_tail(&request->list, &musb_ep->req_list); in musb_gadget_queue()
1248 if (!musb_ep->busy && &request->list == musb_ep->req_list.next) { in musb_gadget_queue()
1251 request); in musb_gadget_queue()
1255 list_del(&request->list); in musb_gadget_queue()
1267 static int musb_gadget_dequeue(struct usb_ep *ep, struct usb_request *request) in musb_gadget_dequeue() argument
1270 struct musb_request *req = to_musb_request(request); in musb_gadget_dequeue()
1276 if (!ep || !request || req->ep != musb_ep) in musb_gadget_dequeue()
1288 dev_err(musb->controller, "request %p not queued to %s\n", in musb_gadget_dequeue()
1289 request, ep->name); in musb_gadget_dequeue()
1294 /* if the hardware doesn't have the request, easy ... */ in musb_gadget_dequeue()
1296 musb_g_giveback(musb_ep, request, -ECONNRESET); in musb_gadget_dequeue()
1308 musb_g_giveback(musb_ep, request, -ECONNRESET); in musb_gadget_dequeue()
1313 musb_g_giveback(musb_ep, request, -ECONNRESET); in musb_gadget_dequeue()
1336 struct musb_request *request; in musb_gadget_set_halt() local
1352 request = next_request(musb_ep); in musb_gadget_set_halt()
1354 if (request) { in musb_gadget_set_halt()
1355 musb_dbg(musb, "request in progress, cannot halt %s", in musb_gadget_set_halt()
1399 /* maybe start the first request in the queue */ in musb_gadget_set_halt()
1400 if (!musb_ep->busy && !value && request) { in musb_gadget_set_halt()
1401 musb_dbg(musb, "restarting the request"); in musb_gadget_set_halt()
1402 musb_ep_restart(musb, request); in musb_gadget_set_halt()