aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
authorSarah Sharp <sarah.a.sharp@linux.intel.com>2010-12-30 16:27:36 -0500
committerSarah Sharp <sarah.a.sharp@linux.intel.com>2011-03-13 21:23:51 -0400
commit0c9ffe0f6286a02bf82f8d7fb7274aec2ad977f1 (patch)
treee17413d6b9451fe5ea5fa0a51ff923689d356254 /drivers/usb
parent131dec344d5e41f01e4791aa4c80eb4bdb1e5274 (diff)
USB: Disable auto-suspend for USB 3.0 hubs.
USB 3.0 devices have a slightly different suspend sequence than USB 2.0/1.1 devices. There isn't support for USB 3.0 device suspend yet, so make khubd leave autosuspend disabled for USB 3.0 hubs. Make sure that USB 3.0 roothubs still have autosuspend enabled, since that path in the xHCI driver works fine. Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/core/hub.c10
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,