Lines Matching refs:xfer

1447 saf1761_otg_xfer_do_fifo(struct saf1761_otg_softc *sc, struct usb_xfer *xfer)
1454 td = xfer->td_transfer_cache;
1463 if (((void *)td) == xfer->td_transfer_last) {
1483 xfer->td_transfer_cache = td;
1489 xfer->td_transfer_cache = NULL;
1494 saf1761_otg_xfer_do_complete(struct saf1761_otg_softc *sc, struct usb_xfer *xfer)
1500 td = xfer->td_transfer_cache;
1503 saf1761_otg_standard_done(xfer);
1512 struct usb_xfer *xfer;
1514 TAILQ_FOREACH(xfer, &sc->sc_bus.intr_q.head, wait_entry)
1515 saf1761_otg_xfer_do_fifo(sc, xfer);
1579 struct usb_xfer *xfer;
1582 TAILQ_FOREACH(xfer, &sc->sc_bus.intr_q.head, wait_entry) {
1583 if (saf1761_otg_xfer_do_complete(sc, xfer))
1757 saf1761_otg_setup_standard_chain(struct usb_xfer *xfer)
1771 xfer->address, UE_GET_ADDR(xfer->endpointno),
1772 xfer->sumlen, usbd_get_speed(xfer->xroot->udev));
1774 temp.max_frame_size = xfer->max_frame_size;
1776 td = xfer->td_start[0];
1777 xfer->td_transfer_first = td;
1778 xfer->td_transfer_cache = td;
1784 temp.td_next = xfer->td_start[0];
1786 temp.setup_alt_next = xfer->flags_int.short_frames_ok ||
1787 xfer->flags_int.isochronous_xfr;
1788 temp.did_stall = !xfer->flags_int.control_stall;
1790 is_host = (xfer->xroot->udev->flags.usb_mode == USB_MODE_HOST);
1792 sc = SAF1761_OTG_BUS2SC(xfer->xroot->bus);
1793 ep_no = (xfer->endpointno & UE_ADDR);
1794 ep_type = (xfer->endpoint->edesc->bmAttributes & UE_XFERTYPE);
1798 if (xfer->flags_int.control_xfr) {
1799 if (xfer->flags_int.control_hdr) {
1806 temp.len = xfer->frlengths[0];
1807 temp.pc = xfer->frbuffers + 0;
1810 if (xfer->nframes == 1) {
1812 if (xfer->flags_int.control_act)
1825 if (x != xfer->nframes) {
1826 if (xfer->endpointno & UE_DIR_IN) {
1834 if (xfer->xroot->udev->speed == USB_SPEED_HIGH)
1835 uframe_interval = 1U << xfer->fps_shift;
1854 if (xfer->xroot->udev->speed == USB_SPEED_HIGH)
1855 uframe_interval = 1U << xfer->fps_shift;
1869 temp.pc = xfer->frbuffers + x;
1874 while (x != xfer->nframes) {
1878 temp.len = xfer->frlengths[x];
1882 if (x == xfer->nframes) {
1883 if (xfer->flags_int.control_xfr) {
1884 if (xfer->flags_int.control_act) {
1901 temp.short_pkt = (xfer->flags.force_short_xfer) ? 0 : 1;
1906 if (xfer->flags_int.isochronous_xfr) {
1916 temp.pc = xfer->frbuffers + x;
1921 if (xfer->flags_int.control_xfr) {
1923 temp.pc = xfer->frbuffers + 0;
1929 if (!xfer->flags_int.control_act) {
1935 if (xfer->endpointno & UE_DIR_IN) {
1969 temp.pc = xfer->frbuffers + 0;
1982 xfer->td_transfer_last = td;
1986 td = xfer->td_transfer_first;
1987 td->toggle = (xfer->endpoint->toggle_next ? 1 : 0);
1994 struct usb_xfer *xfer = arg;
1996 DPRINTF("xfer=%p\n", xfer);
1998 USB_BUS_LOCK_ASSERT(xfer->xroot->bus, MA_OWNED);
2001 saf1761_otg_device_done(xfer, USB_ERR_TIMEOUT);
2005 saf1761_otg_intr_set(struct usb_xfer *xfer, uint8_t set)
2007 struct saf1761_otg_softc *sc = SAF1761_OTG_BUS2SC(xfer->xroot->bus);
2008 uint8_t ep_no = (xfer->endpointno & UE_ADDR);
2011 DPRINTFN(15, "endpoint=%d set=%d\n", xfer->endpointno, set);
2017 } else if (xfer->endpointno & UE_DIR_IN) {
2032 saf1761_otg_start_standard_chain(struct usb_xfer *xfer)
2034 struct saf1761_otg_softc *sc = SAF1761_OTG_BUS2SC(xfer->xroot->bus);
2041 saf1761_otg_xfer_do_fifo(sc, xfer);
2043 if (saf1761_otg_xfer_do_complete(sc, xfer) == 0) {
2049 saf1761_otg_intr_set(xfer, 1);
2052 usbd_transfer_enqueue(&xfer->xroot->bus->intr_q, xfer);
2055 if (xfer->timeout != 0) {
2056 usbd_transfer_timeout_ms(xfer,
2057 &saf1761_otg_timeout, xfer->timeout);
2078 saf1761_otg_standard_done_sub(struct usb_xfer *xfer)
2086 td = xfer->td_transfer_cache;
2092 xfer->endpoint->toggle_next = td->toggle;
2094 if (xfer->aframes != xfer->nframes) {
2099 if (len > xfer->frlengths[xfer->aframes]) {
2102 xfer->frlengths[xfer->aframes] -= len;
2115 if (xfer->flags_int.short_frames_ok ||
2116 xfer->flags_int.isochronous_xfr) {
2140 xfer->td_transfer_cache = td;
2146 saf1761_otg_standard_done(struct usb_xfer *xfer)
2150 DPRINTFN(13, "xfer=%p endpoint=%p transfer done\n",
2151 xfer, xfer->endpoint);
2155 xfer->td_transfer_cache = xfer->td_transfer_first;
2157 if (xfer->flags_int.control_xfr) {
2159 if (xfer->flags_int.control_hdr) {
2161 err = saf1761_otg_standard_done_sub(xfer);
2163 xfer->aframes = 1;
2165 if (xfer->td_transfer_cache == NULL) {
2169 while (xfer->aframes != xfer->nframes) {
2171 err = saf1761_otg_standard_done_sub(xfer);
2172 xfer->aframes++;
2174 if (xfer->td_transfer_cache == NULL) {
2179 if (xfer->flags_int.control_xfr &&
2180 !xfer->flags_int.control_act) {
2182 err = saf1761_otg_standard_done_sub(xfer);
2185 saf1761_otg_device_done(xfer, err);
2195 saf1761_otg_device_done(struct usb_xfer *xfer, usb_error_t error)
2197 struct saf1761_otg_softc *sc = SAF1761_OTG_BUS2SC(xfer->xroot->bus);
2199 USB_BUS_LOCK_ASSERT(xfer->xroot->bus, MA_OWNED);
2201 DPRINTFN(2, "xfer=%p, endpoint=%p, error=%d\n",
2202 xfer, xfer->endpoint, error);
2206 if (xfer->flags_int.usb_mode == USB_MODE_DEVICE) {
2207 saf1761_otg_intr_set(xfer, 0);
2211 td = xfer->td_transfer_cache;
2218 usbd_transfer_done(xfer, error);
2224 saf1761_otg_xfer_stall(struct usb_xfer *xfer)
2226 saf1761_otg_device_done(xfer, USB_ERR_STALLED);
2596 saf1761_otg_device_non_isoc_open(struct usb_xfer *xfer)
2602 saf1761_otg_device_non_isoc_close(struct usb_xfer *xfer)
2604 saf1761_otg_device_done(xfer, USB_ERR_CANCELLED);
2608 saf1761_otg_device_non_isoc_enter(struct usb_xfer *xfer)
2614 saf1761_otg_device_non_isoc_start(struct usb_xfer *xfer)
2617 saf1761_otg_setup_standard_chain(xfer);
2618 saf1761_otg_start_standard_chain(xfer);
2633 saf1761_otg_device_isoc_open(struct usb_xfer *xfer)
2639 saf1761_otg_device_isoc_close(struct usb_xfer *xfer)
2641 saf1761_otg_device_done(xfer, USB_ERR_CANCELLED);
2645 saf1761_otg_device_isoc_enter(struct usb_xfer *xfer)
2647 struct saf1761_otg_softc *sc = SAF1761_OTG_BUS2SC(xfer->xroot->bus);
2651 DPRINTFN(6, "xfer=%p next=%d nframes=%d\n",
2652 xfer, xfer->endpoint->isoc_next, xfer->nframes);
2662 temp = (nframes - xfer->endpoint->isoc_next) & SOTG_FRAME_NUM_SOFR_MASK;
2664 if ((xfer->endpoint->is_synced == 0) ||
2665 (temp < xfer->nframes)) {
2672 xfer->endpoint->isoc_next = (nframes + 3) & SOTG_FRAME_NUM_SOFR_MASK;
2673 xfer->endpoint->is_synced = 1;
2674 DPRINTFN(3, "start next=%d\n", xfer->endpoint->isoc_next);
2680 temp = (xfer->endpoint->isoc_next - nframes) & SOTG_FRAME_NUM_SOFR_MASK;
2685 xfer->isoc_time_complete =
2687 xfer->nframes;
2690 xfer->endpoint->isoc_next += xfer->nframes;
2693 saf1761_otg_setup_standard_chain(xfer);
2697 saf1761_otg_device_isoc_start(struct usb_xfer *xfer)
2700 saf1761_otg_start_standard_chain(xfer);
2715 saf1761_otg_host_isoc_open(struct usb_xfer *xfer)
2721 saf1761_otg_host_isoc_close(struct usb_xfer *xfer)
2723 saf1761_otg_device_done(xfer, USB_ERR_CANCELLED);
2727 saf1761_otg_host_isoc_enter(struct usb_xfer *xfer)
2729 struct saf1761_otg_softc *sc = SAF1761_OTG_BUS2SC(xfer->xroot->bus);
2733 DPRINTFN(6, "xfer=%p next=%d nframes=%d\n",
2734 xfer, xfer->endpoint->isoc_next, xfer->nframes);
2744 temp = (nframes - xfer->endpoint->isoc_next) & (SOTG_FRINDEX_MASK >> 3);
2746 if ((xfer->endpoint->is_synced == 0) ||
2747 (temp < xfer->nframes)) {
2754 xfer->endpoint->isoc_next = (nframes + 3) & (SOTG_FRINDEX_MASK >> 3);
2755 xfer->endpoint->is_synced = 1;
2756 DPRINTFN(3, "start next=%d\n", xfer->endpoint->isoc_next);
2762 temp = (xfer->endpoint->isoc_next - nframes) & (SOTG_FRINDEX_MASK >> 3);
2767 xfer->isoc_time_complete =
2769 xfer->nframes;
2772 xfer->endpoint->isoc_next += xfer->nframes;
2775 saf1761_otg_setup_standard_chain(xfer);
2779 saf1761_otg_host_isoc_start(struct usb_xfer *xfer)
2782 saf1761_otg_start_standard_chain(xfer);
3418 struct usb_xfer *xfer;
3427 xfer = parm->curr_xfer;
3443 ep_type = (xfer->endpoint->edesc->bmAttributes & UE_XFERTYPE);
3447 ntd = xfer->nframes + 1 /* STATUS */ + 1 /* SYNC */ ;
3450 ntd = xfer->nframes + 1 /* SYNC */ ;
3464 ep_no = xfer->endpointno & UE_ADDR;
3481 dw1 = (xfer->address << 3) | (ep_type << 12);
3511 td->max_packet_size = xfer->max_packet_size;
3518 if (xfer->interval > 32)
3521 td->interval = (xfer->interval / 2) << 3;
3532 xfer->td_start[0] = last_obj;
3536 saf1761_otg_xfer_unsetup(struct usb_xfer *xfer)
3620 struct usb_xfer *xfer;
3633 TAILQ_FOREACH(xfer, &sc->sc_bus.intr_q.head, wait_entry) {
3635 if (xfer->xroot->udev != udev)
3638 td = xfer->td_transfer_cache;
3676 struct usb_xfer *xfer;
3689 TAILQ_FOREACH(xfer, &sc->sc_bus.intr_q.head, wait_entry) {
3691 if (xfer->xroot->udev != udev)
3694 td = xfer->td_transfer_cache;