aboutsummaryrefslogtreecommitdiffstats
path: root/usb
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2006-02-09 21:52:28 -0800
committerGreg Kroah-Hartman <gregkh@suse.de>2006-02-09 21:52:28 -0800
commit16562403aea9fc40591378fa259a451f8b9a54d2 (patch)
treebbb0697172a4f39d9b79232bf848554c6d77c119 /usb
parent4ed40d07367a122bc43baa51393086f742122a9d (diff)
downloadpatches-16562403aea9fc40591378fa259a451f8b9a54d2.tar.gz
usb patch
Diffstat (limited to 'usb')
-rw-r--r--usb/usb-fix-up-the-usb-early-handoff-logic-for-ehci.patch67
1 files changed, 67 insertions, 0 deletions
diff --git a/usb/usb-fix-up-the-usb-early-handoff-logic-for-ehci.patch b/usb/usb-fix-up-the-usb-early-handoff-logic-for-ehci.patch
new file mode 100644
index 0000000000000..7f5b4fbb65072
--- /dev/null
+++ b/usb/usb-fix-up-the-usb-early-handoff-logic-for-ehci.patch
@@ -0,0 +1,67 @@
+From stern@rowland.harvard.edu Thu Feb 9 21:48:03 2006
+Date: Thu, 9 Feb 2006 16:35:31 -0500 (EST)
+From: David Brownell <david-b@pacbell.net>
+To: Greg KH <greg@kroah.com>
+Cc: Alan Stern <stern@rowland.harvard.edu>
+Subject: USB: fix up the usb early handoff logic for EHCI
+Message-ID: <Pine.LNX.4.44L0.0602091633450.6892-100000@iolanthe.rowland.org>
+
+Disable some dubious "early" USB handoff code that allegedly works around bugs
+on some systems (we don't know which ones) but rudely breaks some others.
+
+Also make the kernel warnings reporting BIOS handoff problems be more useful,
+reporting the register whose value displays the trouble.
+
+Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/pci-quirks.c | 16 ++++++++++++----
+ 1 file changed, 12 insertions(+), 4 deletions(-)
+
+--- gregkh-2.6.orig/drivers/usb/host/pci-quirks.c
++++ gregkh-2.6/drivers/usb/host/pci-quirks.c
+@@ -191,8 +191,9 @@ static void __devinit quirk_usb_handoff_
+ }
+ if (wait_time <= 0)
+ printk(KERN_WARNING "%s %s: BIOS handoff "
+- "failed (BIOS bug ?)\n",
+- pdev->dev.bus_id, "OHCI");
++ "failed (BIOS bug ?) %08x\n",
++ pdev->dev.bus_id, "OHCI",
++ readl(base + OHCI_CONTROL));
+
+ /* reset controller, preserving RWC */
+ writel(control & OHCI_CTRL_RWC, base + OHCI_CONTROL);
+@@ -243,6 +244,12 @@ static void __devinit quirk_usb_disable_
+ pr_debug("%s %s: BIOS handoff\n",
+ pdev->dev.bus_id, "EHCI");
+
++#if 0
++/* aleksey_gorelov@phoenix.com reports that some systems need SMI forced on,
++ * but that seems dubious in general (the BIOS left it off intentionally)
++ * and is known to prevent some systems from booting. so we won't do this
++ * unless maybe we can determine when we're on a system that needs SMI forced.
++ */
+ /* BIOS workaround (?): be sure the
+ * pre-Linux code receives the SMI
+ */
+@@ -252,6 +259,7 @@ static void __devinit quirk_usb_disable_
+ pci_write_config_dword(pdev,
+ offset + EHCI_USBLEGCTLSTS,
+ val | EHCI_USBLEGCTLSTS_SOOE);
++#endif
+ }
+
+ /* always say Linux will own the hardware
+@@ -274,8 +282,8 @@ static void __devinit quirk_usb_disable_
+ * it down, and hope nothing goes too wrong
+ */
+ printk(KERN_WARNING "%s %s: BIOS handoff "
+- "failed (BIOS bug ?)\n",
+- pdev->dev.bus_id, "EHCI");
++ "failed (BIOS bug ?) %08x\n",
++ pdev->dev.bus_id, "EHCI", cap);
+ pci_write_config_byte(pdev, offset + 2, 0);
+ }
+