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 7a856a767e7..18b231b0c5d 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)  		xhci_dbg(xhci, "QUIRK: Fresco Logic revision %u "  				"has broken MSI implementation\n",  				pdev->revision); +		xhci->quirks |= XHCI_TRUST_TX_LENGTH;  	}  	if (pdev->vendor == PCI_VENDOR_ID_NEC) @@ -83,6 +84,10 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)  	/* AMD PLL quirk */  	if (pdev->vendor == PCI_VENDOR_ID_AMD && usb_amd_find_chipset_info())  		xhci->quirks |= XHCI_AMD_PLL_FIX; +	if (pdev->vendor == PCI_VENDOR_ID_INTEL) { +		xhci->quirks |= XHCI_LPM_SUPPORT; +		xhci->quirks |= XHCI_INTEL_HOST; +	}  	if (pdev->vendor == PCI_VENDOR_ID_INTEL &&  			pdev->device == PCI_DEVICE_ID_INTEL_PANTHERPOINT_XHCI) {  		xhci->quirks |= XHCI_SPURIOUS_SUCCESS; @@ -169,6 +174,13 @@ static int xhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)  	if (retval)  		goto put_usb3_hcd;  	/* Roothub already marked as USB 3.0 speed */ + +	/* We know the LPM timeout algorithms for this host, let the USB core +	 * enable and disable LPM for devices under the USB 3.0 roothub. +	 */ +	if (xhci->quirks & XHCI_LPM_SUPPORT) +		hcd_to_bus(xhci->shared_hcd)->root_hub->lpm_capable = 1; +  	return 0;  put_usb3_hcd: @@ -292,6 +304,8 @@ static const struct hc_driver xhci_pci_hc_driver = {  	 */  	.update_device =        xhci_update_device,  	.set_usb2_hw_lpm =	xhci_set_usb2_hardware_lpm, +	.enable_usb3_lpm_timeout =	xhci_enable_usb3_lpm_timeout, +	.disable_usb3_lpm_timeout =	xhci_disable_usb3_lpm_timeout,  };  /*-------------------------------------------------------------------------*/  |