diff options
Diffstat (limited to 'drivers/usb/host/xhci-pci.c')
-rw-r--r-- | drivers/usb/host/xhci-pci.c | 14 |
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 | ||
174 | put_usb3_hcd: | 186 | put_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 | /*-------------------------------------------------------------------------*/ |