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()
413 struct td *td; in ed_get() local
424 td = td_alloc (ohci, GFP_ATOMIC); in ed_get()
425 if (!td) { in ed_get()
431 ed->dummy = td; in ed_get()
432 ed->hwTailP = cpu_to_hc32 (ohci, td->td_dma); in ed_get()
519 struct td *td, *td_pt; in td_fill() local
542 td_pt = urb_priv->td [index]; in td_fill()
545 td = urb_priv->td [index] = urb_priv->ed->dummy; in td_fill()
548 td->ed = urb_priv->ed; in td_fill()
549 td->next_dl_td = NULL; in td_fill()
550 td->index = index; in td_fill()
551 td->urb = urb; in td_fill()
552 td->data_dma = data; in td_fill()
556 td->hwINFO = cpu_to_hc32 (ohci, info); in td_fill()
558 td->hwCBP = cpu_to_hc32 (ohci, data & 0xFFFFF000); in td_fill()
559 *ohci_hwPSWp(ohci, td, 0) = cpu_to_hc16 (ohci, in td_fill()
562 td->hwCBP = cpu_to_hc32 (ohci, data); in td_fill()
565 td->hwBE = cpu_to_hc32 (ohci, data + len - 1); in td_fill()
567 td->hwBE = 0; in td_fill()
568 td->hwNextTD = cpu_to_hc32 (ohci, td_pt->td_dma); in td_fill()
571 list_add_tail (&td->td_list, &td->ed->td_list); in td_fill()
574 hash = TD_HASH_FUNC (td->td_dma); in td_fill()
575 td->td_hash = ohci->td_hash [hash]; in td_fill()
576 ohci->td_hash [hash] = td; in td_fill()
580 td->ed->hwTailP = td->hwNextTD; in td_fill()
755 static int td_done(struct ohci_hcd *ohci, struct urb *urb, struct td *td) in td_done() argument
757 u32 tdINFO = hc32_to_cpup (ohci, &td->hwINFO); in td_done()
761 list_del (&td->td_list); in td_done()
765 u16 tdPSW = ohci_hwPSW(ohci, td, 0); in td_done()
777 dlen = urb->iso_frame_desc [td->index].length; in td_done()
785 urb->iso_frame_desc [td->index].actual_length = dlen; in td_done()
786 urb->iso_frame_desc [td->index].status = cc_to_error [cc]; in td_done()
791 urb, td, 1 + td->index, dlen, cc); in td_done()
799 u32 tdBE = hc32_to_cpup (ohci, &td->hwBE); in td_done()
811 if ((type != PIPE_CONTROL || td->index != 0) && tdBE != 0) { in td_done()
812 if (td->hwCBP == 0) in td_done()
813 urb->actual_length += tdBE - td->data_dma + 1; in td_done()
816 hc32_to_cpup (ohci, &td->hwCBP) in td_done()
817 - td->data_dma; in td_done()
823 urb, td, 1 + td->index, cc, in td_done()
832 static void ed_halted(struct ohci_hcd *ohci, struct td *td, int cc) in ed_halted() argument
834 struct urb *urb = td->urb; in ed_halted()
836 struct ed *ed = td->ed; in ed_halted()
837 struct list_head *tmp = td->td_list.next; in ed_halted()
852 struct td *next; in ed_halted()
854 next = list_entry (tmp, struct td, td_list); in ed_halted()
892 hc32_to_cpu (ohci, td->hwINFO), in ed_halted()
898 static void add_to_done_list(struct ohci_hcd *ohci, struct td *td) in add_to_done_list() argument
900 struct td *td2, *td_prev; in add_to_done_list()
903 if (td->next_dl_td) in add_to_done_list()
907 ed = td->ed; in add_to_done_list()
908 td2 = td_prev = td; in add_to_done_list()
925 ohci->dl_end = td->next_dl_td = td; in add_to_done_list()
937 struct td *td = NULL; in update_done_list() local
949 td = dma_to_td (ohci, td_dma); in update_done_list()
950 if (!td) { in update_done_list()
955 td->hwINFO |= cpu_to_hc32 (ohci, TD_DONE); in update_done_list()
956 cc = TD_CC_GET (hc32_to_cpup (ohci, &td->hwINFO)); in update_done_list()
963 && (td->ed->hwHeadP & cpu_to_hc32 (ohci, ED_H))) in update_done_list()
964 ed_halted(ohci, td, cc); in update_done_list()
966 td_dma = hc32_to_cpup (ohci, &td->hwNextTD); in update_done_list()
967 add_to_done_list(ohci, td); in update_done_list()
995 struct td *td; in finish_unlinks() local
998 td = list_first_entry(&ed->td_list, struct td, td_list); in finish_unlinks()
1002 if (td->td_dma != head && in finish_unlinks()
1007 if (td->next_dl_td) in finish_unlinks()
1037 struct td *td; in finish_unlinks() local
1043 td = list_entry (entry, struct td, td_list); in finish_unlinks()
1044 urb = td->urb; in finish_unlinks()
1045 urb_priv = td->urb->hcpriv; in finish_unlinks()
1048 prev = &td->hwNextTD; in finish_unlinks()
1054 *prev = td->hwNextTD | savebits; in finish_unlinks()
1061 tdINFO = hc32_to_cpup(ohci, &td->hwINFO); in finish_unlinks()
1068 td_done (ohci, urb, td); in finish_unlinks()
1149 static void takeback_td(struct ohci_hcd *ohci, struct td *td) in takeback_td() argument
1151 struct urb *urb = td->urb; in takeback_td()
1153 struct ed *ed = td->ed; in takeback_td()
1157 status = td_done(ohci, urb, td); in takeback_td()
1172 td = list_entry(ed->td_list.next, struct td, td_list); in takeback_td()
1173 if (!(td->hwINFO & cpu_to_hc32(ohci, TD_DONE))) { in takeback_td()
1199 struct td *td; in process_done_list() local
1202 td = ohci->dl_start; in process_done_list()
1203 if (td == ohci->dl_end) in process_done_list()
1206 ohci->dl_start = td->next_dl_td; in process_done_list()
1208 takeback_td(ohci, td); in process_done_list()