diff options
| author | Sam Bishop <sam@bishop.dhs.org> | 2006-08-28 18:42:10 -0400 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-09-27 14:58:48 -0400 |
| commit | 341323269258ab8484077a9c70db804fbae6ae93 (patch) | |
| tree | 10f2a93eee8f107ddb3e83acaa5778c01d24c0b0 /Documentation/DocBook | |
| parent | 39c2f3ac04663bb2546a7058701a621e526eabb2 (diff) | |
USB: doc patch 1
Grammar, spelling, and stylistic edits.
Signed-off-by: Sam Bishop <sam@bishop.dhs.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'Documentation/DocBook')
| -rw-r--r-- | Documentation/DocBook/usb.tmpl | 98 |
1 files changed, 44 insertions, 54 deletions
diff --git a/Documentation/DocBook/usb.tmpl b/Documentation/DocBook/usb.tmpl index 320af25de3a2..8a28f76b9359 100644 --- a/Documentation/DocBook/usb.tmpl +++ b/Documentation/DocBook/usb.tmpl | |||
| @@ -43,59 +43,52 @@ | |||
| 43 | 43 | ||
| 44 | <para>A Universal Serial Bus (USB) is used to connect a host, | 44 | <para>A Universal Serial Bus (USB) is used to connect a host, |
| 45 | such as a PC or workstation, to a number of peripheral | 45 | such as a PC or workstation, to a number of peripheral |
| 46 | devices. USB uses a tree structure, with the host at the | 46 | devices. USB uses a tree structure, with the host as the |
| 47 | root (the system's master), hubs as interior nodes, and | 47 | root (the system's master), hubs as interior nodes, and |
| 48 | peripheral devices as leaves (and slaves). | 48 | peripherals as leaves (and slaves). |
| 49 | Modern PCs support several such trees of USB devices, usually | 49 | Modern PCs support several such trees of USB devices, usually |
| 50 | one USB 2.0 tree (480 Mbit/sec each) with | 50 | one USB 2.0 tree (480 Mbit/sec each) with |
| 51 | a few USB 1.1 trees (12 Mbit/sec each) that are used when you | 51 | a few USB 1.1 trees (12 Mbit/sec each) that are used when you |
| 52 | connect a USB 1.1 device directly to the machine's "root hub". | 52 | connect a USB 1.1 device directly to the machine's "root hub". |
| 53 | </para> | 53 | </para> |
| 54 | 54 | ||
| 55 | <para>That master/slave asymmetry was designed in part for | 55 | <para>That master/slave asymmetry was designed-in for a number of |
| 56 | ease of use. It is not physically possible to assemble | 56 | reasons, one being ease of use. It is not physically possible to |
| 57 | (legal) USB cables incorrectly: all upstream "to-the-host" | 57 | assemble (legal) USB cables incorrectly: all upstream "to the host" |
| 58 | connectors are the rectangular type, matching the sockets on | 58 | connectors are the rectangular type (matching the sockets on |
| 59 | root hubs, and the downstream type are the squarish type | 59 | root hubs), and all downstream connectors are the squarish type |
| 60 | (or they are built in to the peripheral). | 60 | (or they are built into the peripheral). |
| 61 | Software doesn't need to deal with distributed autoconfiguration | 61 | Also, the host software doesn't need to deal with distributed |
| 62 | since the pre-designated master node manages all that. | 62 | auto-configuration since the pre-designated master node manages all that. |
| 63 | At the electrical level, bus protocol overhead is reduced by | 63 | And finally, at the electrical level, bus protocol overhead is reduced by |
| 64 | eliminating arbitration and moving scheduling into host software. | 64 | eliminating arbitration and moving scheduling into the host software. |
| 65 | </para> | 65 | </para> |
| 66 | 66 | ||
| 67 | <para>USB 1.0 was announced in January 1996, and was revised | 67 | <para>USB 1.0 was announced in January 1996 and was revised |
| 68 | as USB 1.1 (with improvements in hub specification and | 68 | as USB 1.1 (with improvements in hub specification and |
| 69 | support for interrupt-out transfers) in September 1998. | 69 | support for interrupt-out transfers) in September 1998. |
| 70 | USB 2.0 was released in April 2000, including high speed | 70 | USB 2.0 was released in April 2000, adding high-speed |
| 71 | transfers and transaction translating hubs (used for USB 1.1 | 71 | transfers and transaction-translating hubs (used for USB 1.1 |
| 72 | and 1.0 backward compatibility). | 72 | and 1.0 backward compatibility). |
| 73 | </para> | 73 | </para> |
| 74 | 74 | ||
| 75 | <para>USB support was added to Linux early in the 2.2 kernel series | 75 | <para>Kernel developers added USB support to Linux early in the 2.2 kernel |
| 76 | shortly before the 2.3 development forked off. Updates | 76 | series, shortly before 2.3 development forked. Updates from 2.3 were |
| 77 | from 2.3 were regularly folded back into 2.2 releases, bringing | 77 | regularly folded back into 2.2 releases, which improved reliability and |
| 78 | new features such as <filename>/sbin/hotplug</filename> support, | 78 | brought <filename>/sbin/hotplug</filename> support as well more drivers. |
| 79 | more drivers, and more robustness. | 79 | Such improvements were continued in the 2.5 kernel series, where they added |
| 80 | The 2.5 kernel series continued such improvements, and also | 80 | USB 2.0 support, improved performance, and made the host controller drivers |
| 81 | worked on USB 2.0 support, | 81 | (HCDs) more consistent. They also simplified the API (to make bugs less |
| 82 | higher performance, | 82 | likely) and added internal "kerneldoc" documentation. |
| 83 | better consistency between host controller drivers, | ||
| 84 | API simplification (to make bugs less likely), | ||
| 85 | and providing internal "kerneldoc" documentation. | ||
| 86 | </para> | 83 | </para> |
| 87 | 84 | ||
| 88 | <para>Linux can run inside USB devices as well as on | 85 | <para>Linux can run inside USB devices as well as on |
| 89 | the hosts that control the devices. | 86 | the hosts that control the devices. |
| 90 | Because the Linux 2.x USB support evolved to support mass market | 87 | But USB device drivers running inside those peripherals |
| 91 | platforms such as Apple Macintosh or PC-compatible systems, | ||
| 92 | it didn't address design concerns for those types of USB systems. | ||
| 93 | So it can't be used inside mass-market PDAs, or other peripherals. | ||
| 94 | USB device drivers running inside those Linux peripherals | ||
| 95 | don't do the same things as the ones running inside hosts, | 88 | don't do the same things as the ones running inside hosts, |
| 96 | and so they've been given a different name: | 89 | so they've been given a different name: |
| 97 | they're called <emphasis>gadget drivers</emphasis>. | 90 | <emphasis>gadget drivers</emphasis>. |
| 98 | This document does not present gadget drivers. | 91 | This document does not cover gadget drivers. |
| 99 | </para> | 92 | </para> |
| 100 | 93 | ||
| 101 | </chapter> | 94 | </chapter> |
| @@ -103,17 +96,14 @@ | |||
| 103 | <chapter id="host"> | 96 | <chapter id="host"> |
| 104 | <title>USB Host-Side API Model</title> | 97 | <title>USB Host-Side API Model</title> |
| 105 | 98 | ||
| 106 | <para>Within the kernel, | 99 | <para>Host-side drivers for USB devices talk to the "usbcore" APIs. |
| 107 | host-side drivers for USB devices talk to the "usbcore" APIs. | 100 | There are two. One is intended for |
| 108 | There are two types of public "usbcore" APIs, targetted at two different | 101 | <emphasis>general-purpose</emphasis> drivers (exposed through |
| 109 | layers of USB driver. Those are | 102 | driver frameworks), and the other is for drivers that are |
| 110 | <emphasis>general purpose</emphasis> drivers, exposed through | 103 | <emphasis>part of the core</emphasis>. |
| 111 | driver frameworks such as block, character, or network devices; | 104 | Such core drivers include the <emphasis>hub</emphasis> driver |
| 112 | and drivers that are <emphasis>part of the core</emphasis>, | 105 | (which manages trees of USB devices) and several different kinds |
| 113 | which are involved in managing a USB bus. | 106 | of <emphasis>host controller drivers</emphasis>, |
| 114 | Such core drivers include the <emphasis>hub</emphasis> driver, | ||
| 115 | which manages trees of USB devices, and several different kinds | ||
| 116 | of <emphasis>host controller driver (HCD)</emphasis>, | ||
| 117 | which control individual busses. | 107 | which control individual busses. |
| 118 | </para> | 108 | </para> |
| 119 | 109 | ||
| @@ -122,21 +112,21 @@ | |||
| 122 | 112 | ||
| 123 | <itemizedlist> | 113 | <itemizedlist> |
| 124 | 114 | ||
| 125 | <listitem><para>USB supports four kinds of data transfer | 115 | <listitem><para>USB supports four kinds of data transfers |
| 126 | (control, bulk, interrupt, and isochronous). Two transfer | 116 | (control, bulk, interrupt, and isochronous). Two of them (control |
| 127 | types use bandwidth as it's available (control and bulk), | 117 | and bulk) use bandwidth as it's available, |
| 128 | while the other two types of transfer (interrupt and isochronous) | 118 | while the other two (interrupt and isochronous) |
| 129 | are scheduled to provide guaranteed bandwidth. | 119 | are scheduled to provide guaranteed bandwidth. |
| 130 | </para></listitem> | 120 | </para></listitem> |
| 131 | 121 | ||
| 132 | <listitem><para>The device description model includes one or more | 122 | <listitem><para>The device description model includes one or more |
| 133 | "configurations" per device, only one of which is active at a time. | 123 | "configurations" per device, only one of which is active at a time. |
| 134 | Devices that are capable of high speed operation must also support | 124 | Devices that are capable of high-speed operation must also support |
| 135 | full speed configurations, along with a way to ask about the | 125 | full-speed configurations, along with a way to ask about the |
| 136 | "other speed" configurations that might be used. | 126 | "other speed" configurations which might be used. |
| 137 | </para></listitem> | 127 | </para></listitem> |
| 138 | 128 | ||
| 139 | <listitem><para>Configurations have one or more "interface", each | 129 | <listitem><para>Configurations have one or more "interfaces", each |
| 140 | of which may have "alternate settings". Interfaces may be | 130 | of which may have "alternate settings". Interfaces may be |
| 141 | standardized by USB "Class" specifications, or may be specific to | 131 | standardized by USB "Class" specifications, or may be specific to |
| 142 | a vendor or device.</para> | 132 | a vendor or device.</para> |
| @@ -162,7 +152,7 @@ | |||
| 162 | </para></listitem> | 152 | </para></listitem> |
| 163 | 153 | ||
| 164 | <listitem><para>The Linux USB API supports synchronous calls for | 154 | <listitem><para>The Linux USB API supports synchronous calls for |
| 165 | control and bulk messaging. | 155 | control and bulk messages. |
| 166 | It also supports asynchnous calls for all kinds of data transfer, | 156 | It also supports asynchnous calls for all kinds of data transfer, |
| 167 | using request structures called "URBs" (USB Request Blocks). | 157 | using request structures called "URBs" (USB Request Blocks). |
| 168 | </para></listitem> | 158 | </para></listitem> |
