diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2006-02-09 21:52:28 -0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-02-09 21:52:28 -0800 |
commit | 16562403aea9fc40591378fa259a451f8b9a54d2 (patch) | |
tree | bbb0697172a4f39d9b79232bf848554c6d77c119 /usb | |
parent | 4ed40d07367a122bc43baa51393086f742122a9d (diff) | |
download | patches-16562403aea9fc40591378fa259a451f8b9a54d2.tar.gz |
usb patch
Diffstat (limited to 'usb')
-rw-r--r-- | usb/usb-fix-up-the-usb-early-handoff-logic-for-ehci.patch | 67 |
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); + } + |