Update of /cvsroot/linuxconsole/ruby/linux/Documentation/DocBook
In directory usw-pr-cvs1:/tmp/cvs-serv21051/Documentation/DocBook
Modified Files:
Makefile kernel-api.tmpl
Log Message:
Synced to 2.5.1. The USB stuff has changed thus breaking the HID stuff.
Index: Makefile
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/Documentation/DocBook/Makefile,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- Makefile 2001/11/13 19:38:21 1.6
+++ Makefile 2001/12/26 21:08:32 1.7
@@ -108,7 +108,9 @@
$(TOPDIR)/drivers/video/modedb.c \
$(TOPDIR)/fs/devfs/base.c \
$(TOPDIR)/fs/locks.c \
+ $(TOPDIR)/fs/bio.c \
$(TOPDIR)/include/asm-i386/bitops.h \
+ $(TOPDIR)/include/linux/usb.h \
$(TOPDIR)/kernel/pm.c \
$(TOPDIR)/kernel/ksyms.c \
$(TOPDIR)/kernel/kmod.c \
Index: kernel-api.tmpl
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/Documentation/DocBook/kernel-api.tmpl,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- kernel-api.tmpl 2001/10/15 01:13:16 1.3
+++ kernel-api.tmpl 2001/12/26 21:08:32 1.4
@@ -204,8 +204,83 @@
</chapter>
<chapter id="usb">
- <title>USB Devices</title>
+ <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/usb.c
+ </sect1>
+
</chapter>
<chapter id="uart16x50">
|