Lines Matching full:sitd

20  * It keeps track of every ITD (or SITD) that's linked, and holds enough
28 * @periodic: host pointer to qh/itd/sitd
44 return &periodic->sitd->sitd_next; in periodic_next_shadow()
457 if (same_tt(dev, here.sitd->urb->dev)) { in tt_no_collision()
460 mask = hc32_to_cpu(ehci, here.sitd in tt_no_collision()
467 type = Q_NEXT_TYPE(ehci, here.sitd->hw_next); in tt_no_collision()
468 here = here.sitd->sitd_next; in tt_no_collision()
999 /* ehci_iso_stream ops work with both ITD and SITD */
1040 /* knows about ITD vs SITD */ in iso_stream_init()
1163 /* ehci_iso_sched ops can be ITD-only or SITD-only */
1996 /* figure out per-frame sitd fields that we'll need later in sitd_sched_init()
2039 struct ehci_sitd *sitd; in sitd_urb_transaction() local
2056 * for IN (using sitd->hw_backpointer, like a FSTN), which in sitd_urb_transaction()
2065 sitd = list_first_entry(&stream->free_list, in sitd_urb_transaction()
2067 if (sitd->frame == ehci->now_frame) in sitd_urb_transaction()
2069 list_del(&sitd->sitd_list); in sitd_urb_transaction()
2070 sitd_dma = sitd->sitd_dma; in sitd_urb_transaction()
2074 sitd = dma_pool_alloc(ehci->sitd_pool, mem_flags, in sitd_urb_transaction()
2077 if (!sitd) { in sitd_urb_transaction()
2084 memset(sitd, 0, sizeof(*sitd)); in sitd_urb_transaction()
2085 sitd->sitd_dma = sitd_dma; in sitd_urb_transaction()
2086 sitd->frame = NO_FRAME; in sitd_urb_transaction()
2087 list_add(&sitd->sitd_list, &iso_sched->td_list); in sitd_urb_transaction()
2104 struct ehci_sitd *sitd, in sitd_patch() argument
2112 sitd->hw_next = EHCI_LIST_END(ehci); in sitd_patch()
2113 sitd->hw_fullspeed_ep = stream->address; in sitd_patch()
2114 sitd->hw_uframe = stream->splits; in sitd_patch()
2115 sitd->hw_results = uf->transaction; in sitd_patch()
2116 sitd->hw_backpointer = EHCI_LIST_END(ehci); in sitd_patch()
2119 sitd->hw_buf[0] = cpu_to_hc32(ehci, bufp); in sitd_patch()
2120 sitd->hw_buf_hi[0] = cpu_to_hc32(ehci, bufp >> 32); in sitd_patch()
2122 sitd->hw_buf[1] = cpu_to_hc32(ehci, uf->buf1); in sitd_patch()
2125 sitd->hw_buf_hi[1] = cpu_to_hc32(ehci, bufp >> 32); in sitd_patch()
2126 sitd->index = index; in sitd_patch()
2130 sitd_link(struct ehci_hcd *ehci, unsigned frame, struct ehci_sitd *sitd) in sitd_link() argument
2132 /* note: sitd ordering could matter (CSPLIT then SSPLIT) */ in sitd_link()
2133 sitd->sitd_next = ehci->pshadow[frame]; in sitd_link()
2134 sitd->hw_next = ehci->periodic[frame]; in sitd_link()
2135 ehci->pshadow[frame].sitd = sitd; in sitd_link()
2136 sitd->frame = frame; in sitd_link()
2138 ehci->periodic[frame] = cpu_to_hc32(ehci, sitd->sitd_dma | Q_TYPE_SITD); in sitd_link()
2152 struct ehci_sitd *sitd; in sitd_link_urb() local
2169 for (packet = sched->first_packet, sitd = NULL; in sitd_link_urb()
2178 sitd = list_entry(sched->td_list.next, in sitd_link_urb()
2180 list_move_tail(&sitd->sitd_list, &stream->td_list); in sitd_link_urb()
2181 sitd->stream = stream; in sitd_link_urb()
2182 sitd->urb = urb; in sitd_link_urb()
2184 sitd_patch(ehci, stream, sitd, sched, packet); in sitd_link_urb()
2186 sitd); in sitd_link_urb()
2205 /* Process and recycle a completed SITD. Return true iff its urb completed,
2215 static bool sitd_complete(struct ehci_hcd *ehci, struct ehci_sitd *sitd) in sitd_complete() argument
2217 struct urb *urb = sitd->urb; in sitd_complete()
2221 struct ehci_iso_stream *stream = sitd->stream; in sitd_complete()
2224 urb_index = sitd->index; in sitd_complete()
2226 t = hc32_to_cpup(ehci, &sitd->hw_results); in sitd_complete()
2253 * ASSERT: it's really the last sitd for this urb in sitd_complete()
2254 * list_for_each_entry (sitd, &stream->td_list, sitd_list) in sitd_complete()
2255 * BUG_ON(sitd->urb == urb); in sitd_complete()
2277 sitd->urb = NULL; in sitd_complete()
2280 list_move_tail(&sitd->sitd_list, &stream->free_list); in sitd_complete()
2432 * If this SITD is still active, leave it for in scan_isoc()
2440 && (q.sitd->hw_results & SITD_ACTIVE(ehci))) { in scan_isoc()
2442 q_p = &q.sitd->sitd_next; in scan_isoc()
2443 hw_p = &q.sitd->hw_next; in scan_isoc()
2444 type = Q_NEXT_TYPE(ehci, q.sitd->hw_next); in scan_isoc()
2454 *q_p = q.sitd->sitd_next; in scan_isoc()
2456 q.sitd->hw_next != EHCI_LIST_END(ehci)) in scan_isoc()
2457 *hw_p = q.sitd->hw_next; in scan_isoc()
2460 type = Q_NEXT_TYPE(ehci, q.sitd->hw_next); in scan_isoc()
2462 modified = sitd_complete(ehci, q.sitd); in scan_isoc()