1 // SPDX-License-Identifier: GPL-2.0
4 * Purpose: PCI Express Port Bus Driver's Bus Overloading Functions
6 * Copyright (C) 2004 Intel
10 #include <linux/module.h>
11 #include <linux/pci.h>
12 #include <linux/kernel.h>
13 #include <linux/errno.h>
16 #include <linux/pcieport_if.h>
19 static int pcie_port_bus_match(struct device *dev, struct device_driver *drv);
21 struct bus_type pcie_port_bus_type = {
22 .name = "pci_express",
23 .match = pcie_port_bus_match,
25 EXPORT_SYMBOL_GPL(pcie_port_bus_type);
27 static int pcie_port_bus_match(struct device *dev, struct device_driver *drv)
29 struct pcie_device *pciedev;
30 struct pcie_port_service_driver *driver;
32 if (drv->bus != &pcie_port_bus_type || dev->bus != &pcie_port_bus_type)
35 pciedev = to_pcie_device(dev);
36 driver = to_service_driver(drv);
38 if (driver->service != pciedev->service)
41 if ((driver->port_type != PCIE_ANY_PORT) &&
42 (driver->port_type != pci_pcie_type(pciedev->port)))
48 int pcie_port_bus_register(void)
50 return bus_register(&pcie_port_bus_type);
53 void pcie_port_bus_unregister(void)
55 bus_unregister(&pcie_port_bus_type);