diff options
Diffstat (limited to 'drivers/usb/core')
-rw-r--r-- | drivers/usb/core/hcd.c | 2 | ||||
-rw-r--r-- | drivers/usb/core/hub.c | 10 | ||||
-rw-r--r-- | drivers/usb/core/quirks.c | 6 |
3 files changed, 13 insertions, 5 deletions
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c index b84fb141e122..a6efb4184f2b 100644 --- a/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c | |||
@@ -2060,6 +2060,8 @@ int usb_alloc_streams(struct usb_interface *interface, | |||
2060 | return -EINVAL; | 2060 | return -EINVAL; |
2061 | if (dev->speed != USB_SPEED_SUPER) | 2061 | if (dev->speed != USB_SPEED_SUPER) |
2062 | return -EINVAL; | 2062 | return -EINVAL; |
2063 | if (dev->state < USB_STATE_CONFIGURED) | ||
2064 | return -ENODEV; | ||
2063 | 2065 | ||
2064 | for (i = 0; i < num_eps; i++) { | 2066 | for (i = 0; i < num_eps; i++) { |
2065 | /* Streams only apply to bulk endpoints. */ | 2067 | /* Streams only apply to bulk endpoints. */ |
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 11e80ac31324..b649fef2e35d 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c | |||
@@ -4468,9 +4468,6 @@ hub_port_init (struct usb_hub *hub, struct usb_device *udev, int port1, | |||
4468 | if (retval) | 4468 | if (retval) |
4469 | goto fail; | 4469 | goto fail; |
4470 | 4470 | ||
4471 | if (hcd->usb_phy && !hdev->parent) | ||
4472 | usb_phy_notify_connect(hcd->usb_phy, udev->speed); | ||
4473 | |||
4474 | /* | 4471 | /* |
4475 | * Some superspeed devices have finished the link training process | 4472 | * Some superspeed devices have finished the link training process |
4476 | * and attached to a superspeed hub port, but the device descriptor | 4473 | * and attached to a superspeed hub port, but the device descriptor |
@@ -4627,8 +4624,7 @@ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus, | |||
4627 | 4624 | ||
4628 | /* Disconnect any existing devices under this port */ | 4625 | /* Disconnect any existing devices under this port */ |
4629 | if (udev) { | 4626 | if (udev) { |
4630 | if (hcd->usb_phy && !hdev->parent && | 4627 | if (hcd->usb_phy && !hdev->parent) |
4631 | !(portstatus & USB_PORT_STAT_CONNECTION)) | ||
4632 | usb_phy_notify_disconnect(hcd->usb_phy, udev->speed); | 4628 | usb_phy_notify_disconnect(hcd->usb_phy, udev->speed); |
4633 | usb_disconnect(&port_dev->child); | 4629 | usb_disconnect(&port_dev->child); |
4634 | } | 4630 | } |
@@ -4783,6 +4779,10 @@ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus, | |||
4783 | port_dev->child = NULL; | 4779 | port_dev->child = NULL; |
4784 | spin_unlock_irq(&device_state_lock); | 4780 | spin_unlock_irq(&device_state_lock); |
4785 | mutex_unlock(&usb_port_peer_mutex); | 4781 | mutex_unlock(&usb_port_peer_mutex); |
4782 | } else { | ||
4783 | if (hcd->usb_phy && !hdev->parent) | ||
4784 | usb_phy_notify_connect(hcd->usb_phy, | ||
4785 | udev->speed); | ||
4786 | } | 4786 | } |
4787 | } | 4787 | } |
4788 | 4788 | ||
diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c index 5ae883dc21f5..39b4081b632d 100644 --- a/drivers/usb/core/quirks.c +++ b/drivers/usb/core/quirks.c | |||
@@ -97,6 +97,12 @@ static const struct usb_device_id usb_quirk_list[] = { | |||
97 | { USB_DEVICE(0x04f3, 0x0089), .driver_info = | 97 | { USB_DEVICE(0x04f3, 0x0089), .driver_info = |
98 | USB_QUIRK_DEVICE_QUALIFIER }, | 98 | USB_QUIRK_DEVICE_QUALIFIER }, |
99 | 99 | ||
100 | { USB_DEVICE(0x04f3, 0x009b), .driver_info = | ||
101 | USB_QUIRK_DEVICE_QUALIFIER }, | ||
102 | |||
103 | { USB_DEVICE(0x04f3, 0x016f), .driver_info = | ||
104 | USB_QUIRK_DEVICE_QUALIFIER }, | ||
105 | |||
100 | /* Roland SC-8820 */ | 106 | /* Roland SC-8820 */ |
101 | { USB_DEVICE(0x0582, 0x0007), .driver_info = USB_QUIRK_RESET_RESUME }, | 107 | { USB_DEVICE(0x0582, 0x0007), .driver_info = USB_QUIRK_RESET_RESUME }, |
102 | 108 | ||