/* * Immediately complete a request. * * @param pRequest the request to complete * @param status the status to complete the request with * Context: controller locked, IRQs blocked. */ void musb_g_giveback(struct musb_ep *ep, struct usb_request *pRequest, int status) __releases(ep->musb->Lock) __acquires(ep->musb->Lock) { struct musb_request *req; struct musb *musb; req = to_musb_request(pRequest); list_del(&pRequest->list); if (req->request.status == -EINPROGRESS) req->request.status = status; musb = req->musb; spin_unlock(&musb->Lock); if (is_dma_capable() && req->mapped) { dma_unmap_single(musb->controller, req->request.dma, req->request.length, req->bTx ? DMA_TO_DEVICE : DMA_FROM_DEVICE); req->request.dma = DMA_ADDR_INVALID; req->mapped = 0; }
* @param request the request to complete * @param status the status to complete the request with * Context: controller locked, IRQs blocked. */ void musb_g_giveback( struct musb_ep *ep, struct usb_request *request, int status) __releases(ep->musb->lock) __acquires(ep->musb->lock) { struct musb_request *req; struct musb *musb; int busy = ep->busy; req = to_musb_request(request); list_del(&req->list); if (req->request.status == -EINPROGRESS) req->request.status = status; musb = req->musb; ep->busy = 1; spin_unlock(&musb->lock); if (request->status == 0) dev_dbg(musb->controller, "%s done request %p, %d/%d\n", ep->end_point.name, request, req->request.actual, req->request.length); else dev_dbg(musb->controller, "%s request %p, %d/%d fault %d\n",