diff options
Diffstat (limited to 'drivers/usb/core/hub.c')
-rw-r--r-- | drivers/usb/core/hub.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 38cc4bae0a82..bee13517676f 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c | |||
@@ -104,6 +104,8 @@ static int usb_reset_and_verify_device(struct usb_device *udev); | |||
104 | 104 | ||
105 | static inline char *portspeed(struct usb_hub *hub, int portstatus) | 105 | static inline char *portspeed(struct usb_hub *hub, int portstatus) |
106 | { | 106 | { |
107 | if (hub_is_superspeedplus(hub->hdev)) | ||
108 | return "10.0 Gb/s"; | ||
107 | if (hub_is_superspeed(hub->hdev)) | 109 | if (hub_is_superspeed(hub->hdev)) |
108 | return "5.0 Gb/s"; | 110 | return "5.0 Gb/s"; |
109 | if (portstatus & USB_PORT_STAT_HIGH_SPEED) | 111 | if (portstatus & USB_PORT_STAT_HIGH_SPEED) |
@@ -2080,7 +2082,7 @@ static void choose_devnum(struct usb_device *udev) | |||
2080 | struct usb_bus *bus = udev->bus; | 2082 | struct usb_bus *bus = udev->bus; |
2081 | 2083 | ||
2082 | /* be safe when more hub events are proceed in parallel */ | 2084 | /* be safe when more hub events are proceed in parallel */ |
2083 | mutex_lock(&bus->usb_address0_mutex); | 2085 | mutex_lock(&bus->devnum_next_mutex); |
2084 | if (udev->wusb) { | 2086 | if (udev->wusb) { |
2085 | devnum = udev->portnum + 1; | 2087 | devnum = udev->portnum + 1; |
2086 | BUG_ON(test_bit(devnum, bus->devmap.devicemap)); | 2088 | BUG_ON(test_bit(devnum, bus->devmap.devicemap)); |
@@ -2098,7 +2100,7 @@ static void choose_devnum(struct usb_device *udev) | |||
2098 | set_bit(devnum, bus->devmap.devicemap); | 2100 | set_bit(devnum, bus->devmap.devicemap); |
2099 | udev->devnum = devnum; | 2101 | udev->devnum = devnum; |
2100 | } | 2102 | } |
2101 | mutex_unlock(&bus->usb_address0_mutex); | 2103 | mutex_unlock(&bus->devnum_next_mutex); |
2102 | } | 2104 | } |
2103 | 2105 | ||
2104 | static void release_devnum(struct usb_device *udev) | 2106 | static void release_devnum(struct usb_device *udev) |
@@ -4364,7 +4366,7 @@ hub_port_init(struct usb_hub *hub, struct usb_device *udev, int port1, | |||
4364 | if (oldspeed == USB_SPEED_LOW) | 4366 | if (oldspeed == USB_SPEED_LOW) |
4365 | delay = HUB_LONG_RESET_TIME; | 4367 | delay = HUB_LONG_RESET_TIME; |
4366 | 4368 | ||
4367 | mutex_lock(&hdev->bus->usb_address0_mutex); | 4369 | mutex_lock(hcd->address0_mutex); |
4368 | 4370 | ||
4369 | /* Reset the device; full speed may morph to high speed */ | 4371 | /* Reset the device; full speed may morph to high speed */ |
4370 | /* FIXME a USB 2.0 device may morph into SuperSpeed on reset. */ | 4372 | /* FIXME a USB 2.0 device may morph into SuperSpeed on reset. */ |
@@ -4650,7 +4652,7 @@ fail: | |||
4650 | hub_port_disable(hub, port1, 0); | 4652 | hub_port_disable(hub, port1, 0); |
4651 | update_devnum(udev, devnum); /* for disconnect processing */ | 4653 | update_devnum(udev, devnum); /* for disconnect processing */ |
4652 | } | 4654 | } |
4653 | mutex_unlock(&hdev->bus->usb_address0_mutex); | 4655 | mutex_unlock(hcd->address0_mutex); |
4654 | return retval; | 4656 | return retval; |
4655 | } | 4657 | } |
4656 | 4658 | ||