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

From: Rui Nuno Capela
Date: Fri Sep 24 2004 - 09:02:56 EST


Ingo Molnar wrote:
>
> * Rui Nuno Capela wrote:
>
>> Then, in a silent suggestion from David Brownell, I hacked ohci_hcd.c,
>> forcing the OHCI_QUIRK_INITRESET flag behaviour, build a new kernel and
>> modules and voila', all USB is back to functionality.
>
>
> it would be cleaner to make this dependent on your chipset/vendor-id -
> look how OHCI_QUIRK_INITRESET gets activated for e.g. SiS
> (PCI_VENDOR_ID_SI) and OPTi (PCI_VENDOR_ID_OPTI). What is your box's
> pdev->vendor and pdev->device? (lspci -v) (If it's indeed a quirk that
> is needed, not some other fix.)
>

Here it is:

(lspci -n)

00:02.0 Class 0c03: 10b9:5237 (rev 03)

(lspci -v)

00:02.0 USB Controller: ALi Corporation USB 1.1 Controller (rev 03)
(prog-if 10 [OHCI])
Subsystem: Hewlett-Packard Company: Unknown device 0850
Flags: bus master, medium devsel, latency 64, IRQ 10
Memory at d4000000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [60] Power Management version 2


So I made it strictly specific to this hardware vendor PCI_VENDOR_ID_AL
(0x10b9) and device PCI_DEVICE_ID_AL_M5237 (0x5237).

The attached patch applies now to ohci_pci.c and it just works for me (tm:)

Thanks for the suggestion Ingo.

I feel better now.
--
rncbc aka Rui Nuno Capela
rncbc@xxxxxxxxxdiff -duPNr linux.1/drivers/usb/host/ohci-pci.c linux.2/drivers/usb/host/ohci-pci.c
--- linux.1/drivers/usb/host/ohci-pci.c 2004-09-24 14:15:37.146541120 +0100
+++ linux.2/drivers/usb/host/ohci-pci.c 2004-09-24 14:26:20.147790072 +0100
@@ -95,6 +95,13 @@
ohci_info(ohci, "SiS init quirk\n");
}

+ /* ALI M5237 also acts wierd during init */
+ else if (pdev->vendor == PCI_VENDOR_ID_AL
+ && pdev->device == PCI_DEVICE_ID_AL_M5237) {
+ ohci->flags = OHCI_QUIRK_INITRESET;
+ ohci_info (ohci, "ALI M5237 init quirk\n");
+ }
+
}

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