PCI: PCIe portdrv: Rearrange code so that related things are together
Rearrange code in drivers/pci/pcie/portdrv_bus.c and drivers/pci/pcie/portdrv_core.c so that related functions and data structures are closer together. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
This commit is contained in:
Родитель
e7ae884866
Коммит
fa6c993736
|
@ -44,3 +44,13 @@ static int pcie_port_bus_match(struct device *dev, struct device_driver *drv)
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int pcie_port_bus_register(void)
|
||||||
|
{
|
||||||
|
return bus_register(&pcie_port_bus_type);
|
||||||
|
}
|
||||||
|
|
||||||
|
void pcie_port_bus_unregister(void)
|
||||||
|
{
|
||||||
|
bus_unregister(&pcie_port_bus_type);
|
||||||
|
}
|
||||||
|
|
|
@ -19,50 +19,6 @@
|
||||||
|
|
||||||
extern int pcie_mch_quirk; /* MSI-quirk Indicator */
|
extern int pcie_mch_quirk; /* MSI-quirk Indicator */
|
||||||
|
|
||||||
static int pcie_port_probe_service(struct device *dev)
|
|
||||||
{
|
|
||||||
struct pcie_device *pciedev;
|
|
||||||
struct pcie_port_service_driver *driver;
|
|
||||||
int status;
|
|
||||||
|
|
||||||
if (!dev || !dev->driver)
|
|
||||||
return -ENODEV;
|
|
||||||
|
|
||||||
driver = to_service_driver(dev->driver);
|
|
||||||
if (!driver || !driver->probe)
|
|
||||||
return -ENODEV;
|
|
||||||
|
|
||||||
pciedev = to_pcie_device(dev);
|
|
||||||
status = driver->probe(pciedev, driver->id_table);
|
|
||||||
if (!status) {
|
|
||||||
dev_printk(KERN_DEBUG, dev, "service driver %s loaded\n",
|
|
||||||
driver->name);
|
|
||||||
get_device(dev);
|
|
||||||
}
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int pcie_port_remove_service(struct device *dev)
|
|
||||||
{
|
|
||||||
struct pcie_device *pciedev;
|
|
||||||
struct pcie_port_service_driver *driver;
|
|
||||||
|
|
||||||
if (!dev || !dev->driver)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
pciedev = to_pcie_device(dev);
|
|
||||||
driver = to_service_driver(dev->driver);
|
|
||||||
if (driver && driver->remove) {
|
|
||||||
dev_printk(KERN_DEBUG, dev, "unloading service driver %s\n",
|
|
||||||
driver->name);
|
|
||||||
driver->remove(pciedev);
|
|
||||||
put_device(dev);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void pcie_port_shutdown_service(struct device *dev) {}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* release_pcie_device - free PCI Express port service device structure
|
* release_pcie_device - free PCI Express port service device structure
|
||||||
* @dev: Port service device to release
|
* @dev: Port service device to release
|
||||||
|
@ -414,16 +370,50 @@ void pcie_port_device_remove(struct pci_dev *dev)
|
||||||
pci_disable_msi(dev);
|
pci_disable_msi(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
int pcie_port_bus_register(void)
|
static int pcie_port_probe_service(struct device *dev)
|
||||||
{
|
{
|
||||||
return bus_register(&pcie_port_bus_type);
|
struct pcie_device *pciedev;
|
||||||
|
struct pcie_port_service_driver *driver;
|
||||||
|
int status;
|
||||||
|
|
||||||
|
if (!dev || !dev->driver)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
|
driver = to_service_driver(dev->driver);
|
||||||
|
if (!driver || !driver->probe)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
|
pciedev = to_pcie_device(dev);
|
||||||
|
status = driver->probe(pciedev, driver->id_table);
|
||||||
|
if (!status) {
|
||||||
|
dev_printk(KERN_DEBUG, dev, "service driver %s loaded\n",
|
||||||
|
driver->name);
|
||||||
|
get_device(dev);
|
||||||
|
}
|
||||||
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
void pcie_port_bus_unregister(void)
|
static int pcie_port_remove_service(struct device *dev)
|
||||||
{
|
{
|
||||||
bus_unregister(&pcie_port_bus_type);
|
struct pcie_device *pciedev;
|
||||||
|
struct pcie_port_service_driver *driver;
|
||||||
|
|
||||||
|
if (!dev || !dev->driver)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
pciedev = to_pcie_device(dev);
|
||||||
|
driver = to_service_driver(dev->driver);
|
||||||
|
if (driver && driver->remove) {
|
||||||
|
dev_printk(KERN_DEBUG, dev, "unloading service driver %s\n",
|
||||||
|
driver->name);
|
||||||
|
driver->remove(pciedev);
|
||||||
|
put_device(dev);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void pcie_port_shutdown_service(struct device *dev) {}
|
||||||
|
|
||||||
int pcie_port_service_register(struct pcie_port_service_driver *new)
|
int pcie_port_service_register(struct pcie_port_service_driver *new)
|
||||||
{
|
{
|
||||||
new->driver.name = (char *)new->name;
|
new->driver.name = (char *)new->name;
|
||||||
|
@ -435,9 +425,9 @@ int pcie_port_service_register(struct pcie_port_service_driver *new)
|
||||||
return driver_register(&new->driver);
|
return driver_register(&new->driver);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pcie_port_service_unregister(struct pcie_port_service_driver *new)
|
void pcie_port_service_unregister(struct pcie_port_service_driver *drv)
|
||||||
{
|
{
|
||||||
driver_unregister(&new->driver);
|
driver_unregister(&drv->driver);
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT_SYMBOL(pcie_port_service_register);
|
EXPORT_SYMBOL(pcie_port_service_register);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче