usb: enable usb port device's async suspend.
authorLan Tianyu <tianyu.lan@intel.com>
Tue, 22 Jan 2013 20:26:32 +0000 (04:26 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 25 Jan 2013 18:14:20 +0000 (10:14 -0800)
This patch is to set power.async_suspend for usb port in order
to allow it to be suspended and resumed asynchronously during
system sleep transitions.

The power.async_suspend flag is also set for devices that don't have
suspend or resume callbacks, because otherwise they would make the
main suspend/resume thread wait for their "asynchronous" children
(during suspend) or parents (during resume), effectively negating the
possible gains from executing these devices' suspend and resume
callbacks asynchronously.

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/core/port.c

index 9a15b26944ec9a3c73c6d948ce0f508418021d39..5df143dbd759469f7404f9c14ad8fd3b3a92d8e2 100644 (file)
@@ -186,6 +186,7 @@ int usb_hub_create_port_device(struct usb_hub *hub, int port1)
                        PM_QOS_FLAG_NO_POWER_OFF))
                pm_runtime_enable(&port_dev->dev);
 
+       device_enable_async_suspend(&port_dev->dev);
 
        retval = usb_acpi_register_power_resources(&port_dev->dev);
        if (retval && retval != -ENODEV)