At this point the port switchover quirk is getting unwieldy. I know of at least two more platforms that will need the switchover quirk, and it's silly to keep adding them to the list. Heikki, can you change the code to always try to switchover the ports from EHCI to xHCI if an Intel xHCI host is found, and fail gracefully if there isn't an EHCI host controller on board? I suspect Intel will include the port switchover mechanism until they decide to only include xHCI hosts and no EHCI hosts. In the meantime, we can avoid breaking USB 3.0 new platforms by always attempting to do the switchover. Sarah Sharp On Tue, May 21, 2013 at 09:08:16AM +0300, Heikki Krogerus wrote: > From: "Chew, Chiau Ee" <chiau.ee.chew@xxxxxxxxx> > > 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.chew@xxxxxxxxx> > Signed-off-by: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx > --- > 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 stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html