diff options
Diffstat (limited to 'drivers/usb/core/hub.c')
-rw-r--r-- | drivers/usb/core/hub.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 13aafd1b45e5..0968157f3beb 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c | |||
@@ -1290,8 +1290,14 @@ static int hub_probe(struct usb_interface *intf, const struct usb_device_id *id) | |||
1290 | desc = intf->cur_altsetting; | 1290 | desc = intf->cur_altsetting; |
1291 | hdev = interface_to_usbdev(intf); | 1291 | hdev = interface_to_usbdev(intf); |
1292 | 1292 | ||
1293 | /* Hubs have proper suspend/resume support */ | 1293 | /* Hubs have proper suspend/resume support. USB 3.0 device suspend is |
1294 | usb_enable_autosuspend(hdev); | 1294 | * different from USB 2.0/1.1 device suspend, and unfortunately we |
1295 | * don't support it yet. So leave autosuspend disabled for USB 3.0 | ||
1296 | * external hubs for now. Enable autosuspend for USB 3.0 roothubs, | ||
1297 | * since that isn't a "real" hub. | ||
1298 | */ | ||
1299 | if (!hub_is_superspeed(hdev) || !hdev->parent) | ||
1300 | usb_enable_autosuspend(hdev); | ||
1295 | 1301 | ||
1296 | if (hdev->level == MAX_TOPO_LEVEL) { | 1302 | if (hdev->level == MAX_TOPO_LEVEL) { |
1297 | dev_err(&intf->dev, | 1303 | dev_err(&intf->dev, |