Lines Matching refs:urb

451 				if (same_tt(dev, here.sitd->urb->dev)) {
899 struct urb *urb,
910 epnum = urb->ep->desc.bEndpointAddress;
918 status = usb_hcd_link_urb_to_ep(ehci_to_hcd(ehci), urb);
924 qh = qh_append_tds(ehci, urb, &empty, epnum, &urb->ep->hcpriv);
935 /* then queue the urb's tds to the qh */
936 qh = qh_append_tds(ehci, urb, qtd_list, epnum, &urb->ep->hcpriv);
953 usb_hcd_unlink_urb_from_ep(ehci_to_hcd(ehci), urb);
957 qtd_list_free(ehci, urb, qtd_list);
1013 struct urb *urb
1018 struct usb_device *dev = urb->dev;
1028 epnum = usb_pipeendpoint(urb->pipe);
1029 is_input = usb_pipein(urb->pipe) ? USB_DIR_IN : 0;
1030 maxp = usb_endpoint_maxp(&urb->ep->desc);
1035 unsigned multi = usb_endpoint_maxp_mult(&urb->ep->desc);
1053 1 << (urb->ep->desc.bInterval - 1));
1055 /* Allow urb->interval to override */
1056 stream->ps.bw_uperiod = min_t(unsigned, tmp, urb->interval);
1058 stream->uperiod = urb->interval;
1059 stream->ps.period = urb->interval >> 3;
1096 1 << (urb->ep->desc.bInterval - 1));
1098 /* Allow urb->interval to override */
1099 stream->ps.bw_period = min_t(unsigned, tmp, urb->interval);
1102 stream->ps.period = urb->interval;
1103 stream->uperiod = urb->interval << 3;
1112 stream->ps.ep = urb->ep;
1119 iso_stream_find(struct ehci_hcd *ehci, struct urb *urb)
1126 epnum = usb_pipeendpoint (urb->pipe);
1127 if (usb_pipein(urb->pipe))
1128 ep = urb->dev->ep_in[epnum];
1130 ep = urb->dev->ep_out[epnum];
1139 iso_stream_init(ehci, stream, urb);
1145 urb->dev->devpath, epnum,
1146 usb_pipein(urb->pipe) ? "in" : "out");
1177 struct urb *urb
1181 dma_addr_t dma = urb->transfer_dma;
1184 iso_sched->span = urb->number_of_packets * stream->uperiod;
1189 for (i = 0; i < urb->number_of_packets; i++) {
1195 length = urb->iso_frame_desc[i].length;
1196 buf = dma + urb->iso_frame_desc[i].offset;
1200 if (unlikely(((i + 1) == urb->number_of_packets))
1201 && !(urb->transfer_flags & URB_NO_INTERRUPT))
1231 struct urb *urb,
1242 sched = iso_sched_alloc(urb->number_of_packets, mem_flags);
1246 itd_sched_init(ehci, sched, stream, urb);
1248 if (urb->interval < 8)
1251 num_itds = urb->number_of_packets;
1289 urb->hcpriv = sched;
1290 urb->error_count = 0;
1452 * transfers you can stream reliably; avoid more than 64 msec per urb.
1454 * by the per-urb URB_NO_INTERRUPT hint, the log2_irq_thresh module parameter,
1462 struct urb *urb,
1470 struct ehci_iso_sched *sched = urb->hcpriv;
1481 ehci_to_hcd(ehci), urb->ep))) {
1520 ehci_dbg(ehci, "iso sched full %p", urb);
1575 urb, stream->next_uframe, base, period, mod);
1585 (urb->transfer_flags & URB_ISO_ASAP)))
1594 if (urb->transfer_flags & URB_ISO_ASAP)
1604 urb, start + base, span - period, now2 + base,
1618 urb->error_count = skip / period;
1620 sched->first_packet = urb->error_count;
1631 urb, start, span - period, mod + wrap);
1640 urb->start_frame = start & (mod - 1);
1642 urb->start_frame >>= 3;
1647 urb->hcpriv = NULL;
1729 /* fit urb's itds into the selected schedule slot; activate as needed */
1732 struct urb *urb,
1739 struct ehci_iso_sched *iso_sched = urb->hcpriv;
1757 packet < urb->number_of_packets;) {
1768 itd->urb = urb;
1783 || packet == urb->number_of_packets) {
1792 urb->hcpriv = stream;
1800 /* Process and recycle a completed ITD. Return true iff its urb completed,
1812 struct urb *urb = itd->urb;
1825 desc = &urb->iso_frame_desc[urb_index];
1832 urb->error_count++;
1834 desc->status = usb_pipein(urb->pipe)
1845 urb->actual_length += desc->actual_length;
1850 urb->actual_length += desc->actual_length;
1853 urb->error_count++;
1858 if (likely((urb_index + 1) != urb->number_of_packets))
1862 * ASSERT: it's really the last itd for this urb
1864 * BUG_ON(itd->urb == urb);
1867 /* give urb back to the driver; completion often (re)submits */
1868 ehci_urb_done(ehci, urb, 0);
1870 urb = NULL;
1886 itd->urb = NULL;
1903 static int itd_submit(struct ehci_hcd *ehci, struct urb *urb,
1911 stream = iso_stream_find(ehci, urb);
1916 if (unlikely(urb->interval != stream->uperiod)) {
1918 stream->uperiod, urb->interval);
1924 "%s %s urb %p ep%d%s len %d, %d pkts %d uframes [%p]\n",
1925 __func__, urb->dev->devpath, urb,
1926 usb_pipeendpoint(urb->pipe),
1927 usb_pipein(urb->pipe) ? "in" : "out",
1928 urb->transfer_buffer_length,
1929 urb->number_of_packets, urb->interval,
1934 status = itd_urb_transaction(stream, ehci, urb, mem_flags);
1946 status = usb_hcd_link_urb_to_ep(ehci_to_hcd(ehci), urb);
1949 status = iso_stream_schedule(ehci, urb, stream);
1951 itd_link_urb(ehci, urb, ehci->periodic_size << 3, stream);
1954 ehci_urb_done(ehci, urb, 0);
1956 usb_hcd_unlink_urb_from_ep(ehci_to_hcd(ehci), urb);
1976 struct urb *urb
1980 dma_addr_t dma = urb->transfer_dma;
1983 iso_sched->span = urb->number_of_packets * stream->ps.period;
1988 for (i = 0; i < urb->number_of_packets; i++) {
1994 length = urb->iso_frame_desc[i].length & 0x03ff;
1995 buf = dma + urb->iso_frame_desc[i].offset;
1998 if (((i + 1) == urb->number_of_packets)
1999 && !(urb->transfer_flags & URB_NO_INTERRUPT))
2024 struct urb *urb,
2034 iso_sched = iso_sched_alloc(urb->number_of_packets, mem_flags);
2038 sitd_sched_init(ehci, iso_sched, stream, urb);
2042 for (i = 0; i < urb->number_of_packets; i++) {
2080 urb->hcpriv = iso_sched;
2081 urb->error_count = 0;
2130 /* fit urb's sitds into the selected schedule slot; activate as needed */
2133 struct urb *urb,
2140 struct ehci_iso_sched *sched = urb->hcpriv;
2159 packet < urb->number_of_packets;
2171 sitd->urb = urb;
2183 urb->hcpriv = stream;
2194 /* Process and recycle a completed SITD. Return true iff its urb completed,
2206 struct urb *urb = sitd->urb;
2214 desc = &urb->iso_frame_desc[urb_index];
2219 urb->error_count++;
2221 desc->status = usb_pipein(urb->pipe)
2230 urb->error_count++;
2234 urb->actual_length += desc->actual_length;
2238 if ((urb_index + 1) != urb->number_of_packets)
2242 * ASSERT: it's really the last sitd for this urb
2244 * BUG_ON(sitd->urb == urb);
2247 /* give urb back to the driver; completion often (re)submits */
2248 ehci_urb_done(ehci, urb, 0);
2250 urb = NULL;
2266 sitd->urb = NULL;
2282 static int sitd_submit(struct ehci_hcd *ehci, struct urb *urb,
2290 stream = iso_stream_find(ehci, urb);
2295 if (urb->interval != stream->ps.period) {
2297 stream->ps.period, urb->interval);
2304 urb, urb->dev->devpath,
2305 usb_pipeendpoint(urb->pipe),
2306 usb_pipein(urb->pipe) ? "in" : "out",
2307 urb->transfer_buffer_length);
2311 status = sitd_urb_transaction(stream, ehci, urb, mem_flags);
2323 status = usb_hcd_link_urb_to_ep(ehci_to_hcd(ehci), urb);
2326 status = iso_stream_schedule(ehci, urb, stream);
2328 sitd_link_urb(ehci, urb, ehci->periodic_size << 3, stream);
2331 ehci_urb_done(ehci, urb, 0);
2333 usb_hcd_unlink_urb_from_ep(ehci_to_hcd(ehci), urb);