aboutsummaryrefslogtreecommitdiffstats
path: root/usb
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2005-12-14 13:39:53 -0800
committerGreg Kroah-Hartman <gregkh@suse.de>2005-12-14 13:39:53 -0800
commitd1e4e83a8275c2e504721c6118b45355a41b4a7a (patch)
tree83fb54c087a8a9b516579f2cb9d2695e417fa4b7 /usb
parente62d1a68ce38e18af8fac4d09916eebc4fb9d1cd (diff)
downloadpatches-d1e4e83a8275c2e504721c6118b45355a41b4a7a.tar.gz
more patches
Diffstat (limited to 'usb')
-rw-r--r--usb/usbcore-allow-suspend-resume-even-if-drivers-don-t-support-it.patch54
1 files changed, 54 insertions, 0 deletions
diff --git a/usb/usbcore-allow-suspend-resume-even-if-drivers-don-t-support-it.patch b/usb/usbcore-allow-suspend-resume-even-if-drivers-don-t-support-it.patch
new file mode 100644
index 0000000000000..748fe58b7263f
--- /dev/null
+++ b/usb/usbcore-allow-suspend-resume-even-if-drivers-don-t-support-it.patch
@@ -0,0 +1,54 @@
+From stern@rowland.harvard.edu Wed Dec 14 09:39:01 2005
+Date: Wed, 14 Dec 2005 12:22:17 -0500 (EST)
+From: Alan Stern <stern@rowland.harvard.edu>
+To: Greg KH <greg@kroah.com>
+cc: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2005@gmx.net>
+Subject: [PATCH] usbcore: allow suspend/resume even if drivers don't support it
+Message-ID: <Pine.LNX.4.44L0.0512141215510.7421-100000@iolanthe.rowland.org>
+
+This patch (as618) changes usbcore to prevent derailing the
+suspend/resume sequence when a USB driver doesn't include support for
+it. This is a workaround rather than a true fix; the core needs to be
+changed so that URB submissions from suspended drivers can be refused
+and outstanding URBs cancelled.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/core/usb.c | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+--- gregkh-2.6.orig/drivers/usb/core/usb.c
++++ gregkh-2.6/drivers/usb/core/usb.c
+@@ -1029,7 +1029,8 @@ static int usb_generic_suspend(struct de
+ mark_quiesced(intf);
+ } else {
+ // FIXME else if there's no suspend method, disconnect...
+- dev_warn(dev, "no %s?\n", "suspend");
++ dev_warn(dev, "no suspend for driver %s?\n", driver->name);
++ mark_quiesced(intf);
+ status = 0;
+ }
+ return status;
+@@ -1057,8 +1058,10 @@ static int usb_generic_resume(struct dev
+ }
+
+ if ((dev->driver == NULL) ||
+- (dev->driver_data == &usb_generic_driver_data))
++ (dev->driver_data == &usb_generic_driver_data)) {
++ dev->power.power_state.event = PM_EVENT_FREEZE;
+ return 0;
++ }
+
+ intf = to_usb_interface(dev);
+ driver = to_usb_driver(dev->driver);
+@@ -1078,7 +1081,7 @@ static int usb_generic_resume(struct dev
+ mark_quiesced(intf);
+ }
+ } else
+- dev_warn(dev, "no %s?\n", "resume");
++ dev_warn(dev, "no resume for driver %s?\n", driver->name);
+ return 0;
+ }
+