Lines Matching refs:urb

1210 static int xhci_map_temp_buffer(struct usb_hcd *hcd, struct urb *urb)
1217 dir = usb_urb_dir_in(urb) ? DMA_FROM_DEVICE : DMA_TO_DEVICE;
1218 buf_len = urb->transfer_buffer_length;
1225 if (usb_urb_dir_out(urb))
1226 sg_pcopy_to_buffer(urb->sg, urb->num_sgs,
1229 urb->transfer_buffer = temp;
1230 urb->transfer_dma = dma_map_single(hcd->self.sysdev,
1231 urb->transfer_buffer,
1232 urb->transfer_buffer_length,
1236 urb->transfer_dma)) {
1240 urb->transfer_flags |= URB_DMA_MAP_SINGLE;
1247 struct urb *urb)
1257 tail_sg = urb->sg;
1258 max_pkt = usb_endpoint_maxp(&urb->ep->desc);
1260 if (!urb->num_sgs)
1263 if (urb->dev->speed >= USB_SPEED_SUPER)
1268 if (urb->transfer_buffer_length != 0 &&
1269 !(urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP)) {
1270 for_each_sg(urb->sg, sg, urb->num_sgs, i) {
1286 static void xhci_unmap_temp_buf(struct usb_hcd *hcd, struct urb *urb)
1292 dir = usb_urb_dir_in(urb) ? DMA_FROM_DEVICE : DMA_TO_DEVICE;
1294 buf_len = urb->transfer_buffer_length;
1297 (urb->transfer_flags & URB_DMA_MAP_SINGLE))
1299 urb->transfer_dma,
1300 urb->transfer_buffer_length,
1303 if (usb_urb_dir_in(urb)) {
1304 len = sg_pcopy_from_buffer(urb->sg, urb->num_sgs,
1305 urb->transfer_buffer,
1310 "Copy from tmp buf to urb sg list failed\n");
1311 urb->actual_length = len;
1314 urb->transfer_flags &= ~URB_DMA_MAP_SINGLE;
1315 kfree(urb->transfer_buffer);
1316 urb->transfer_buffer = NULL;
1325 static int xhci_map_urb_for_dma(struct usb_hcd *hcd, struct urb *urb,
1332 if (xhci_urb_suitable_for_idt(urb))
1336 if (xhci_urb_temp_buffer_required(hcd, urb))
1337 return xhci_map_temp_buffer(hcd, urb);
1339 return usb_hcd_map_urb_for_dma(hcd, urb, mem_flags);
1342 static void xhci_unmap_urb_for_dma(struct usb_hcd *hcd, struct urb *urb)
1349 if (urb->num_sgs && (urb->transfer_flags & URB_DMA_MAP_SINGLE))
1353 xhci_unmap_temp_buf(hcd, urb);
1355 usb_hcd_unmap_urb_for_dma(hcd, urb);
1530 * non-error returns are a promise to giveback() the urb later
1531 * we drop ownership so next owner (or urb unlink) can get it
1533 static int xhci_urb_enqueue(struct usb_hcd *hcd, struct urb *urb, gfp_t mem_flags)
1543 ep_index = xhci_get_endpoint_index(&urb->ep->desc);
1545 if (usb_endpoint_xfer_isoc(&urb->ep->desc))
1546 num_tds = urb->number_of_packets;
1547 else if (usb_endpoint_is_bulk_out(&urb->ep->desc) &&
1548 urb->transfer_buffer_length > 0 &&
1549 urb->transfer_flags & URB_ZERO_PACKET &&
1550 !(urb->transfer_buffer_length % usb_endpoint_maxp(&urb->ep->desc)))
1561 urb->hcpriv = urb_priv;
1563 trace_xhci_urb_enqueue(urb);
1567 ret = xhci_check_args(hcd, urb->dev, urb->ep,
1574 slot_id = urb->dev->slot_id;
1582 xhci_dbg(xhci, "Can't queue urb, port error, link inactive\n");
1589 urb->ep->desc.bEndpointAddress, urb);
1608 switch (usb_endpoint_type(&urb->ep->desc)) {
1611 ret = xhci_queue_ctrl_tx(xhci, GFP_ATOMIC, urb,
1615 ret = xhci_queue_bulk_tx(xhci, GFP_ATOMIC, urb,
1619 ret = xhci_queue_intr_tx(xhci, GFP_ATOMIC, urb,
1623 ret = xhci_queue_isoc_tx_prepare(xhci, GFP_ATOMIC, urb,
1630 urb->hcpriv = NULL;
1667 static int xhci_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status)
1684 trace_xhci_urb_dequeue(urb);
1687 ret = usb_hcd_check_unlink_urb(hcd, urb, status);
1692 vdev = xhci->devs[urb->dev->slot_id];
1693 urb_priv = urb->hcpriv;
1697 ep_index = xhci_get_endpoint_index(&urb->ep->desc);
1699 ep_ring = xhci_urb_to_transfer_ring(xhci, urb);
1745 urb, urb->dev->devpath,
1746 urb->ep->desc.bEndpointAddress,
1771 xhci_queue_stop_endpoint(xhci, command, urb->dev->slot_id,
1782 usb_hcd_unlink_urb_from_ep(hcd, urb);
1784 usb_hcd_giveback_urb(hcd, urb, -ESHUTDOWN);