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 | ||
