Lines Matching refs:urb

41 finish_urb(struct ohci_hcd *ohci, struct urb *urb, int status)
46 struct usb_host_endpoint *ep = urb->ep;
49 // ASSERT (urb->hcpriv != 0);
52 urb_free_priv (ohci, urb->hcpriv);
53 urb->hcpriv = NULL;
57 switch (usb_pipetype (urb->pipe)) {
72 /* urb->complete() can reenter this HCD */
73 usb_hcd_unlink_urb_from_ep(ohci_to_hcd(ohci), urb);
75 usb_hcd_giveback_urb(ohci_to_hcd(ohci), urb, status);
92 urb = list_first_entry(&ep->urb_list, struct urb, urb_list);
93 urb_priv = urb->hcpriv;
518 struct urb *urb, int index)
521 struct urb_priv *urb_priv = urb->hcpriv;
527 /* aim for only one interrupt per urb. mostly applies to control
528 * and iso; other urbs rarely need more than one TD per urb.
535 * interrupts ... increasing per-urb latency by sharing interrupts.
539 || (urb->transfer_flags & URB_NO_INTERRUPT))
552 td->urb = urb;
593 struct urb *urb
595 struct urb_priv *urb_priv = urb->hcpriv;
598 int data_len = urb->transfer_buffer_length;
601 int is_out = usb_pipeout (urb->pipe);
610 if (!usb_gettoggle (urb->dev, usb_pipeendpoint (urb->pipe), is_out)) {
611 usb_settoggle (urb->dev, usb_pipeendpoint (urb->pipe),
618 i = urb->num_mapped_sgs;
620 sg = urb->sg;
624 * urb->transfer_buffer_length may be smaller than the
631 data = urb->transfer_dma;
661 if (!(urb->transfer_flags & URB_SHORT_NOT_OK))
664 td_fill(ohci, info, data, n, urb, cnt);
679 if ((urb->transfer_flags & URB_ZERO_PACKET)
681 td_fill (ohci, info, 0, 0, urb, cnt);
696 td_fill (ohci, info, urb->setup_dma, 8, urb, cnt++);
701 td_fill (ohci, info, data, data_len, urb, cnt++);
706 td_fill (ohci, info, data, 0, urb, cnt++);
717 for (cnt = urb_priv->td_cnt; cnt < urb->number_of_packets;
719 int frame = urb->start_frame;
724 frame += cnt * urb->interval;
727 data + urb->iso_frame_desc [cnt].offset,
728 urb->iso_frame_desc [cnt].length, urb, cnt);
755 /* calculate transfer length/status and update the urb */
756 static int td_done(struct ohci_hcd *ohci, struct urb *urb, struct td *td)
777 if (usb_pipeout (urb->pipe))
778 dlen = urb->iso_frame_desc [td->index].length;
785 urb->actual_length += dlen;
786 urb->iso_frame_desc [td->index].actual_length = dlen;
787 urb->iso_frame_desc [td->index].status = cc_to_error [cc];
791 "urb %p iso td %p (%d) len %d cc %d\n",
792 urb, td, 1 + td->index, dlen, cc);
799 int type = usb_pipetype (urb->pipe);
806 && !(urb->transfer_flags & URB_SHORT_NOT_OK))
814 urb->actual_length += tdBE - td->data_dma + 1;
816 urb->actual_length +=
823 "urb %p td %p (%d) cc %d, len=%d/%d\n",
824 urb, td, 1 + td->index, cc,
825 urb->actual_length,
826 urb->transfer_buffer_length);
835 struct urb *urb = td->urb;
836 urb_priv_t *urb_priv = urb->hcpriv;
842 * until its urb->complete() has a chance to clean up.
848 /* Get rid of all later tds from this urb. We don't have
858 if (next->urb != urb)
862 * this urb had one of them, this td wasn't the last td
880 if ((urb->transfer_flags & URB_SHORT_NOT_OK) == 0)
884 if (usb_pipecontrol (urb->pipe))
889 "urb %p path %s ep%d%s %08x cc %d --> status %d\n",
890 urb, urb->dev->devpath,
891 usb_pipeendpoint (urb->pipe),
892 usb_pipein (urb->pipe) ? "in" : "out",
960 * and dequeue any other TDs from this urb.
1028 * another (earlier) urb
1039 struct urb *urb;
1045 urb = td->urb;
1046 urb_priv = td->urb->hcpriv;
1048 if (!urb->unlinked) {
1069 td_done (ohci, urb, td);
1075 finish_urb(ohci, urb, 0);
1152 struct urb *urb = td->urb;
1153 urb_priv_t *urb_priv = urb->hcpriv;
1158 status = td_done(ohci, urb, td);
1161 /* If all this urb's TDs are done, call complete() */
1163 finish_urb(ohci, urb, status);