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

Reply via email to