aboutsummaryrefslogtreecommitdiffstats
path: root/usb
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2006-05-01 23:13:41 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2006-05-01 23:13:41 -0700
commitf6d9ba5470b54ca1418f1274230ec2f2a8212e84 (patch)
tree33bf9f6f5b285ff9222ad14bec8e2ac19d150578 /usb
parent5fe8a0d180166b24d6181657324a460c429939b5 (diff)
downloadpatches-f6d9ba5470b54ca1418f1274230ec2f2a8212e84.tar.gz
usb patch
Diffstat (limited to 'usb')
-rw-r--r--usb/usb-fix-ohci-pm-regression.patch52
1 files changed, 52 insertions, 0 deletions
diff --git a/usb/usb-fix-ohci-pm-regression.patch b/usb/usb-fix-ohci-pm-regression.patch
new file mode 100644
index 00000000000000..18a89d23a82631
--- /dev/null
+++ b/usb/usb-fix-ohci-pm-regression.patch
@@ -0,0 +1,52 @@
+From david-b@pacbell.net Mon May 1 23:09:52 2006
+From: David Brownell <david-b@pacbell.net>
+To: Greg KH <greg@kroah.com>
+Subject: USB: fix OHCI PM regression
+Date: Mon, 1 May 2006 22:07:13 -0700
+Cc: linux-usb-devel@lists.sourceforge.net
+Message-Id: <200605012207.14090.david-b@pacbell.net>
+
+This fixes a small regression in USB controller power usage for many
+OHCI controllers, notably including every non-PCI version of OHCI: on
+those systems, the runtime autosuspend mechanism is no longer enabled.
+
+The change moves to saner defaults. All root hubs are expected to handle
+remote wakeup (and hence autosuspend), although drivers for buggy silicon
+may override that default.
+
+Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/core/hcd.c | 13 ++++++-------
+ 1 file changed, 6 insertions(+), 7 deletions(-)
+
+--- gregkh-2.6.orig/drivers/usb/core/hcd.c
++++ gregkh-2.6/drivers/usb/core/hcd.c
+@@ -1805,6 +1805,12 @@ int usb_add_hcd(struct usb_hcd *hcd,
+ USB_SPEED_FULL;
+ hcd->self.root_hub = rhdev;
+
++ /* wakeup flag init defaults to "everything works" for root hubs,
++ * but drivers can override it in reset() if needed, along with
++ * recording the overall controller's system wakeup capability.
++ */
++ device_init_wakeup(&rhdev->dev, 1);
++
+ /* "reset" is misnamed; its role is now one-time init. the controller
+ * should already have been reset (and boot firmware kicked off etc).
+ */
+@@ -1813,13 +1819,6 @@ int usb_add_hcd(struct usb_hcd *hcd,
+ goto err_hcd_driver_setup;
+ }
+
+- /* wakeup flag init is in transition; for now we can't rely on PCI to
+- * initialize these bits properly, so we let reset() override it.
+- * This init should _precede_ the reset() once PCI behaves.
+- */
+- device_init_wakeup(&rhdev->dev,
+- device_can_wakeup(hcd->self.controller));
+-
+ /* NOTE: root hub and controller capabilities may not be the same */
+ if (device_can_wakeup(hcd->self.controller)
+ && device_can_wakeup(&hcd->self.root_hub->dev))