Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hpa/linux...
[linux-2.6] / drivers / usb / README
1 To understand all the Linux-USB framework, you'll use these resources:
2
3     * This source code.  This is necessarily an evolving work, and
4       includes kerneldoc that should help you get a current overview.
5       ("make pdfdocs", and then look at "usb.pdf" for host side and
6       "gadget.pdf" for peripheral side.)  Also, Documentation/usb has
7       more information.
8
9     * The USB 2.0 specification (from www.usb.org), with supplements
10       such as those for USB OTG and the various device classes.
11       The USB specification has a good overview chapter, and USB
12       peripherals conform to the widely known "Chapter 9".
13
14     * Chip specifications for USB controllers.  Examples include
15       host controllers (on PCs, servers, and more); peripheral
16       controllers (in devices with Linux firmware, like printers or
17       cell phones); and hard-wired peripherals like Ethernet adapters.
18
19     * Specifications for other protocols implemented by USB peripheral
20       functions.  Some are vendor-specific; others are vendor-neutral
21       but just standardized outside of the www.usb.org team.
22
23 Here is a list of what each subdirectory here is, and what is contained in
24 them.
25
26 core/           - This is for the core USB host code, including the
27                   usbfs files and the hub class driver ("khubd").
28
29 host/           - This is for USB host controller drivers.  This
30                   includes UHCI, OHCI, EHCI, and others that might
31                   be used with more specialized "embedded" systems.
32
33 gadget/         - This is for USB peripheral controller drivers and
34                   the various gadget drivers which talk to them.
35
36
37 Individual USB driver directories.  A new driver should be added to the
38 first subdirectory in the list below that it fits into.
39
40 image/          - This is for still image drivers, like scanners or
41                   digital cameras.
42 ../input/       - This is for any driver that uses the input subsystem,
43                   like keyboard, mice, touchscreens, tablets, etc.
44 ../media/       - This is for multimedia drivers, like video cameras,
45                   radios, and any other drivers that talk to the v4l
46                   subsystem.
47 ../net/         - This is for network drivers.
48 serial/         - This is for USB to serial drivers.
49 storage/        - This is for USB mass-storage drivers.
50 class/          - This is for all USB device drivers that do not fit
51                   into any of the above categories, and work for a range
52                   of USB Class specified devices. 
53 misc/           - This is for all USB device drivers that do not fit
54                   into any of the above categories.