]> git.baikalelectronics.ru Git - kernel.git/commit
PCI: Work around Synopsys duplicate Device ID (HAPS USB3, NXP i.MX)
authorThinh Nguyen <thinh.nguyen@synopsys.com>
Wed, 6 Feb 2019 23:17:27 +0000 (17:17 -0600)
committerBjorn Helgaas <bhelgaas@google.com>
Wed, 6 Feb 2019 23:17:27 +0000 (17:17 -0600)
commit310eef54dfb6e2fcd22215ae6c10b4624b414a25
tree14f4ba4d28ce4f9904ddbbdb3332537c24474b2d
parentbf4d333b1407b0a17b6bff5332eb6e822c4a5581
PCI: Work around Synopsys duplicate Device ID (HAPS USB3, NXP i.MX)

There are at least four different parts with the same Vendor and Device
ID ([16c3:abcd]):

  1) Synopsys HAPS USB3 controller
  2) Synopsys PCIe Root Port in Freescale/NXP i.MX6Q (reported by Lucas)
  3) Synopsys PCIe Root Port in Freescale/NXP i.MX6QP (reported by Lukas)
  4) Synopsys PCIe Root Port in Freescale/NXP i.MX7D (reported by Trent)

The HAPS USB3 controller has a Class Code of PCI_CLASS_SERIAL_USB_XHCI,
which means the XHCI driver would normally claim it.  Previously,
quirk_synopsys_haps() changed the Class Code of all [16c3:abcd] devices,
including the Root Ports, to PCI_CLASS_SERIAL_USB_DEVICE to prevent the
XHCI driver from claiming them so dwc3-haps can claim them instead.

Changing the Class Code of the Root Ports prevents the PCI core from
handling them as bridges, so devices below them don't work.

Restrict the quirk so it only changes the Class Code for devices that start
with the PCI_CLASS_SERIAL_USB_XHCI Class Code, leaving the Root Ports
alone.

Fixes: 7b7f00a72ad3 ("PCI: Override Synopsys USB 3.x HAPS device class")
Reported-by: Lukas F. Hartmann <lukas@mntmn.com>
Reported-by: Trent Piepho <tpiepho@impinj.com>
Reported-by: Lucas Stach <l.stach@pengutronix.de>
Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
[bhelgaas: changelog]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/pci/quirks.c