You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
716 * Bulk URBs may<br />
717 * use the URB_ZERO_PACKET transfer flag, indicating that bulk OUT transfers<br />
718 * should always terminate with a short packet, even if it means adding an<br />
719 * extra zero length packet.<br />
720 *<br />
721 * Control URBs must provide a setup_packet. The setup_packet and<br />
722 * transfer_buffer may each be mapped for DMA or not, independently <strong>of</strong><br />
723 * the other. The transfer_flags bits URB_NO_TRANSFER_DMA_MAP and<br />
724 * URB_NO_SETUP_DMA_MAP indicate which buffers have already been mapped.<br />
725 * URB_NO_SETUP_DMA_MAP is ignored for non-control URBs.<br />
726 *<br />
727 * Interrupt URBs must provide an interval, saying how <strong>of</strong>ten (in milliseconds<br />
728 * or, for highspeed devices, 125 microsecond units)<br />
729 * to poll for transfers. After the URB has been submitted, the interval<br />
730 * field reflects how the transfer was actually scheduled.<br />
731 * The polling interval may be more frequent than requested.<br />
732 * For example, some controllers have a maximum interval <strong>of</strong> 32 microseconds,<br />
733 * while others support intervals <strong>of</strong> up to 1024 microseconds.<br />
734 * Isochronous URBs also have transfer intervals. (Note that for isochronous<br />
735 * endpoints, as well as high speed interrupt endpoints, the encoding <strong>of</strong><br />
736 * the transfer interval in the endpoint descriptor is logarithmic.<br />
737 * Device drivers must convert that value to linear units themselves.)<br />
738 *<br />
739 * Isochronous URBs normally use the URB_ISO_ASAP transfer flag, telling<br />
740 * the host controller to schedule the transfer as soon as bandwidth<br />
741 * utilization allows, and then set start_frame to reflect the actual frame<br />
742 * selected during submission. Otherwise drivers must specify the start_frame<br />
743 * and handle the case where the transfer can't begin then. However, drivers<br />
744 * won't know how bandwidth is currently allocated, and while they can<br />
745 * find the current frame using usb_get_current_frame_number () they can't<br />
67<br />
746 * know the range for that frame number. (Ranges for frame counter values<br />
747 * are HC-specific, and can go from 256 to 65536 frames from "now".)<br />
748 *<br />
749 * Isochronous URBs have a different data transfer model, in part because<br />
750 * the quality <strong>of</strong> service is only "best effort". Callers provide specially<br />
751 * allocated URBs, with number_<strong>of</strong>_packets worth <strong>of</strong> iso_frame_desc structures<br />
752 * at the end. Each such packet is an individual ISO transfer. Isochronous<br />
753 * URBs are normally queued, submitted by drivers to arrange that<br />
754 * transfers are at least double buffered, and then explicitly resubmitted<br />
755 * in completion handlers, so<br />
756 * that data (such as audio or video) streams at as constant a rate as the<br />
757 * host controller scheduler can support.<br />
758 *