PCI: Include PCI-to-PCIe bridges as "Downstream Ports"
authorBjorn Helgaas <bhelgaas@google.com>
Wed, 19 Apr 2017 12:44:51 +0000 (07:44 -0500)
committerBjorn Helgaas <bhelgaas@google.com>
Wed, 19 Apr 2017 12:44:51 +0000 (07:44 -0500)
A PCI/PCI-X to PCI Express bridge, sometimes referred to as a "reverse
bridge", is a bridge with conventional PCI or PCI-X on its primary side and
a PCI Express Port on its secondary (downstream) side.

That PCIe Port is a Downstream Port and could be connected to a slot, just
like a Root Port or a Switch Downstream Port.  Make pcie_downstream_port()
return true for them, so we can access the Slot registers in the PCIe
capability.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/pci/access.c

index 1c8051003e676dd48124b02f40c8e32a67f485b8..9b09cd31158c36d7db094baa6bb38dddab6471ab 100644 (file)
@@ -700,7 +700,8 @@ static bool pcie_downstream_port(const struct pci_dev *dev)
        int type = pci_pcie_type(dev);
 
        return type == PCI_EXP_TYPE_ROOT_PORT ||
-              type == PCI_EXP_TYPE_DOWNSTREAM;
+              type == PCI_EXP_TYPE_DOWNSTREAM ||
+              type == PCI_EXP_TYPE_PCIE_BRIDGE;
 }
 
 bool pcie_cap_has_lnkctl(const struct pci_dev *dev)