Lines Matching refs:td

1737 		struct xhci_td *td, union xhci_trb *event_trb)  in xhci_cleanup_halted_endpoint()  argument
1749 xhci_cleanup_stalled_ring(xhci, ep_index, td); in xhci_cleanup_halted_endpoint()
1801 static int finish_td(struct xhci_hcd *xhci, struct xhci_td *td, in finish_td() argument
1832 ep->stopped_td = td; in finish_td()
1844 ep_ring->stream_id, td, event_trb); in finish_td()
1847 while (ep_ring->dequeue != td->last_trb) in finish_td()
1854 urb = td->urb; in finish_td()
1867 if (td->urb->transfer_flags & URB_SHORT_NOT_OK) in finish_td()
1872 list_del_init(&td->td_list); in finish_td()
1874 if (!list_empty(&td->cancelled_td_list)) in finish_td()
1875 list_del_init(&td->cancelled_td_list); in finish_td()
1896 static int process_ctrl_td(struct xhci_hcd *xhci, struct xhci_td *td, in process_ctrl_td() argument
1920 } else if (event_trb != td->last_trb) { in process_ctrl_td()
1929 if (td->urb->transfer_flags & URB_SHORT_NOT_OK) in process_ctrl_td()
1935 if (event_trb == ep_ring->dequeue || event_trb == td->last_trb) in process_ctrl_td()
1938 td->urb->actual_length = in process_ctrl_td()
1941 return finish_td(xhci, td, event_trb, event, ep, status, false); in process_ctrl_td()
1944 if (event_trb != ep_ring->dequeue && event_trb != td->last_trb) in process_ctrl_td()
1945 td->urb->actual_length = in process_ctrl_td()
1946 td->urb->transfer_buffer_length - in process_ctrl_td()
1950 return finish_td(xhci, td, event_trb, event, ep, status, false); in process_ctrl_td()
1962 event_trb != td->last_trb) in process_ctrl_td()
1963 td->urb->actual_length = in process_ctrl_td()
1964 td->urb->transfer_buffer_length - in process_ctrl_td()
1966 else if (!td->urb_length_set) in process_ctrl_td()
1967 td->urb->actual_length = 0; in process_ctrl_td()
1969 return finish_td(xhci, td, event_trb, event, ep, status, false); in process_ctrl_td()
1977 if (event_trb == td->last_trb) { in process_ctrl_td()
1978 if (td->urb_length_set) { in process_ctrl_td()
1982 (td->urb->transfer_flags in process_ctrl_td()
1988 td->urb->actual_length = in process_ctrl_td()
1989 td->urb->transfer_buffer_length; in process_ctrl_td()
1998 td->urb_length_set = true; in process_ctrl_td()
1999 td->urb->actual_length = in process_ctrl_td()
2000 td->urb->transfer_buffer_length - in process_ctrl_td()
2008 return finish_td(xhci, td, event_trb, event, ep, status, false); in process_ctrl_td()
2014 static int process_isoc_td(struct xhci_hcd *xhci, struct xhci_td *td, in process_isoc_td() argument
2030 urb_priv = td->urb->hcpriv; in process_isoc_td()
2032 frame = &td->urb->iso_frame_desc[idx]; in process_isoc_td()
2046 frame->status = td->urb->transfer_flags & URB_SHORT_NOT_OK ? in process_isoc_td()
2065 if (event_trb != td->last_trb) in process_isoc_td()
2079 td->urb->actual_length += frame->length; in process_isoc_td()
2083 td->urb->actual_length += frame->actual_length; in process_isoc_td()
2097 td->urb->actual_length += len; in process_isoc_td()
2101 return finish_td(xhci, td, event_trb, event, ep, status, false); in process_isoc_td()
2104 static int skip_isoc_td(struct xhci_hcd *xhci, struct xhci_td *td, in skip_isoc_td() argument
2114 urb_priv = td->urb->hcpriv; in skip_isoc_td()
2116 frame = &td->urb->iso_frame_desc[idx]; in skip_isoc_td()
2125 while (ep_ring->dequeue != td->last_trb) in skip_isoc_td()
2129 return finish_td(xhci, td, NULL, event, ep, status, true); in skip_isoc_td()
2135 static int process_bulk_intr_td(struct xhci_hcd *xhci, struct xhci_td *td, in process_bulk_intr_td() argument
2150 if (event_trb != td->last_trb || in process_bulk_intr_td()
2154 if (td->urb->transfer_flags & URB_SHORT_NOT_OK) in process_bulk_intr_td()
2166 if (td->urb->transfer_flags & URB_SHORT_NOT_OK) in process_bulk_intr_td()
2178 td->urb->ep->desc.bEndpointAddress, in process_bulk_intr_td()
2179 td->urb->transfer_buffer_length, in process_bulk_intr_td()
2183 td->urb->actual_length = in process_bulk_intr_td()
2186 if (td->urb->transfer_buffer_length < in process_bulk_intr_td()
2187 td->urb->actual_length) { in process_bulk_intr_td()
2190 td->urb->actual_length = 0; in process_bulk_intr_td()
2194 } else if (event_trb == td->last_trb) { in process_bulk_intr_td()
2196 td->urb->actual_length = in process_bulk_intr_td()
2197 td->urb->transfer_buffer_length - in process_bulk_intr_td()
2199 if (td->urb->transfer_buffer_length < in process_bulk_intr_td()
2200 td->urb->actual_length) { in process_bulk_intr_td()
2204 td->urb->actual_length = 0; in process_bulk_intr_td()
2205 if (td->urb->transfer_flags & URB_SHORT_NOT_OK) in process_bulk_intr_td()
2212 if (td->urb->transfer_flags & URB_SHORT_NOT_OK) in process_bulk_intr_td()
2218 td->urb->actual_length = in process_bulk_intr_td()
2219 td->urb->transfer_buffer_length; in process_bulk_intr_td()
2230 td->urb->actual_length = 0; in process_bulk_intr_td()
2236 td->urb->actual_length += in process_bulk_intr_td()
2243 td->urb->actual_length += in process_bulk_intr_td()
2248 return finish_td(xhci, td, event_trb, event, ep, status, false); in process_bulk_intr_td()
2266 struct xhci_td *td = NULL; in handle_tx_event() local
2467 td = list_entry(ep_ring->td_list.next, struct xhci_td, td_list); in handle_tx_event()
2473 td->last_trb, event_dma, false); in handle_tx_event()
2491 !usb_endpoint_xfer_isoc(&td->urb->ep->desc)) { in handle_tx_event()
2509 ep_ring->dequeue, td->last_trb, in handle_tx_event()
2514 ret = skip_isoc_td(xhci, td, event, ep, &status); in handle_tx_event()
2544 if (usb_endpoint_xfer_control(&td->urb->ep->desc)) in handle_tx_event()
2545 ret = process_ctrl_td(xhci, td, event_trb, event, ep, in handle_tx_event()
2547 else if (usb_endpoint_xfer_isoc(&td->urb->ep->desc)) in handle_tx_event()
2548 ret = process_isoc_td(xhci, td, event_trb, event, ep, in handle_tx_event()
2551 ret = process_bulk_intr_td(xhci, td, event_trb, event, in handle_tx_event()
2569 urb = td->urb; in handle_tx_event()
2900 struct xhci_td *td; in prepare_transfer() local
2918 td = urb_priv->td[td_index]; in prepare_transfer()
2920 INIT_LIST_HEAD(&td->td_list); in prepare_transfer()
2921 INIT_LIST_HEAD(&td->cancelled_td_list); in prepare_transfer()
2929 td->urb = urb; in prepare_transfer()
2931 list_add_tail(&td->td_list, &ep_ring->td_list); in prepare_transfer()
2932 td->start_seg = ep_ring->enq_seg; in prepare_transfer()
2933 td->first_trb = ep_ring->enqueue; in prepare_transfer()
2935 urb_priv->td[td_index] = td; in prepare_transfer()
3090 struct xhci_td *td; in queue_bulk_sg_tx() local
3134 td = urb_priv->td[0]; in queue_bulk_sg_tx()
3184 td->last_trb = ep_ring->enqueue; in queue_bulk_sg_tx()
3188 urb_priv->td[1]->last_trb = ep_ring->enqueue; in queue_bulk_sg_tx()
3260 struct xhci_td *td; in xhci_queue_bulk_tx() local
3319 td = urb_priv->td[0]; in xhci_queue_bulk_tx()
3360 td->last_trb = ep_ring->enqueue; in xhci_queue_bulk_tx()
3364 urb_priv->td[1]->last_trb = ep_ring->enqueue; in xhci_queue_bulk_tx()
3418 struct xhci_td *td; in xhci_queue_ctrl_tx() local
3447 td = urb_priv->td[0]; in xhci_queue_ctrl_tx()
3509 td->last_trb = ep_ring->enqueue; in xhci_queue_ctrl_tx()
3700 struct xhci_td *td; in xhci_queue_isoc_tx() local
3758 td = urb_priv->td[i]; in xhci_queue_isoc_tx()
3807 td->last_trb = ep_ring->enqueue; in xhci_queue_isoc_tx()
3870 list_del_init(&urb_priv->td[i]->td_list); in xhci_queue_isoc_tx()
3877 urb_priv->td[0]->last_trb = ep_ring->enqueue; in xhci_queue_isoc_tx()
3879 td_to_noop(xhci, ep_ring, urb_priv->td[0], true); in xhci_queue_isoc_tx()
3882 ep_ring->enqueue = urb_priv->td[0]->first_trb; in xhci_queue_isoc_tx()
3883 ep_ring->enq_seg = urb_priv->td[0]->start_seg; in xhci_queue_isoc_tx()