Lines Matching refs:urb
361 struct dwc2_hcd_urb *urb, void **ep_handle, in dwc2_hcd_urb_enqueue() argument
376 dev_speed = dwc2_host_get_speed(hsotg, urb->priv); in dwc2_hcd_urb_enqueue()
393 dwc2_hcd_qtd_init(qtd, urb); in dwc2_hcd_urb_enqueue()
409 !(qtd->urb->flags & URB_GIVEBACK_ASAP)) in dwc2_hcd_urb_enqueue()
428 struct dwc2_hcd_urb *urb) in dwc2_hcd_urb_dequeue() argument
433 urb_qtd = urb->qtd; in dwc2_hcd_urb_dequeue()
445 urb->priv = NULL; in dwc2_hcd_urb_dequeue()
595 struct dwc2_qtd *qtd, struct dwc2_hcd_urb *urb) in dwc2_hc_init_split() argument
602 dwc2_host_hub_info(hsotg, urb->priv, &hub_addr, &hub_port); in dwc2_hc_init_split()
611 struct dwc2_hcd_urb *urb = qtd->urb; in dwc2_hc_init_xfer() local
614 switch (dwc2_hcd_get_pipe_type(&urb->pipe_info)) { in dwc2_hc_init_xfer()
625 chan->xfer_dma = urb->setup_dma; in dwc2_hc_init_xfer()
627 chan->xfer_buf = urb->setup_packet; in dwc2_hc_init_xfer()
643 if (urb->length == 0) in dwc2_hc_init_xfer()
647 dwc2_hcd_is_pipe_out(&urb->pipe_info); in dwc2_hc_init_xfer()
674 frame_desc = &urb->iso_descs[qtd->isoc_frame_index]; in dwc2_hc_init_xfer()
678 chan->xfer_dma = urb->dma; in dwc2_hc_init_xfer()
682 chan->xfer_buf = urb->buf; in dwc2_hc_init_xfer()
692 bufptr = (u8 *)urb->buf + frame_desc->offset + in dwc2_hc_init_xfer()
711 struct dwc2_hcd_urb *urb, void *bufptr) in dwc2_hc_setup_align_buf() argument
714 struct urb *usb_urb; in dwc2_hc_setup_align_buf()
734 usb_urb = urb->priv; in dwc2_hc_setup_align_buf()
767 struct dwc2_hcd_urb *urb; in dwc2_assign_and_init_hc() local
791 urb = qtd->urb; in dwc2_assign_and_init_hc()
799 chan->dev_addr = dwc2_hcd_get_dev_addr(&urb->pipe_info); in dwc2_assign_and_init_hc()
800 chan->ep_num = dwc2_hcd_get_ep_num(&urb->pipe_info); in dwc2_assign_and_init_hc()
818 chan->ep_is_in = (dwc2_hcd_is_pipe_in(&urb->pipe_info) != 0); in dwc2_assign_and_init_hc()
827 if (urb->actual_length > urb->length && in dwc2_assign_and_init_hc()
828 !dwc2_hcd_is_pipe_in(&urb->pipe_info)) in dwc2_assign_and_init_hc()
829 urb->actual_length = urb->length; in dwc2_assign_and_init_hc()
832 chan->xfer_dma = urb->dma + urb->actual_length; in dwc2_assign_and_init_hc()
837 bufptr = (u8 *)urb->buf + urb->actual_length; in dwc2_assign_and_init_hc()
839 chan->xfer_buf = (u8 *)urb->buf + urb->actual_length; in dwc2_assign_and_init_hc()
842 chan->xfer_len = urb->length - urb->actual_length; in dwc2_assign_and_init_hc()
847 dwc2_hc_init_split(hsotg, chan, qtd, urb); in dwc2_assign_and_init_hc()
857 if (dwc2_hc_setup_align_buf(hsotg, qh, chan, urb, bufptr)) { in dwc2_assign_and_init_hc()
1849 struct dwc2_hcd_urb *urb; in dwc2_hcd_urb_alloc() local
1850 u32 size = sizeof(*urb) + iso_desc_count * in dwc2_hcd_urb_alloc()
1853 urb = kzalloc(size, mem_flags); in dwc2_hcd_urb_alloc()
1854 if (urb) in dwc2_hcd_urb_alloc()
1855 urb->packet_count = iso_desc_count; in dwc2_hcd_urb_alloc()
1856 return urb; in dwc2_hcd_urb_alloc()
1860 struct dwc2_hcd_urb *urb, u8 dev_addr, in dwc2_hcd_urb_set_pipeinfo() argument
1869 urb->pipe_info.dev_addr = dev_addr; in dwc2_hcd_urb_set_pipeinfo()
1870 urb->pipe_info.ep_num = ep_num; in dwc2_hcd_urb_set_pipeinfo()
1871 urb->pipe_info.pipe_type = ep_type; in dwc2_hcd_urb_set_pipeinfo()
1872 urb->pipe_info.pipe_dir = ep_dir; in dwc2_hcd_urb_set_pipeinfo()
1873 urb->pipe_info.mps = mps; in dwc2_hcd_urb_set_pipeinfo()
1884 struct dwc2_hcd_urb *urb; in dwc2_hcd_dump_state() local
1952 urb = qtd->urb; in dwc2_hcd_dump_state()
1955 qtd, urb); in dwc2_hcd_dump_state()
1956 if (urb) { in dwc2_hcd_dump_state()
1959 dwc2_hcd_get_dev_addr(&urb->pipe_info), in dwc2_hcd_dump_state()
1960 dwc2_hcd_get_ep_num(&urb->pipe_info), in dwc2_hcd_dump_state()
1961 dwc2_hcd_is_pipe_in(&urb->pipe_info) ? in dwc2_hcd_dump_state()
1965 dwc2_hcd_get_mps(&urb->pipe_info)); in dwc2_hcd_dump_state()
1968 urb->buf); in dwc2_hcd_dump_state()
1971 (unsigned long)urb->dma); in dwc2_hcd_dump_state()
1974 urb->length); in dwc2_hcd_dump_state()
1976 urb->actual_length); in dwc2_hcd_dump_state()
2107 struct urb *urb = context; in dwc2_host_hub_info() local
2109 if (urb->dev->tt) in dwc2_host_hub_info()
2110 *hub_addr = urb->dev->tt->hub->devnum; in dwc2_host_hub_info()
2113 *hub_port = urb->dev->ttport; in dwc2_host_hub_info()
2118 struct urb *urb = context; in dwc2_host_get_speed() local
2120 return urb->dev->speed; in dwc2_host_get_speed()
2124 struct urb *urb) in dwc2_allocate_bus_bandwidth() argument
2128 if (urb->interval) in dwc2_allocate_bus_bandwidth()
2129 bus->bandwidth_allocated += bw / urb->interval; in dwc2_allocate_bus_bandwidth()
2130 if (usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS) in dwc2_allocate_bus_bandwidth()
2137 struct urb *urb) in dwc2_free_bus_bandwidth() argument
2141 if (urb->interval) in dwc2_free_bus_bandwidth()
2142 bus->bandwidth_allocated -= bw / urb->interval; in dwc2_free_bus_bandwidth()
2143 if (usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS) in dwc2_free_bus_bandwidth()
2158 struct urb *urb; in dwc2_host_complete() local
2166 if (!qtd->urb) { in dwc2_host_complete()
2171 urb = qtd->urb->priv; in dwc2_host_complete()
2172 if (!urb) { in dwc2_host_complete()
2177 urb->actual_length = dwc2_hcd_urb_get_actual_length(qtd->urb); in dwc2_host_complete()
2179 if (dbg_urb(urb)) in dwc2_host_complete()
2182 __func__, urb, usb_pipedevice(urb->pipe), in dwc2_host_complete()
2183 usb_pipeendpoint(urb->pipe), in dwc2_host_complete()
2184 usb_pipein(urb->pipe) ? "IN" : "OUT", status, in dwc2_host_complete()
2185 urb->actual_length); in dwc2_host_complete()
2187 if (usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS && dbg_perio()) { in dwc2_host_complete()
2188 for (i = 0; i < urb->number_of_packets; i++) in dwc2_host_complete()
2190 i, urb->iso_frame_desc[i].status); in dwc2_host_complete()
2193 if (usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS) { in dwc2_host_complete()
2194 urb->error_count = dwc2_hcd_urb_get_error_count(qtd->urb); in dwc2_host_complete()
2195 for (i = 0; i < urb->number_of_packets; ++i) { in dwc2_host_complete()
2196 urb->iso_frame_desc[i].actual_length = in dwc2_host_complete()
2198 qtd->urb, i); in dwc2_host_complete()
2199 urb->iso_frame_desc[i].status = in dwc2_host_complete()
2200 dwc2_hcd_urb_get_iso_desc_status(qtd->urb, i); in dwc2_host_complete()
2204 urb->status = status; in dwc2_host_complete()
2206 if ((urb->transfer_flags & URB_SHORT_NOT_OK) && in dwc2_host_complete()
2207 urb->actual_length < urb->transfer_buffer_length) in dwc2_host_complete()
2208 urb->status = -EREMOTEIO; in dwc2_host_complete()
2211 if (usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS || in dwc2_host_complete()
2212 usb_pipetype(urb->pipe) == PIPE_INTERRUPT) { in dwc2_host_complete()
2213 struct usb_host_endpoint *ep = urb->ep; in dwc2_host_complete()
2218 urb); in dwc2_host_complete()
2221 usb_hcd_unlink_urb_from_ep(dwc2_hsotg_to_hcd(hsotg), urb); in dwc2_host_complete()
2222 urb->hcpriv = NULL; in dwc2_host_complete()
2223 kfree(qtd->urb); in dwc2_host_complete()
2224 qtd->urb = NULL; in dwc2_host_complete()
2227 usb_hcd_giveback_urb(dwc2_hsotg_to_hcd(hsotg), urb, status); in dwc2_host_complete()
2324 static void dwc2_dump_urb_info(struct usb_hcd *hcd, struct urb *urb, in dwc2_dump_urb_info() argument
2332 dev_vdbg(hsotg->dev, "%s, urb %p\n", fn_name, urb); in dwc2_dump_urb_info()
2334 usb_pipedevice(urb->pipe)); in dwc2_dump_urb_info()
2336 usb_pipeendpoint(urb->pipe), in dwc2_dump_urb_info()
2337 usb_pipein(urb->pipe) ? "IN" : "OUT"); in dwc2_dump_urb_info()
2339 switch (usb_pipetype(urb->pipe)) { in dwc2_dump_urb_info()
2358 usb_urb_dir_in(urb) ? "IN" : "OUT", usb_pipein(urb->pipe) ? in dwc2_dump_urb_info()
2361 switch (urb->dev->speed) { in dwc2_dump_urb_info()
2378 usb_maxpacket(urb->dev, urb->pipe, usb_pipeout(urb->pipe))); in dwc2_dump_urb_info()
2380 urb->transfer_buffer_length); in dwc2_dump_urb_info()
2382 urb->transfer_buffer, (unsigned long)urb->transfer_dma); in dwc2_dump_urb_info()
2384 urb->setup_packet, (unsigned long)urb->setup_dma); in dwc2_dump_urb_info()
2385 dev_vdbg(hsotg->dev, " Interval: %d\n", urb->interval); in dwc2_dump_urb_info()
2387 if (usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS) { in dwc2_dump_urb_info()
2390 for (i = 0; i < urb->number_of_packets; i++) { in dwc2_dump_urb_info()
2393 urb->iso_frame_desc[i].offset, in dwc2_dump_urb_info()
2394 urb->iso_frame_desc[i].length); in dwc2_dump_urb_info()
2405 static int _dwc2_hcd_urb_enqueue(struct usb_hcd *hcd, struct urb *urb, in _dwc2_hcd_urb_enqueue() argument
2409 struct usb_host_endpoint *ep = urb->ep; in _dwc2_hcd_urb_enqueue()
2419 if (dbg_urb(urb)) { in _dwc2_hcd_urb_enqueue()
2421 dwc2_dump_urb_info(hcd, urb, "urb_enqueue"); in _dwc2_hcd_urb_enqueue()
2427 if (usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS || in _dwc2_hcd_urb_enqueue()
2428 usb_pipetype(urb->pipe) == PIPE_INTERRUPT) { in _dwc2_hcd_urb_enqueue()
2435 switch (usb_pipetype(urb->pipe)) { in _dwc2_hcd_urb_enqueue()
2452 dwc2_urb = dwc2_hcd_urb_alloc(hsotg, urb->number_of_packets, in _dwc2_hcd_urb_enqueue()
2457 dwc2_hcd_urb_set_pipeinfo(hsotg, dwc2_urb, usb_pipedevice(urb->pipe), in _dwc2_hcd_urb_enqueue()
2458 usb_pipeendpoint(urb->pipe), ep_type, in _dwc2_hcd_urb_enqueue()
2459 usb_pipein(urb->pipe), in _dwc2_hcd_urb_enqueue()
2460 usb_maxpacket(urb->dev, urb->pipe, in _dwc2_hcd_urb_enqueue()
2461 !(usb_pipein(urb->pipe)))); in _dwc2_hcd_urb_enqueue()
2463 buf = urb->transfer_buffer; in _dwc2_hcd_urb_enqueue()
2466 if (!buf && (urb->transfer_dma & 3)) { in _dwc2_hcd_urb_enqueue()
2475 if (!(urb->transfer_flags & URB_NO_INTERRUPT)) in _dwc2_hcd_urb_enqueue()
2477 if (urb->transfer_flags & URB_ZERO_PACKET) in _dwc2_hcd_urb_enqueue()
2480 dwc2_urb->priv = urb; in _dwc2_hcd_urb_enqueue()
2482 dwc2_urb->dma = urb->transfer_dma; in _dwc2_hcd_urb_enqueue()
2483 dwc2_urb->length = urb->transfer_buffer_length; in _dwc2_hcd_urb_enqueue()
2484 dwc2_urb->setup_packet = urb->setup_packet; in _dwc2_hcd_urb_enqueue()
2485 dwc2_urb->setup_dma = urb->setup_dma; in _dwc2_hcd_urb_enqueue()
2487 dwc2_urb->interval = urb->interval; in _dwc2_hcd_urb_enqueue()
2490 for (i = 0; i < urb->number_of_packets; ++i) in _dwc2_hcd_urb_enqueue()
2492 urb->iso_frame_desc[i].offset, in _dwc2_hcd_urb_enqueue()
2493 urb->iso_frame_desc[i].length); in _dwc2_hcd_urb_enqueue()
2495 urb->hcpriv = dwc2_urb; in _dwc2_hcd_urb_enqueue()
2498 retval = usb_hcd_link_urb_to_ep(hcd, urb); in _dwc2_hcd_urb_enqueue()
2511 urb); in _dwc2_hcd_urb_enqueue()
2520 usb_hcd_unlink_urb_from_ep(hcd, urb); in _dwc2_hcd_urb_enqueue()
2523 urb->hcpriv = NULL; in _dwc2_hcd_urb_enqueue()
2532 static int _dwc2_hcd_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, in _dwc2_hcd_urb_dequeue() argument
2540 dwc2_dump_urb_info(hcd, urb, "urb_dequeue"); in _dwc2_hcd_urb_dequeue()
2544 rc = usb_hcd_check_unlink_urb(hcd, urb, status); in _dwc2_hcd_urb_dequeue()
2548 if (!urb->hcpriv) { in _dwc2_hcd_urb_dequeue()
2553 rc = dwc2_hcd_urb_dequeue(hsotg, urb->hcpriv); in _dwc2_hcd_urb_dequeue()
2555 usb_hcd_unlink_urb_from_ep(hcd, urb); in _dwc2_hcd_urb_dequeue()
2557 kfree(urb->hcpriv); in _dwc2_hcd_urb_dequeue()
2558 urb->hcpriv = NULL; in _dwc2_hcd_urb_dequeue()
2562 usb_hcd_giveback_urb(hcd, urb, status); in _dwc2_hcd_urb_dequeue()
2566 dev_dbg(hsotg->dev, " urb->status = %d\n", urb->status); in _dwc2_hcd_urb_dequeue()