Lines Matching +full:high +full:- +full:bandwidth
1 .. _usb-hostside-api:
4 The Linux-USB Host Side API
18 That master/slave asymmetry was designed-in for a number of reasons, one
22 distributed auto-configuration since the pre-designated master node
37 USB Host-Side API Model
40 Host-side drivers for USB devices talk to the "usbcore" APIs. There are
41 two. One is intended for *general-purpose* drivers (exposed through
49 - USB supports four kinds of data transfers (control, bulk, interrupt,
50 and isochronous). Two of them (control and bulk) use bandwidth as
52 scheduled to provide guaranteed bandwidth.
54 - The device description model includes one or more "configurations"
60 - From USB 3.0 on configurations have one or more "functions", which
64 - Configurations or functions have one or more "interfaces", each of which may have
74 - Interfaces have one or more "endpoints", each of which supports one
79 - Data transfer on USB is packetized; each endpoint has a maximum
84 - The Linux USB API supports synchronous calls for control and bulk
94 The only host-side drivers that actually touch hardware (reading/writing
101 faults (including software-induced ones like unlinking an URB) isn't yet
105 well as to make sure they aren't relying on some HCD-specific behavior.
109 USB-Standard Types
120 .. kernel-doc:: drivers/usb/common/common.c
128 Host-Side Data Types and Macros
136 .. kernel-doc:: include/linux/usb.h
148 per-packet fault reports). Built on top of that is synchronous API
151 wrappers for single-buffer control and bulk transfers (which are awkward
161 .. kernel-doc:: drivers/usb/core/urb.c
164 .. kernel-doc:: drivers/usb/core/message.c
167 .. kernel-doc:: drivers/usb/core/file.c
170 .. kernel-doc:: drivers/usb/core/driver.c
173 .. kernel-doc:: drivers/usb/core/usb.c
176 .. kernel-doc:: drivers/usb/core/hub.c
193 based controllers (and a few non-PCI based ones) use one of those
203 significantly reduce hcd-specific behaviors.
205 .. kernel-doc:: drivers/usb/core/hcd.c
208 .. kernel-doc:: drivers/usb/core/hcd-pci.c
211 .. kernel-doc:: drivers/usb/core/buffer.c
223 - `libusb <http://libusb.sourceforge.net>`__ for C/C++, and
224 - `jUSB <http://jUSB.sourceforge.net>`__ for Java.
228 at http://www.linux-usb.org/
232 - They were used to be implemented via *usbfs*, but this is not part of
235 - This particular documentation is incomplete, especially with respect
237 (new) documentation need to be cross-reviewed.
240 -----------------------------
244 - ``/dev/bus/usb/BBB/DDD`` ... magic files exposing the each device's
260 --------------------
264 - *They can be read,* producing first the device descriptor (18 bytes) and
269 the BCD-encoded fields, and the vendor and product IDs) will be
274 - *Perform USB operations* using *ioctl()* requests to make endpoint I/O
288 it's relatively common for devices to re-enumerate while they are
295 configuration of the device. Multi-byte fields in the device descriptor
303 These files may also be used to write user-level drivers for the USB
320 -------------------------------
339 (An example might be software using vendor-specific control requests for
343 More likely, you need a more complex style driver: one using non-control
347 *isochronous* transfers offer service guarantees because their bandwidth
352 Your user-mode driver should never need to worry about cleaning up
357 --------------------
374 :ref:`usb-error-codes`).
379 hub_wq (in the kernel) setting a device-wide *configuration* that
418 *You can't tell whether a "not slow" device is connected at high
452 * 'request' becomes the driver->ioctl() 'code' parameter.
454 * is copied to or from the driver->ioctl() 'buf' parameter.
473 devices what device special file should be used. Two pre-defined
549 returning ``-EPIPE`` status to a data transfer request. Do not issue
636 (It's usually a pointer to per-request data.) Flags can modify requests
695 - ``/sys/kernel/debug/usb/devices`` ... a text file showing each of the USB
700 -----------------------------
704 (including class and vendor status) is available from device-specific
717 poll(&pfd, 1, -1);
725 udev or HAL to initialize a device or start a user-mode helper program,
736 Each line is tagged with a one-character ID for that line::
739 B = Bandwidth (applies only to USB host controllers, which are
780 480 Mbit/s for high speed USB (added for USB 2.0)
788 Bandwidth info
796 | |__Total Bandwidth allocated to this bus
799 Bandwidth allocation is an approximation of how much of one frame
801 are the only transfers that reserve bandwidth. Control and bulk
802 transfers use all other bandwidth, including reserved bandwidth that
805 The percentage is how much of the "reserved" bandwidth is scheduled by
807 90% of the bus bandwidth is reserved. For a high speed bus (loosely,
879 rather differently. For example, a bus-powered configuration
880 might be much less capable than one that is self-powered. Only
908 amount of periodic bandwidth. To use significant fractions
909 of bus bandwidth, drivers must select a non-default altsetting.
929 endpoints. For high speed endpoints the transfer interval may be
932 For high speed periodic endpoints, the ``EndpointMaxPacketSize`` reflects
933 the per-microframe data transfer size. For "high bandwidth"
937 With the Linux-USB stack, periodic bandwidth reservations use the
947 ``grep -i ^[tdp]: /sys/kernel/debug/usb/devices`` can be used to list
1026 +------------------+
1028 +------------------+ (nn) is Mbps.
1030 +------------------+
1033 +-----------------------+
1034 Level 1 | Dev#2: 4-port hub (12)|
1035 +-----------------------+
1037 +-----------------------+
1041 +--------------------+ +--------------------+
1043 +--------------------+ +--------------------+
1047 Or, in a more tree-like structure (ports [Connectors] without