Lines Matching refs:urb

1169 static int xhci_map_temp_buffer(struct usb_hcd *hcd, struct urb *urb)
1176 dir = usb_urb_dir_in(urb) ? DMA_FROM_DEVICE : DMA_TO_DEVICE;
1177 buf_len = urb->transfer_buffer_length;
1184 if (usb_urb_dir_out(urb))
1185 sg_pcopy_to_buffer(urb->sg, urb->num_sgs,
1188 urb->transfer_buffer = temp;
1189 urb->transfer_dma = dma_map_single(hcd->self.sysdev,
1190 urb->transfer_buffer,
1191 urb->transfer_buffer_length,
1195 urb->transfer_dma)) {
1199 urb->transfer_flags |= URB_DMA_MAP_SINGLE;
1206 struct urb *urb)
1216 tail_sg = urb->sg;
1217 max_pkt = usb_endpoint_maxp(&urb->ep->desc);
1219 if (!urb->num_sgs)
1222 if (urb->dev->speed >= USB_SPEED_SUPER)
1227 if (urb->transfer_buffer_length != 0 &&
1228 !(urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP)) {
1229 for_each_sg(urb->sg, sg, urb->num_sgs, i) {
1245 static void xhci_unmap_temp_buf(struct usb_hcd *hcd, struct urb *urb)
1251 dir = usb_urb_dir_in(urb) ? DMA_FROM_DEVICE : DMA_TO_DEVICE;
1253 buf_len = urb->transfer_buffer_length;
1256 (urb->transfer_flags & URB_DMA_MAP_SINGLE))
1258 urb->transfer_dma,
1259 urb->transfer_buffer_length,
1262 if (usb_urb_dir_in(urb)) {
1263 len = sg_pcopy_from_buffer(urb->sg, urb->num_sgs,
1264 urb->transfer_buffer,
1269 "Copy from tmp buf to urb sg list failed\n");
1270 urb->actual_length = len;
1273 urb->transfer_flags &= ~URB_DMA_MAP_SINGLE;
1274 kfree(urb->transfer_buffer);
1275 urb->transfer_buffer = NULL;
1284 static int xhci_map_urb_for_dma(struct usb_hcd *hcd, struct urb *urb,
1291 if (xhci_urb_suitable_for_idt(urb))
1295 if (xhci_urb_temp_buffer_required(hcd, urb))
1296 return xhci_map_temp_buffer(hcd, urb);
1298 return usb_hcd_map_urb_for_dma(hcd, urb, mem_flags);
1301 static void xhci_unmap_urb_for_dma(struct usb_hcd *hcd, struct urb *urb)
1308 if (urb->num_sgs && (urb->transfer_flags & URB_DMA_MAP_SINGLE))
1312 xhci_unmap_temp_buf(hcd, urb);
1314 usb_hcd_unmap_urb_for_dma(hcd, urb);
1420 unsigned int ep_index, struct urb *urb, gfp_t mem_flags)
1433 max_packet_size = usb_endpoint_maxp(&urb->dev->ep0.desc);
1475 ret = xhci_configure_endpoint(xhci, urb->dev, command,
1490 * non-error returns are a promise to giveback() the urb later
1491 * we drop ownership so next owner (or urb unlink) can get it
1493 static int xhci_urb_enqueue(struct usb_hcd *hcd, struct urb *urb, gfp_t mem_flags)
1503 if (!urb)
1505 ret = xhci_check_args(hcd, urb->dev, urb->ep,
1510 slot_id = urb->dev->slot_id;
1511 ep_index = xhci_get_endpoint_index(&urb->ep->desc);
1518 xhci_dbg(xhci, "Can't queue urb, port error, link inactive\n");
1522 if (usb_endpoint_xfer_isoc(&urb->ep->desc))
1523 num_tds = urb->number_of_packets;
1524 else if (usb_endpoint_is_bulk_out(&urb->ep->desc) &&
1525 urb->transfer_buffer_length > 0 &&
1526 urb->transfer_flags & URB_ZERO_PACKET &&
1527 !(urb->transfer_buffer_length % usb_endpoint_maxp(&urb->ep->desc)))
1538 urb->hcpriv = urb_priv;
1540 trace_xhci_urb_enqueue(urb);
1542 if (usb_endpoint_xfer_control(&urb->ep->desc)) {
1546 if (urb->dev->speed == USB_SPEED_FULL) {
1548 ep_index, urb, mem_flags);
1551 urb->hcpriv = NULL;
1561 urb->ep->desc.bEndpointAddress, urb);
1577 switch (usb_endpoint_type(&urb->ep->desc)) {
1580 ret = xhci_queue_ctrl_tx(xhci, GFP_ATOMIC, urb,
1584 ret = xhci_queue_bulk_tx(xhci, GFP_ATOMIC, urb,
1588 ret = xhci_queue_intr_tx(xhci, GFP_ATOMIC, urb,
1592 ret = xhci_queue_isoc_tx_prepare(xhci, GFP_ATOMIC, urb,
1599 urb->hcpriv = NULL;
1636 static int xhci_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status)
1653 trace_xhci_urb_dequeue(urb);
1656 ret = usb_hcd_check_unlink_urb(hcd, urb, status);
1661 vdev = xhci->devs[urb->dev->slot_id];
1662 urb_priv = urb->hcpriv;
1666 ep_index = xhci_get_endpoint_index(&urb->ep->desc);
1668 ep_ring = xhci_urb_to_transfer_ring(xhci, urb);
1714 urb, urb->dev->devpath,
1715 urb->ep->desc.bEndpointAddress,
1740 xhci_queue_stop_endpoint(xhci, command, urb->dev->slot_id,
1751 usb_hcd_unlink_urb_from_ep(hcd, urb);
1753 usb_hcd_giveback_urb(hcd, urb, -ESHUTDOWN);