public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* ANNOUNCE:  Linux "USB Gadget" API and Driver Framework
@ 2003-03-31 19:51 David Brownell
  2003-04-15 18:02 ` [linux-usb-devel] " Robert Schwebel
  0 siblings, 1 reply; 3+ messages in thread
From: David Brownell @ 2003-03-31 19:51 UTC (permalink / raw)
  To: linux-usb-devel, linux-kernel

WHAT
     This is a kernel-mode API, and an initial set of drivers for it, that
     helps Linux 2.4 and 2.5 kernels support intelligent "USB Device"
     (peripheral) hardware.

     The code is ready for more general use by the Linux community, including
     development of new drivers.  It supports network connections over USB
     "out of the box", using the NetChip 2280 USB 2.0 high speed controller,
     and is now being used with high speed USB devices running under Linux.

     (Note that such an API is on the 2.5 wishlist.  This is the first such
     API that was designed from the ground up to work with the existing
     host side Linux-USB stack, and to support USB 2.0 high speed devices.)

WHERE
     http://kernel.bkbits.net/~david-b/

	Temporary web page with info, including:
	    - gadget.pdf ... kerneldoc, in PDF format
	    - gadget25-0331.patch ... patch for 2.5
	    - gadget24-0331.patch ... patch for 2.4

     bk://kernel.bkbits.net/david-b/gadget-2.5
     bk://kernel.bkbits.net/david-b/gadget-2.4

	BitKeeper repositories

HELPING
     There are lots of opportunities to write drivers here, both for
     dozens more USB "class" specifications and, if you want to get
     down'n'dirty, for USB device controller hardware.

     Please discuss this on the linux-usb-devel@lists.sourceforge.net
     mailing list, unless/until a new list gets set up.

DETAILS
     Since talking about a "USB Device Driver" becomes ambiguous when
     both sides of the protocol stack can run Linux, Linux-USB developers
     have chosen new terminology.  A "USB Device Driver" is what current
     Linux kernels have:  a Host-side driver.   A Device-side driver is
     instead called a "USB Gadget Driver" ... that's why the new name.

     The API is straightforward and thin, just one new header file to shape
     how "gadget" drivers talk to the underlying controller hardware.  There
     is no "mid-layer" requirement, and all policy for device configuration
     and management goes above this API.  I/O involves just submitting an
     asynchronous request to the relevant endpoint (like URBs but simpler).

     There are currently two USB device controller drivers available
     implementing that API.

	- The "net2280" driver supports the NetChip 2280 controller, which
	  is a PCI device that supports USB 2.0 high speed transfers.
	  (PCI card versions are available for development.)

	- There's a "dummy_hcd" which provides partial emulation (bulk
	  and control transfers) of a controller so that you can do some
	  stages of development without real hardware.  (Maybe with
	  debug assistance from UML.)  2.5 only for now (got patch?).

	  This can emulate three kinds of hardware that are of interest
	  to the Linux community:  the net2280 (as above), the sa1100
	  (found in older PDAs), and the pxa25x (found in newer PDAs).

     There are currently two gadget drivers using that API:

	- "Gadget Zero" helps development and testing.  One configuration
	  sinks or sources data; the other one loops data sent out from
	  the host back in to that host.  Almost any USB controller can
	  support this driver.  You can start a new driver from this one
	  by "clone and modify" (using new vendor and product IDs).

	- There's a CDC Ethernet gadget driver, letting you use USB as a
	  network link.  It talks to the standard Linux "CDCEther" (2.4)
	  or "cdc-ether" (2.5) drivers, or corresponding class drivers
	  that are found on other operating systems.  (It's analagous to
	  the ARM Linux sa1100 "usb-eth" driver; but more standard.)
	
	  You'll want some recent patches to those drivers, or the latest
	  2.5 "usbnet" for performance.  (18+ Mbyte/sec at high speed,
	  using TTCP in one direction, vs 4+ MByte/sec; no tuning yet.)

     Both of those gadget drivers have compile-time configuration support
     to let them work with net2280, pxa25x, or sa1100 usb drivers.  Each
     controller has slightly different endpoint capabilities; gadget drivers
     must choose endpoints and configurations accordingly, and there's no
     point in trying to do that at run time.



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [linux-usb-devel] ANNOUNCE:  Linux "USB Gadget" API and Driver Framework
  2003-03-31 19:51 ANNOUNCE: Linux "USB Gadget" API and Driver Framework David Brownell
@ 2003-04-15 18:02 ` Robert Schwebel
  2003-04-15 18:53   ` David Brownell
  0 siblings, 1 reply; 3+ messages in thread
From: Robert Schwebel @ 2003-04-15 18:02 UTC (permalink / raw)
  To: David Brownell; +Cc: linux-usb-devel, linux-kernel

Hi, 

is anybody working on PXA25x drivers yet? I would like to avoid
duplicate work. 

Robert
-- 
 Dipl.-Ing. Robert Schwebel | http://www.pengutronix.de
 Pengutronix - Linux Solutions for Science and Industry
   Braunschweiger Str. 79,  31134 Hildesheim, Germany
   Handelsregister:  Amtsgericht Hildesheim, HRA 2686
    Phone: +49-5121-28619-0 |  Fax: +49-5121-28619-4

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [linux-usb-devel] ANNOUNCE:  Linux "USB Gadget" API and Driver Framework
  2003-04-15 18:02 ` [linux-usb-devel] " Robert Schwebel
@ 2003-04-15 18:53   ` David Brownell
  0 siblings, 0 replies; 3+ messages in thread
From: David Brownell @ 2003-04-15 18:53 UTC (permalink / raw)
  To: Robert Schwebel; +Cc: linux-usb-devel, linux-kernel

Robert Schwebel wrote:
> 
> is anybody working on PXA25x drivers yet? I would like to avoid
> duplicate work. 

Not that I know of -- though I have some bits
that might help someone get started, perhaps
in combination with the sa11x0-ish code that
I found starting at www.handhelds.org.

If you're going to start, more power to you!!

I think a PXA-25x driver will be interesting
to a lot of people.  Its USB support looks to
be flexible enough to support quite a lot of
interesting Linux-based applications:  lots of
endpoints, including ISO support.

- Dave




^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2003-04-15 18:31 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-03-31 19:51 ANNOUNCE: Linux "USB Gadget" API and Driver Framework David Brownell
2003-04-15 18:02 ` [linux-usb-devel] " Robert Schwebel
2003-04-15 18:53   ` David Brownell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox