The USB Gadget driver framework
[Posted April 1, 2003 by corbet]
David Brownell has sent out
an announcement
regarding the availability of the new USB "gadget" API. The Linux kernel
has long had support for USB host controllers - the subsystem which lets
the kernel drive attached USB devices. But what if Linux is running inside
the device itself? Implementing the USB protocol is a very different job
when you're approaching it from the other end of the bus, and the current
in-kernel USB implementation will not be particularly helpful.
Thus this announcement. The chosen terminology calls attached devices
"gadgets," which need a gadget driver to make them work. (The USB
standard, instead, calls gadgets "devices," but reusing the term "device
driver" in this context would lead only to confusion). The new gadget
implementation supports the NetChip 2280 controller, and comes with a
couple of drivers: "gadget zero" (a skeleton example driver) and a network
driver. There's also a dummy controller driver, allowing gadget
development to be done in the absence of real hardware (and, perhaps, on a
more friendly development platform).
The project has reached the point where it needs to get more people
involved writing drivers. The substrate is there, so a lot of the hard
decisions have been made, but the actual implementation for various
hardware controllers and gadget classes is missing. This could be a fun
area of development for people who would like to get into kernel
programming.
(
Log in to post comments)