tree d9d9eb475b11c05b069c715df50f9e6d89c32ecf
parent a2fe20129e2d87dc5c4e5c850b41b5b0b47cfd08
author David Brownell <[EMAIL PROTECTED]> Tue, 19 Apr 2005 07:39:30 -0700
committer Greg K-H <[EMAIL PROTECTED]> Tue, 19 Apr 2005 07:39:30 -0700
[PATCH] USB: OHCI on Compaq Aramada 7400
This adds a quirk to the OHCI driver that lets it work with an old
Compaq implementation. It also removes some needless strings from
the non-debug version of the driver.
Signed-off-by: Chris Clayton <[EMAIL PROTECTED]>
Signed-off-by: David Brownell <[EMAIL PROTECTED]>
Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>
usb/host/ohci-pci.c | 17 ++++++++++++++---
usb/host/ohci-q.c | 13 +++++++++++--
usb/host/ohci.h | 1 +
3 files changed, 26 insertions(+), 5 deletions(-)
Index: drivers/usb/host/ohci-pci.c
===================================================================
--- e2849468fa7d8b5d2509671bb813cca955d06438/drivers/usb/host/ohci-pci.c
(mode:100644 sha1:f30118b5f9aa9b2d4151adcb714d95c9dede7694)
+++ d9d9eb475b11c05b069c715df50f9e6d89c32ecf/drivers/usb/host/ohci-pci.c
(mode:100644 sha1:57fd07d005493bb49525806d5fb61928021262c1)
@@ -54,7 +54,7 @@
if (pdev->vendor == PCI_VENDOR_ID_AMD
&& pdev->device == 0x740c) {
ohci->flags = OHCI_QUIRK_AMD756;
- ohci_info (ohci, "AMD756 erratum 4 workaround\n");
+ ohci_dbg (ohci, "AMD756 erratum 4 workaround\n");
// also somewhat erratum 10 (suspend/resume issues)
}
@@ -68,7 +68,7 @@
*/
else if (pdev->vendor == PCI_VENDOR_ID_OPTI
&& pdev->device == 0xc861) {
- ohci_info (ohci,
+ ohci_dbg (ohci,
"WARNING: OPTi workarounds unavailable\n");
}
@@ -84,9 +84,20 @@
if (b && b->device == PCI_DEVICE_ID_NS_87560_LIO
&& b->vendor == PCI_VENDOR_ID_NS) {
ohci->flags |= OHCI_QUIRK_SUPERIO;
- ohci_info (ohci, "Using NSC SuperIO setup\n");
+ ohci_dbg (ohci, "Using NSC SuperIO setup\n");
}
}
+
+ /* Check for Compaq's ZFMicro chipset, which needs short
+ * delays before control or bulk queues get re-activated
+ * in finish_unlinks()
+ */
+ else if (pdev->vendor == PCI_VENDOR_ID_COMPAQ
+ && pdev->device == 0xa0f8) {
+ ohci->flags |= OHCI_QUIRK_ZFMICRO;
+ ohci_dbg (ohci,
+ "enabled Compaq ZFMicro chipset quirk\n");
+ }
}
/* NOTE: there may have already been a first reset, to
Index: drivers/usb/host/ohci-q.c
===================================================================
--- e2849468fa7d8b5d2509671bb813cca955d06438/drivers/usb/host/ohci-q.c
(mode:100644 sha1:c90114a772776b435ede30408b865ed6b086930e)
+++ d9d9eb475b11c05b069c715df50f9e6d89c32ecf/drivers/usb/host/ohci-q.c
(mode:100644 sha1:e372306ed0daa1dd4bfb9231e0d5eb841a2864bb)
@@ -1021,6 +1021,8 @@
if (ohci->ed_controltail) {
command |= OHCI_CLF;
+ if (ohci->flags & OHCI_QUIRK_ZFMICRO)
+ mdelay(1);
if (!(ohci->hc_control & OHCI_CTRL_CLE)) {
control |= OHCI_CTRL_CLE;
ohci_writel (ohci, 0,
@@ -1029,6 +1031,8 @@
}
if (ohci->ed_bulktail) {
command |= OHCI_BLF;
+ if (ohci->flags & OHCI_QUIRK_ZFMICRO)
+ mdelay(1);
if (!(ohci->hc_control & OHCI_CTRL_BLE)) {
control |= OHCI_CTRL_BLE;
ohci_writel (ohci, 0,
@@ -1039,12 +1043,17 @@
/* CLE/BLE to enable, CLF/BLF to (maybe) kickstart */
if (control) {
ohci->hc_control |= control;
+ if (ohci->flags & OHCI_QUIRK_ZFMICRO)
+ mdelay(1);
ohci_writel (ohci, ohci->hc_control,
&ohci->regs->control);
}
- if (command)
+ if (command) {
+ if (ohci->flags & OHCI_QUIRK_ZFMICRO)
+ mdelay(1);
ohci_writel (ohci, command, &ohci->regs->cmdstatus);
- }
+ }
+ }
}
Index: drivers/usb/host/ohci.h
===================================================================
--- e2849468fa7d8b5d2509671bb813cca955d06438/drivers/usb/host/ohci.h
(mode:100644 sha1:2ba6e2b0210c99a0cedd8ee77866d980d1d4d8d4)
+++ d9d9eb475b11c05b069c715df50f9e6d89c32ecf/drivers/usb/host/ohci.h
(mode:100644 sha1:22e1ac138ac0686bc4e72baba0d412d5f9c4022e)
@@ -396,6 +396,7 @@
#define OHCI_QUIRK_SUPERIO 0x02 /* natsemi */
#define OHCI_QUIRK_INITRESET 0x04 /* SiS, OPTi,
... */
#define OHCI_BIG_ENDIAN 0x08 /* big endian
HC */
+#define OHCI_QUIRK_ZFMICRO 0x10 /* Compaq
ZFMicro chipset*/
// there are also chip quirks/bugs in init logic
};
-
To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html