• Home
  • Raw
  • Download

Lines Matching refs:xfer

118 usb_request_callback(struct usb_xfer *xfer, usb_error_t error)  in usb_request_callback()  argument
120 if (xfer->flags_int.usb_mode == USB_MODE_DEVICE) in usb_request_callback()
121 usb_handle_request_callback(xfer, error); in usb_request_callback()
123 usbd_do_request_callback(xfer, error); in usb_request_callback()
133 usbd_update_max_frame_size(struct usb_xfer *xfer) in usbd_update_max_frame_size() argument
139 xfer->max_frame_size = xfer->max_packet_size * xfer->max_packet_count; in usbd_update_max_frame_size()
328 struct usb_xfer *xfer = parm->curr_xfer; in usbd_transfer_setup_sub() local
350 edesc = xfer->endpoint->edesc; in usbd_transfer_setup_sub()
351 ecomp = xfer->endpoint->ecomp; in usbd_transfer_setup_sub()
355 xfer->flags = setup->flags; in usbd_transfer_setup_sub()
356 xfer->nframes = setup->frames; in usbd_transfer_setup_sub()
357 xfer->timeout = setup->timeout; in usbd_transfer_setup_sub()
358 xfer->callback = setup->callback; in usbd_transfer_setup_sub()
359 xfer->interval = setup->interval; in usbd_transfer_setup_sub()
360 xfer->endpointno = edesc->bEndpointAddress; in usbd_transfer_setup_sub()
361 xfer->max_packet_size = UGETW(edesc->wMaxPacketSize); in usbd_transfer_setup_sub()
362 xfer->max_packet_count = 1; in usbd_transfer_setup_sub()
364 xfer->flags_int.usb_mode = parm->udev->flags.usb_mode; in usbd_transfer_setup_sub()
373 xfer->max_packet_count += in usbd_transfer_setup_sub()
374 (xfer->max_packet_size >> 11) & 3; in usbd_transfer_setup_sub()
377 if (xfer->max_packet_count > 3) in usbd_transfer_setup_sub()
378 xfer->max_packet_count = 3; in usbd_transfer_setup_sub()
383 xfer->max_packet_size &= 0x7FF; in usbd_transfer_setup_sub()
386 xfer->max_packet_count += (xfer->max_packet_size >> 11) & 3; in usbd_transfer_setup_sub()
389 xfer->max_packet_count += ecomp->bMaxBurst; in usbd_transfer_setup_sub()
391 if ((xfer->max_packet_count == 0) || in usbd_transfer_setup_sub()
392 (xfer->max_packet_count > 16)) in usbd_transfer_setup_sub()
393 xfer->max_packet_count = 16; in usbd_transfer_setup_sub()
397 xfer->max_packet_count = 1; in usbd_transfer_setup_sub()
408 xfer->max_packet_count *= mult; in usbd_transfer_setup_sub()
414 xfer->max_packet_size &= 0x7FF; in usbd_transfer_setup_sub()
421 if (xfer->max_packet_count > parm->hc_max_packet_count) { in usbd_transfer_setup_sub()
422 xfer->max_packet_count = parm->hc_max_packet_count; in usbd_transfer_setup_sub()
427 maxp_old = xfer->max_packet_size; in usbd_transfer_setup_sub()
431 if ((xfer->max_packet_size > parm->hc_max_packet_size) || in usbd_transfer_setup_sub()
432 (xfer->max_packet_size == 0)) { in usbd_transfer_setup_sub()
433 xfer->max_packet_size = parm->hc_max_packet_size; in usbd_transfer_setup_sub()
440 if (xfer->max_packet_size < std_size.range.min) { in usbd_transfer_setup_sub()
441 xfer->max_packet_size = std_size.range.min; in usbd_transfer_setup_sub()
443 if (xfer->max_packet_size > std_size.range.max) { in usbd_transfer_setup_sub()
444 xfer->max_packet_size = std_size.range.max; in usbd_transfer_setup_sub()
447 if (xfer->max_packet_size >= std_size.fixed[3]) { in usbd_transfer_setup_sub()
448 xfer->max_packet_size = std_size.fixed[3]; in usbd_transfer_setup_sub()
449 } else if (xfer->max_packet_size >= std_size.fixed[2]) { in usbd_transfer_setup_sub()
450 xfer->max_packet_size = std_size.fixed[2]; in usbd_transfer_setup_sub()
451 } else if (xfer->max_packet_size >= std_size.fixed[1]) { in usbd_transfer_setup_sub()
452 xfer->max_packet_size = std_size.fixed[1]; in usbd_transfer_setup_sub()
455 xfer->max_packet_size = std_size.fixed[0]; in usbd_transfer_setup_sub()
463 if (maxp_old != xfer->max_packet_size) in usbd_transfer_setup_sub()
464 xfer->flags_int.maxp_was_clamped = 1; in usbd_transfer_setup_sub()
468 usbd_update_max_frame_size(xfer); in usbd_transfer_setup_sub()
475 xfer->interval = 0; /* not used, must be zero */ in usbd_transfer_setup_sub()
476 xfer->flags_int.isochronous_xfr = 1; /* set flag */ in usbd_transfer_setup_sub()
478 if (xfer->timeout == 0) { in usbd_transfer_setup_sub()
483 xfer->timeout = 1000 / 4; in usbd_transfer_setup_sub()
489 xfer->fps_shift = 0; in usbd_transfer_setup_sub()
493 xfer->fps_shift = edesc->bInterval; in usbd_transfer_setup_sub()
494 if (xfer->fps_shift > 0) in usbd_transfer_setup_sub()
495 xfer->fps_shift--; in usbd_transfer_setup_sub()
496 if (xfer->fps_shift > 3) in usbd_transfer_setup_sub()
497 xfer->fps_shift = 3; in usbd_transfer_setup_sub()
498 if (xfer->flags.pre_scale_frames != 0) in usbd_transfer_setup_sub()
499 xfer->nframes <<= (3 - xfer->fps_shift); in usbd_transfer_setup_sub()
503 if (xfer->nframes > frame_limit) { in usbd_transfer_setup_sub()
511 if (xfer->nframes == 0) { in usbd_transfer_setup_sub()
526 if (xfer->interval == 0) { in usbd_transfer_setup_sub()
527 xfer->interval = edesc->bInterval; in usbd_transfer_setup_sub()
535 if (xfer->interval < 4) in usbd_transfer_setup_sub()
536 xfer->interval = 1; in usbd_transfer_setup_sub()
537 else if (xfer->interval > 16) in usbd_transfer_setup_sub()
538 xfer->interval = (1 << (16 - 4)); in usbd_transfer_setup_sub()
540 xfer->interval = in usbd_transfer_setup_sub()
541 (1 << (xfer->interval - 4)); in usbd_transfer_setup_sub()
546 if (xfer->interval == 0) { in usbd_transfer_setup_sub()
551 xfer->interval = 1; in usbd_transfer_setup_sub()
554 xfer->fps_shift = 0; in usbd_transfer_setup_sub()
557 while ((temp != 0) && (temp < xfer->interval)) { in usbd_transfer_setup_sub()
558 xfer->fps_shift++; in usbd_transfer_setup_sub()
567 xfer->fps_shift += 3; in usbd_transfer_setup_sub()
579 if ((xfer->max_frame_size == 0) || in usbd_transfer_setup_sub()
580 (xfer->max_packet_size == 0)) { in usbd_transfer_setup_sub()
587 xfer->max_packet_size = MIN_PKT; in usbd_transfer_setup_sub()
588 xfer->max_packet_count = 1; in usbd_transfer_setup_sub()
590 usbd_update_max_frame_size(xfer); in usbd_transfer_setup_sub()
607 parm->bufsize = xfer->max_frame_size; in usbd_transfer_setup_sub()
610 parm->bufsize *= xfer->nframes; in usbd_transfer_setup_sub()
618 if (xfer->flags.proxy_buffer) { in usbd_transfer_setup_sub()
621 parm->bufsize += (xfer->max_frame_size - 1); in usbd_transfer_setup_sub()
623 if (parm->bufsize < xfer->max_frame_size) { in usbd_transfer_setup_sub()
630 parm->bufsize -= (parm->bufsize % xfer->max_frame_size); in usbd_transfer_setup_sub()
638 xfer->max_data_length = parm->bufsize; in usbd_transfer_setup_sub()
643 n_frlengths = xfer->nframes; in usbd_transfer_setup_sub()
647 xfer->flags_int.control_xfr = 1; in usbd_transfer_setup_sub()
648 if (xfer->nframes == 0) { in usbd_transfer_setup_sub()
654 xfer->nframes = 1; in usbd_transfer_setup_sub()
656 xfer->nframes = 2; in usbd_transfer_setup_sub()
660 if (xfer->nframes == 0) { in usbd_transfer_setup_sub()
661 xfer->nframes = 1; in usbd_transfer_setup_sub()
665 n_frlengths = xfer->nframes; in usbd_transfer_setup_sub()
666 n_frbuffers = xfer->nframes; in usbd_transfer_setup_sub()
675 if (xfer->max_data_length < REQ_SIZE) { in usbd_transfer_setup_sub()
680 xfer->max_data_length -= REQ_SIZE; in usbd_transfer_setup_sub()
687 xfer->frlengths = parm->xfer_length_ptr; in usbd_transfer_setup_sub()
691 xfer->frbuffers = parm->xfer_page_cache_ptr; in usbd_transfer_setup_sub()
695 xfer->max_frame_count = xfer->nframes; in usbd_transfer_setup_sub()
702 if (!xfer->flags.ext_buffer) { in usbd_transfer_setup_sub()
713 xfer->local_buffer = page_info.buffer; in usbd_transfer_setup_sub()
715 usbd_xfer_set_frame_offset(xfer, 0, 0); in usbd_transfer_setup_sub()
718 usbd_xfer_set_frame_offset(xfer, REQ_SIZE, 1); in usbd_transfer_setup_sub()
726 xfer->local_buffer = in usbd_transfer_setup_sub()
729 usbd_xfer_set_frame_offset(xfer, 0, 0); in usbd_transfer_setup_sub()
732 usbd_xfer_set_frame_offset(xfer, REQ_SIZE, 1); in usbd_transfer_setup_sub()
749 if (xfer->flags_int.bdma_enable) { in usbd_transfer_setup_sub()
772 xfer->dma_page_ptr = parm->dma_page_ptr; in usbd_transfer_setup_sub()
779 xfer->max_data_length = 0; in usbd_transfer_setup_sub()
783 xfer->max_hc_frame_size = in usbd_transfer_setup_sub()
785 (parm->hc_max_frame_size % xfer->max_frame_size)); in usbd_transfer_setup_sub()
787 if (xfer->max_hc_frame_size == 0) { in usbd_transfer_setup_sub()
796 xfer->frbuffers[x].tag_parent = in usbd_transfer_setup_sub()
797 &xfer->xroot->dma_parent_tag; in usbd_transfer_setup_sub()
799 if (xfer->flags_int.bdma_enable && in usbd_transfer_setup_sub()
802 xfer->frbuffers + x, in usbd_transfer_setup_sub()
816 xfer->max_hc_frame_size = 1; in usbd_transfer_setup_sub()
817 xfer->max_frame_size = 1; in usbd_transfer_setup_sub()
818 xfer->max_packet_size = 1; in usbd_transfer_setup_sub()
819 xfer->max_data_length = 0; in usbd_transfer_setup_sub()
820 xfer->nframes = 0; in usbd_transfer_setup_sub()
821 xfer->max_frame_count = 0; in usbd_transfer_setup_sub()
864 struct usb_xfer *xfer; in usbd_transfer_setup() local
1037 xfer = USB_ADD_BYTES(buf, parm->size[0]); in usbd_transfer_setup()
1038 xfer->address = udev->address; in usbd_transfer_setup()
1039 xfer->priv_sc = priv_sc; in usbd_transfer_setup()
1040 xfer->xroot = info; in usbd_transfer_setup()
1042 callout_init_mtx(&xfer->timeout_handle, in usbd_transfer_setup()
1052 xfer = &udev->scratch.xfer_setup[0].dummy; in usbd_transfer_setup()
1053 (void)memset_s(xfer, sizeof(*xfer), 0, sizeof(*xfer)); in usbd_transfer_setup()
1058 xfer->endpoint = ep; in usbd_transfer_setup()
1061 xfer->stream_id = setup->stream_id; in usbd_transfer_setup()
1063 parm->size[0] += sizeof(xfer[0]); in usbd_transfer_setup()
1064 parm->methods = xfer->endpoint->methods; in usbd_transfer_setup()
1065 parm->curr_xfer = xfer; in usbd_transfer_setup()
1088 if (xfer->endpoint->refcount_alloc >= USB_EP_REF_MAX) in usbd_transfer_setup()
1091 xfer->endpoint->refcount_alloc++; in usbd_transfer_setup()
1093 if (xfer->endpoint->refcount_alloc == 0) in usbd_transfer_setup()
1108 ppxfer[n] = xfer; in usbd_transfer_setup()
1299 struct usb_xfer *xfer; in usbd_transfer_unsetup() local
1307 xfer = pxfer[n_setup]; in usbd_transfer_unsetup()
1309 if (xfer == NULL) in usbd_transfer_unsetup()
1312 info = xfer->xroot; in usbd_transfer_unsetup()
1314 USB_XFER_LOCK(xfer); in usbd_transfer_unsetup()
1336 USB_XFER_UNLOCK(xfer); in usbd_transfer_unsetup()
1338 usbd_transfer_drain(xfer); in usbd_transfer_unsetup()
1341 if (xfer->flags_int.bdma_enable) in usbd_transfer_unsetup()
1349 xfer->endpoint->refcount_alloc--; in usbd_transfer_unsetup()
1352 callout_drain(&xfer->timeout_handle); in usbd_transfer_unsetup()
1382 usbd_control_transfer_init(struct usb_xfer *xfer) in usbd_control_transfer_init() argument
1388 usbd_copy_out(xfer->frbuffers, 0, &req, sizeof(req)); in usbd_control_transfer_init()
1392 xfer->flags_int.control_rem = UGETW(req.wLength); in usbd_control_transfer_init()
1396 xfer->endpointno &= ~(UE_DIR_IN | UE_DIR_OUT); in usbd_control_transfer_init()
1397 xfer->endpointno |= in usbd_control_transfer_init()
1409 usbd_control_transfer_did_data(struct usb_xfer *xfer) in usbd_control_transfer_did_data() argument
1414 if (xfer->flags_int.control_hdr != 0) in usbd_control_transfer_did_data()
1418 usbd_copy_out(xfer->frbuffers, 0, &req, sizeof(req)); in usbd_control_transfer_did_data()
1421 return (xfer->flags_int.control_rem != UGETW(req.wLength)); in usbd_control_transfer_did_data()
1436 usbd_setup_ctrl_transfer(struct usb_xfer *xfer) in usbd_setup_ctrl_transfer() argument
1441 if (xfer->flags.stall_pipe && xfer->flags_int.control_act) { in usbd_setup_ctrl_transfer()
1443 xfer->flags_int.control_stall = 1; in usbd_setup_ctrl_transfer()
1444 xfer->flags_int.control_act = 0; in usbd_setup_ctrl_transfer()
1447 xfer->flags_int.control_stall = 0; in usbd_setup_ctrl_transfer()
1451 if (xfer->nframes > 2) { in usbd_setup_ctrl_transfer()
1459 (unsigned int)xfer->nframes); in usbd_setup_ctrl_transfer()
1467 if (xfer->flags_int.control_act) { in usbd_setup_ctrl_transfer()
1468 if (xfer->flags_int.control_hdr) { in usbd_setup_ctrl_transfer()
1471 xfer->flags_int.control_hdr = 0; in usbd_setup_ctrl_transfer()
1474 if (xfer->flags_int.usb_mode == USB_MODE_DEVICE) { in usbd_setup_ctrl_transfer()
1475 usbd_control_transfer_init(xfer); in usbd_setup_ctrl_transfer()
1480 len = xfer->sumlen; in usbd_setup_ctrl_transfer()
1485 if (xfer->frlengths[0] != sizeof(struct usb_device_request)) { in usbd_setup_ctrl_transfer()
1487 xfer->frlengths[0], sizeof(struct in usbd_setup_ctrl_transfer()
1492 if (xfer->flags_int.usb_mode == USB_MODE_DEVICE) { in usbd_setup_ctrl_transfer()
1494 if (xfer->nframes != 1) { in usbd_setup_ctrl_transfer()
1508 xfer->flags_int.control_rem = 0xFFFF; in usbd_setup_ctrl_transfer()
1512 usbd_control_transfer_init(xfer); in usbd_setup_ctrl_transfer()
1517 xfer->flags_int.control_hdr = 1; in usbd_setup_ctrl_transfer()
1521 len = (xfer->sumlen - sizeof(struct usb_device_request)); in usbd_setup_ctrl_transfer()
1526 xfer->flags_int.control_did_data = in usbd_setup_ctrl_transfer()
1527 usbd_control_transfer_did_data(xfer); in usbd_setup_ctrl_transfer()
1531 if (len > xfer->flags_int.control_rem) { in usbd_setup_ctrl_transfer()
1534 xfer->flags_int.control_rem); in usbd_setup_ctrl_transfer()
1539 if (xfer->flags.force_short_xfer) { in usbd_setup_ctrl_transfer()
1540 xfer->flags_int.control_rem = 0; in usbd_setup_ctrl_transfer()
1542 if ((len != xfer->max_data_length) && in usbd_setup_ctrl_transfer()
1543 (len != xfer->flags_int.control_rem) && in usbd_setup_ctrl_transfer()
1544 (xfer->nframes != 1)) { in usbd_setup_ctrl_transfer()
1549 xfer->flags_int.control_rem -= len; in usbd_setup_ctrl_transfer()
1554 if ((xfer->flags_int.control_rem > 0) || in usbd_setup_ctrl_transfer()
1555 (xfer->flags.manual_status)) { in usbd_setup_ctrl_transfer()
1557 xfer->flags_int.control_act = 1; in usbd_setup_ctrl_transfer()
1560 if ((!xfer->flags_int.control_hdr) && in usbd_setup_ctrl_transfer()
1561 (xfer->nframes == 1)) { in usbd_setup_ctrl_transfer()
1571 xfer->flags_int.control_act = 0; in usbd_setup_ctrl_transfer()
1585 usbd_transfer_submit(struct usb_xfer *xfer) in usbd_transfer_submit() argument
1591 info = xfer->xroot; in usbd_transfer_submit()
1595 xfer, xfer->endpoint, xfer->nframes, USB_GET_DATA_ISREAD(xfer) ? in usbd_transfer_submit()
1602 usb_dump_endpoint(xfer->endpoint); in usbd_transfer_submit()
1608 USB_XFER_LOCK_ASSERT(xfer, MA_OWNED); in usbd_transfer_submit()
1612 if (!xfer->flags_int.open) { in usbd_transfer_submit()
1613 xfer->flags_int.open = 1; in usbd_transfer_submit()
1618 (xfer->endpoint->methods->open) (xfer); in usbd_transfer_submit()
1622 xfer->flags_int.transferring = 1; in usbd_transfer_submit()
1626 usbd_transfer_power_ref(xfer, 1); in usbd_transfer_submit()
1632 if (xfer->wait_queue) { in usbd_transfer_submit()
1634 usbd_transfer_dequeue(xfer); in usbd_transfer_submit()
1638 xfer->flags_int.did_dma_delay = 0; in usbd_transfer_submit()
1641 xfer->flags_int.did_close = 0; in usbd_transfer_submit()
1645 xfer->flags_int.bdma_setup = 0; in usbd_transfer_submit()
1648 xfer->flags_int.can_cancel_immed = 0; in usbd_transfer_submit()
1651 xfer->sumlen = 0; in usbd_transfer_submit()
1652 xfer->actlen = 0; in usbd_transfer_submit()
1653 xfer->aframes = 0; in usbd_transfer_submit()
1656 xfer->error = USB_ERR_NORMAL_COMPLETION; in usbd_transfer_submit()
1665 usbd_transfer_done(xfer, USB_ERR_CANCELLED); in usbd_transfer_submit()
1671 if (xfer->nframes == 0) { in usbd_transfer_submit()
1672 if (xfer->flags.stall_pipe) { in usbd_transfer_submit()
1678 "or clear stall!\n", xfer); in usbd_transfer_submit()
1680 xfer->flags_int.can_cancel_immed = 1; in usbd_transfer_submit()
1682 usb_command_wrapper(&xfer->endpoint-> in usbd_transfer_submit()
1683 endpoint_q[xfer->stream_id], xfer); in usbd_transfer_submit()
1688 usbd_transfer_done(xfer, USB_ERR_INVAL); in usbd_transfer_submit()
1694 for (x = 0; x != xfer->nframes; x++) { in usbd_transfer_submit()
1696 xfer->frlengths[x + xfer->max_frame_count] = xfer->frlengths[x]; in usbd_transfer_submit()
1698 xfer->sumlen += xfer->frlengths[x]; in usbd_transfer_submit()
1699 if (xfer->sumlen < xfer->frlengths[x]) { in usbd_transfer_submit()
1702 usbd_transfer_done(xfer, USB_ERR_INVAL); in usbd_transfer_submit()
1710 xfer->flags_int.short_xfer_ok = 0; in usbd_transfer_submit()
1711 xfer->flags_int.short_frames_ok = 0; in usbd_transfer_submit()
1715 if (xfer->flags_int.control_xfr) { in usbd_transfer_submit()
1716 if (usbd_setup_ctrl_transfer(xfer)) { in usbd_transfer_submit()
1718 usbd_transfer_done(xfer, USB_ERR_STALLED); in usbd_transfer_submit()
1727 if (USB_GET_DATA_ISREAD(xfer)) { in usbd_transfer_submit()
1728 if (xfer->flags.short_frames_ok) { in usbd_transfer_submit()
1729 xfer->flags_int.short_xfer_ok = 1; in usbd_transfer_submit()
1730 xfer->flags_int.short_frames_ok = 1; in usbd_transfer_submit()
1731 } else if (xfer->flags.short_xfer_ok) { in usbd_transfer_submit()
1732 xfer->flags_int.short_xfer_ok = 1; in usbd_transfer_submit()
1735 if (xfer->flags_int.control_xfr) { in usbd_transfer_submit()
1749 xfer->flags_int.short_frames_ok = 1; in usbd_transfer_submit()
1758 if (xfer->flags_int.bdma_enable) { in usbd_transfer_submit()
1760 usb_command_wrapper(&xfer->xroot->dma_q, xfer); in usbd_transfer_submit()
1768 usbd_pipe_enter(xfer); in usbd_transfer_submit()
1775 usbd_pipe_enter(struct usb_xfer *xfer) in usbd_pipe_enter() argument
1779 USB_XFER_LOCK_ASSERT(xfer, MA_OWNED); in usbd_pipe_enter()
1781 USB_BUS_LOCK(xfer->xroot->bus); in usbd_pipe_enter()
1783 ep = xfer->endpoint; in usbd_pipe_enter()
1788 xfer->flags_int.can_cancel_immed = 1; in usbd_pipe_enter()
1791 (ep->methods->enter) (xfer); in usbd_pipe_enter()
1794 if (xfer->error) { in usbd_pipe_enter()
1796 usbd_transfer_done(xfer, (usb_error_t)0); in usbd_pipe_enter()
1797 USB_BUS_UNLOCK(xfer->xroot->bus); in usbd_pipe_enter()
1802 usb_command_wrapper(&ep->endpoint_q[xfer->stream_id], xfer); in usbd_pipe_enter()
1803 USB_BUS_UNLOCK(xfer->xroot->bus); in usbd_pipe_enter()
1814 usbd_transfer_start(struct usb_xfer *xfer) in usbd_transfer_start() argument
1816 if (xfer == NULL) { in usbd_transfer_start()
1820 USB_XFER_LOCK_ASSERT(xfer, MA_OWNED); in usbd_transfer_start()
1824 if (!xfer->flags_int.started) { in usbd_transfer_start()
1826 USB_BUS_LOCK(xfer->xroot->bus); in usbd_transfer_start()
1827 xfer->flags_int.started = 1; in usbd_transfer_start()
1828 USB_BUS_UNLOCK(xfer->xroot->bus); in usbd_transfer_start()
1832 if (xfer->flags_int.transferring) { in usbd_transfer_start()
1835 USB_BUS_LOCK(xfer->xroot->bus); in usbd_transfer_start()
1837 usbd_callback_ss_done_defer(xfer); in usbd_transfer_start()
1838 USB_BUS_UNLOCK(xfer->xroot->bus); in usbd_transfer_start()
1850 usbd_transfer_stop(struct usb_xfer *xfer) in usbd_transfer_stop() argument
1854 if (xfer == NULL) { in usbd_transfer_stop()
1858 USB_XFER_LOCK_ASSERT(xfer, MA_OWNED); in usbd_transfer_stop()
1862 if (!xfer->flags_int.open) { in usbd_transfer_stop()
1863 if (xfer->flags_int.started) { in usbd_transfer_stop()
1866 USB_BUS_LOCK(xfer->xroot->bus); in usbd_transfer_stop()
1867 xfer->flags_int.started = 0; in usbd_transfer_stop()
1868 USB_BUS_UNLOCK(xfer->xroot->bus); in usbd_transfer_stop()
1874 USB_BUS_LOCK(xfer->xroot->bus); in usbd_transfer_stop()
1876 xfer->error = USB_ERR_CANCELLED; in usbd_transfer_stop()
1882 xfer->flags_int.open = 0; in usbd_transfer_stop()
1883 xfer->flags_int.started = 0; in usbd_transfer_stop()
1888 if (xfer->flags_int.transferring) { in usbd_transfer_stop()
1889 if (xfer->flags_int.can_cancel_immed && in usbd_transfer_stop()
1890 (!xfer->flags_int.did_close)) { in usbd_transfer_stop()
1896 (xfer->endpoint->methods->close) (xfer); in usbd_transfer_stop()
1898 xfer->flags_int.did_close = 1; in usbd_transfer_stop()
1906 (xfer->endpoint->methods->close) (xfer); in usbd_transfer_stop()
1917 ep = xfer->endpoint; in usbd_transfer_stop()
1923 if (ep->endpoint_q[xfer->stream_id].curr == xfer) { in usbd_transfer_stop()
1925 &ep->endpoint_q[xfer->stream_id], NULL); in usbd_transfer_stop()
1929 USB_BUS_UNLOCK(xfer->xroot->bus); in usbd_transfer_stop()
1942 usbd_transfer_pending(struct usb_xfer *xfer) in usbd_transfer_pending() argument
1947 if (xfer == NULL) { in usbd_transfer_pending()
1951 USB_XFER_LOCK_ASSERT(xfer, MA_OWNED); in usbd_transfer_pending()
1953 if (xfer->flags_int.transferring) { in usbd_transfer_pending()
1957 USB_BUS_LOCK(xfer->xroot->bus); in usbd_transfer_pending()
1958 if (xfer->wait_queue) { in usbd_transfer_pending()
1960 USB_BUS_UNLOCK(xfer->xroot->bus); in usbd_transfer_pending()
1963 info = xfer->xroot; in usbd_transfer_pending()
1966 if (pq->curr == xfer) { in usbd_transfer_pending()
1968 USB_BUS_UNLOCK(xfer->xroot->bus); in usbd_transfer_pending()
1972 USB_BUS_UNLOCK(xfer->xroot->bus); in usbd_transfer_pending()
1985 usbd_transfer_drain(struct usb_xfer *xfer) in usbd_transfer_drain() argument
1990 if (xfer == NULL) { in usbd_transfer_drain()
1994 if (xfer->xroot->xfer_mtx != &Giant) { in usbd_transfer_drain()
1995 USB_XFER_LOCK_ASSERT(xfer, MA_NOTOWNED); in usbd_transfer_drain()
1997 USB_XFER_LOCK(xfer); in usbd_transfer_drain()
1999 usbd_transfer_stop(xfer); in usbd_transfer_drain()
2001 while (usbd_transfer_pending(xfer) || in usbd_transfer_drain()
2002 xfer->flags_int.doing_callback) { in usbd_transfer_drain()
2010 xfer->flags_int.draining = 1; in usbd_transfer_drain()
2016 (void)cv_wait(&xfer->xroot->cv_drain, xfer->xroot->xfer_mtx); in usbd_transfer_drain()
2018 USB_XFER_UNLOCK(xfer); in usbd_transfer_drain()
2022 usbd_xfer_get_frame(struct usb_xfer *xfer, usb_frcount_t frindex) in usbd_xfer_get_frame() argument
2024 KASSERT(frindex < xfer->max_frame_count, ("frame index overflow")); in usbd_xfer_get_frame()
2026 return (&xfer->frbuffers[frindex]); in usbd_xfer_get_frame()
2030 usbd_xfer_get_frame_buffer(struct usb_xfer *xfer, usb_frcount_t frindex) in usbd_xfer_get_frame_buffer() argument
2034 KASSERT(frindex < xfer->max_frame_count, ("frame index overflow")); in usbd_xfer_get_frame_buffer()
2036 usbd_get_page(&xfer->frbuffers[frindex], 0, &page_info); in usbd_xfer_get_frame_buffer()
2052 usbd_xfer_get_fps_shift(struct usb_xfer *xfer) in usbd_xfer_get_fps_shift() argument
2054 return (xfer->fps_shift); in usbd_xfer_get_fps_shift()
2058 usbd_xfer_frame_len(struct usb_xfer *xfer, usb_frcount_t frindex) in usbd_xfer_frame_len() argument
2060 KASSERT(frindex < xfer->max_frame_count, ("frame index overflow")); in usbd_xfer_frame_len()
2062 return (xfer->frlengths[frindex]); in usbd_xfer_frame_len()
2074 usbd_xfer_set_frame_data(struct usb_xfer *xfer, usb_frcount_t frindex, in usbd_xfer_set_frame_data() argument
2077 KASSERT(frindex < xfer->max_frame_count, ("frame index overflow")); in usbd_xfer_set_frame_data()
2080 xfer->frbuffers[frindex].buffer = ptr; in usbd_xfer_set_frame_data()
2081 usbd_xfer_set_frame_len(xfer, frindex, len); in usbd_xfer_set_frame_data()
2085 usbd_xfer_frame_data(struct usb_xfer *xfer, usb_frcount_t frindex, in usbd_xfer_frame_data() argument
2088 KASSERT(frindex < xfer->max_frame_count, ("frame index overflow")); in usbd_xfer_frame_data()
2091 *ptr = xfer->frbuffers[frindex].buffer; in usbd_xfer_frame_data()
2093 *len = xfer->frlengths[frindex]; in usbd_xfer_frame_data()
2105 usbd_xfer_old_frame_length(struct usb_xfer *xfer, usb_frcount_t frindex) in usbd_xfer_old_frame_length() argument
2107 KASSERT(frindex < xfer->max_frame_count, ("frame index overflow")); in usbd_xfer_old_frame_length()
2109 return (xfer->frlengths[frindex + xfer->max_frame_count]); in usbd_xfer_old_frame_length()
2113 usbd_xfer_status(struct usb_xfer *xfer, int *actlen, int *sumlen, int *aframes, in usbd_xfer_status() argument
2117 *actlen = xfer->actlen; in usbd_xfer_status()
2119 *sumlen = xfer->sumlen; in usbd_xfer_status()
2121 *aframes = xfer->aframes; in usbd_xfer_status()
2123 *nframes = xfer->nframes; in usbd_xfer_status()
2133 usbd_xfer_set_frame_offset(struct usb_xfer *xfer, usb_frlength_t offset, in usbd_xfer_set_frame_offset() argument
2136 KASSERT(!xfer->flags.ext_buffer, ("Cannot offset data frame " in usbd_xfer_set_frame_offset()
2138 KASSERT(frindex < xfer->max_frame_count, ("frame index overflow")); in usbd_xfer_set_frame_offset()
2141 xfer->frbuffers[frindex].buffer = in usbd_xfer_set_frame_offset()
2142 USB_ADD_BYTES(xfer->local_buffer, offset); in usbd_xfer_set_frame_offset()
2146 usbd_xfer_set_interval(struct usb_xfer *xfer, int i) in usbd_xfer_set_interval() argument
2148 xfer->interval = i; in usbd_xfer_set_interval()
2152 usbd_xfer_set_timeout(struct usb_xfer *xfer, int t) in usbd_xfer_set_timeout() argument
2154 xfer->timeout = t; in usbd_xfer_set_timeout()
2158 usbd_xfer_set_frames(struct usb_xfer *xfer, usb_frcount_t n) in usbd_xfer_set_frames() argument
2160 xfer->nframes = n; in usbd_xfer_set_frames()
2164 usbd_xfer_max_frames(struct usb_xfer *xfer) in usbd_xfer_max_frames() argument
2166 return (xfer->max_frame_count); in usbd_xfer_max_frames()
2170 usbd_xfer_max_len(struct usb_xfer *xfer) in usbd_xfer_max_len() argument
2172 return (xfer->max_data_length); in usbd_xfer_max_len()
2176 usbd_xfer_max_framelen(struct usb_xfer *xfer) in usbd_xfer_max_framelen() argument
2178 return (xfer->max_frame_size); in usbd_xfer_max_framelen()
2182 usbd_xfer_set_frame_len(struct usb_xfer *xfer, usb_frcount_t frindex, in usbd_xfer_set_frame_len() argument
2185 KASSERT(frindex < xfer->max_frame_count, ("frame index overflow")); in usbd_xfer_set_frame_len()
2187 xfer->frlengths[frindex] = len; in usbd_xfer_set_frame_len()
2225 usbd_callback_ss_done_defer(struct usb_xfer *xfer) in usbd_callback_ss_done_defer() argument
2227 struct usb_xfer_root *info = xfer->xroot; in usbd_callback_ss_done_defer()
2230 USB_BUS_LOCK_ASSERT(xfer->xroot->bus, MA_OWNED); in usbd_callback_ss_done_defer()
2232 if (pq->curr != xfer) { in usbd_callback_ss_done_defer()
2233 usbd_transfer_enqueue(pq, xfer); in usbd_callback_ss_done_defer()
2264 struct usb_xfer *xfer = pq->curr; in usbd_callback_wrapper() local
2265 struct usb_xfer_root *info = xfer->xroot; in usbd_callback_wrapper()
2300 xfer->flags_int.doing_callback = 1; in usbd_callback_wrapper()
2306 if (!xfer->flags_int.transferring) { in usbd_callback_wrapper()
2307 xfer->usb_state = USB_ST_SETUP; in usbd_callback_wrapper()
2308 if (!xfer->flags_int.started) { in usbd_callback_wrapper()
2314 if (usbd_callback_wrapper_sub(xfer)) { in usbd_callback_wrapper()
2321 usbd_transfer_power_ref(xfer, -1); in usbd_callback_wrapper()
2323 xfer->flags_int.transferring = 0; in usbd_callback_wrapper()
2325 if (xfer->error) { in usbd_callback_wrapper()
2326 xfer->usb_state = USB_ST_ERROR; in usbd_callback_wrapper()
2329 xfer->usb_state = USB_ST_TRANSFERRED; in usbd_callback_wrapper()
2332 if (xfer->flags_int.bdma_enable && in usbd_callback_wrapper()
2333 (!xfer->flags_int.bdma_no_post_sync)) { in usbd_callback_wrapper()
2334 usb_bdma_post_sync(xfer); in usbd_callback_wrapper()
2341 if (xfer->usb_state != USB_ST_SETUP) { in usbd_callback_wrapper()
2343 usbpf_xfertap(xfer, USBPF_XFERTAP_DONE); in usbd_callback_wrapper()
2348 (xfer->callback) (xfer, xfer->error); in usbd_callback_wrapper()
2357 if ((!xfer->flags_int.open) && in usbd_callback_wrapper()
2358 (xfer->flags_int.started) && in usbd_callback_wrapper()
2359 (xfer->usb_state == USB_ST_ERROR)) { in usbd_callback_wrapper()
2361 xfer->flags_int.doing_callback = 0; in usbd_callback_wrapper()
2363 usb_command_wrapper(&info->done_q, xfer); in usbd_callback_wrapper()
2369 xfer->flags_int.doing_callback = 0; in usbd_callback_wrapper()
2374 if (xfer->flags_int.draining && in usbd_callback_wrapper()
2375 (!xfer->flags_int.transferring)) { in usbd_callback_wrapper()
2377 xfer->flags_int.draining = 0; in usbd_callback_wrapper()
2395 usb_dma_delay_done_cb(struct usb_xfer *xfer) in usb_dma_delay_done_cb() argument
2397 USB_BUS_LOCK_ASSERT(xfer->xroot->bus, MA_OWNED); in usb_dma_delay_done_cb()
2399 DPRINTFN(3, "Completed %p\n", xfer); in usb_dma_delay_done_cb()
2402 usbd_transfer_done(xfer, (usb_error_t)0); in usb_dma_delay_done_cb()
2414 usbd_transfer_dequeue(struct usb_xfer *xfer) in usbd_transfer_dequeue() argument
2420 pq = xfer->wait_queue; in usbd_transfer_dequeue()
2422 TAILQ_REMOVE(&pq->head, xfer, wait_entry); in usbd_transfer_dequeue()
2423 xfer->wait_queue = NULL; in usbd_transfer_dequeue()
2437 usbd_transfer_enqueue(struct usb_xfer_queue *pq, struct usb_xfer *xfer) in usbd_transfer_enqueue() argument
2445 if (xfer->wait_queue == NULL) { in usbd_transfer_enqueue()
2446 xfer->wait_queue = pq; in usbd_transfer_enqueue()
2447 TAILQ_INSERT_TAIL(&pq->head, xfer, wait_entry); in usbd_transfer_enqueue()
2464 usbd_transfer_done(struct usb_xfer *xfer, usb_error_t error) in usbd_transfer_done() argument
2466 struct usb_xfer_root *info = xfer->xroot; in usbd_transfer_done()
2476 if (!xfer->flags_int.transferring) { in usbd_transfer_done()
2479 xfer->flags_int.control_act = 0; in usbd_transfer_done()
2483 if (xfer->error == USB_ERR_NORMAL_COMPLETION) in usbd_transfer_done()
2484 xfer->error = error; in usbd_transfer_done()
2487 callout_stop(&xfer->timeout_handle); in usbd_transfer_done()
2494 usbd_transfer_dequeue(xfer); in usbd_transfer_done()
2506 if (pq->curr == xfer) { in usbd_transfer_done()
2513 if (xfer->error == USB_ERR_CANCELLED) { in usbd_transfer_done()
2515 [xfer->endpoint->edesc->bmAttributes & UE_XFERTYPE]++; in usbd_transfer_done()
2516 } else if (xfer->error != USB_ERR_NORMAL_COMPLETION) { in usbd_transfer_done()
2518 [xfer->endpoint->edesc->bmAttributes & UE_XFERTYPE]++; in usbd_transfer_done()
2521 [xfer->endpoint->edesc->bmAttributes & UE_XFERTYPE]++; in usbd_transfer_done()
2525 usbd_callback_ss_done_defer(xfer); in usbd_transfer_done()
2538 struct usb_xfer *xfer = arg; in usbd_transfer_start_cb() local
2539 struct usb_endpoint *ep = xfer->endpoint; in usbd_transfer_start_cb()
2541 USB_BUS_LOCK_ASSERT(xfer->xroot->bus, MA_OWNED); in usbd_transfer_start_cb()
2546 usbpf_xfertap(xfer, USBPF_XFERTAP_SUBMIT); in usbd_transfer_start_cb()
2550 xfer->flags_int.can_cancel_immed = 1; in usbd_transfer_start_cb()
2553 if (xfer->error == 0) in usbd_transfer_start_cb()
2554 (ep->methods->start) (xfer); in usbd_transfer_start_cb()
2557 if (xfer->error) { in usbd_transfer_start_cb()
2559 usbd_transfer_done(xfer, (usb_error_t)0); in usbd_transfer_start_cb()
2570 usbd_xfer_set_stall(struct usb_xfer *xfer) in usbd_xfer_set_stall() argument
2572 if (xfer == NULL) { in usbd_xfer_set_stall()
2576 USB_XFER_LOCK_ASSERT(xfer, MA_OWNED); in usbd_xfer_set_stall()
2579 USB_BUS_LOCK(xfer->xroot->bus); in usbd_xfer_set_stall()
2580 xfer->flags.stall_pipe = 1; in usbd_xfer_set_stall()
2581 USB_BUS_UNLOCK(xfer->xroot->bus); in usbd_xfer_set_stall()
2585 usbd_xfer_is_stalled(struct usb_xfer *xfer) in usbd_xfer_is_stalled() argument
2587 return (xfer->endpoint->is_stalled); in usbd_xfer_is_stalled()
2597 usbd_transfer_clear_stall(struct usb_xfer *xfer) in usbd_transfer_clear_stall() argument
2599 if (xfer == NULL) { in usbd_transfer_clear_stall()
2603 USB_XFER_LOCK_ASSERT(xfer, MA_OWNED); in usbd_transfer_clear_stall()
2606 USB_BUS_LOCK(xfer->xroot->bus); in usbd_transfer_clear_stall()
2608 xfer->flags.stall_pipe = 0; in usbd_transfer_clear_stall()
2610 USB_BUS_UNLOCK(xfer->xroot->bus); in usbd_transfer_clear_stall()
2622 struct usb_xfer *xfer; in usbd_pipe_start() local
2625 xfer = pq->curr; in usbd_pipe_start()
2626 ep = xfer->endpoint; in usbd_pipe_start()
2628 USB_BUS_LOCK_ASSERT(xfer->xroot->bus, MA_OWNED); in usbd_pipe_start()
2640 if (xfer->flags.stall_pipe) { in usbd_pipe_start()
2645 xfer->flags.stall_pipe = 0; in usbd_pipe_start()
2648 info = xfer->xroot; in usbd_pipe_start()
2700 if (xfer->nframes == 0) { in usbd_pipe_start()
2702 xfer->aframes = 0; in usbd_pipe_start()
2703 usbd_transfer_done(xfer, (usb_error_t)0); in usbd_pipe_start()
2718 if (xfer->interval > 0) { in usbd_pipe_start()
2722 usbd_transfer_timeout_ms(xfer, in usbd_pipe_start()
2724 xfer->interval); in usbd_pipe_start()
2730 usbd_transfer_start_cb((void *)xfer); in usbd_pipe_start()
2741 usbd_transfer_timeout_ms(struct usb_xfer *xfer, in usbd_transfer_timeout_ms() argument
2744 USB_BUS_LOCK_ASSERT(xfer->xroot->bus, MA_OWNED); in usbd_transfer_timeout_ms()
2747 callout_reset(&xfer->timeout_handle, in usbd_transfer_timeout_ms()
2748 USB_MS_TO_TICKS(ms) + USB_CALLOUT_ZERO_TICKS, cb, xfer); in usbd_transfer_timeout_ms()
2769 usbd_callback_wrapper_sub(struct usb_xfer *xfer) in usbd_callback_wrapper_sub() argument
2775 bus = xfer->xroot->bus; in usbd_callback_wrapper_sub()
2777 if ((!xfer->flags_int.open) && in usbd_callback_wrapper_sub()
2778 (!xfer->flags_int.did_close)) { in usbd_callback_wrapper_sub()
2781 (xfer->endpoint->methods->close) (xfer); in usbd_callback_wrapper_sub()
2784 xfer->flags_int.did_close = 1; in usbd_callback_wrapper_sub()
2791 if ((xfer->error != 0) && (!xfer->flags_int.did_dma_delay) && in usbd_callback_wrapper_sub()
2792 ((xfer->error == USB_ERR_CANCELLED) || in usbd_callback_wrapper_sub()
2793 (xfer->error == USB_ERR_TIMEOUT) || in usbd_callback_wrapper_sub()
2798 xfer->flags_int.did_dma_delay = 1; in usbd_callback_wrapper_sub()
2801 xfer->flags_int.can_cancel_immed = 0; in usbd_callback_wrapper_sub()
2803 temp = usbd_get_dma_delay(xfer->xroot->udev); in usbd_callback_wrapper_sub()
2806 "on %p\n", temp, xfer); in usbd_callback_wrapper_sub()
2817 (bus->methods->start_dma_delay) (xfer); in usbd_callback_wrapper_sub()
2819 usbd_transfer_timeout_ms(xfer, in usbd_callback_wrapper_sub()
2828 if (xfer->aframes > xfer->nframes) { in usbd_callback_wrapper_sub()
2829 if (xfer->error == 0) { in usbd_callback_wrapper_sub()
2832 __FUNCTION__, xfer->aframes, xfer->nframes); in usbd_callback_wrapper_sub()
2835 xfer->aframes = xfer->nframes; in usbd_callback_wrapper_sub()
2839 xfer->actlen = 0; in usbd_callback_wrapper_sub()
2841 for (x = 0; x != xfer->aframes; x++) { in usbd_callback_wrapper_sub()
2842 xfer->actlen += xfer->frlengths[x]; in usbd_callback_wrapper_sub()
2850 for (; x < xfer->nframes; x++) { in usbd_callback_wrapper_sub()
2851 usbd_xfer_set_frame_len(xfer, x, 0); in usbd_callback_wrapper_sub()
2855 if (xfer->actlen > xfer->sumlen) { in usbd_callback_wrapper_sub()
2856 if (xfer->error == 0) { in usbd_callback_wrapper_sub()
2859 __FUNCTION__, xfer->actlen, xfer->sumlen); in usbd_callback_wrapper_sub()
2862 xfer->actlen = xfer->sumlen; in usbd_callback_wrapper_sub()
2866 xfer, xfer->endpoint, xfer->error, xfer->actlen, xfer->sumlen, in usbd_callback_wrapper_sub()
2867 xfer->aframes, xfer->nframes); in usbd_callback_wrapper_sub()
2869 if (xfer->error) { in usbd_callback_wrapper_sub()
2871 xfer->flags_int.control_act = 0; in usbd_callback_wrapper_sub()
2874 switch (xfer->error) { in usbd_callback_wrapper_sub()
2884 uhub_tt_buffer_reset_async_locked(xfer->xroot->udev, xfer->endpoint); in usbd_callback_wrapper_sub()
2890 if ((xfer->error != USB_ERR_CANCELLED) && in usbd_callback_wrapper_sub()
2891 (xfer->flags.pipe_bof)) { in usbd_callback_wrapper_sub()
2893 "on endpoint=%p\n", xfer, xfer->endpoint); in usbd_callback_wrapper_sub()
2898 if (xfer->actlen < xfer->sumlen) { in usbd_callback_wrapper_sub()
2900 xfer->flags_int.control_act = 0; in usbd_callback_wrapper_sub()
2902 if (!xfer->flags_int.short_xfer_ok) { in usbd_callback_wrapper_sub()
2903 xfer->error = USB_ERR_SHORT_XFER; in usbd_callback_wrapper_sub()
2904 if (xfer->flags.pipe_bof) { in usbd_callback_wrapper_sub()
2907 xfer, xfer->endpoint); in usbd_callback_wrapper_sub()
2916 if (xfer->flags_int.control_act) { in usbd_callback_wrapper_sub()
2918 "active on endpoint=%p\n", xfer, xfer->endpoint); in usbd_callback_wrapper_sub()
2924 ep = xfer->endpoint; in usbd_callback_wrapper_sub()
2931 if (ep->endpoint_q[xfer->stream_id].curr == xfer) { in usbd_callback_wrapper_sub()
2932 usb_command_wrapper(&ep->endpoint_q[xfer->stream_id], NULL); in usbd_callback_wrapper_sub()
2934 if ((ep->endpoint_q[xfer->stream_id].curr != NULL) || in usbd_callback_wrapper_sub()
2935 (TAILQ_FIRST(&ep->endpoint_q[xfer->stream_id].head) != NULL)) { in usbd_callback_wrapper_sub()
2940 xfer->endpoint->is_synced = 0; in usbd_callback_wrapper_sub()
2955 usb_command_wrapper(struct usb_xfer_queue *pq, struct usb_xfer *xfer) in usb_command_wrapper() argument
2959 if (xfer) { in usb_command_wrapper()
2964 if (pq->curr != xfer) { in usb_command_wrapper()
2965 usbd_transfer_enqueue(pq, xfer); in usb_command_wrapper()
2986 xfer = TAILQ_FIRST(&pq->head); in usb_command_wrapper()
2987 if (xfer) { in usb_command_wrapper()
2988 TAILQ_REMOVE(&pq->head, xfer, in usb_command_wrapper()
2990 xfer->wait_queue = NULL; in usb_command_wrapper()
2991 pq->curr = xfer; in usb_command_wrapper()
3030 struct usb_xfer *xfer; in usbd_ctrl_transfer_setup() local
3039 xfer = udev->ctrl_xfer[0]; in usbd_ctrl_transfer_setup()
3040 if (xfer) { in usbd_ctrl_transfer_setup()
3041 USB_XFER_LOCK(xfer); in usbd_ctrl_transfer_setup()
3043 ((xfer->address == udev->address) && in usbd_ctrl_transfer_setup()
3053 usbd_transfer_start(xfer); in usbd_ctrl_transfer_setup()
3056 USB_XFER_UNLOCK(xfer); in usbd_ctrl_transfer_setup()
3242 struct usb_xfer *xfer; in usbd_transfer_poll() local
3252 xfer = ppxfer[n]; in usbd_transfer_poll()
3253 if (xfer == NULL) in usbd_transfer_poll()
3255 xroot = xfer->xroot; in usbd_transfer_poll()
3397 usbd_xfer_softc(struct usb_xfer *xfer) in usbd_xfer_softc() argument
3399 return (xfer->priv_sc); in usbd_xfer_softc()
3403 usbd_xfer_get_priv(struct usb_xfer *xfer) in usbd_xfer_get_priv() argument
3405 return (xfer->priv_fifo); in usbd_xfer_get_priv()
3409 usbd_xfer_set_priv(struct usb_xfer *xfer, void *ptr) in usbd_xfer_set_priv() argument
3411 xfer->priv_fifo = ptr; in usbd_xfer_set_priv()
3415 usbd_xfer_state(struct usb_xfer *xfer) in usbd_xfer_state() argument
3417 return (xfer->usb_state); in usbd_xfer_state()
3421 usbd_xfer_set_flag(struct usb_xfer *xfer, int flag) in usbd_xfer_set_flag() argument
3425 xfer->flags.force_short_xfer = 1; in usbd_xfer_set_flag()
3428 xfer->flags.short_xfer_ok = 1; in usbd_xfer_set_flag()
3431 xfer->flags.short_frames_ok = 1; in usbd_xfer_set_flag()
3434 xfer->flags.manual_status = 1; in usbd_xfer_set_flag()
3440 usbd_xfer_clr_flag(struct usb_xfer *xfer, int flag) in usbd_xfer_clr_flag() argument
3444 xfer->flags.force_short_xfer = 0; in usbd_xfer_clr_flag()
3447 xfer->flags.short_xfer_ok = 0; in usbd_xfer_clr_flag()
3450 xfer->flags.short_frames_ok = 0; in usbd_xfer_clr_flag()
3453 xfer->flags.manual_status = 0; in usbd_xfer_clr_flag()
3464 usbd_xfer_get_timestamp(struct usb_xfer *xfer) in usbd_xfer_get_timestamp() argument
3466 return (xfer->isoc_time_complete); in usbd_xfer_get_timestamp()
3474 usbd_xfer_maxp_was_clamped(struct usb_xfer *xfer) in usbd_xfer_maxp_was_clamped() argument
3476 return (xfer->flags_int.maxp_was_clamped); in usbd_xfer_maxp_was_clamped()
3487 usbd_xfer_get_isochronous_start_frame(struct usb_xfer *xfer, uint32_t frame_curr, in usbd_xfer_get_isochronous_start_frame() argument
3496 delta = (xfer->endpoint->isoc_next - frame_curr) & frame_mask; in usbd_xfer_get_isochronous_start_frame()
3503 if (xfer->endpoint->is_synced == 0 || in usbd_xfer_get_isochronous_start_frame()
3507 xfer->endpoint->isoc_next = (frame_curr + 2 * frame_ms + frame_min) & frame_mask; in usbd_xfer_get_isochronous_start_frame()
3508 xfer->endpoint->is_synced = 1; in usbd_xfer_get_isochronous_start_frame()
3517 *p_frame_start = xfer->endpoint->isoc_next & frame_mask; in usbd_xfer_get_isochronous_start_frame()
3520 delta = xfer->endpoint->isoc_next - frame_curr + (frame_curr % frame_ms); in usbd_xfer_get_isochronous_start_frame()
3524 switch (usbd_get_speed(xfer->xroot->udev)) { in usbd_xfer_get_isochronous_start_frame()
3529 shift = usbd_xfer_get_fps_shift(xfer); in usbd_xfer_get_isochronous_start_frame()
3534 duration = ((xfer->nframes << shift) + 7) / 8; in usbd_xfer_get_isochronous_start_frame()
3537 xfer->isoc_time_complete = in usbd_xfer_get_isochronous_start_frame()
3538 usb_isoc_time_expand(xfer->xroot->bus, frame_curr / frame_ms) + in usbd_xfer_get_isochronous_start_frame()
3542 xfer->endpoint->isoc_next += duration * frame_ms; in usbd_xfer_get_isochronous_start_frame()
3543 xfer->endpoint->isoc_next &= frame_mask; in usbd_xfer_get_isochronous_start_frame()