aboutsummaryrefslogtreecommitdiffstats
path: root/usb
diff options
authorGreg Kroah-Hartman <gregkh@suse.de>2008-06-10 16:22:00 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2008-06-10 16:22:00 -0700
commitf52244b3c054199fceb284f67bb447fa900bdac4 (patch)
treeef9fee19a0d5a9d0076f421776b6cad41d396d4f /usb
parent4b3f4e994ea7349bf3193f454f233cb6eba1e97f (diff)
downloadpatches-f52244b3c054199fceb284f67bb447fa900bdac4.tar.gz
added a usb revert patch to make things still work properly for usb hubs
Diffstat (limited to 'usb')
-rw-r--r--usb/usb-add-usb_dev_reset_delayed.patch2
-rw-r--r--usb/usb-revert-don-t-use-reset-resume-if-drivers-don-t-support-it.patch78
2 files changed, 79 insertions, 1 deletions
diff --git a/usb/usb-add-usb_dev_reset_delayed.patch b/usb/usb-add-usb_dev_reset_delayed.patch
index 72f5e13a8b79f4..0c5881a972edf3 100644
--- a/usb/usb-add-usb_dev_reset_delayed.patch
+++ b/usb/usb-add-usb_dev_reset_delayed.patch
@@ -27,7 +27,7 @@ Signed-off-by: Inaky Perez-Gonzalez <inaky@linux.intel.com>
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
-@@ -3402,3 +3402,86 @@ int usb_reset_composite_device(struct us
+@@ -3406,3 +3406,86 @@ int usb_reset_composite_device(struct us
return ret;
}
EXPORT_SYMBOL_GPL(usb_reset_composite_device);
diff --git a/usb/usb-revert-don-t-use-reset-resume-if-drivers-don-t-support-it.patch b/usb/usb-revert-don-t-use-reset-resume-if-drivers-don-t-support-it.patch
new file mode 100644
index 00000000000000..6ade0c5a8a5c04
--- /dev/null
+++ b/usb/usb-revert-don-t-use-reset-resume-if-drivers-don-t-support-it.patch
@@ -0,0 +1,78 @@
+From stern@rowland.harvard.edu Tue Jun 10 14:31:37 2008
+From: Greg Kroah-Hartman <gregkh@suse.de>
+Date: Tue, 10 Jun 2008 14:59:43 -0400 (EDT)
+Subject: USB: revert "don't use reset-resume if drivers don't support it"
+To: Greg KH <greg@kroah.com>
+
+This reverts Linus's previous patch that is in mainline to make it
+easier for the USB hub.c patches that follow this to apply cleanly. The
+functionality will be added back in a followon patch in this series.
+
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/core/hub.c | 46 ++--------------------------------------------
+ 1 file changed, 2 insertions(+), 44 deletions(-)
+
+--- a/drivers/usb/core/hub.c
++++ b/drivers/usb/core/hub.c
+@@ -644,48 +644,6 @@ static void hub_stop(struct usb_hub *hub
+
+ #ifdef CONFIG_PM
+
+-/* Try to identify which devices need USB-PERSIST handling */
+-static int persistent_device(struct usb_device *udev)
+-{
+- int i;
+- int retval;
+- struct usb_host_config *actconfig;
+-
+- /* Explicitly not marked persistent? */
+- if (!udev->persist_enabled)
+- return 0;
+-
+- /* No active config? */
+- actconfig = udev->actconfig;
+- if (!actconfig)
+- return 0;
+-
+- /* FIXME! We should check whether it's open here or not! */
+-
+- /*
+- * Check that all the interface drivers have a
+- * 'reset_resume' entrypoint
+- */
+- retval = 0;
+- for (i = 0; i < actconfig->desc.bNumInterfaces; i++) {
+- struct usb_interface *intf;
+- struct usb_driver *driver;
+-
+- intf = actconfig->interface[i];
+- if (!intf->dev.driver)
+- continue;
+- driver = to_usb_driver(intf->dev.driver);
+- if (!driver->reset_resume)
+- return 0;
+- /*
+- * We have at least one driver, and that one
+- * has a reset_resume method.
+- */
+- retval = 1;
+- }
+- return retval;
+-}
+-
+ static void hub_restart(struct usb_hub *hub, int type)
+ {
+ struct usb_device *hdev = hub->hdev;
+@@ -731,8 +689,8 @@ static void hub_restart(struct usb_hub *
+ * turn off the various status changes to prevent
+ * khubd from disconnecting it later.
+ */
+- if (status == 0 && !(portstatus & USB_PORT_STAT_ENABLE) &&
+- persistent_device(udev)) {
++ if (udev->persist_enabled && status == 0 &&
++ !(portstatus & USB_PORT_STAT_ENABLE)) {
+ if (portchange & USB_PORT_STAT_C_ENABLE)
+ clear_port_feature(hub->hdev, port1,
+ USB_PORT_FEAT_C_ENABLE);