diff options
Diffstat (limited to 'drivers/usb/core/generic.c')
| -rw-r--r-- | drivers/usb/core/generic.c | 9 | 
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/usb/core/generic.c b/drivers/usb/core/generic.c index 83c14dda6300..bc8242bc4564 100644 --- a/drivers/usb/core/generic.c +++ b/drivers/usb/core/generic.c @@ -210,8 +210,13 @@ static int generic_suspend(struct usb_device *udev, pm_message_t msg)  	if (!udev->parent)  		rc = hcd_bus_suspend(udev, msg); -	/* Non-root devices don't need to do anything for FREEZE or PRETHAW */ -	else if (msg.event == PM_EVENT_FREEZE || msg.event == PM_EVENT_PRETHAW) +	/* +	 * Non-root USB2 devices don't need to do anything for FREEZE +	 * or PRETHAW. USB3 devices don't support global suspend and +	 * needs to be selectively suspended. +	 */ +	else if ((msg.event == PM_EVENT_FREEZE || msg.event == PM_EVENT_PRETHAW) +		 && (udev->speed < USB_SPEED_SUPER))  		rc = 0;  	else  		rc = usb_port_suspend(udev, msg);  |