On Fri, Oct 15, 2004 at 01:46:55PM -0700, David Brownell wrote: > On Friday 15 October 2004 12:19 am, Matthew Dharm wrote: > > On Thu, Oct 14, 2004 at 04:54:38PM -0700, David Brownell wrote: > > > A quick look suggests the #ifdef CONFIG_PCI block in > > > ehci_hc_reset() is the natural place to check for those IDs. > > > > Hrm... would that have to be in the 'then' clause of the if(... == > > &pci_bus_type) in order to make sure we didn't try to do a > > pci_read_config_dword() on a non-PCI device? > > Exactly. I understand there are some non-PCI EHCI versions > lurking now, maybe not quite generally available yet.
How does this look? It seems to work for me. ===== drivers/usb/host/ehci-hcd.c 1.136 vs edited ===== --- 1.136/drivers/usb/host/ehci-hcd.c 2004-09-30 10:39:33 -07:00 +++ edited/drivers/usb/host/ehci-hcd.c 2004-10-18 12:25:31 -07:00 @@ -347,9 +347,17 @@ #ifdef CONFIG_PCI /* EHCI 0.96 and later may have "extended capabilities" */ - if (hcd->self.controller->bus == &pci_bus_type) + if (hcd->self.controller->bus == &pci_bus_type) { + struct pci_dev* pdev = to_pci_dev(ehci->hcd.self.controller); temp = HCC_EXT_CAPS (readl (&ehci->caps->hcc_params)); - else + + /* AMD8111 EHCI doesn't work according to AMD errata */ + if ((pdev->vendor == PCI_VENDOR_ID_AMD) && + (pdev->device = 0x7464)) { + ehci_info (ehci, "rejecting AMD8111 for known bugs\n"); + return -EIO; + } + } else temp = 0; while (temp && count--) { u32 cap; Matt -- Matthew Dharm Home: [EMAIL PROTECTED] Maintainer, Linux USB Mass Storage Driver G: Let me guess, you started on the 'net with AOL, right? C: WOW! d00d! U r leet! -- Greg and Customer User Friendly, 2/12/1999
pgpDK4TG10gu5.pgp
Description: PGP signature