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]