From 634669ec5f2caf9a1281283d7156608e8ff7c4b9 Mon Sep 17 00:00:00 2001 From: Sarah Sharp Date: Fri, 4 Sep 2009 10:53:17 -0700 Subject: [PATCH] --- yaml --- r: 165050 b: refs/heads/master c: 4a0cd9670f22c308bc5936ee9734d8ee3f1baa52 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/usb/core/usb.c | 9 +++++++-- trunk/drivers/usb/host/xhci-mem.c | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 0ca49ffc639d..6a1fef4298cd 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a50c8aa953c65fd690eca03a2618ac445a3da05d +refs/heads/master: 4a0cd9670f22c308bc5936ee9734d8ee3f1baa52 diff --git a/trunk/drivers/usb/core/usb.c b/trunk/drivers/usb/core/usb.c index 30dd2636f262..b1b85abb9a2d 100644 --- a/trunk/drivers/usb/core/usb.c +++ b/trunk/drivers/usb/core/usb.c @@ -413,8 +413,13 @@ struct usb_device *usb_alloc_dev(struct usb_device *parent, } else { snprintf(dev->devpath, sizeof dev->devpath, "%s.%d", parent->devpath, port1); - dev->route = parent->route + - (port1 << ((parent->level - 1)*4)); + /* Route string assumes hubs have less than 16 ports */ + if (port1 < 15) + dev->route = parent->route + + (port1 << ((parent->level - 1)*4)); + else + dev->route = parent->route + + (15 << ((parent->level - 1)*4)); } dev->dev.parent = &parent->dev; diff --git a/trunk/drivers/usb/host/xhci-mem.c b/trunk/drivers/usb/host/xhci-mem.c index 6e6797a38780..e046f0f6ee6a 100644 --- a/trunk/drivers/usb/host/xhci-mem.c +++ b/trunk/drivers/usb/host/xhci-mem.c @@ -360,9 +360,9 @@ int xhci_setup_addressable_virt_dev(struct xhci_hcd *xhci, struct usb_device *ud /* 3) Only the control endpoint is valid - one endpoint context */ slot_ctx->dev_info |= LAST_CTX(1); + slot_ctx->dev_info |= (u32) udev->route; switch (udev->speed) { case USB_SPEED_SUPER: - slot_ctx->dev_info |= (u32) udev->route; slot_ctx->dev_info |= (u32) SLOT_SPEED_SS; break; case USB_SPEED_HIGH: