Skip to content

Commit

Permalink
usbcore: small changes to hub driver's suspend method
Browse files Browse the repository at this point in the history
This patch (as847) makes some small changes to the hub driver's
suspend method:

	For root hubs, the status URB should be unlinked and other
	activity stopped _before_ the bus_suspend method is called.

	The test for hdev->bus being NULL has been removed, since
	it can never succeed.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Alan Stern authored and Greg Kroah-Hartman committed Feb 16, 2007
1 parent 7fe89e9 commit 12f1ff8
Showing 1 changed file with 10 additions and 15 deletions.
25 changes: 10 additions & 15 deletions drivers/usb/core/hub.c
Original file line number Diff line number Diff line change
Expand Up @@ -1904,6 +1904,7 @@ static int hub_suspend(struct usb_interface *intf, pm_message_t msg)
struct usb_hub *hub = usb_get_intfdata (intf);
struct usb_device *hdev = hub->hdev;
unsigned port1;
int status = 0;

/* fail if children aren't already suspended */
for (port1 = 1; port1 <= hdev->maxchild; port1++) {
Expand All @@ -1927,24 +1928,18 @@ static int hub_suspend(struct usb_interface *intf, pm_message_t msg)

dev_dbg(&intf->dev, "%s\n", __FUNCTION__);

/* stop khubd and related activity */
hub_quiesce(hub);

/* "global suspend" of the downstream HC-to-USB interface */
if (!hdev->parent) {
struct usb_bus *bus = hdev->bus;
if (bus) {
int status = hcd_bus_suspend (bus);

if (status != 0) {
dev_dbg(&hdev->dev, "'global' suspend %d\n",
status);
return status;
}
} else
return -EOPNOTSUPP;
status = hcd_bus_suspend(hdev->bus);
if (status != 0) {
dev_dbg(&hdev->dev, "'global' suspend %d\n", status);
hub_activate(hub);
}
}

/* stop khubd and related activity */
hub_quiesce(hub);
return 0;
return status;
}

static int hub_resume(struct usb_interface *intf)
Expand Down

0 comments on commit 12f1ff8

Please sign in to comment.