Re: OHCI_QUIRK_INITRESET (was: 2.6.9-rc2-mm2 ohci_hcd doesn't work)

From: Bjorn Helgaas
Date: Fri Sep 24 2004 - 12:19:30 EST


My box has:

0000:00:0f.2 USB Controller: ServerWorks OSB4/CSB5 OHCI USB Controller (rev 05) (prog-if 10 [OHCI])
Subsystem: ServerWorks OSB4/CSB5 OHCI USB Controller
Flags: bus master, medium devsel, latency 64, IRQ 10
Memory at f5e70000 (32-bit, non-prefetchable)

0000:00:0f.2 Class 0c03: 1166:0220 (rev 05)

The attached patch (which applies on top of Rui's patch for
ALI M5237) fixes the problem for my DL360. Here's the relevant
output:

ohci_hcd 0000:00:0f.2: ServerWorks OSB4/CSB5 OHCI USB Controller
ohci_hcd 0000:00:0f.2: irq 10, pci mem 0xf5e70000
ohci_hcd 0000:00:0f.2: new USB bus registered, assigned bus number 1
ohci_hcd 0000:00:0f.2: Serverworks OSB4/CSB5 init quirk
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 4 ports detected
USB Universal Host Controller Interface driver v2.2

Thanks for chasing this down!
diff -u -ur 2.6.9-rc2-mm2-orig/drivers/usb/host/ohci-pci.c 2.6.9-rc2-mm2/drivers/usb/host/ohci-pci.c
--- 2.6.9-rc2-mm2-orig/drivers/usb/host/ohci-pci.c 2004-09-24 09:52:43.000000000 -0600
+++ 2.6.9-rc2-mm2/drivers/usb/host/ohci-pci.c 2004-09-24 09:50:44.000000000 -0600
@@ -102,6 +102,13 @@
ohci_info (ohci, "ALI M5237 init quirk\n");
}

+ /* Serverworks OSB4/CSB5 also acts wierd during init */
+ else if (pdev->vendor == PCI_VENDOR_ID_SERVERWORKS
+ && pdev->device == PCI_DEVICE_ID_SERVERWORKS_OSB4USB) {
+ ohci->flags = OHCI_QUIRK_INITRESET;
+ ohci_info (ohci, "Serverworks OSB4/CSB5 init quirk\n");
+ }
+
}

/* NOTE: there may have already been a first reset, to