|
@@ -713,12 +713,28 @@ static int handshake(void __iomem *ptr, u32 mask, u32 done,
|
|
|
return -ETIMEDOUT;
|
|
|
}
|
|
|
|
|
|
-bool usb_is_intel_switchable_xhci(struct pci_dev *pdev)
|
|
|
+#define PCI_DEVICE_ID_INTEL_LYNX_POINT_XHCI 0x8C31
|
|
|
+
|
|
|
+bool usb_is_intel_ppt_switchable_xhci(struct pci_dev *pdev)
|
|
|
{
|
|
|
return pdev->class == PCI_CLASS_SERIAL_USB_XHCI &&
|
|
|
pdev->vendor == PCI_VENDOR_ID_INTEL &&
|
|
|
pdev->device == PCI_DEVICE_ID_INTEL_PANTHERPOINT_XHCI;
|
|
|
}
|
|
|
+
|
|
|
+/* The Intel Lynx Point chipset also has switchable ports. */
|
|
|
+bool usb_is_intel_lpt_switchable_xhci(struct pci_dev *pdev)
|
|
|
+{
|
|
|
+ return pdev->class == PCI_CLASS_SERIAL_USB_XHCI &&
|
|
|
+ pdev->vendor == PCI_VENDOR_ID_INTEL &&
|
|
|
+ pdev->device == PCI_DEVICE_ID_INTEL_LYNX_POINT_XHCI;
|
|
|
+}
|
|
|
+
|
|
|
+bool usb_is_intel_switchable_xhci(struct pci_dev *pdev)
|
|
|
+{
|
|
|
+ return usb_is_intel_ppt_switchable_xhci(pdev) ||
|
|
|
+ usb_is_intel_lpt_switchable_xhci(pdev);
|
|
|
+}
|
|
|
EXPORT_SYMBOL_GPL(usb_is_intel_switchable_xhci);
|
|
|
|
|
|
/*
|