Lines Matching refs:urb
363 struct dwc2_hcd_urb *urb, struct dwc2_qh *qh, in dwc2_hcd_urb_enqueue() argument
376 dev_speed = dwc2_host_get_speed(hsotg, urb->priv); in dwc2_hcd_urb_enqueue()
392 dwc2_hcd_qtd_init(qtd, urb); in dwc2_hcd_urb_enqueue()
406 !(qtd->urb->flags & URB_GIVEBACK_ASAP)) in dwc2_hcd_urb_enqueue()
423 struct dwc2_hcd_urb *urb) in dwc2_hcd_urb_dequeue() argument
428 urb_qtd = urb->qtd; in dwc2_hcd_urb_dequeue()
440 urb->priv = NULL; in dwc2_hcd_urb_dequeue()
590 struct dwc2_qtd *qtd, struct dwc2_hcd_urb *urb) in dwc2_hc_init_split() argument
597 dwc2_host_hub_info(hsotg, urb->priv, &hub_addr, &hub_port); in dwc2_hc_init_split()
606 struct dwc2_hcd_urb *urb = qtd->urb; in dwc2_hc_init_xfer() local
609 switch (dwc2_hcd_get_pipe_type(&urb->pipe_info)) { in dwc2_hc_init_xfer()
620 chan->xfer_dma = urb->setup_dma; in dwc2_hc_init_xfer()
622 chan->xfer_buf = urb->setup_packet; in dwc2_hc_init_xfer()
638 if (urb->length == 0) in dwc2_hc_init_xfer()
642 dwc2_hcd_is_pipe_out(&urb->pipe_info); in dwc2_hc_init_xfer()
669 frame_desc = &urb->iso_descs[qtd->isoc_frame_index]; in dwc2_hc_init_xfer()
673 chan->xfer_dma = urb->dma; in dwc2_hc_init_xfer()
677 chan->xfer_buf = urb->buf; in dwc2_hc_init_xfer()
687 bufptr = (u8 *)urb->buf + frame_desc->offset + in dwc2_hc_init_xfer()
706 struct dwc2_hcd_urb *urb, void *bufptr) in dwc2_hc_setup_align_buf() argument
709 struct urb *usb_urb; in dwc2_hc_setup_align_buf()
727 usb_urb = urb->priv; in dwc2_hc_setup_align_buf()
769 struct dwc2_hcd_urb *urb; in dwc2_assign_and_init_hc() local
793 urb = qtd->urb; in dwc2_assign_and_init_hc()
801 chan->dev_addr = dwc2_hcd_get_dev_addr(&urb->pipe_info); in dwc2_assign_and_init_hc()
802 chan->ep_num = dwc2_hcd_get_ep_num(&urb->pipe_info); in dwc2_assign_and_init_hc()
820 chan->ep_is_in = (dwc2_hcd_is_pipe_in(&urb->pipe_info) != 0); in dwc2_assign_and_init_hc()
829 if (urb->actual_length > urb->length && in dwc2_assign_and_init_hc()
830 !dwc2_hcd_is_pipe_in(&urb->pipe_info)) in dwc2_assign_and_init_hc()
831 urb->actual_length = urb->length; in dwc2_assign_and_init_hc()
834 chan->xfer_dma = urb->dma + urb->actual_length; in dwc2_assign_and_init_hc()
839 bufptr = (u8 *)urb->buf + urb->actual_length; in dwc2_assign_and_init_hc()
841 chan->xfer_buf = (u8 *)urb->buf + urb->actual_length; in dwc2_assign_and_init_hc()
844 chan->xfer_len = urb->length - urb->actual_length; in dwc2_assign_and_init_hc()
849 dwc2_hc_init_split(hsotg, chan, qtd, urb); in dwc2_assign_and_init_hc()
859 if (dwc2_hc_setup_align_buf(hsotg, qh, chan, urb, bufptr)) { in dwc2_assign_and_init_hc()
1899 struct dwc2_hcd_urb *urb; in dwc2_hcd_urb_alloc() local
1900 u32 size = sizeof(*urb) + iso_desc_count * in dwc2_hcd_urb_alloc()
1903 urb = kzalloc(size, mem_flags); in dwc2_hcd_urb_alloc()
1904 if (urb) in dwc2_hcd_urb_alloc()
1905 urb->packet_count = iso_desc_count; in dwc2_hcd_urb_alloc()
1906 return urb; in dwc2_hcd_urb_alloc()
1910 struct dwc2_hcd_urb *urb, u8 dev_addr, in dwc2_hcd_urb_set_pipeinfo() argument
1919 urb->pipe_info.dev_addr = dev_addr; in dwc2_hcd_urb_set_pipeinfo()
1920 urb->pipe_info.ep_num = ep_num; in dwc2_hcd_urb_set_pipeinfo()
1921 urb->pipe_info.pipe_type = ep_type; in dwc2_hcd_urb_set_pipeinfo()
1922 urb->pipe_info.pipe_dir = ep_dir; in dwc2_hcd_urb_set_pipeinfo()
1923 urb->pipe_info.mps = mps; in dwc2_hcd_urb_set_pipeinfo()
1934 struct dwc2_hcd_urb *urb; in dwc2_hcd_dump_state() local
2002 urb = qtd->urb; in dwc2_hcd_dump_state()
2005 qtd, urb); in dwc2_hcd_dump_state()
2006 if (urb) { in dwc2_hcd_dump_state()
2009 dwc2_hcd_get_dev_addr(&urb->pipe_info), in dwc2_hcd_dump_state()
2010 dwc2_hcd_get_ep_num(&urb->pipe_info), in dwc2_hcd_dump_state()
2011 dwc2_hcd_is_pipe_in(&urb->pipe_info) ? in dwc2_hcd_dump_state()
2015 dwc2_hcd_get_mps(&urb->pipe_info)); in dwc2_hcd_dump_state()
2018 urb->buf); in dwc2_hcd_dump_state()
2021 (unsigned long)urb->dma); in dwc2_hcd_dump_state()
2024 urb->length); in dwc2_hcd_dump_state()
2026 urb->actual_length); in dwc2_hcd_dump_state()
2157 struct urb *urb = context; in dwc2_host_hub_info() local
2159 if (urb->dev->tt) in dwc2_host_hub_info()
2160 *hub_addr = urb->dev->tt->hub->devnum; in dwc2_host_hub_info()
2163 *hub_port = urb->dev->ttport; in dwc2_host_hub_info()
2168 struct urb *urb = context; in dwc2_host_get_speed() local
2170 return urb->dev->speed; in dwc2_host_get_speed()
2174 struct urb *urb) in dwc2_allocate_bus_bandwidth() argument
2178 if (urb->interval) in dwc2_allocate_bus_bandwidth()
2179 bus->bandwidth_allocated += bw / urb->interval; in dwc2_allocate_bus_bandwidth()
2180 if (usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS) in dwc2_allocate_bus_bandwidth()
2187 struct urb *urb) in dwc2_free_bus_bandwidth() argument
2191 if (urb->interval) in dwc2_free_bus_bandwidth()
2192 bus->bandwidth_allocated -= bw / urb->interval; in dwc2_free_bus_bandwidth()
2193 if (usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS) in dwc2_free_bus_bandwidth()
2208 struct urb *urb; in dwc2_host_complete() local
2216 if (!qtd->urb) { in dwc2_host_complete()
2221 urb = qtd->urb->priv; in dwc2_host_complete()
2222 if (!urb) { in dwc2_host_complete()
2227 urb->actual_length = dwc2_hcd_urb_get_actual_length(qtd->urb); in dwc2_host_complete()
2229 if (dbg_urb(urb)) in dwc2_host_complete()
2232 __func__, urb, usb_pipedevice(urb->pipe), in dwc2_host_complete()
2233 usb_pipeendpoint(urb->pipe), in dwc2_host_complete()
2234 usb_pipein(urb->pipe) ? "IN" : "OUT", status, in dwc2_host_complete()
2235 urb->actual_length); in dwc2_host_complete()
2238 if (usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS) { in dwc2_host_complete()
2239 urb->error_count = dwc2_hcd_urb_get_error_count(qtd->urb); in dwc2_host_complete()
2240 for (i = 0; i < urb->number_of_packets; ++i) { in dwc2_host_complete()
2241 urb->iso_frame_desc[i].actual_length = in dwc2_host_complete()
2243 qtd->urb, i); in dwc2_host_complete()
2244 urb->iso_frame_desc[i].status = in dwc2_host_complete()
2245 dwc2_hcd_urb_get_iso_desc_status(qtd->urb, i); in dwc2_host_complete()
2249 if (usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS && dbg_perio()) { in dwc2_host_complete()
2250 for (i = 0; i < urb->number_of_packets; i++) in dwc2_host_complete()
2252 i, urb->iso_frame_desc[i].status); in dwc2_host_complete()
2255 urb->status = status; in dwc2_host_complete()
2257 if ((urb->transfer_flags & URB_SHORT_NOT_OK) && in dwc2_host_complete()
2258 urb->actual_length < urb->transfer_buffer_length) in dwc2_host_complete()
2259 urb->status = -EREMOTEIO; in dwc2_host_complete()
2262 if (usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS || in dwc2_host_complete()
2263 usb_pipetype(urb->pipe) == PIPE_INTERRUPT) { in dwc2_host_complete()
2264 struct usb_host_endpoint *ep = urb->ep; in dwc2_host_complete()
2269 urb); in dwc2_host_complete()
2272 usb_hcd_unlink_urb_from_ep(dwc2_hsotg_to_hcd(hsotg), urb); in dwc2_host_complete()
2273 urb->hcpriv = NULL; in dwc2_host_complete()
2274 kfree(qtd->urb); in dwc2_host_complete()
2275 qtd->urb = NULL; in dwc2_host_complete()
2278 usb_hcd_giveback_urb(dwc2_hsotg_to_hcd(hsotg), urb, status); in dwc2_host_complete()
2511 static void dwc2_dump_urb_info(struct usb_hcd *hcd, struct urb *urb, in dwc2_dump_urb_info() argument
2519 dev_vdbg(hsotg->dev, "%s, urb %p\n", fn_name, urb); in dwc2_dump_urb_info()
2521 usb_pipedevice(urb->pipe)); in dwc2_dump_urb_info()
2523 usb_pipeendpoint(urb->pipe), in dwc2_dump_urb_info()
2524 usb_pipein(urb->pipe) ? "IN" : "OUT"); in dwc2_dump_urb_info()
2526 switch (usb_pipetype(urb->pipe)) { in dwc2_dump_urb_info()
2545 usb_urb_dir_in(urb) ? "IN" : "OUT", usb_pipein(urb->pipe) ? in dwc2_dump_urb_info()
2548 switch (urb->dev->speed) { in dwc2_dump_urb_info()
2565 usb_maxpacket(urb->dev, urb->pipe, usb_pipeout(urb->pipe))); in dwc2_dump_urb_info()
2567 urb->transfer_buffer_length); in dwc2_dump_urb_info()
2569 urb->transfer_buffer, (unsigned long)urb->transfer_dma); in dwc2_dump_urb_info()
2571 urb->setup_packet, (unsigned long)urb->setup_dma); in dwc2_dump_urb_info()
2572 dev_vdbg(hsotg->dev, " Interval: %d\n", urb->interval); in dwc2_dump_urb_info()
2574 if (usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS) { in dwc2_dump_urb_info()
2577 for (i = 0; i < urb->number_of_packets; i++) { in dwc2_dump_urb_info()
2580 urb->iso_frame_desc[i].offset, in dwc2_dump_urb_info()
2581 urb->iso_frame_desc[i].length); in dwc2_dump_urb_info()
2592 static int _dwc2_hcd_urb_enqueue(struct usb_hcd *hcd, struct urb *urb, in _dwc2_hcd_urb_enqueue() argument
2596 struct usb_host_endpoint *ep = urb->ep; in _dwc2_hcd_urb_enqueue()
2609 if (dbg_urb(urb)) { in _dwc2_hcd_urb_enqueue()
2611 dwc2_dump_urb_info(hcd, urb, "urb_enqueue"); in _dwc2_hcd_urb_enqueue()
2617 if (usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS || in _dwc2_hcd_urb_enqueue()
2618 usb_pipetype(urb->pipe) == PIPE_INTERRUPT) { in _dwc2_hcd_urb_enqueue()
2625 switch (usb_pipetype(urb->pipe)) { in _dwc2_hcd_urb_enqueue()
2642 dwc2_urb = dwc2_hcd_urb_alloc(hsotg, urb->number_of_packets, in _dwc2_hcd_urb_enqueue()
2647 dwc2_hcd_urb_set_pipeinfo(hsotg, dwc2_urb, usb_pipedevice(urb->pipe), in _dwc2_hcd_urb_enqueue()
2648 usb_pipeendpoint(urb->pipe), ep_type, in _dwc2_hcd_urb_enqueue()
2649 usb_pipein(urb->pipe), in _dwc2_hcd_urb_enqueue()
2650 usb_maxpacket(urb->dev, urb->pipe, in _dwc2_hcd_urb_enqueue()
2651 !(usb_pipein(urb->pipe)))); in _dwc2_hcd_urb_enqueue()
2653 buf = urb->transfer_buffer; in _dwc2_hcd_urb_enqueue()
2656 if (!buf && (urb->transfer_dma & 3)) { in _dwc2_hcd_urb_enqueue()
2665 if (!(urb->transfer_flags & URB_NO_INTERRUPT)) in _dwc2_hcd_urb_enqueue()
2667 if (urb->transfer_flags & URB_ZERO_PACKET) in _dwc2_hcd_urb_enqueue()
2670 dwc2_urb->priv = urb; in _dwc2_hcd_urb_enqueue()
2672 dwc2_urb->dma = urb->transfer_dma; in _dwc2_hcd_urb_enqueue()
2673 dwc2_urb->length = urb->transfer_buffer_length; in _dwc2_hcd_urb_enqueue()
2674 dwc2_urb->setup_packet = urb->setup_packet; in _dwc2_hcd_urb_enqueue()
2675 dwc2_urb->setup_dma = urb->setup_dma; in _dwc2_hcd_urb_enqueue()
2677 dwc2_urb->interval = urb->interval; in _dwc2_hcd_urb_enqueue()
2680 for (i = 0; i < urb->number_of_packets; ++i) in _dwc2_hcd_urb_enqueue()
2682 urb->iso_frame_desc[i].offset, in _dwc2_hcd_urb_enqueue()
2683 urb->iso_frame_desc[i].length); in _dwc2_hcd_urb_enqueue()
2685 urb->hcpriv = dwc2_urb; in _dwc2_hcd_urb_enqueue()
2705 retval = usb_hcd_link_urb_to_ep(hcd, urb); in _dwc2_hcd_urb_enqueue()
2716 urb); in _dwc2_hcd_urb_enqueue()
2725 usb_hcd_unlink_urb_from_ep(hcd, urb); in _dwc2_hcd_urb_enqueue()
2728 urb->hcpriv = NULL; in _dwc2_hcd_urb_enqueue()
2751 static int _dwc2_hcd_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, in _dwc2_hcd_urb_dequeue() argument
2759 dwc2_dump_urb_info(hcd, urb, "urb_dequeue"); in _dwc2_hcd_urb_dequeue()
2763 rc = usb_hcd_check_unlink_urb(hcd, urb, status); in _dwc2_hcd_urb_dequeue()
2767 if (!urb->hcpriv) { in _dwc2_hcd_urb_dequeue()
2772 rc = dwc2_hcd_urb_dequeue(hsotg, urb->hcpriv); in _dwc2_hcd_urb_dequeue()
2774 usb_hcd_unlink_urb_from_ep(hcd, urb); in _dwc2_hcd_urb_dequeue()
2776 kfree(urb->hcpriv); in _dwc2_hcd_urb_dequeue()
2777 urb->hcpriv = NULL; in _dwc2_hcd_urb_dequeue()
2781 usb_hcd_giveback_urb(hcd, urb, status); in _dwc2_hcd_urb_dequeue()
2785 dev_dbg(hsotg->dev, " urb->status = %d\n", urb->status); in _dwc2_hcd_urb_dequeue()