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
