Back to home page




0001 To understand all the Linux-USB framework, you'll use these resources:
0003     * This source code.  This is necessarily an evolving work, and
0004       includes kerneldoc that should help you get a current overview.
0005       ("make pdfdocs", and then look at "usb.pdf" for host side and
0006       "gadget.pdf" for peripheral side.)  Also, Documentation/usb has
0007       more information.
0009     * The USB 2.0 specification (from, with supplements
0010       such as those for USB OTG and the various device classes.
0011       The USB specification has a good overview chapter, and USB
0012       peripherals conform to the widely known "Chapter 9".
0014     * Chip specifications for USB controllers.  Examples include
0015       host controllers (on PCs, servers, and more); peripheral
0016       controllers (in devices with Linux firmware, like printers or
0017       cell phones); and hard-wired peripherals like Ethernet adapters.
0019     * Specifications for other protocols implemented by USB peripheral
0020       functions.  Some are vendor-specific; others are vendor-neutral
0021       but just standardized outside of the team.
0023 Here is a list of what each subdirectory here is, and what is contained in
0024 them.
0026 core/           - This is for the core USB host code, including the
0027                   usbfs files and the hub class driver ("hub_wq").
0029 host/           - This is for USB host controller drivers.  This
0030                   includes UHCI, OHCI, EHCI, and others that might
0031                   be used with more specialized "embedded" systems.
0033 gadget/         - This is for USB peripheral controller drivers and
0034                   the various gadget drivers which talk to them.
0037 Individual USB driver directories.  A new driver should be added to the
0038 first subdirectory in the list below that it fits into.
0040 image/          - This is for still image drivers, like scanners or
0041                   digital cameras.
0042 ../input/       - This is for any driver that uses the input subsystem,
0043                   like keyboard, mice, touchscreens, tablets, etc.
0044 ../media/       - This is for multimedia drivers, like video cameras,
0045                   radios, and any other drivers that talk to the v4l
0046                   subsystem.
0047 ../net/         - This is for network drivers.
0048 serial/         - This is for USB to serial drivers.
0049 storage/        - This is for USB mass-storage drivers.
0050 class/          - This is for all USB device drivers that do not fit
0051                   into any of the above categories, and work for a range
0052                   of USB Class specified devices. 
0053 misc/           - This is for all USB device drivers that do not fit
0054                   into any of the above categories.