|
@@ -103,40 +103,6 @@ int pci_for_each_dma_alias(struct pci_dev *pdev,
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
- * find the upstream PCIe-to-PCI bridge of a PCI device
|
|
|
- * if the device is PCIE, return NULL
|
|
|
- * if the device isn't connected to a PCIe bridge (that is its parent is a
|
|
|
- * legacy PCI bridge and the bridge is directly connected to bus 0), return its
|
|
|
- * parent
|
|
|
- */
|
|
|
-struct pci_dev *pci_find_upstream_pcie_bridge(struct pci_dev *pdev)
|
|
|
-{
|
|
|
- struct pci_dev *tmp = NULL;
|
|
|
-
|
|
|
- if (pci_is_pcie(pdev))
|
|
|
- return NULL;
|
|
|
- while (1) {
|
|
|
- if (pci_is_root_bus(pdev->bus))
|
|
|
- break;
|
|
|
- pdev = pdev->bus->self;
|
|
|
- /* a p2p bridge */
|
|
|
- if (!pci_is_pcie(pdev)) {
|
|
|
- tmp = pdev;
|
|
|
- continue;
|
|
|
- }
|
|
|
- /* PCI device should connect to a PCIe bridge */
|
|
|
- if (pci_pcie_type(pdev) != PCI_EXP_TYPE_PCI_BRIDGE) {
|
|
|
- /* Busted hardware? */
|
|
|
- WARN_ON_ONCE(1);
|
|
|
- return NULL;
|
|
|
- }
|
|
|
- return pdev;
|
|
|
- }
|
|
|
-
|
|
|
- return tmp;
|
|
|
-}
|
|
|
-
|
|
|
static struct pci_bus *pci_do_find_bus(struct pci_bus *bus, unsigned char busnr)
|
|
|
{
|
|
|
struct pci_bus *child;
|