Commit 9e5eace7 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

USB: revert "don't use reset-resume if drivers don't support it"

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: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 24618b0c
...@@ -644,48 +644,6 @@ static void hub_stop(struct usb_hub *hub) ...@@ -644,48 +644,6 @@ static void hub_stop(struct usb_hub *hub)
#ifdef CONFIG_PM #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) static void hub_restart(struct usb_hub *hub, int type)
{ {
struct usb_device *hdev = hub->hdev; struct usb_device *hdev = hub->hdev;
...@@ -731,8 +689,8 @@ static void hub_restart(struct usb_hub *hub, int type) ...@@ -731,8 +689,8 @@ static void hub_restart(struct usb_hub *hub, int type)
* turn off the various status changes to prevent * turn off the various status changes to prevent
* khubd from disconnecting it later. * khubd from disconnecting it later.
*/ */
if (status == 0 && !(portstatus & USB_PORT_STAT_ENABLE) && if (udev->persist_enabled && status == 0 &&
persistent_device(udev)) { !(portstatus & USB_PORT_STAT_ENABLE)) {
if (portchange & USB_PORT_STAT_C_ENABLE) if (portchange & USB_PORT_STAT_C_ENABLE)
clear_port_feature(hub->hdev, port1, clear_port_feature(hub->hdev, port1,
USB_PORT_FEAT_C_ENABLE); USB_PORT_FEAT_C_ENABLE);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment