Changeset View
Changeset View
Standalone View
Standalone View
head/sys/dev/usb/controller/ehci.c
Show First 20 Lines • Show All 1,188 Lines • ▼ Show 20 Lines | if (status & EHCI_QTD_HALTED) { | ||||
return (USB_ERR_STALLED); | return (USB_ERR_STALLED); | ||||
} | } | ||||
return (USB_ERR_NORMAL_COMPLETION); | return (USB_ERR_NORMAL_COMPLETION); | ||||
} | } | ||||
static void | static void | ||||
ehci_non_isoc_done(struct usb_xfer *xfer) | ehci_non_isoc_done(struct usb_xfer *xfer) | ||||
{ | { | ||||
ehci_softc_t *sc = EHCI_BUS2SC(xfer->xroot->bus); | |||||
ehci_qh_t *qh; | ehci_qh_t *qh; | ||||
uint32_t status; | |||||
usb_error_t err = 0; | usb_error_t err = 0; | ||||
DPRINTFN(13, "xfer=%p endpoint=%p transfer done\n", | DPRINTFN(13, "xfer=%p endpoint=%p transfer done\n", | ||||
xfer, xfer->endpoint); | xfer, xfer->endpoint); | ||||
#ifdef USB_DEBUG | #ifdef USB_DEBUG | ||||
if (ehcidebug > 10) { | if (ehcidebug > 10) { | ||||
ehci_softc_t *sc = EHCI_BUS2SC(xfer->xroot->bus); | ehci_softc_t *sc = EHCI_BUS2SC(xfer->xroot->bus); | ||||
ehci_dump_sqtds(sc, xfer->td_transfer_first); | ehci_dump_sqtds(sc, xfer->td_transfer_first); | ||||
} | } | ||||
#endif | #endif | ||||
/* extract data toggle directly from the QH's overlay area */ | /* extract data toggle directly from the QH's overlay area */ | ||||
qh = xfer->qh_start[xfer->flags_int.curr_dma_set]; | qh = xfer->qh_start[xfer->flags_int.curr_dma_set]; | ||||
usb_pc_cpu_invalidate(qh->page_cache); | usb_pc_cpu_invalidate(qh->page_cache); | ||||
status = hc32toh(sc, qh->qh_qtd.qtd_status); | |||||
/* reset scanner */ | /* reset scanner */ | ||||
xfer->td_transfer_cache = xfer->td_transfer_first; | xfer->td_transfer_cache = xfer->td_transfer_first; | ||||
if (xfer->flags_int.control_xfr) { | if (xfer->flags_int.control_xfr) { | ||||
if (xfer->flags_int.control_hdr) { | if (xfer->flags_int.control_hdr) { | ||||
▲ Show 20 Lines • Show All 2,748 Lines • Show Last 20 Lines |