USB: move bus_suspend and bus_resume method calls
authorAlan Stern <stern@rowland.harvard.edu>
Fri, 4 May 2007 15:51:54 +0000 (11:51 -0400)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 12 Jul 2007 23:29:46 +0000 (16:29 -0700)
commitb6f6436da0c6853eedad86f5075b139c1a3bcb5d
tree60082b119bcd08baa2a6f24daab6bb1c864f974e
parent4d461095ef6967324bc5da5d65d23ad27fc604f9
USB: move bus_suspend and bus_resume method calls

This patch (as885) moves the root-hub bus_suspend() and bus_resume()
method calls from the hub driver's suspend and resume methods into the
usb_generic driver methods, where they make just as much sense.

Their old locations were not fully correct.  For example, in a kernel
compiled without CONFIG_USB_SUSPEND, if one were to do:

echo -n 1-0:1.0 >/sys/bus/usb/drivers/hub/unbind

to unbind the hub driver from a root hub, there would then be no way
to suspend that root hub.  Attempts to put the system to sleep would
fail; the USB controller driver would refuse to suspend because the
root hub was still active.

The patch also makes a very slight change in the way devices with no
driver are handled during suspend.  Rather than doing a standard USB
port-suspend directly, now the suspend routine in usb_generic is
called.  In practice this should never affect anyone.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/core/driver.c
drivers/usb/core/generic.c
drivers/usb/core/hub.c