Lines Matching defs:xfer

513 	std->xfer = NULL;
539 ohci_alloc_std_chain(ohci_softc_t *sc, struct usbd_xfer *xfer, int length, int rd)
541 struct ohci_xfer *ox = OHCI_XFER2OXFER(xfer);
542 uint16_t flags = xfer->ux_flags;
547 xfer->ux_pipe->up_dev->ud_addr,
548 UE_GET_ADDR(xfer->ux_pipe->up_endpoint->ue_edesc->bEndpointAddress),
549 length, xfer->ux_pipe->up_dev->ud_speed);
560 DPRINTFN(8, "xfer %#jx nstd %jd", (uintptr_t)xfer, nstd, 0, 0);
569 cur->xfer = xfer;
571 DPRINTFN(10, "xfer=%#jx new std=%#jx held at %#jx", (uintptr_t)ox,
601 ohci_reset_std_chain(ohci_softc_t *sc, struct usbd_xfer *xfer,
604 struct ohci_xfer *ox = OHCI_XFER2OXFER(xfer);
607 usb_dma_t *dma = &xfer->ux_dmabuf;
608 uint16_t flags = xfer->ux_flags;
616 xfer->ux_pipe->up_dev->ud_addr,
617 UE_GET_ADDR(xfer->ux_pipe->up_endpoint->ue_edesc->bEndpointAddress),
618 alen, xfer->ux_pipe->up_dev->ud_speed);
622 int mps = UGETW(xfer->ux_pipe->up_endpoint->ue_edesc->wMaxPacketSize);
681 cur->xfer = xfer;
697 HTOO32(xfer->ux_flags & USBD_SHORT_XFER_OK ? OHCI_TD_R : 0);
718 cur->xfer = xfer;
721 DPRINTFN(2, "add 0 xfer", 0, 0, 0, 0);
772 sitd->xfer = NULL;
1116 struct usbd_xfer *xfer;
1118 xfer = pool_cache_get(sc->sc_xferpool, PR_WAITOK);
1119 if (xfer != NULL) {
1120 memset(xfer, 0, sizeof(struct ohci_xfer));
1123 xfer->ux_state = XFER_BUSY;
1126 return xfer;
1130 ohci_freex(struct usbd_bus *bus, struct usbd_xfer *xfer)
1134 KASSERTMSG(xfer->ux_state == XFER_BUSY ||
1135 xfer->ux_status == USBD_NOT_STARTED,
1136 "xfer=%p not busy, 0x%08x\n", xfer, xfer->ux_state);
1138 xfer->ux_state = XFER_FREE;
1140 pool_cache_put(sc->sc_xferpool, xfer);
1364 DPRINTFN(10, "SF %#jx xfer %#jx", (uintptr_t)sc,
1448 struct usbd_xfer *xfer;
1529 xfer = std->xfer;
1530 DPRINTFN(10, "std=%#jx xfer=%#jx hcpriv=%#jx dnext=%#jx",
1531 (uintptr_t)std, (uintptr_t)xfer,
1532 (uintptr_t)(xfer ? xfer->ux_hcpriv : 0), (uintptr_t)stdnext);
1533 if (xfer == NULL) {
1535 * xfer == NULL: There seems to be no xfer associated
1543 * Try to claim this xfer for completion. If it has
1546 if (!usbd_xfer_trycomplete(xfer))
1555 xfer->ux_actlen += len;
1561 xfer->ux_status = USBD_NORMAL_COMPLETION;
1562 usb_transfer_complete(xfer);
1571 opipe = OHCI_PIPE2OPIPE(xfer->ux_pipe);
1575 /* remove xfer's TDs from the hash */
1576 for (p = std; p->xfer == xfer; p = n) {
1594 xfer->ux_status = USBD_NORMAL_COMPLETION;
1596 xfer->ux_status = USBD_STALLED;
1598 xfer->ux_status = USBD_IOERROR;
1599 usb_transfer_complete(xfer);
1612 xfer = sitd->xfer;
1614 DPRINTFN(1, "sitd=%#jx xfer=%#jx hcpriv=%#jx", (uintptr_t)sitd,
1615 (uintptr_t)xfer, (uintptr_t)(xfer ? xfer->ux_hcpriv : 0),
1617 if (xfer == NULL)
1621 * Try to claim this xfer for completion. If it has
1624 if (!usbd_xfer_trycomplete(xfer))
1634 opipe = OHCI_PIPE2OPIPE(xfer->ux_pipe);
1635 opipe->isoc.inuse -= xfer->ux_nframes;
1636 uedir = UE_GET_DIR(xfer->ux_pipe->up_endpoint->ue_edesc->
1638 xfer->ux_status = USBD_NORMAL_COMPLETION;
1640 for (i = 0, sitd = xfer->ux_hcpriv;;
1649 xfer->ux_status = USBD_IOERROR;
1653 xfer->ux_status == USBD_NORMAL_COMPLETION) {
1665 xfer->ux_frlengths[i] = len;
1676 xfer->ux_status == USBD_NORMAL_COMPLETION)
1677 xfer->ux_actlen = actlen;
1678 xfer->ux_hcpriv = NULL;
1680 usb_transfer_complete(xfer);
1689 ohci_device_ctrl_done(struct usbd_xfer *xfer)
1691 struct ohci_pipe *opipe = OHCI_PIPE2OPIPE(xfer->ux_pipe);
1692 ohci_softc_t *sc __diagused = OHCI_XFER2SC(xfer);
1693 int len = UGETW(xfer->ux_request.wLength);
1694 int isread = (xfer->ux_request.bmRequestType & UT_READ);
1697 DPRINTFN(10, "xfer=%#jx", (uintptr_t)xfer, 0, 0, 0);
1700 KASSERT(xfer->ux_rqflags & URQ_REQUEST);
1703 usb_syncmem(&xfer->ux_dmabuf, 0, len,
1710 ohci_device_intr_done(struct usbd_xfer *xfer)
1712 ohci_softc_t *sc __diagused = OHCI_XFER2SC(xfer);
1714 (UE_GET_DIR(xfer->ux_pipe->up_endpoint->ue_edesc->bEndpointAddress) == UE_DIR_IN);
1717 DPRINTFN(10, "xfer=%#jx, actlen=%jd", (uintptr_t)xfer,
1718 xfer->ux_actlen, 0, 0);
1722 usb_syncmem(&xfer->ux_dmabuf, 0, xfer->ux_length,
1727 ohci_device_bulk_done(struct usbd_xfer *xfer)
1729 ohci_softc_t *sc __diagused = OHCI_XFER2SC(xfer);
1732 (UE_GET_DIR(xfer->ux_pipe->up_endpoint->ue_edesc->bEndpointAddress) == UE_DIR_IN);
1737 DPRINTFN(10, "xfer=%#jx, actlen=%jd", (uintptr_t)xfer, xfer->ux_actlen,
1739 usb_syncmem(&xfer->ux_dmabuf, 0, xfer->ux_length,
1759 ohci_rhsc(ohci_softc_t *sc, struct usbd_xfer *xfer)
1769 DPRINTF("sc=%#jx xfer=%#jx hstatus=0x%08jx", (uintptr_t)sc,
1770 (uintptr_t)xfer, hstatus, 0);
1772 if (xfer == NULL) {
1776 KASSERT(xfer == sc->sc_intrxfer);
1777 KASSERT(xfer->ux_status == USBD_IN_PROGRESS);
1779 p = xfer->ux_buf;
1780 m = uimin(sc->sc_noport, xfer->ux_length * 8 - 1);
1781 memset(p, 0, xfer->ux_length);
1788 KASSERT(xfer->ux_status == USBD_IN_PROGRESS);
1789 xfer->ux_actlen = xfer->ux_length;
1790 xfer->ux_status = USBD_NORMAL_COMPLETION;
1792 usb_transfer_complete(xfer);
1796 ohci_root_intr_done(struct usbd_xfer *xfer)
1798 ohci_softc_t *sc = OHCI_XFER2SC(xfer);
1802 /* Claim the xfer so it doesn't get completed again. */
1803 KASSERT(sc->sc_intrxfer == xfer);
1804 KASSERT(xfer->ux_status != USBD_IN_PROGRESS);
2261 ohci_abortx(struct usbd_xfer *xfer)
2264 struct ohci_pipe *opipe = OHCI_PIPE2OPIPE(xfer->ux_pipe);
2265 ohci_softc_t *sc = OHCI_XFER2SC(xfer);
2271 DPRINTF("xfer=%#jx pipe=%#jx sed=%#jx", (uintptr_t)xfer,
2277 KASSERTMSG((xfer->ux_status == USBD_CANCELLED ||
2278 xfer->ux_status == USBD_TIMEOUT),
2279 "bad abort status: %d", xfer->ux_status);
2286 DPRINTFN(4, "xfer %#jx dying %ju", (uintptr_t)xfer,
2287 xfer->ux_status, 0, 0);
2309 DPRINTFN(10, "SF %#jx xfer %#jx", (uintptr_t)sc,
2310 (uintptr_t)xfer, 0, 0);
2312 struct ohci_xfer *ox = OHCI_XFER2OXFER(xfer);
2329 DPRINTFN(10, "SF %#jx xfer %#jx intrs %#x",
2330 (uintptr_t)sc, (uintptr_t)xfer,
2340 * HC Step 3: Remove any vestiges of the xfer from the hardware.
2343 * 1) the hardware may have executed beyond the xfer we're trying to
2344 * abort. So as we're scanning the TDs of this xfer we check if
2351 p = xfer->ux_hcpriv;
2371 for (; p->xfer == xfer; p = n) {
2383 DPRINTFN(10, "xfer=%#jx has been touched by HC", (uintptr_t)p,
2397 DPRINTFN(4, "xfer %#jx dying %ju", (uintptr_t)xfer,
2398 xfer->ux_status, 0, 0);
2406 std->xfer = xfer;
2409 /* Zap headp register if hardware pointed inside the xfer. */
2634 ohci_root_intr_transfer(struct usbd_xfer *xfer)
2638 return ohci_root_intr_start(SIMPLEQ_FIRST(&xfer->ux_pipe->up_queue));
2642 ohci_root_intr_start(struct usbd_xfer *xfer)
2644 ohci_softc_t *sc = OHCI_XFER2SC(xfer);
2652 sc->sc_intrxfer = xfer;
2653 xfer->ux_status = USBD_IN_PROGRESS;
2660 ohci_root_intr_abort(struct usbd_xfer *xfer)
2662 ohci_softc_t *sc = OHCI_XFER2SC(xfer);
2665 KASSERT(xfer->ux_pipe->up_intrxfer == xfer);
2667 /* If xfer has already completed, nothing to do here. */
2675 KASSERT(sc->sc_intrxfer == xfer);
2676 KASSERT(xfer->ux_status == USBD_IN_PROGRESS);
2677 xfer->ux_status = USBD_CANCELLED;
2678 usb_transfer_complete(xfer);
2692 * Caller must guarantee the xfer has completed first, by
2701 ohci_device_ctrl_init(struct usbd_xfer *xfer)
2703 struct ohci_xfer *ox = OHCI_XFER2OXFER(xfer);
2704 usb_device_request_t *req = &xfer->ux_request;
2705 ohci_softc_t *sc = OHCI_XFER2SC(xfer);
2708 int len = xfer->ux_bufsize;
2728 DPRINTFN(10, "xfer=%#jx setup=%#jx held at %#jx", (uintptr_t)ox,
2730 DPRINTFN(10, "xfer=%#jx stat= %#jx held at %#jx", (uintptr_t)ox,
2735 err = ohci_alloc_std_chain(sc, xfer, len, isread);
2751 ohci_device_ctrl_fini(struct usbd_xfer *xfer)
2753 struct ohci_xfer *ox = OHCI_XFER2OXFER(xfer);
2754 ohci_softc_t *sc = OHCI_XFER2SC(xfer);
2755 struct ohci_pipe *opipe = OHCI_PIPE2OPIPE(xfer->ux_pipe);
2758 DPRINTFN(8, "xfer %#jx nstd %jd", (uintptr_t)xfer, ox->ox_nstd, 0, 0);
2780 ohci_device_ctrl_transfer(struct usbd_xfer *xfer)
2784 return ohci_device_ctrl_start(SIMPLEQ_FIRST(&xfer->ux_pipe->up_queue));
2788 ohci_device_ctrl_start(struct usbd_xfer *xfer)
2790 ohci_softc_t *sc = OHCI_XFER2SC(xfer);
2791 struct ohci_xfer *ox = OHCI_XFER2OXFER(xfer);
2792 struct ohci_pipe *opipe = OHCI_PIPE2OPIPE(xfer->ux_pipe);
2793 usb_device_request_t *req = &xfer->ux_request;
2807 KASSERT(xfer->ux_rqflags & URQ_REQUEST);
2812 DPRINTF("xfer=%#jx len=%jd, addr=%jd, endpt=%jd", (uintptr_t)xfer, len,
2827 DPRINTFN(10, "xfer=%#jx new setup=%#jx held at %#jx", (uintptr_t)ox,
2837 DPRINTFN(10, "xfer=%#jx new tail=%#jx held at %#jx", (uintptr_t)ox,
2858 ohci_reset_std_chain(sc, xfer, len, isread, next, &end);
2866 usb_syncmem(&xfer->ux_dmabuf, 0, len,
2898 setup->xfer = xfer;
2902 xfer->ux_hcpriv = setup;
2918 stat->xfer = xfer;
2926 tail->xfer = NULL;
2947 xfer->ux_status = USBD_IN_PROGRESS;
2948 usbd_xfer_schedule_timeout(xfer);
2957 ohci_device_ctrl_abort(struct usbd_xfer *xfer)
2959 ohci_softc_t *sc __diagused = OHCI_XFER2SC(xfer);
2964 DPRINTF("xfer=%#jx", (uintptr_t)xfer, 0, 0, 0);
2965 usbd_xfer_abort(xfer);
3011 ohci_device_bulk_init(struct usbd_xfer *xfer)
3013 ohci_softc_t *sc = OHCI_XFER2SC(xfer);
3014 int len = xfer->ux_bufsize;
3015 int endpt = xfer->ux_pipe->up_endpoint->ue_edesc->bEndpointAddress;
3021 KASSERT(!(xfer->ux_rqflags & URQ_REQUEST));
3023 DPRINTFN(4, "xfer=%#jx len=%jd isread=%jd flags=%jd", (uintptr_t)xfer,
3024 len, isread, xfer->ux_flags);
3028 err = ohci_alloc_std_chain(sc, xfer, len, isread);
3036 ohci_device_bulk_fini(struct usbd_xfer *xfer)
3038 ohci_softc_t *sc = OHCI_XFER2SC(xfer);
3039 struct ohci_xfer *ox = OHCI_XFER2OXFER(xfer);
3040 struct ohci_pipe *opipe = OHCI_PIPE2OPIPE(xfer->ux_pipe);
3043 DPRINTFN(8, "xfer %#jx nstd %jd", (uintptr_t)xfer, ox->ox_nstd, 0, 0);
3062 ohci_device_bulk_transfer(struct usbd_xfer *xfer)
3066 return ohci_device_bulk_start(SIMPLEQ_FIRST(&xfer->ux_pipe->up_queue));
3070 ohci_device_bulk_start(struct usbd_xfer *xfer)
3072 struct ohci_xfer *ox = OHCI_XFER2OXFER(xfer);
3073 struct ohci_pipe *opipe = OHCI_PIPE2OPIPE(xfer->ux_pipe);
3074 ohci_softc_t *sc = OHCI_XFER2SC(xfer);
3087 KASSERT(!(xfer->ux_rqflags & URQ_REQUEST));
3089 len = xfer->ux_length;
3090 endpt = xfer->ux_pipe->up_endpoint->ue_edesc->bEndpointAddress;
3094 DPRINTFN(4, "xfer=%#jx len=%jd isread=%jd flags=%jd", (uintptr_t)xfer,
3095 len, isread, xfer->ux_flags);
3106 ohci_reset_std_chain(sc, xfer, len, isread, data, &last);
3107 DPRINTFN(10, "xfer=%#jx new data=%#jx held at %#jx",
3115 tail->xfer = NULL;
3116 DPRINTFN(10, "xfer=%#jx new tail=%#jx held at %#ux",
3120 xfer->ux_hcpriv = data;
3122 DPRINTFN(8, "xfer %#jx data %#jx tail %#jx", (uintptr_t)xfer,
3153 KASSERT(tdp->xfer == xfer);
3162 xfer->ux_status = USBD_IN_PROGRESS;
3163 usbd_xfer_schedule_timeout(xfer);
3169 ohci_device_bulk_abort(struct usbd_xfer *xfer)
3171 ohci_softc_t *sc __diagused = OHCI_XFER2SC(xfer);
3177 DPRINTF("xfer=%#jx", (uintptr_t)xfer, 0, 0, 0);
3178 usbd_xfer_abort(xfer);
3202 ohci_device_intr_init(struct usbd_xfer *xfer)
3204 struct ohci_xfer *ox = OHCI_XFER2OXFER(xfer);
3205 ohci_softc_t *sc = OHCI_XFER2SC(xfer);
3206 int len = xfer->ux_bufsize;
3207 int endpt = xfer->ux_pipe->up_endpoint->ue_edesc->bEndpointAddress;
3213 KASSERT(!(xfer->ux_rqflags & URQ_REQUEST));
3216 DPRINTFN(4, "xfer=%#jx len=%jd isread=%jd flags=%jd", (uintptr_t)xfer,
3217 len, isread, xfer->ux_flags);
3222 err = ohci_alloc_std_chain(sc, xfer, len, isread);
3231 ohci_device_intr_fini(struct usbd_xfer *xfer)
3233 ohci_softc_t *sc = OHCI_XFER2SC(xfer);
3234 struct ohci_xfer *ox = OHCI_XFER2OXFER(xfer);
3235 struct ohci_pipe *opipe = OHCI_PIPE2OPIPE(xfer->ux_pipe);
3238 DPRINTFN(8, "xfer %#jx nstd %jd", (uintptr_t)xfer, ox->ox_nstd, 0, 0);
3257 ohci_device_intr_transfer(struct usbd_xfer *xfer)
3261 return ohci_device_intr_start(SIMPLEQ_FIRST(&xfer->ux_pipe->up_queue));
3265 ohci_device_intr_start(struct usbd_xfer *xfer)
3267 struct ohci_xfer *ox = OHCI_XFER2OXFER(xfer);
3268 struct ohci_pipe *opipe = OHCI_PIPE2OPIPE(xfer->ux_pipe);
3269 ohci_softc_t *sc = OHCI_XFER2SC(xfer);
3281 DPRINTFN(3, "xfer=%#jx len=%jd flags=%jd priv=%#jx", (uintptr_t)xfer,
3282 xfer->ux_length, xfer->ux_flags, (uintptr_t)xfer->ux_priv);
3284 KASSERT(!(xfer->ux_rqflags & URQ_REQUEST));
3286 len = xfer->ux_length;
3287 endpt = xfer->ux_pipe->up_endpoint->ue_edesc->bEndpointAddress;
3298 ohci_reset_std_chain(sc, xfer, len, isread, data, &last);
3299 DPRINTFN(10, "xfer=%#jx new data=%#jx held at %#jx",
3307 tail->xfer = NULL;
3308 DPRINTFN(10, "xfer=%#jx new tail=%#jx held at %#jx",
3312 xfer->ux_hcpriv = data;
3345 xfer->ux_status = USBD_IN_PROGRESS;
3352 ohci_device_intr_abort(struct usbd_xfer *xfer)
3354 ohci_softc_t *sc __diagused = OHCI_XFER2SC(xfer);
3358 usbd_xfer_abort(xfer);
3483 ohci_device_isoc_init(struct usbd_xfer *xfer)
3485 struct ohci_xfer *ox = OHCI_XFER2OXFER(xfer);
3486 ohci_softc_t *sc = OHCI_XFER2SC(xfer);
3493 DPRINTFN(1, "xfer %#jx len %jd flags %jd", (uintptr_t)xfer,
3494 xfer->ux_length, xfer->ux_flags, 0);
3496 const size_t nfsitd = howmany(xfer->ux_nframes, OHCI_ITD_NOFFSET);
3497 const size_t nbsitd = xfer->ux_bufsize / OHCI_PAGE_SIZE;
3513 sitd->xfer = xfer;
3515 // DPRINTFN(10, "xfer=%#jx new tail=%#jx held at %#jx",
3528 ohci_device_isoc_fini(struct usbd_xfer *xfer)
3530 struct ohci_xfer *ox = OHCI_XFER2OXFER(xfer);
3531 ohci_softc_t *sc = OHCI_XFER2SC(xfer);
3532 struct ohci_pipe *opipe = OHCI_PIPE2OPIPE(xfer->ux_pipe);
3552 ohci_device_isoc_transfer(struct usbd_xfer *xfer)
3556 DPRINTFN(5, "xfer=%#jx", (uintptr_t)xfer, 0, 0, 0);
3559 ohci_device_isoc_enter(xfer);
3566 ohci_device_isoc_enter(struct usbd_xfer *xfer)
3568 struct ohci_xfer *ox = OHCI_XFER2OXFER(xfer);
3569 struct ohci_pipe *opipe = OHCI_PIPE2OPIPE(xfer->ux_pipe);
3570 ohci_softc_t *sc = OHCI_XFER2SC(xfer);
3578 DPRINTFN(5, "xfer=%#jx", (uintptr_t)xfer, 0, 0, 0);
3587 DPRINTFN(1, "used=%jd next=%jd xfer=%#jx nframes=%jd",
3588 isoc->inuse, isoc->next, (uintptr_t)xfer, xfer->ux_nframes);
3591 (UE_GET_DIR(xfer->ux_pipe->up_endpoint->ue_edesc->bEndpointAddress) == UE_DIR_IN);
3593 if (xfer->ux_length)
3594 usb_syncmem(&xfer->ux_dmabuf, 0, xfer->ux_length,
3613 buf = DMAADDR(&xfer->ux_dmabuf, 0);
3619 nframes = xfer->ux_nframes;
3620 xfer->ux_hcpriv = sitd;
3623 frlen = xfer->ux_frlengths[i];
3626 xfer->ux_frlengths[i], 0);
3635 buf = DMAADDR(&xfer->ux_dmabuf, boff);
3638 ohci_physaddr_t nend = DMAADDR(&xfer->ux_dmabuf, boff - 1);
3666 sitd->xfer = xfer;
3691 tail->xfer = NULL;
3706 sitd->xfer = xfer;
3719 xfer->ux_actlen = offs;
3720 xfer->ux_status = USBD_IN_PROGRESS;
3730 ohci_dump_itds(sc, xfer->ux_hcpriv);
3744 ohci_device_isoc_abort(struct usbd_xfer *xfer)
3746 struct ohci_pipe *opipe = OHCI_PIPE2OPIPE(xfer->ux_pipe);
3747 ohci_softc_t *sc = OHCI_XFER2SC(xfer);
3752 DPRINTFN(1, "xfer=%#jx", (uintptr_t)xfer, 0, 0, 0);
3757 if (xfer->ux_status != USBD_NOT_STARTED &&
3758 xfer->ux_status != USBD_IN_PROGRESS) {
3763 /* Give xfer the requested abort code. */
3764 xfer->ux_status = USBD_CANCELLED;
3774 sitd = xfer->ux_hcpriv;
3779 for (; sitd->xfer == xfer; sitd = sitd->nextitd) {
3789 usb_transfer_complete(xfer);
3801 ohci_device_isoc_done(struct usbd_xfer *xfer)
3804 DPRINTFN(1, "xfer=%#jx", (uintptr_t)xfer, 0, 0, 0);
3807 (UE_GET_DIR(xfer->ux_pipe->up_endpoint->ue_edesc->bEndpointAddress) == UE_DIR_IN);
3809 DPRINTFN(10, "xfer=%#jx, actlen=%jd", (uintptr_t)xfer, xfer->ux_actlen,
3811 usb_syncmem(&xfer->ux_dmabuf, 0, xfer->ux_length,