diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-03-12 14:40:15 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-03-12 14:40:15 -0400 |
commit | 192c028b6ac972df25fd624f94a94d038fbdb66c (patch) | |
tree | 4dd9d13ffd239e4d7c61401f892989742c671fa8 /drivers/usb | |
parent | ea1990c3796e7550e6f240983f2d1b8e5ecf3891 (diff) | |
parent | fa389e220254c69ffae0d403eac4146171062d08 (diff) |
Merge 3.14-rc6 into usb-next
We want the USB fixes in here as well.
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/core/config.c | 4 | ||||
-rw-r--r-- | drivers/usb/core/quirks.c | 4 | ||||
-rw-r--r-- | drivers/usb/host/xhci.c | 14 |
3 files changed, 11 insertions, 11 deletions
diff --git a/drivers/usb/core/config.c b/drivers/usb/core/config.c index 14ba398d6def..1ab4df1de2da 100644 --- a/drivers/usb/core/config.c +++ b/drivers/usb/core/config.c | |||
@@ -716,6 +716,10 @@ int usb_get_configuration(struct usb_device *dev) | |||
716 | result = -ENOMEM; | 716 | result = -ENOMEM; |
717 | goto err; | 717 | goto err; |
718 | } | 718 | } |
719 | |||
720 | if (dev->quirks & USB_QUIRK_DELAY_INIT) | ||
721 | msleep(100); | ||
722 | |||
719 | result = usb_get_descriptor(dev, USB_DT_CONFIG, cfgno, | 723 | result = usb_get_descriptor(dev, USB_DT_CONFIG, cfgno, |
720 | bigbuffer, length); | 724 | bigbuffer, length); |
721 | if (result < 0) { | 725 | if (result < 0) { |
diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c index 8f37063c0a49..739ee8e8bdfd 100644 --- a/drivers/usb/core/quirks.c +++ b/drivers/usb/core/quirks.c | |||
@@ -47,6 +47,10 @@ static const struct usb_device_id usb_quirk_list[] = { | |||
47 | /* Microsoft LifeCam-VX700 v2.0 */ | 47 | /* Microsoft LifeCam-VX700 v2.0 */ |
48 | { USB_DEVICE(0x045e, 0x0770), .driver_info = USB_QUIRK_RESET_RESUME }, | 48 | { USB_DEVICE(0x045e, 0x0770), .driver_info = USB_QUIRK_RESET_RESUME }, |
49 | 49 | ||
50 | /* Logitech HD Pro Webcams C920 and C930e */ | ||
51 | { USB_DEVICE(0x046d, 0x082d), .driver_info = USB_QUIRK_DELAY_INIT }, | ||
52 | { USB_DEVICE(0x046d, 0x0843), .driver_info = USB_QUIRK_DELAY_INIT }, | ||
53 | |||
50 | /* Logitech Quickcam Fusion */ | 54 | /* Logitech Quickcam Fusion */ |
51 | { USB_DEVICE(0x046d, 0x08c1), .driver_info = USB_QUIRK_RESET_RESUME }, | 55 | { USB_DEVICE(0x046d, 0x08c1), .driver_info = USB_QUIRK_RESET_RESUME }, |
52 | 56 | ||
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 652be2138b4b..8fe4e124ddd4 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c | |||
@@ -4762,6 +4762,9 @@ int xhci_gen_setup(struct usb_hcd *hcd, xhci_get_quirks_t get_quirks) | |||
4762 | /* Accept arbitrarily long scatter-gather lists */ | 4762 | /* Accept arbitrarily long scatter-gather lists */ |
4763 | hcd->self.sg_tablesize = ~0; | 4763 | hcd->self.sg_tablesize = ~0; |
4764 | 4764 | ||
4765 | /* support to build packet from discontinuous buffers */ | ||
4766 | hcd->self.no_sg_constraint = 1; | ||
4767 | |||
4765 | /* XHCI controllers don't stop the ep queue on short packets :| */ | 4768 | /* XHCI controllers don't stop the ep queue on short packets :| */ |
4766 | hcd->self.no_stop_on_short = 1; | 4769 | hcd->self.no_stop_on_short = 1; |
4767 | 4770 | ||
@@ -4786,14 +4789,6 @@ int xhci_gen_setup(struct usb_hcd *hcd, xhci_get_quirks_t get_quirks) | |||
4786 | /* xHCI private pointer was set in xhci_pci_probe for the second | 4789 | /* xHCI private pointer was set in xhci_pci_probe for the second |
4787 | * registered roothub. | 4790 | * registered roothub. |
4788 | */ | 4791 | */ |
4789 | xhci = hcd_to_xhci(hcd); | ||
4790 | /* | ||
4791 | * Support arbitrarily aligned sg-list entries on hosts without | ||
4792 | * TD fragment rules (which are currently unsupported). | ||
4793 | */ | ||
4794 | if (xhci->hci_version < 0x100) | ||
4795 | hcd->self.no_sg_constraint = 1; | ||
4796 | |||
4797 | return 0; | 4792 | return 0; |
4798 | } | 4793 | } |
4799 | 4794 | ||
@@ -4822,9 +4817,6 @@ int xhci_gen_setup(struct usb_hcd *hcd, xhci_get_quirks_t get_quirks) | |||
4822 | if (xhci->hci_version > 0x96) | 4817 | if (xhci->hci_version > 0x96) |
4823 | xhci->quirks |= XHCI_SPURIOUS_SUCCESS; | 4818 | xhci->quirks |= XHCI_SPURIOUS_SUCCESS; |
4824 | 4819 | ||
4825 | if (xhci->hci_version < 0x100) | ||
4826 | hcd->self.no_sg_constraint = 1; | ||
4827 | |||
4828 | /* Make sure the HC is halted. */ | 4820 | /* Make sure the HC is halted. */ |
4829 | retval = xhci_halt(xhci); | 4821 | retval = xhci_halt(xhci); |
4830 | if (retval) | 4822 | if (retval) |