aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/xhci-pci.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/host/xhci-pci.c')
-rw-r--r--drivers/usb/host/xhci-pci.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
index 7a856a767e77..18b231b0c5d3 100644
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -72,6 +72,7 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
72 xhci_dbg(xhci, "QUIRK: Fresco Logic revision %u " 72 xhci_dbg(xhci, "QUIRK: Fresco Logic revision %u "
73 "has broken MSI implementation\n", 73 "has broken MSI implementation\n",
74 pdev->revision); 74 pdev->revision);
75 xhci->quirks |= XHCI_TRUST_TX_LENGTH;
75 } 76 }
76 77
77 if (pdev->vendor == PCI_VENDOR_ID_NEC) 78 if (pdev->vendor == PCI_VENDOR_ID_NEC)
@@ -83,6 +84,10 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
83 /* AMD PLL quirk */ 84 /* AMD PLL quirk */
84 if (pdev->vendor == PCI_VENDOR_ID_AMD && usb_amd_find_chipset_info()) 85 if (pdev->vendor == PCI_VENDOR_ID_AMD && usb_amd_find_chipset_info())
85 xhci->quirks |= XHCI_AMD_PLL_FIX; 86 xhci->quirks |= XHCI_AMD_PLL_FIX;
87 if (pdev->vendor == PCI_VENDOR_ID_INTEL) {
88 xhci->quirks |= XHCI_LPM_SUPPORT;
89 xhci->quirks |= XHCI_INTEL_HOST;
90 }
86 if (pdev->vendor == PCI_VENDOR_ID_INTEL && 91 if (pdev->vendor == PCI_VENDOR_ID_INTEL &&
87 pdev->device == PCI_DEVICE_ID_INTEL_PANTHERPOINT_XHCI) { 92 pdev->device == PCI_DEVICE_ID_INTEL_PANTHERPOINT_XHCI) {
88 xhci->quirks |= XHCI_SPURIOUS_SUCCESS; 93 xhci->quirks |= XHCI_SPURIOUS_SUCCESS;
@@ -169,6 +174,13 @@ static int xhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
169 if (retval) 174 if (retval)
170 goto put_usb3_hcd; 175 goto put_usb3_hcd;
171 /* Roothub already marked as USB 3.0 speed */ 176 /* Roothub already marked as USB 3.0 speed */
177
178 /* We know the LPM timeout algorithms for this host, let the USB core
179 * enable and disable LPM for devices under the USB 3.0 roothub.
180 */
181 if (xhci->quirks & XHCI_LPM_SUPPORT)
182 hcd_to_bus(xhci->shared_hcd)->root_hub->lpm_capable = 1;
183
172 return 0; 184 return 0;
173 185
174put_usb3_hcd: 186put_usb3_hcd:
@@ -292,6 +304,8 @@ static const struct hc_driver xhci_pci_hc_driver = {
292 */ 304 */
293 .update_device = xhci_update_device, 305 .update_device = xhci_update_device,
294 .set_usb2_hw_lpm = xhci_set_usb2_hardware_lpm, 306 .set_usb2_hw_lpm = xhci_set_usb2_hardware_lpm,
307 .enable_usb3_lpm_timeout = xhci_enable_usb3_lpm_timeout,
308 .disable_usb3_lpm_timeout = xhci_disable_usb3_lpm_timeout,
295}; 309};
296 310
297/*-------------------------------------------------------------------------*/ 311/*-------------------------------------------------------------------------*/