I've tested CMD670 USB controller Version A and B on my Linux system.
Version A don't work at all, version B give a lot of output error but USB
board are recognized.
OPTI controller work fine for me.

Patrick

> -----Message d'origine-----
> De:   Benjamin Herrenschmidt [SMTP:[EMAIL PROTECTED]]
> Date: mercredi 29 mars 2000 12:50
> �:    [EMAIL PROTECTED]
> Cc:   [EMAIL PROTECTED]
> Objet:        [linux-usb] Controllers HW erratas...
> 
> HI !
> 
> While browsing Apple new "Darwin" kernel source, I found some interesting
> things about USB host controller erratas along with workarounds for some
> of those bugs.
> Here are some bits extracted from various Darwin source file.
> 
> Note that the source of Darwin is under the Apple licence. So just in
> case, I copy there legal stuff now before the source bits...
> 
>  * The contents of this file constitute Original Code as defined in and
>  * are subject to the Apple Public Source License Version 1.1 (the
>  * "License").  You may not use this file except in compliance with the
>  * License.  Please obtain a copy of the License at
>  * http://www.apple.com/publicsource and read it before using this file.
> 
> Well, now the interesting stuffs. First, they define some "errata bits"
> that are extracted from a table:
> 
> /*
>  * Errata
>  * These indicate the anomolies of the various chips sets.  Test
>  * for these in errataBits.
>  */
> enum {
>     // turn off UHCI test mode
>     kErrataCMDDisableTestMode         = (1 << 0),
>     // Don't cross page boundaries in a single transfer
>     kErrataOnlySinglePageTransfers    = (1 << 1),
>     // UIM will retry out transfers with buffer underrun errors
>     kErrataRetryBufferUnderruns               = (1 << 2),
>     // UIM will insert delay buffer between HS and LS transfers
>     kErrataLSHSOpti                   = (1 << 3),
>     // Always set the NOCP bit in rhDescriptorA register
>     kErrataDisableOvercurrent         = (1 << 4),
>     // Don't allow port suspend at the root hub
>     kErrataLucentSuspendResume                = (1 << 5)
> };
> /* errataBits */
> 
> /*
>     This table contains the list of errata that are necessary for known
> problems with particular devices.
>     The format is vendorID, product ID, lowest revisionID needing errata,
> highest rev needing errata, errataBits.
>     The result of all matches is ORed together, so more than one entry
> may match.
>     Typically for a given errata a list of revisions that this applies to
> is supplied.
> */
> 
> struct ErrataListEntryStruct {
>     UInt16                            vendID;
>     UInt16                            deviceID;
>     UInt16                            revisionLo;
>     UInt16                            revisionHi;
>     UInt32                            errata;
> };
> 
> 
> /*
>  This table contains the list of errata that are necessary for known
>  problems with particular silicon.  The format is vendorID, revisionID,
>  lowest revisionID needing errata, highest rev needing errata, errataBits.
>  The result of all matches is ORed together, so more than one entry may
>  match.  Typically for a given errata a list of chips revisions that
>  this applies to is supplied.
>  */
> static ErrataListEntry  errataList[] = {
>     // CMD 670
>     {0x1095, 0x670, 0, 0xffff,        kErrataCMDDisableTestMode |
>                               kErrataOnlySinglePageTransfers |
>                               kErrataRetryBufferUnderruns},
>     // Opti 1045
>     {0x1045, 0xc861, 0, 0xffff, kErrataLSHSOpti},
> };
> 
> Then, they have bits of code here or there to work around those bugs. For
> the LSHSOpti bug, for example, at controller init, they add dummy EDs to
> almost all lists and start processing a kind of "dummy" transfer loop. 
> 
> If one if you want to look at this in more details, go to
> publicsource.apple.com and see how you can get access to the source (the
> kernel can be obtained via CVS if you register first, which is a simple
> operation).
> 
> 
> Ben.
> 
> 
> 
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to