public inbox for ecos-devel@sourceware.org
 help / color / mirror / Atom feed
From: Chris Holgate <chris@zynaptic.com>
To: Frank Pagliughi <fpagliughi@mindspring.com>
Cc: Andrew Lunn <andrew@lunn.ch>,
	  Simon Kallweit <simon.kallweit@intefo.ch>,
	 ecos-devel@sourceware.org
Subject: Re: STM32 USB support
Date: Wed, 20 May 2009 10:19:00 -0000	[thread overview]
Message-ID: <4A13D90F.2000600@zynaptic.com> (raw)
In-Reply-To: <4A137430.2010903@mindspring.com>

Frank Pagliughi wrote:
> 
> Yeah, the USB subsystem for eCos was written at a time when USB chips
> were quite rigid - endpoints with fixed sizes and functions. Now, most
> chips are more flexible than not, with generic endpoints and
> configurable memory allocation. So the existing eCos infrastructure is
> showing it's age.  So each new driver is hitting this same problem and
> trying to solve it in a new and different way.

My thoughts are that the current infrastructure is still pretty usable
and that the main limitations are the use of static devtab entries
(which are optional anyway) and the drivers themselves.  More
specifically, there isn't a good example of how to use the
infrastructure to write drivers for these more configurable USB devices.

My main bugbear is the way in which class drivers currently access
device endpoints.  At the moment you need to know which low level driver
is in use and the completely arbitrary names of the exported static
endpoint data structures.  This should really be hidden behind a generic
API which is defined by usbs.h.  I think that this would be an easy
change and would require mimimal additions to the existing drivers.
Existing drivers could add the endpoint 'getter' functions and still
export their static endpoint data structures for legacy class drivers.

> IIRC, at the time I had fairly convinced myself that what was needed was
> an entirely new USB subsystem that would:
> - make it much easier to work with the flexible new chips
> - handle much more of the device enumeration

There's quite a bit of code in the STM32 driver which addresses these
issues within the existing framework.  Maybe the thing to do would be to
factor it out into a device driver utility library which can be used
alongside the existing framework.

> - provide a very specific callbacks structure (like read/write an
> endpoint, respond to a bus reset, set the chips' address, etc)
> - handle more of the buffering

While the existing callback setup may not be the easiest to use, it does
provide all the required information.  As for buffering, this is
something which I think should be a matter for the class driver writer.
 Again, this could all be made easier by better documentation and a
possible class driver utility library.

> In general, make it much easier to knock out USB drivers.

It's never going to be really easy though!

Chris.

  reply	other threads:[~2009-05-20 10:19 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <4A11CAAA.8040900@intefo.ch>
     [not found] ` <4A11D861.8090206@zynaptic.com>
     [not found]   ` <4A11E5DF.2000403@intefo.ch>
2009-05-19 11:47     ` Chris Holgate
2009-05-19 12:00       ` Andrew Lunn
2009-05-19 15:17         ` Simon Kallweit
2009-05-19 16:28           ` Chris Holgate
2009-05-20  8:20             ` Simon Kallweit
2009-05-19 15:44         ` Chris Holgate
2009-05-20  3:09           ` Frank Pagliughi
2009-05-20 10:19             ` Chris Holgate [this message]
2009-05-20 14:54               ` Frank Pagliughi
2009-05-20 16:06                 ` Chris Holgate
2009-05-20 22:31                   ` Frank Pagliughi
2009-05-19 13:33       ` John Dallaway
2009-05-20 21:22         ` Chris Holgate
2009-05-21  7:27           ` John Dallaway
2009-05-31 15:01             ` Chris Holgate
2009-05-31 15:46               ` John Dallaway

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4A13D90F.2000600@zynaptic.com \
    --to=chris@zynaptic.com \
    --cc=andrew@lunn.ch \
    --cc=ecos-devel@sourceware.org \
    --cc=fpagliughi@mindspring.com \
    --cc=simon.kallweit@intefo.ch \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).