From: "Chew, Chiau Ee" <chiau.ee.c...@intel.com>

Like the xHCI controller on Intel Panther Point and Lynx Point
chipsets, the xHCI controller on Intel BayTrail has also ports that
can be switched between the EHCI host controller.

This patch should be backported to stable kernels as old as 3.0,
that contain commit 69e848c2090aebba5698a1620604c7dccb448684
"Intel xhci: Support EHCI/xHCI port switching.

Signed-off-by: Chew, Chiau Ee <chiau.ee.c...@intel.com>
Signed-off-by: Heikki Krogerus <heikki.kroge...@linux.intel.com>
Cc: sta...@vger.kernel.org
---
 drivers/usb/host/ehci-pci.c   |    3 ++-
 drivers/usb/host/pci-quirks.c |   12 +++++++++++-
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c
index 595d210..a5708d9 100644
--- a/drivers/usb/host/ehci-pci.c
+++ b/drivers/usb/host/ehci-pci.c
@@ -322,7 +322,8 @@ static bool usb_is_intel_switchable_ehci(struct pci_dev 
*pdev)
                (pdev->device == 0x1E26 ||
                 pdev->device == 0x8C2D ||
                 pdev->device == 0x8C26 ||
-                pdev->device == 0x9C26);
+                pdev->device == 0x9C26 ||
+                pdev->device == 0x0F34);
 }
 
 static void ehci_enable_xhci_companion(void)
diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
index 4c338ec..6062822 100644
--- a/drivers/usb/host/pci-quirks.c
+++ b/drivers/usb/host/pci-quirks.c
@@ -724,6 +724,7 @@ static int handshake(void __iomem *ptr, u32 mask, u32 done,
 
 #define PCI_DEVICE_ID_INTEL_LYNX_POINT_XHCI    0x8C31
 #define PCI_DEVICE_ID_INTEL_LYNX_POINT_LP_XHCI 0x9C31
+#define PCI_DEVICE_ID_INTEL_BYT_XHCI           0x0F35
 
 bool usb_is_intel_ppt_switchable_xhci(struct pci_dev *pdev)
 {
@@ -741,10 +742,19 @@ bool usb_is_intel_lpt_switchable_xhci(struct pci_dev 
*pdev)
                 pdev->device == PCI_DEVICE_ID_INTEL_LYNX_POINT_LP_XHCI);
 }
 
+/* And so does the Intel BayTrail. */
+bool usb_is_intel_byt_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_BYT_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);
+               usb_is_intel_lpt_switchable_xhci(pdev) ||
+               usb_is_intel_byt_switchable_xhci(pdev);
 }
 EXPORT_SYMBOL_GPL(usb_is_intel_switchable_xhci);
 
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to