Lines Matching refs:td
19 struct td *td; in urb_free_priv() local
22 td = urb_priv->td [i]; in urb_free_priv()
23 if (td) in urb_free_priv()
24 td_free (hc, td); in urb_free_priv()
411 struct td *td; in ed_get() local
422 td = td_alloc (ohci, GFP_ATOMIC); in ed_get()
423 if (!td) { in ed_get()
429 ed->dummy = td; in ed_get()
430 ed->hwTailP = cpu_to_hc32 (ohci, td->td_dma); in ed_get()
517 struct td *td, *td_pt; in td_fill() local
540 td_pt = urb_priv->td [index]; in td_fill()
543 td = urb_priv->td [index] = urb_priv->ed->dummy; in td_fill()
546 td->ed = urb_priv->ed; in td_fill()
547 td->next_dl_td = NULL; in td_fill()
548 td->index = index; in td_fill()
549 td->urb = urb; in td_fill()
550 td->data_dma = data; in td_fill()
554 td->hwINFO = cpu_to_hc32 (ohci, info); in td_fill()
556 td->hwCBP = cpu_to_hc32 (ohci, data & 0xFFFFF000); in td_fill()
557 *ohci_hwPSWp(ohci, td, 0) = cpu_to_hc16 (ohci, in td_fill()
560 td->hwCBP = cpu_to_hc32 (ohci, data); in td_fill()
563 td->hwBE = cpu_to_hc32 (ohci, data + len - 1); in td_fill()
565 td->hwBE = 0; in td_fill()
566 td->hwNextTD = cpu_to_hc32 (ohci, td_pt->td_dma); in td_fill()
569 list_add_tail (&td->td_list, &td->ed->td_list); in td_fill()
572 hash = TD_HASH_FUNC (td->td_dma); in td_fill()
573 td->td_hash = ohci->td_hash [hash]; in td_fill()
574 ohci->td_hash [hash] = td; in td_fill()
578 td->ed->hwTailP = td->hwNextTD; in td_fill()
753 static int td_done(struct ohci_hcd *ohci, struct urb *urb, struct td *td) in td_done() argument
755 u32 tdINFO = hc32_to_cpup (ohci, &td->hwINFO); in td_done()
759 list_del (&td->td_list); in td_done()
763 u16 tdPSW = ohci_hwPSW(ohci, td, 0); in td_done()
775 dlen = urb->iso_frame_desc [td->index].length; in td_done()
783 urb->iso_frame_desc [td->index].actual_length = dlen; in td_done()
784 urb->iso_frame_desc [td->index].status = cc_to_error [cc]; in td_done()
789 urb, td, 1 + td->index, dlen, cc); in td_done()
797 u32 tdBE = hc32_to_cpup (ohci, &td->hwBE); in td_done()
809 if ((type != PIPE_CONTROL || td->index != 0) && tdBE != 0) { in td_done()
810 if (td->hwCBP == 0) in td_done()
811 urb->actual_length += tdBE - td->data_dma + 1; in td_done()
814 hc32_to_cpup (ohci, &td->hwCBP) in td_done()
815 - td->data_dma; in td_done()
821 urb, td, 1 + td->index, cc, in td_done()
830 static void ed_halted(struct ohci_hcd *ohci, struct td *td, int cc) in ed_halted() argument
832 struct urb *urb = td->urb; in ed_halted()
834 struct ed *ed = td->ed; in ed_halted()
835 struct list_head *tmp = td->td_list.next; in ed_halted()
850 struct td *next; in ed_halted()
852 next = list_entry (tmp, struct td, td_list); in ed_halted()
890 hc32_to_cpu (ohci, td->hwINFO), in ed_halted()
896 static void add_to_done_list(struct ohci_hcd *ohci, struct td *td) in add_to_done_list() argument
898 struct td *td2, *td_prev; in add_to_done_list()
901 if (td->next_dl_td) in add_to_done_list()
905 ed = td->ed; in add_to_done_list()
906 td2 = td_prev = td; in add_to_done_list()
923 ohci->dl_end = td->next_dl_td = td; in add_to_done_list()
935 struct td *td = NULL; in update_done_list() local
947 td = dma_to_td (ohci, td_dma); in update_done_list()
948 if (!td) { in update_done_list()
953 td->hwINFO |= cpu_to_hc32 (ohci, TD_DONE); in update_done_list()
954 cc = TD_CC_GET (hc32_to_cpup (ohci, &td->hwINFO)); in update_done_list()
961 && (td->ed->hwHeadP & cpu_to_hc32 (ohci, ED_H))) in update_done_list()
962 ed_halted(ohci, td, cc); in update_done_list()
964 td_dma = hc32_to_cpup (ohci, &td->hwNextTD); in update_done_list()
965 add_to_done_list(ohci, td); in update_done_list()
993 struct td *td; in finish_unlinks() local
996 td = list_first_entry(&ed->td_list, struct td, td_list); in finish_unlinks()
1000 if (td->td_dma != head && in finish_unlinks()
1005 if (td->next_dl_td) in finish_unlinks()
1033 struct td *td; in finish_unlinks() local
1039 td = list_entry (entry, struct td, td_list); in finish_unlinks()
1040 urb = td->urb; in finish_unlinks()
1041 urb_priv = td->urb->hcpriv; in finish_unlinks()
1044 prev = &td->hwNextTD; in finish_unlinks()
1050 *prev = td->hwNextTD | savebits; in finish_unlinks()
1057 tdINFO = hc32_to_cpup(ohci, &td->hwINFO); in finish_unlinks()
1064 td_done (ohci, urb, td); in finish_unlinks()
1144 static void takeback_td(struct ohci_hcd *ohci, struct td *td) in takeback_td() argument
1146 struct urb *urb = td->urb; in takeback_td()
1148 struct ed *ed = td->ed; in takeback_td()
1152 status = td_done(ohci, urb, td); in takeback_td()
1167 td = list_entry(ed->td_list.next, struct td, td_list); in takeback_td()
1168 if (!(td->hwINFO & cpu_to_hc32(ohci, TD_DONE))) { in takeback_td()
1194 struct td *td; in process_done_list() local
1197 td = ohci->dl_start; in process_done_list()
1198 if (td == ohci->dl_end) in process_done_list()
1201 ohci->dl_start = td->next_dl_td; in process_done_list()
1203 takeback_td(ohci, td); in process_done_list()