Lines Matching refs:urb
457 if (same_tt(dev, here.sitd->urb->dev)) {
906 struct urb *urb,
917 epnum = urb->ep->desc.bEndpointAddress;
925 status = usb_hcd_link_urb_to_ep(ehci_to_hcd(ehci), urb);
931 qh = qh_append_tds(ehci, urb, &empty, epnum, &urb->ep->hcpriv);
942 /* then queue the urb's tds to the qh */
943 qh = qh_append_tds(ehci, urb, qtd_list, epnum, &urb->ep->hcpriv);
960 usb_hcd_unlink_urb_from_ep(ehci_to_hcd(ehci), urb);
964 qtd_list_free(ehci, urb, qtd_list);
1020 struct urb *urb
1025 struct usb_device *dev = urb->dev;
1035 epnum = usb_pipeendpoint(urb->pipe);
1036 is_input = usb_pipein(urb->pipe) ? USB_DIR_IN : 0;
1037 maxp = usb_endpoint_maxp(&urb->ep->desc);
1042 unsigned multi = usb_endpoint_maxp_mult(&urb->ep->desc);
1060 1 << (urb->ep->desc.bInterval - 1));
1062 /* Allow urb->interval to override */
1063 stream->ps.bw_uperiod = min_t(unsigned, tmp, urb->interval);
1065 stream->uperiod = urb->interval;
1066 stream->ps.period = urb->interval >> 3;
1103 1 << (urb->ep->desc.bInterval - 1));
1105 /* Allow urb->interval to override */
1106 stream->ps.bw_period = min_t(unsigned, tmp, urb->interval);
1109 stream->ps.period = urb->interval;
1110 stream->uperiod = urb->interval << 3;
1119 stream->ps.ep = urb->ep;
1126 iso_stream_find(struct ehci_hcd *ehci, struct urb *urb)
1133 epnum = usb_pipeendpoint (urb->pipe);
1134 if (usb_pipein(urb->pipe))
1135 ep = urb->dev->ep_in[epnum];
1137 ep = urb->dev->ep_out[epnum];
1146 iso_stream_init(ehci, stream, urb);
1152 urb->dev->devpath, epnum,
1153 usb_pipein(urb->pipe) ? "in" : "out");
1182 struct urb *urb
1186 dma_addr_t dma = urb->transfer_dma;
1189 iso_sched->span = urb->number_of_packets * stream->uperiod;
1194 for (i = 0; i < urb->number_of_packets; i++) {
1200 length = urb->iso_frame_desc[i].length;
1201 buf = dma + urb->iso_frame_desc[i].offset;
1205 if (unlikely(((i + 1) == urb->number_of_packets))
1206 && !(urb->transfer_flags & URB_NO_INTERRUPT))
1236 struct urb *urb,
1247 sched = iso_sched_alloc(urb->number_of_packets, mem_flags);
1251 itd_sched_init(ehci, sched, stream, urb);
1253 if (urb->interval < 8)
1256 num_itds = urb->number_of_packets;
1294 urb->hcpriv = sched;
1295 urb->error_count = 0;
1463 * transfers you can stream reliably; avoid more than 64 msec per urb.
1465 * by the per-urb URB_NO_INTERRUPT hint, the log2_irq_thresh module parameter,
1473 struct urb *urb,
1481 struct ehci_iso_sched *sched = urb->hcpriv;
1492 ehci_to_hcd(ehci), urb->ep))) {
1531 ehci_dbg(ehci, "iso sched full %p", urb);
1586 urb, stream->next_uframe, base, period, mod);
1596 (urb->transfer_flags & URB_ISO_ASAP)))
1605 if (urb->transfer_flags & URB_ISO_ASAP)
1615 urb, start + base, span - period, now2 + base,
1629 urb->error_count = skip / period;
1631 sched->first_packet = urb->error_count;
1642 urb, start, span - period, mod + wrap);
1651 urb->start_frame = start & (mod - 1);
1653 urb->start_frame >>= 3;
1658 urb->hcpriv = NULL;
1740 /* fit urb's itds into the selected schedule slot; activate as needed */
1743 struct urb *urb,
1750 struct ehci_iso_sched *iso_sched = urb->hcpriv;
1768 packet < urb->number_of_packets;) {
1779 itd->urb = urb;
1794 || packet == urb->number_of_packets) {
1803 urb->hcpriv = stream;
1811 /* Process and recycle a completed ITD. Return true iff its urb completed,
1823 struct urb *urb = itd->urb;
1836 desc = &urb->iso_frame_desc[urb_index];
1843 urb->error_count++;
1845 desc->status = usb_pipein(urb->pipe)
1856 urb->actual_length += desc->actual_length;
1861 urb->actual_length += desc->actual_length;
1864 urb->error_count++;
1869 if (likely((urb_index + 1) != urb->number_of_packets))
1873 * ASSERT: it's really the last itd for this urb
1875 * BUG_ON(itd->urb == urb);
1878 /* give urb back to the driver; completion often (re)submits */
1879 ehci_urb_done(ehci, urb, 0);
1881 urb = NULL;
1897 itd->urb = NULL;
1914 static int itd_submit(struct ehci_hcd *ehci, struct urb *urb,
1922 stream = iso_stream_find(ehci, urb);
1927 if (unlikely(urb->interval != stream->uperiod)) {
1929 stream->uperiod, urb->interval);
1935 "%s %s urb %p ep%d%s len %d, %d pkts %d uframes [%p]\n",
1936 __func__, urb->dev->devpath, urb,
1937 usb_pipeendpoint(urb->pipe),
1938 usb_pipein(urb->pipe) ? "in" : "out",
1939 urb->transfer_buffer_length,
1940 urb->number_of_packets, urb->interval,
1945 status = itd_urb_transaction(stream, ehci, urb, mem_flags);
1957 status = usb_hcd_link_urb_to_ep(ehci_to_hcd(ehci), urb);
1960 status = iso_stream_schedule(ehci, urb, stream);
1962 itd_link_urb(ehci, urb, ehci->periodic_size << 3, stream);
1965 ehci_urb_done(ehci, urb, 0);
1967 usb_hcd_unlink_urb_from_ep(ehci_to_hcd(ehci), urb);
1987 struct urb *urb
1991 dma_addr_t dma = urb->transfer_dma;
1994 iso_sched->span = urb->number_of_packets * stream->ps.period;
1999 for (i = 0; i < urb->number_of_packets; i++) {
2005 length = urb->iso_frame_desc[i].length & 0x03ff;
2006 buf = dma + urb->iso_frame_desc[i].offset;
2009 if (((i + 1) == urb->number_of_packets)
2010 && !(urb->transfer_flags & URB_NO_INTERRUPT))
2035 struct urb *urb,
2045 iso_sched = iso_sched_alloc(urb->number_of_packets, mem_flags);
2049 sitd_sched_init(ehci, iso_sched, stream, urb);
2053 for (i = 0; i < urb->number_of_packets; i++) {
2091 urb->hcpriv = iso_sched;
2092 urb->error_count = 0;
2141 /* fit urb's sitds into the selected schedule slot; activate as needed */
2144 struct urb *urb,
2151 struct ehci_iso_sched *sched = urb->hcpriv;
2170 packet < urb->number_of_packets;
2182 sitd->urb = urb;
2194 urb->hcpriv = stream;
2205 /* Process and recycle a completed SITD. Return true iff its urb completed,
2217 struct urb *urb = sitd->urb;
2225 desc = &urb->iso_frame_desc[urb_index];
2230 urb->error_count++;
2232 desc->status = usb_pipein(urb->pipe)
2241 urb->error_count++;
2245 urb->actual_length += desc->actual_length;
2249 if ((urb_index + 1) != urb->number_of_packets)
2253 * ASSERT: it's really the last sitd for this urb
2255 * BUG_ON(sitd->urb == urb);
2258 /* give urb back to the driver; completion often (re)submits */
2259 ehci_urb_done(ehci, urb, 0);
2261 urb = NULL;
2277 sitd->urb = NULL;
2293 static int sitd_submit(struct ehci_hcd *ehci, struct urb *urb,
2301 stream = iso_stream_find(ehci, urb);
2306 if (urb->interval != stream->ps.period) {
2308 stream->ps.period, urb->interval);
2315 urb, urb->dev->devpath,
2316 usb_pipeendpoint(urb->pipe),
2317 usb_pipein(urb->pipe) ? "in" : "out",
2318 urb->transfer_buffer_length);
2322 status = sitd_urb_transaction(stream, ehci, urb, mem_flags);
2334 status = usb_hcd_link_urb_to_ep(ehci_to_hcd(ehci), urb);
2337 status = iso_stream_schedule(ehci, urb, stream);
2339 sitd_link_urb(ehci, urb, ehci->periodic_size << 3, stream);
2342 ehci_urb_done(ehci, urb, 0);
2344 usb_hcd_unlink_urb_from_ep(ehci_to_hcd(ehci), urb);