Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5a9191ff authored by Alan Stern's avatar Alan Stern Committed by Linus Torvalds
Browse files

[PATCH] usbcore: allow suspend/resume even if drivers don't support it



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: default avatarAlan Stern <stern@rowland.harvard.edu>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 28120be5
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -1432,7 +1432,8 @@ static int usb_generic_suspend(struct device *dev, pm_message_t message)
			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;
@@ -1460,8 +1461,10 @@ static int usb_generic_resume(struct device *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);
@@ -1481,7 +1484,7 @@ static int usb_generic_resume(struct device *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;
}