Lines Matching defs:xfer
659 struct usbd_xfer *xfer;
661 xfer = pool_cache_get(sc->sc_xferpool, PR_WAITOK);
662 if (xfer != NULL) {
663 memset(xfer, 0, sizeof(struct uhci_xfer));
666 struct uhci_xfer *uxfer = UHCI_XFER2UXFER(xfer);
668 xfer->ux_state = XFER_BUSY;
671 return xfer;
675 uhci_freex(struct usbd_bus *bus, struct usbd_xfer *xfer)
678 struct uhci_xfer *uxfer __diagused = UHCI_XFER2UXFER(xfer);
680 KASSERTMSG(xfer->ux_state == XFER_BUSY ||
681 xfer->ux_status == USBD_NOT_STARTED,
682 "xfer %p state %d\n", xfer, xfer->ux_state);
683 KASSERTMSG(uxfer->ux_isdone || xfer->ux_status == USBD_NOT_STARTED,
684 "xfer %p not done\n", xfer);
686 xfer->ux_state = XFER_FREE;
688 pool_cache_put(sc->sc_xferpool, xfer);
999 struct usbd_xfer *xfer;
1007 * If the intr xfer has completed or been synchronously
1010 xfer = sc->sc_intr_xfer;
1011 if (xfer == NULL)
1013 KASSERT(xfer->ux_status == USBD_IN_PROGRESS);
1016 * If the intr xfer for which we were scheduled is done, and
1017 * another intr xfer has been submitted, let that one be dealt
1037 p = xfer->ux_buf;
1055 * Interrupt completed, and the xfer has not been completed or
1056 * synchronously aborted. Complete the xfer now.
1058 xfer->ux_actlen = 1;
1059 xfer->ux_status = USBD_NORMAL_COMPLETION;
1061 UHCI_XFER2UXFER(xfer)->ux_isdone = true;
1063 usb_transfer_complete(xfer);
1069 uhci_root_intr_done(struct usbd_xfer *xfer)
1071 struct uhci_softc *sc = UHCI_XFER2SC(xfer);
1075 /* Claim the xfer so it doesn't get completed again. */
1076 KASSERT(sc->sc_intr_xfer == xfer);
1077 KASSERT(xfer->ux_status != USBD_IN_PROGRESS);
1494 struct usbd_xfer *xfer = &ux->ux_xfer;
1495 if (xfer->ux_status == USBD_CANCELLED ||
1496 xfer->ux_status == USBD_TIMEOUT) {
1497 DPRINTF("aborted xfer %#jx", (uintptr_t)xfer, 0, 0, 0);
1555 /* If there's an active TD the xfer isn't done. */
1562 /* Any kind of error makes the xfer done. */
1573 UHCI_PIPE2UPIPE(xfer->ux_pipe);
1607 struct usbd_xfer *xfer = &ux->ux_xfer;
1608 uhci_softc_t *sc __diagused = UHCI_XFER2SC(xfer);
1609 struct uhci_pipe *upipe = UHCI_PIPE2UPIPE(xfer->ux_pipe);
1619 * Try to claim this xfer for completion. If it has already
1622 if (!usbd_xfer_trycomplete(xfer))
1634 KASSERTMSG(!ux->ux_isdone, "xfer %p type %d status %d", xfer,
1635 ux->ux_type, xfer->ux_status);
1639 if (xfer->ux_nframes != 0) {
1646 nframes = xfer->ux_nframes;
1667 xfer->ux_frlengths[i] = len;
1671 xfer->ux_actlen = actlen;
1672 xfer->ux_status = USBD_NORMAL_COMPLETION;
1677 DPRINTFN(10, "ux=%#jx, xfer=%#jx, pipe=%#jx ready", (uintptr_t)ux,
1678 (uintptr_t)xfer, (uintptr_t)upipe, 0);
1715 xfer->ux_actlen = actlen;
1720 xfer->ux_pipe->up_dev->ud_addr,
1721 xfer->ux_pipe->up_endpoint->ue_edesc->bEndpointAddress,
1737 xfer->ux_status = USBD_STALLED;
1739 xfer->ux_status = USBD_IOERROR; /* more info XXX */
1741 xfer->ux_status = USBD_NORMAL_COMPLETION;
1977 uhci_alloc_std_chain(uhci_softc_t *sc, struct usbd_xfer *xfer, int len,
1980 struct uhci_xfer *uxfer = UHCI_XFER2UXFER(xfer);
1981 uint16_t flags = xfer->ux_flags;
1986 DPRINTFN(8, "xfer=%#jx pipe=%#jx", (uintptr_t)xfer,
1987 (uintptr_t)xfer->ux_pipe, 0, 0);
1992 int maxp = UGETW(xfer->ux_pipe->up_endpoint->ue_edesc->wMaxPacketSize);
2068 uhci_reset_std_chain(uhci_softc_t *sc, struct usbd_xfer *xfer,
2071 struct uhci_xfer *uxfer = UHCI_XFER2UXFER(xfer);
2072 struct usbd_pipe *pipe = xfer->ux_pipe;
2073 usb_dma_t *dma = &xfer->ux_dmabuf;
2074 uint16_t flags = xfer->ux_flags;
2083 DPRINTFN(8, "xfer=%#jx len %jd isread %jd toggle %jd", (uintptr_t)xfer,
2091 int addr = xfer->ux_pipe->up_dev->ud_addr;
2092 int endpt = xfer->ux_pipe->up_endpoint->ue_edesc->bEndpointAddress;
2146 KASSERTMSG(len == 0, "xfer %p alen %d len %d mps %d ux_nqtd %zu i %zu",
2147 xfer, length, len, maxp, uxfer->ux_nstd, i);
2198 uhci_device_bulk_init(struct usbd_xfer *xfer)
2200 uhci_softc_t *sc = UHCI_XFER2SC(xfer);
2201 struct uhci_xfer *uxfer = UHCI_XFER2UXFER(xfer);
2202 usb_endpoint_descriptor_t *ed = xfer->ux_pipe->up_endpoint->ue_edesc;
2205 int len = xfer->ux_bufsize;
2209 DPRINTFN(3, "xfer=%#jx len=%jd flags=%jd", (uintptr_t)xfer, len,
2210 xfer->ux_flags, 0);
2215 KASSERT(!(xfer->ux_rqflags & URQ_REQUEST));
2218 err = uhci_alloc_std_chain(sc, xfer, len, isread, &uxfer->ux_stdstart);
2234 uhci_device_bulk_fini(struct usbd_xfer *xfer)
2236 uhci_softc_t *sc = UHCI_XFER2SC(xfer);
2237 struct uhci_xfer *ux = UHCI_XFER2UXFER(xfer);
2248 uhci_device_bulk_transfer(struct usbd_xfer *xfer)
2252 return uhci_device_bulk_start(SIMPLEQ_FIRST(&xfer->ux_pipe->up_queue));
2256 uhci_device_bulk_start(struct usbd_xfer *xfer)
2258 struct uhci_pipe *upipe = UHCI_PIPE2UPIPE(xfer->ux_pipe);
2259 struct uhci_xfer *ux = UHCI_XFER2UXFER(xfer);
2260 uhci_softc_t *sc = UHCI_XFER2SC(xfer);
2268 DPRINTFN(3, "xfer=%#jx len=%jd flags=%jd", (uintptr_t)xfer,
2269 xfer->ux_length, xfer->ux_flags, 0);
2276 KASSERT(!(xfer->ux_rqflags & URQ_REQUEST));
2277 KASSERT(xfer->ux_length <= xfer->ux_bufsize);
2279 len = xfer->ux_length;
2284 uhci_reset_std_chain(sc, xfer, len, isread, &upipe->nexttoggle,
2315 xfer->ux_status = USBD_IN_PROGRESS;
2316 usbd_xfer_schedule_timeout(xfer);
2323 uhci_device_bulk_abort(struct usbd_xfer *xfer)
2325 uhci_softc_t *sc __diagused = UHCI_XFER2SC(xfer);
2331 usbd_xfer_abort(xfer);
2338 uhci_abortx(struct usbd_xfer *xfer)
2341 struct uhci_xfer *ux = UHCI_XFER2UXFER(xfer);
2342 struct uhci_pipe *upipe = UHCI_PIPE2UPIPE(xfer->ux_pipe);
2343 uhci_softc_t *sc = UHCI_XFER2SC(xfer);
2346 DPRINTFN(1,"xfer=%#jx", (uintptr_t)xfer, 0, 0, 0);
2351 KASSERTMSG((xfer->ux_status == USBD_CANCELLED ||
2352 xfer->ux_status == USBD_TIMEOUT),
2353 "bad abort status: %d", xfer->ux_status);
2360 DPRINTFN(4, "xfer %#jx dying %ju", (uintptr_t)xfer,
2361 xfer->ux_status, 0, 0);
2366 * HC Step 1: Make interrupt routine and hardware ignore xfer.
2385 * use of the xfer.
2413 uhci_device_ctrl_init(struct usbd_xfer *xfer)
2415 struct uhci_xfer *uxfer = UHCI_XFER2UXFER(xfer);
2416 struct uhci_pipe *upipe = UHCI_PIPE2UPIPE(xfer->ux_pipe);
2417 usb_device_request_t *req = &xfer->ux_request;
2426 DPRINTFN(3, "xfer=%#jx len=%jd, addr=%jd, endpt=%jd",
2427 (uintptr_t)xfer, xfer->ux_bufsize, dev->ud_addr,
2431 len = xfer->ux_bufsize;
2436 err = uhci_alloc_std_chain(sc, xfer, len, isread, &data);
2449 uhci_device_ctrl_fini(struct usbd_xfer *xfer)
2451 uhci_softc_t *sc = UHCI_XFER2SC(xfer);
2452 struct uhci_xfer *ux = UHCI_XFER2UXFER(xfer);
2463 uhci_device_ctrl_transfer(struct usbd_xfer *xfer)
2467 return uhci_device_ctrl_start(SIMPLEQ_FIRST(&xfer->ux_pipe->up_queue));
2471 uhci_device_ctrl_start(struct usbd_xfer *xfer)
2473 uhci_softc_t *sc = UHCI_XFER2SC(xfer);
2474 struct uhci_xfer *uxfer = UHCI_XFER2UXFER(xfer);
2475 struct uhci_pipe *upipe = UHCI_PIPE2UPIPE(xfer->ux_pipe);
2476 usb_device_request_t *req = &xfer->ux_request;
2492 KASSERT(xfer->ux_rqflags & URQ_REQUEST);
2515 uhci_reset_std_chain(sc, xfer, len, isread,
2606 xfer->ux_status = USBD_IN_PROGRESS;
2607 usbd_xfer_schedule_timeout(xfer);
2613 uhci_device_intr_init(struct usbd_xfer *xfer)
2615 uhci_softc_t *sc = UHCI_XFER2SC(xfer);
2616 struct uhci_xfer *ux = UHCI_XFER2UXFER(xfer);
2617 usb_endpoint_descriptor_t *ed = xfer->ux_pipe->up_endpoint->ue_edesc;
2620 int len = xfer->ux_bufsize;
2625 DPRINTFN(3, "xfer=%#jx len=%jd flags=%jd", (uintptr_t)xfer,
2626 xfer->ux_length, xfer->ux_flags, 0);
2628 KASSERT(!(xfer->ux_rqflags & URQ_REQUEST));
2633 err = uhci_alloc_std_chain(sc, xfer, len, isread, &ux->ux_stdstart);
2639 uhci_device_intr_fini(struct usbd_xfer *xfer)
2641 uhci_softc_t *sc = UHCI_XFER2SC(xfer);
2642 struct uhci_xfer *ux = UHCI_XFER2UXFER(xfer);
2653 uhci_device_intr_transfer(struct usbd_xfer *xfer)
2657 return uhci_device_intr_start(SIMPLEQ_FIRST(&xfer->ux_pipe->up_queue));
2661 uhci_device_intr_start(struct usbd_xfer *xfer)
2663 struct uhci_xfer *ux = UHCI_XFER2UXFER(xfer);
2664 struct uhci_pipe *upipe = UHCI_PIPE2UPIPE(xfer->ux_pipe);
2665 uhci_softc_t *sc = UHCI_XFER2SC(xfer);
2673 DPRINTFN(3, "xfer=%#jx len=%jd flags=%jd", (uintptr_t)xfer,
2674 xfer->ux_length, xfer->ux_flags, 0);
2681 KASSERT(!(xfer->ux_rqflags & URQ_REQUEST));
2682 KASSERT(xfer->ux_length <= xfer->ux_bufsize);
2695 uhci_reset_std_chain(sc, xfer, xfer->ux_length, isread,
2725 xfer->ux_status = USBD_IN_PROGRESS;
2741 uhci_device_ctrl_abort(struct usbd_xfer *xfer)
2743 uhci_softc_t *sc __diagused = UHCI_XFER2SC(xfer);
2748 usbd_xfer_abort(xfer);
2767 uhci_device_intr_abort(struct usbd_xfer *xfer)
2769 uhci_softc_t *sc __diagused = UHCI_XFER2SC(xfer);
2774 DPRINTF("xfer=%#jx", (uintptr_t)xfer, 0, 0, 0);
2776 usbd_xfer_abort(xfer);
2806 uhci_device_isoc_init(struct usbd_xfer *xfer)
2808 struct uhci_xfer *ux = UHCI_XFER2UXFER(xfer);
2810 KASSERT(!(xfer->ux_rqflags & URQ_REQUEST));
2811 KASSERT(xfer->ux_nframes != 0);
2819 uhci_device_isoc_fini(struct usbd_xfer *xfer)
2821 struct uhci_xfer *ux __diagused = UHCI_XFER2UXFER(xfer);
2827 uhci_device_isoc_transfer(struct usbd_xfer *xfer)
2829 uhci_softc_t *sc = UHCI_XFER2SC(xfer);
2832 DPRINTFN(5, "xfer=%#jx", (uintptr_t)xfer, 0, 0, 0);
2838 struct uhci_pipe *upipe = UHCI_PIPE2UPIPE(xfer->ux_pipe);
2839 struct uhci_xfer *ux = UHCI_XFER2UXFER(xfer);
2846 DPRINTFN(5, "used=%jd next=%jd xfer=%#jx nframes=%jd",
2847 isoc->inuse, isoc->next, (uintptr_t)xfer, xfer->ux_nframes);
2852 if (xfer->ux_status == USBD_IN_PROGRESS) {
2854 printf("%s: xfer=%p in frame list\n", __func__, xfer);
2863 KASSERT(xfer->ux_nframes != 0);
2865 if (xfer->ux_length)
2866 usb_syncmem(&xfer->ux_dmabuf, 0, xfer->ux_length,
2876 xfer->ux_status = USBD_IN_PROGRESS;
2883 nframes = xfer->ux_nframes;
2885 buf = DMAADDR(&xfer->ux_dmabuf, offs);
2889 len = xfer->ux_frlengths[i];
2894 usb_syncmem(&xfer->ux_dmabuf, offs, len,
2913 DMAADDR(&xfer->ux_dmabuf, offs - 1);
2918 isoc->inuse += xfer->ux_nframes;
2934 uhci_device_isoc_abort(struct usbd_xfer *xfer)
2936 uhci_softc_t *sc = UHCI_XFER2SC(xfer);
2937 struct uhci_pipe *upipe = UHCI_PIPE2UPIPE(xfer->ux_pipe);
2938 struct uhci_xfer *ux = UHCI_XFER2UXFER(xfer);
2946 if (xfer->ux_status != USBD_NOT_STARTED &&
2947 xfer->ux_status != USBD_IN_PROGRESS) {
2951 /* Give xfer the requested abort code. */
2952 xfer->ux_status = USBD_CANCELLED;
2955 nframes = xfer->ux_nframes;
2990 usb_transfer_complete(xfer);
3130 uhci_device_isoc_done(struct usbd_xfer *xfer)
3132 uhci_softc_t *sc __diagused = UHCI_XFER2SC(xfer);
3133 struct uhci_pipe *upipe = UHCI_PIPE2UPIPE(xfer->ux_pipe);
3134 struct uhci_xfer *ux = UHCI_XFER2UXFER(xfer);
3139 xfer->ux_actlen, xfer->ux_state, 0, 0);
3145 printf("%s: xfer=%p stdend==NULL\n", __func__, xfer);
3166 if (xfer->ux_length)
3167 usb_syncmem(&xfer->ux_dmabuf, 0, xfer->ux_length,
3172 uhci_device_intr_done(struct usbd_xfer *xfer)
3174 uhci_softc_t *sc __diagused = UHCI_XFER2SC(xfer);
3175 struct uhci_pipe *upipe = UHCI_PIPE2UPIPE(xfer->ux_pipe);
3180 DPRINTFN(5, "length=%jd", xfer->ux_actlen, 0, 0, 0);
3196 usb_syncmem(&xfer->ux_dmabuf, 0, xfer->ux_length,
3202 uhci_device_ctrl_done(struct usbd_xfer *xfer)
3204 uhci_softc_t *sc = UHCI_XFER2SC(xfer);
3205 struct uhci_pipe *upipe = UHCI_PIPE2UPIPE(xfer->ux_pipe);
3206 int len = UGETW(xfer->ux_request.wLength);
3207 int isread = (xfer->ux_request.bmRequestType & UT_READ);
3212 KASSERT(xfer->ux_rqflags & URQ_REQUEST);
3221 usb_syncmem(&xfer->ux_dmabuf, 0, len,
3227 DPRINTF("length=%jd", xfer->ux_actlen, 0, 0, 0);
3232 uhci_device_bulk_done(struct usbd_xfer *xfer)
3234 uhci_softc_t *sc = UHCI_XFER2SC(xfer);
3235 struct uhci_pipe *upipe = UHCI_PIPE2UPIPE(xfer->ux_pipe);
3236 usb_endpoint_descriptor_t *ed = xfer->ux_pipe->up_endpoint->ue_edesc;
3241 DPRINTFN(5, "xfer=%#jx sc=%#jx upipe=%#jx", (uintptr_t)xfer,
3248 if (xfer->ux_length) {
3249 usb_syncmem(&xfer->ux_dmabuf, 0, xfer->ux_length,
3253 DPRINTFN(5, "length=%jd", xfer->ux_actlen, 0, 0, 0);
3788 uhci_root_intr_abort(struct usbd_xfer *xfer)
3790 uhci_softc_t *sc = UHCI_XFER2SC(xfer);
3793 KASSERT(xfer->ux_pipe->up_intrxfer == xfer);
3798 * out the xfer, cancel it ourselves.
3804 KASSERT(sc->sc_intr_xfer == xfer);
3805 KASSERT(xfer->ux_status == USBD_IN_PROGRESS);
3806 xfer->ux_status = USBD_CANCELLED;
3808 UHCI_XFER2UXFER(xfer)->ux_isdone = true;
3810 usb_transfer_complete(xfer);
3814 uhci_root_intr_transfer(struct usbd_xfer *xfer)
3818 return uhci_root_intr_start(SIMPLEQ_FIRST(&xfer->ux_pipe->up_queue));
3823 uhci_root_intr_start(struct usbd_xfer *xfer)
3825 struct usbd_pipe *pipe = xfer->ux_pipe;
3830 DPRINTF("xfer=%#jx len=%jd flags=%jd", (uintptr_t)xfer, xfer->ux_length,
3831 xfer->ux_flags, 0);
3841 ival = xfer->ux_pipe->up_endpoint->ue_edesc->bInterval;
3845 sc->sc_intr_xfer = xfer;
3846 xfer->ux_status = USBD_IN_PROGRESS;
3862 * there can be no intr xfer in progress. The callout may
3863 * still be pending from a prior intr xfer -- if it has already