| 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 ("hub_wq"). |
| 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. |