td = td_next;
}
}
-
-
-/*-------------------------------------------------------------------------*/
-
-#ifdef CONFIG_KDB_USB
-static void
-dl_done_list_kdb (struct ohci_hcd *ohci, struct urb *kdburb)
-{
- struct td *td = dl_reverse_done_list (ohci);
-
- while (td) {
- struct td *td_next = td->next_dl_td;
- struct urb *urb = td->urb;
- urb_priv_t *urb_priv = urb->hcpriv;
- struct ed *ed = td->ed;
-
- if (urb != kdburb) {
- td = td_next;
- continue;
- }
-
- /* update URB's length and status from TD */
- td_done (ohci, urb, td);
- urb_priv->td_cnt++;
-
- /* If all this urb's TDs are done, just resubmit it */
- if (urb_priv->td_cnt == urb_priv->length) {
- urb->actual_length = 0;
- urb->status = -EINPROGRESS;
- td_submit_urb (ohci, urb);
- }
-
- /* clean schedule: unlink EDs that are no longer busy */
- if (list_empty (&ed->td_list)) {
- if (ed->state == ED_OPER)
- start_ed_unlink (ohci, ed);
-
- /* ... reenabling halted EDs only after fault cleanup */
- } else if ((ed->hwINFO & cpu_to_hc32 (ohci, ED_SKIP | ED_DEQUEUE))
- == cpu_to_hc32 (ohci, ED_SKIP)) {
- td = list_entry (ed->td_list.next, struct td, td_list);
- if (!(td->hwINFO & cpu_to_hc32 (ohci, TD_DONE))) {
- ed->hwINFO &= ~cpu_to_hc32 (ohci, ED_SKIP);
- /* ... hc may need waking-up */
- switch (ed->type) {
- case PIPE_CONTROL:
- ohci_writel (ohci, OHCI_CLF,
- &ohci->regs->cmdstatus);
- break;
- case PIPE_BULK:
- ohci_writel (ohci, OHCI_BLF,
- &ohci->regs->cmdstatus);
- break;
- }
- }
- }
-
- td = td_next;
- }
-}
-
-#endif /* CONFIG_KDB_USB */