Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
b8c6a0e0
Commit
b8c6a0e0
authored
Feb 27, 2003
by
David Brownell
Committed by
Greg Kroah-Hartman
Feb 27, 2003
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[PATCH] USB: kerneldoc/pdf
Move the USB documentation to a separate file.
parent
1bda0014
Changes
3
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
295 additions
and
97 deletions
+295
-97
Documentation/DocBook/Makefile
Documentation/DocBook/Makefile
+1
-1
Documentation/DocBook/kernel-api.tmpl
Documentation/DocBook/kernel-api.tmpl
+0
-96
Documentation/DocBook/usb.tmpl
Documentation/DocBook/usb.tmpl
+294
-0
No files found.
Documentation/DocBook/Makefile
View file @
b8c6a0e0
...
...
@@ -11,7 +11,7 @@ DOCBOOKS := wanbook.sgml z8530book.sgml mcabook.sgml videobook.sgml \
kernel-locking.sgml via-audio.sgml mousedrivers.sgml
\
deviceiobook.sgml procfs-guide.sgml tulip-user.sgml
\
writing_usb_driver.sgml scsidrivers.sgml sis900.sgml
\
kernel-api.sgml journal-api.sgml lsm.sgml
kernel-api.sgml journal-api.sgml lsm.sgml
usb.sgml
###
# The build process is as follows (targets):
...
...
Documentation/DocBook/kernel-api.tmpl
View file @
b8c6a0e0
...
...
@@ -228,102 +228,6 @@ X!Isound/sound_firmware.c
-->
</chapter>
<chapter
id=
"usb"
>
<title>
USB Devices
</title>
<para>
Drivers for USB devices talk to the "usbcore" APIs, and are
exposed through driver frameworks such as block, character,
or network devices.
There are two types of public "usbcore" APIs: those intended for
general driver use, and those which are only public to drivers that
are part of the core.
The drivers that are part of the core are involved in managing a USB bus.
They include the "hub" driver, which manages trees of USB devices, and
several different kinds of "host controller" driver (HCD), which control
individual busses.
</para>
<para>
The device model seen by USB drivers is relatively complex.
</para>
<itemizedlist>
<listitem><para>
USB supports four kinds of data transfer
(control, bulk, interrupt, and isochronous). Two transfer
types use bandwidth as it's available (control and bulk),
while the other two types of transfer (interrupt and isochronous)
are scheduled to provide guaranteed bandwidth.
</para></listitem>
<listitem><para>
The device description model includes one or more
"configurations" per device, only one of which is active at a time.
</para></listitem>
<listitem><para>
Configurations have one or more "interface", each
of which may have "alternate settings". Interfaces may be
standardized by USB "Class" specifications, or may be specific to
a vendor or device.
</para>
<para>
USB device drivers actually bind to interfaces, not devices.
Think of them as "interface drivers", though you
may not see many devices where the distinction is important.
Most USB devices are simple, with only one configuration,
one interface, and one alternate setting.
</para></listitem>
<listitem><para>
Interfaces have one or more "endpoints", each of
which supports one type and direction of data transfer such as
"bulk out" or "interrupt in". The entire configuration may have
up to sixteen endpoints in each direction, allocated as needed
among all the interfaces.
</para></listitem>
<listitem><para>
Data transfer on USB is packetized; each endpoint
has a maximum packet size.
Drivers must often be aware of conventions such as flagging the end
of bulk transfers using "short" (including zero length) packets.
</para></listitem>
<listitem><para>
The Linux USB API supports synchronous calls for
control and bulk messaging.
It also supports asynchnous calls for all kinds of data transfer,
using request structures called "URBs" (USB Request Blocks).
</para></listitem>
</itemizedlist>
<para>
Accordingly, the USB Core API exposed to device drivers
covers quite a lot of territory. You'll probably need to consult
the USB 2.0 specification, available online from www.usb.org at
no cost, as well as class or device specifications.
</para>
<sect1><title>
Data Types and Macros
</title>
!Iinclude/linux/usb.h
</sect1>
<sect1><title>
USB Core APIs
</title>
!Edrivers/usb/core/urb.c
<!-- FIXME: Removed for now since no structured comments in source
X!Edrivers/usb/core/config.c
-->
!Edrivers/usb/core/message.c
!Edrivers/usb/core/file.c
!Edrivers/usb/core/usb.c
</sect1>
<sect1><title>
Host Controller APIs
</title>
<para>
These APIs are only for use by host controller drivers,
most of which implement standard register interfaces such as
EHCI, OHCI, or UHCI.
</para>
!Edrivers/usb/core/hcd.c
!Edrivers/usb/core/hcd-pci.c
!Edrivers/usb/core/buffer.c
</sect1>
</chapter>
<chapter
id=
"uart16x50"
>
<title>
16x50 UART Driver
</title>
!Edrivers/serial/core.c
...
...
Documentation/DocBook/usb.tmpl
0 → 100644
View file @
b8c6a0e0
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment