Commit a4589a66 authored by Bjorn Helgaas's avatar Bjorn Helgaas

Merge branch 'pci/demodularize' into next

* pci/demodularize:
  PCI: pciehp: Make explicitly non-modular
  PCI: hotplug: Make core explicitly non-modular
  PCI: xilinx-nwl: Make explicitly non-modular
  PCI: xilinx: Make explicitly non-modular
  PCI: qcom: Make explicitly non-modular
  PCI: dra7xx: Make explicitly non-modular
  PCI/AER: Make explicitly non-modular
  PCI/PME: Make explicitly non-modular
  PCI: Make DPC explicitly non-modular
  PCI: generic: Make explicitly non-modular
  PCI: exynos: Make explicitly non-modular
  PCI: designware: Make explicitly non-modular
  PCI: spear: Make explicitly non-modular
  PCI: portdrv: Make explicitly non-modular
  PCI: imx6: Make explicitly non-modular
  PCI: altera: Make explicitly non-modular
  PCI: altera: Make MSI explicitly non-modular
parents 29b4817d 70626d88
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/irqdomain.h> #include <linux/irqdomain.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/module.h> #include <linux/init.h>
#include <linux/of_gpio.h> #include <linux/of_gpio.h>
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/phy/phy.h> #include <linux/phy/phy.h>
...@@ -443,25 +443,6 @@ static int __init dra7xx_pcie_probe(struct platform_device *pdev) ...@@ -443,25 +443,6 @@ static int __init dra7xx_pcie_probe(struct platform_device *pdev)
return ret; return ret;
} }
static int __exit dra7xx_pcie_remove(struct platform_device *pdev)
{
struct dra7xx_pcie *dra7xx = platform_get_drvdata(pdev);
struct pcie_port *pp = &dra7xx->pp;
struct device *dev = &pdev->dev;
int count = dra7xx->phy_count;
if (pp->irq_domain)
irq_domain_remove(pp->irq_domain);
pm_runtime_put(dev);
pm_runtime_disable(dev);
while (count--) {
phy_power_off(dra7xx->phy[count]);
phy_exit(dra7xx->phy[count]);
}
return 0;
}
#ifdef CONFIG_PM_SLEEP #ifdef CONFIG_PM_SLEEP
static int dra7xx_pcie_suspend(struct device *dev) static int dra7xx_pcie_suspend(struct device *dev)
{ {
...@@ -545,19 +526,13 @@ static const struct of_device_id of_dra7xx_pcie_match[] = { ...@@ -545,19 +526,13 @@ static const struct of_device_id of_dra7xx_pcie_match[] = {
{ .compatible = "ti,dra7-pcie", }, { .compatible = "ti,dra7-pcie", },
{}, {},
}; };
MODULE_DEVICE_TABLE(of, of_dra7xx_pcie_match);
static struct platform_driver dra7xx_pcie_driver = { static struct platform_driver dra7xx_pcie_driver = {
.remove = __exit_p(dra7xx_pcie_remove),
.driver = { .driver = {
.name = "dra7-pcie", .name = "dra7-pcie",
.of_match_table = of_dra7xx_pcie_match, .of_match_table = of_dra7xx_pcie_match,
.suppress_bind_attrs = true,
.pm = &dra7xx_pcie_pm_ops, .pm = &dra7xx_pcie_pm_ops,
}, },
}; };
builtin_platform_driver_probe(dra7xx_pcie_driver, dra7xx_pcie_probe);
module_platform_driver_probe(dra7xx_pcie_driver, dra7xx_pcie_probe);
MODULE_AUTHOR("Kishon Vijay Abraham I <kishon@ti.com>");
MODULE_DESCRIPTION("TI PCIe controller driver");
MODULE_LICENSE("GPL v2");
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/module.h> #include <linux/init.h>
#include <linux/of_gpio.h> #include <linux/of_gpio.h>
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
...@@ -624,7 +624,6 @@ static const struct of_device_id exynos_pcie_of_match[] = { ...@@ -624,7 +624,6 @@ static const struct of_device_id exynos_pcie_of_match[] = {
{ .compatible = "samsung,exynos5440-pcie", }, { .compatible = "samsung,exynos5440-pcie", },
{}, {},
}; };
MODULE_DEVICE_TABLE(of, exynos_pcie_of_match);
static struct platform_driver exynos_pcie_driver = { static struct platform_driver exynos_pcie_driver = {
.remove = __exit_p(exynos_pcie_remove), .remove = __exit_p(exynos_pcie_remove),
...@@ -641,7 +640,3 @@ static int __init exynos_pcie_init(void) ...@@ -641,7 +640,3 @@ static int __init exynos_pcie_init(void)
return platform_driver_probe(&exynos_pcie_driver, exynos_pcie_probe); return platform_driver_probe(&exynos_pcie_driver, exynos_pcie_probe);
} }
subsys_initcall(exynos_pcie_init); subsys_initcall(exynos_pcie_init);
MODULE_AUTHOR("Jingoo Han <jg1.han@samsung.com>");
MODULE_DESCRIPTION("Samsung PCIe host controller driver");
MODULE_LICENSE("GPL v2");
/* /*
* Generic PCI host driver common code
*
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as * it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation. * published by the Free Software Foundation.
...@@ -17,7 +19,6 @@ ...@@ -17,7 +19,6 @@
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of_address.h> #include <linux/of_address.h>
#include <linux/of_pci.h> #include <linux/of_pci.h>
#include <linux/pci-ecam.h> #include <linux/pci-ecam.h>
...@@ -162,7 +163,3 @@ int pci_host_common_probe(struct platform_device *pdev, ...@@ -162,7 +163,3 @@ int pci_host_common_probe(struct platform_device *pdev,
pci_bus_add_devices(bus); pci_bus_add_devices(bus);
return 0; return 0;
} }
MODULE_DESCRIPTION("Generic PCI host driver common code");
MODULE_AUTHOR("Will Deacon <will.deacon@arm.com>");
MODULE_LICENSE("GPL v2");
...@@ -739,7 +739,6 @@ static const struct of_device_id imx6_pcie_of_match[] = { ...@@ -739,7 +739,6 @@ static const struct of_device_id imx6_pcie_of_match[] = {
{ .compatible = "fsl,imx6qp-pcie", .data = (void *)IMX6QP, }, { .compatible = "fsl,imx6qp-pcie", .data = (void *)IMX6QP, },
{}, {},
}; };
MODULE_DEVICE_TABLE(of, imx6_pcie_of_match);
static struct platform_driver imx6_pcie_driver = { static struct platform_driver imx6_pcie_driver = {
.driver = { .driver = {
...@@ -749,14 +748,8 @@ static struct platform_driver imx6_pcie_driver = { ...@@ -749,14 +748,8 @@ static struct platform_driver imx6_pcie_driver = {
.shutdown = imx6_pcie_shutdown, .shutdown = imx6_pcie_shutdown,
}; };
/* Freescale PCIe driver does not allow module unload */
static int __init imx6_pcie_init(void) static int __init imx6_pcie_init(void)
{ {
return platform_driver_probe(&imx6_pcie_driver, imx6_pcie_probe); return platform_driver_probe(&imx6_pcie_driver, imx6_pcie_probe);
} }
module_init(imx6_pcie_init); device_initcall(imx6_pcie_init);
MODULE_AUTHOR("Sean Cross <xobs@kosagi.com>");
MODULE_DESCRIPTION("Freescale i.MX6 PCIe host controller driver");
MODULE_LICENSE("GPL v2");
/* /*
* Altera PCIe MSI support
*
* Author: Ley Foon Tan <lftan@altera.com>
*
* Copyright Altera Corporation (C) 2013-2015. All rights reserved * Copyright Altera Corporation (C) 2013-2015. All rights reserved
* *
* This program is free software; you can redistribute it and/or modify it * This program is free software; you can redistribute it and/or modify it
...@@ -16,7 +20,7 @@ ...@@ -16,7 +20,7 @@
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/irqchip/chained_irq.h> #include <linux/irqchip/chained_irq.h>
#include <linux/module.h> #include <linux/init.h>
#include <linux/msi.h> #include <linux/msi.h>
#include <linux/of_address.h> #include <linux/of_address.h>
#include <linux/of_irq.h> #include <linux/of_irq.h>
...@@ -308,7 +312,3 @@ static int __init altera_msi_init(void) ...@@ -308,7 +312,3 @@ static int __init altera_msi_init(void)
return platform_driver_register(&altera_msi_driver); return platform_driver_register(&altera_msi_driver);
} }
subsys_initcall(altera_msi_init); subsys_initcall(altera_msi_init);
MODULE_AUTHOR("Ley Foon Tan <lftan@altera.com>");
MODULE_DESCRIPTION("Altera PCIe MSI support");
MODULE_LICENSE("GPL v2");
/* /*
* Copyright Altera Corporation (C) 2013-2015. All rights reserved * Copyright Altera Corporation (C) 2013-2015. All rights reserved
* *
* Author: Ley Foon Tan <lftan@altera.com>
* Description: Altera PCIe host controller driver
*
* This program is free software; you can redistribute it and/or modify it * This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License, * under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation. * version 2, as published by the Free Software Foundation.
...@@ -17,7 +20,7 @@ ...@@ -17,7 +20,7 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/irqchip/chained_irq.h> #include <linux/irqchip/chained_irq.h>
#include <linux/module.h> #include <linux/init.h>
#include <linux/of_address.h> #include <linux/of_address.h>
#include <linux/of_irq.h> #include <linux/of_irq.h>
#include <linux/of_pci.h> #include <linux/of_pci.h>
...@@ -568,7 +571,6 @@ static const struct of_device_id altera_pcie_of_match[] = { ...@@ -568,7 +571,6 @@ static const struct of_device_id altera_pcie_of_match[] = {
{ .compatible = "altr,pcie-root-port-1.0", }, { .compatible = "altr,pcie-root-port-1.0", },
{}, {},
}; };
MODULE_DEVICE_TABLE(of, altera_pcie_of_match);
static struct platform_driver altera_pcie_driver = { static struct platform_driver altera_pcie_driver = {
.probe = altera_pcie_probe, .probe = altera_pcie_probe,
...@@ -583,8 +585,4 @@ static int altera_pcie_init(void) ...@@ -583,8 +585,4 @@ static int altera_pcie_init(void)
{ {
return platform_driver_register(&altera_pcie_driver); return platform_driver_register(&altera_pcie_driver);
} }
module_init(altera_pcie_init); device_initcall(altera_pcie_init);
MODULE_AUTHOR("Ley Foon Tan <lftan@altera.com>");
MODULE_DESCRIPTION("Altera PCIe host controller driver");
MODULE_LICENSE("GPL v2");
...@@ -14,7 +14,6 @@ ...@@ -14,7 +14,6 @@
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/irqdomain.h> #include <linux/irqdomain.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/module.h>
#include <linux/msi.h> #include <linux/msi.h>
#include <linux/of_address.h> #include <linux/of_address.h>
#include <linux/of_pci.h> #include <linux/of_pci.h>
...@@ -802,7 +801,3 @@ void dw_pcie_setup_rc(struct pcie_port *pp) ...@@ -802,7 +801,3 @@ void dw_pcie_setup_rc(struct pcie_port *pp)
val |= PORT_LOGIC_SPEED_CHANGE; val |= PORT_LOGIC_SPEED_CHANGE;
dw_pcie_wr_own_conf(pp, PCIE_LINK_WIDTH_SPEED_CONTROL, 4, val); dw_pcie_wr_own_conf(pp, PCIE_LINK_WIDTH_SPEED_CONTROL, 4, val);
} }
MODULE_AUTHOR("Jingoo Han <jg1.han@samsung.com>");
MODULE_DESCRIPTION("Designware PCIe host controller driver");
MODULE_LICENSE("GPL v2");
/* /*
* Qualcomm PCIe root complex driver
*
* Copyright (c) 2014-2015, The Linux Foundation. All rights reserved. * Copyright (c) 2014-2015, The Linux Foundation. All rights reserved.
* Copyright 2015 Linaro Limited. * Copyright 2015 Linaro Limited.
* *
* Author: Stanimir Varbanov <svarbanov@mm-sol.com>
*
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and * it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation. * only version 2 as published by the Free Software Foundation.
...@@ -19,7 +23,7 @@ ...@@ -19,7 +23,7 @@
#include <linux/io.h> #include <linux/io.h>
#include <linux/iopoll.h> #include <linux/iopoll.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/module.h> #include <linux/init.h>
#include <linux/of_device.h> #include <linux/of_device.h>
#include <linux/of_gpio.h> #include <linux/of_gpio.h>
#include <linux/pci.h> #include <linux/pci.h>
...@@ -570,37 +574,19 @@ static int qcom_pcie_probe(struct platform_device *pdev) ...@@ -570,37 +574,19 @@ static int qcom_pcie_probe(struct platform_device *pdev)
return 0; return 0;
} }
static int qcom_pcie_remove(struct platform_device *pdev)
{
struct qcom_pcie *pcie = platform_get_drvdata(pdev);
qcom_ep_reset_assert(pcie);
phy_power_off(pcie->phy);
phy_exit(pcie->phy);
pcie->ops->deinit(pcie);
return 0;
}
static const struct of_device_id qcom_pcie_match[] = { static const struct of_device_id qcom_pcie_match[] = {
{ .compatible = "qcom,pcie-ipq8064", .data = &ops_v0 }, { .compatible = "qcom,pcie-ipq8064", .data = &ops_v0 },
{ .compatible = "qcom,pcie-apq8064", .data = &ops_v0 }, { .compatible = "qcom,pcie-apq8064", .data = &ops_v0 },
{ .compatible = "qcom,pcie-apq8084", .data = &ops_v1 }, { .compatible = "qcom,pcie-apq8084", .data = &ops_v1 },
{ } { }
}; };
MODULE_DEVICE_TABLE(of, qcom_pcie_match);
static struct platform_driver qcom_pcie_driver = { static struct platform_driver qcom_pcie_driver = {
.probe = qcom_pcie_probe, .probe = qcom_pcie_probe,
.remove = qcom_pcie_remove,
.driver = { .driver = {
.name = "qcom-pcie", .name = "qcom-pcie",
.suppress_bind_attrs = true,
.of_match_table = qcom_pcie_match, .of_match_table = qcom_pcie_match,
}, },
}; };
builtin_platform_driver(qcom_pcie_driver);
module_platform_driver(qcom_pcie_driver);
MODULE_AUTHOR("Stanimir Varbanov <svarbanov@mm-sol.com>");
MODULE_DESCRIPTION("Qualcomm PCIe root complex driver");
MODULE_LICENSE("GPL v2");
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/module.h> #include <linux/init.h>
#include <linux/of.h> #include <linux/of.h>
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/phy/phy.h> #include <linux/phy/phy.h>
...@@ -355,7 +355,6 @@ static const struct of_device_id spear13xx_pcie_of_match[] = { ...@@ -355,7 +355,6 @@ static const struct of_device_id spear13xx_pcie_of_match[] = {
{ .compatible = "st,spear1340-pcie", }, { .compatible = "st,spear1340-pcie", },
{}, {},
}; };
MODULE_DEVICE_TABLE(of, spear13xx_pcie_of_match);
static struct platform_driver spear13xx_pcie_driver = { static struct platform_driver spear13xx_pcie_driver = {
.probe = spear13xx_pcie_probe, .probe = spear13xx_pcie_probe,
...@@ -365,14 +364,8 @@ static struct platform_driver spear13xx_pcie_driver = { ...@@ -365,14 +364,8 @@ static struct platform_driver spear13xx_pcie_driver = {
}, },
}; };
/* SPEAr13xx PCIe driver does not allow module unload */
static int __init spear13xx_pcie_init(void) static int __init spear13xx_pcie_init(void)
{ {
return platform_driver_register(&spear13xx_pcie_driver); return platform_driver_register(&spear13xx_pcie_driver);
} }
module_init(spear13xx_pcie_init); device_initcall(spear13xx_pcie_init);
MODULE_DESCRIPTION("ST Microelectronics SPEAr13xx PCIe host controller driver");
MODULE_AUTHOR("Pratyush Anand <pratyush.anand@gmail.com>");
MODULE_LICENSE("GPL v2");
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/irqdomain.h> #include <linux/irqdomain.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/module.h> #include <linux/init.h>
#include <linux/msi.h> #include <linux/msi.h>
#include <linux/of_address.h> #include <linux/of_address.h>
#include <linux/of_pci.h> #include <linux/of_pci.h>
...@@ -459,40 +459,6 @@ static const struct irq_domain_ops dev_msi_domain_ops = { ...@@ -459,40 +459,6 @@ static const struct irq_domain_ops dev_msi_domain_ops = {
.free = nwl_irq_domain_free, .free = nwl_irq_domain_free,
}; };
static void nwl_msi_free_irq_domain(struct nwl_pcie *pcie)
{
struct nwl_msi *msi = &pcie->msi;
if (msi->irq_msi0)
irq_set_chained_handler_and_data(msi->irq_msi0, NULL, NULL);
if (msi->irq_msi1)
irq_set_chained_handler_and_data(msi->irq_msi1, NULL, NULL);
if (msi->msi_domain)
irq_domain_remove(msi->msi_domain);
if (msi->dev_domain)
irq_domain_remove(msi->dev_domain);
kfree(msi->bitmap);
msi->bitmap = NULL;
}
static void nwl_pcie_free_irq_domain(struct nwl_pcie *pcie)
{
int i;
u32 irq;
for (i = 0; i < INTX_NUM; i++) {
irq = irq_find_mapping(pcie->legacy_irq_domain, i + 1);
if (irq > 0)
irq_dispose_mapping(irq);
}
if (pcie->legacy_irq_domain)
irq_domain_remove(pcie->legacy_irq_domain);
nwl_msi_free_irq_domain(pcie);
}
static int nwl_pcie_init_msi_irq_domain(struct nwl_pcie *pcie) static int nwl_pcie_init_msi_irq_domain(struct nwl_pcie *pcie)
{ {
#ifdef CONFIG_PCI_MSI #ifdef CONFIG_PCI_MSI
...@@ -867,25 +833,12 @@ static int nwl_pcie_probe(struct platform_device *pdev) ...@@ -867,25 +833,12 @@ static int nwl_pcie_probe(struct platform_device *pdev)
return err; return err;
} }
static int nwl_pcie_remove(struct platform_device *pdev)
{
struct nwl_pcie *pcie = platform_get_drvdata(pdev);
nwl_pcie_free_irq_domain(pcie);
platform_set_drvdata(pdev, NULL);
return 0;
}
static struct platform_driver nwl_pcie_driver = { static struct platform_driver nwl_pcie_driver = {
.driver = { .driver = {
.name = "nwl-pcie", .name = "nwl-pcie",
.suppress_bind_attrs = true,
.of_match_table = nwl_pcie_of_match, .of_match_table = nwl_pcie_of_match,
}, },
.probe = nwl_pcie_probe, .probe = nwl_pcie_probe,
.remove = nwl_pcie_remove,
}; };
module_platform_driver(nwl_pcie_driver); builtin_platform_driver(nwl_pcie_driver);
MODULE_AUTHOR("Xilinx, Inc");
MODULE_DESCRIPTION("NWL PCIe driver");
MODULE_LICENSE("GPL");
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/irqdomain.h> #include <linux/irqdomain.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/module.h> #include <linux/init.h>
#include <linux/msi.h> #include <linux/msi.h>
#include <linux/of_address.h> #include <linux/of_address.h>
#include <linux/of_pci.h> #include <linux/of_pci.h>
...@@ -505,35 +505,6 @@ static irqreturn_t xilinx_pcie_intr_handler(int irq, void *data) ...@@ -505,35 +505,6 @@ static irqreturn_t xilinx_pcie_intr_handler(int irq, void *data)
return IRQ_HANDLED; return IRQ_HANDLED;
} }
/**
* xilinx_pcie_free_irq_domain - Free IRQ domain
* @port: PCIe port information
*/
static void xilinx_pcie_free_irq_domain(struct xilinx_pcie_port *port)
{
int i;
u32 irq, num_irqs;
/* Free IRQ Domain */
if (IS_ENABLED(CONFIG_PCI_MSI)) {
free_pages(port->msi_pages, 0);
num_irqs = XILINX_NUM_MSI_IRQS;
} else {
/* INTx */
num_irqs = 4;
}
for (i = 0; i < num_irqs; i++) {
irq = irq_find_mapping(port->irq_domain, i);
if (irq > 0)
irq_dispose_mapping(irq);
}
irq_domain_remove(port->irq_domain);
}
/** /**
* xilinx_pcie_init_irq_domain - Initialize IRQ domain * xilinx_pcie_init_irq_domain - Initialize IRQ domain
* @port: PCIe port information * @port: PCIe port information
...@@ -724,21 +695,6 @@ static int xilinx_pcie_probe(struct platform_device *pdev) ...@@ -724,21 +695,6 @@ static int xilinx_pcie_probe(struct platform_device *pdev)
return err; return err;
} }
/**
* xilinx_pcie_remove - Remove function
* @pdev: Platform device pointer
*
* Return: '0' always
*/
static int xilinx_pcie_remove(struct platform_device *pdev)
{
struct xilinx_pcie_port *port = platform_get_drvdata(pdev);
xilinx_pcie_free_irq_domain(port);
return 0;
}
static struct of_device_id xilinx_pcie_of_match[] = { static struct of_device_id xilinx_pcie_of_match[] = {
{ .compatible = "xlnx,axi-pcie-host-1.00.a", }, { .compatible = "xlnx,axi-pcie-host-1.00.a", },
{} {}
...@@ -751,10 +707,5 @@ static struct platform_driver xilinx_pcie_driver = { ...@@ -751,10 +707,5 @@ static struct platform_driver xilinx_pcie_driver = {
.suppress_bind_attrs = true, .suppress_bind_attrs = true,
}, },
.probe = xilinx_pcie_probe, .probe = xilinx_pcie_probe,
.remove = xilinx_pcie_remove,
}; };
module_platform_driver(xilinx_pcie_driver); builtin_platform_driver(xilinx_pcie_driver);
MODULE_AUTHOR("Xilinx Inc");
MODULE_DESCRIPTION("Xilinx AXI PCIe driver");
MODULE_LICENSE("GPL v2");
...@@ -101,10 +101,8 @@ int cpci_unconfigure_slot(struct slot *slot); ...@@ -101,10 +101,8 @@ int cpci_unconfigure_slot(struct slot *slot);
#ifdef CONFIG_HOTPLUG_PCI_CPCI #ifdef CONFIG_HOTPLUG_PCI_CPCI
int cpci_hotplug_init(int debug); int cpci_hotplug_init(int debug);
void cpci_hotplug_exit(void);
#else #else
static inline int cpci_hotplug_init(int debug) { return 0; } static inline int cpci_hotplug_init(int debug) { return 0; }
static inline void cpci_hotplug_exit(void) { }
#endif #endif
#endif /* _CPCI_HOTPLUG_H */ #endif /* _CPCI_HOTPLUG_H */
...@@ -719,13 +719,3 @@ cpci_hotplug_init(int debug) ...@@ -719,13 +719,3 @@ cpci_hotplug_init(int debug)
cpci_debug = debug; cpci_debug = debug;
return 0; return 0;
} }
void __exit
cpci_hotplug_exit(void)
{
/*
* Clean everything up.
*/
cpci_hp_stop();
cpci_hp_unregister_controller(controller);
}
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
* *
*/ */
#include <linux/module.h> #include <linux/module.h> /* try_module_get & module_put */
#include <linux/moduleparam.h> #include <linux/moduleparam.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/types.h> #include <linux/types.h>
...@@ -537,17 +537,11 @@ static int __init pci_hotplug_init(void) ...@@ -537,17 +537,11 @@ static int __init pci_hotplug_init(void)
info(DRIVER_DESC " version: " DRIVER_VERSION "\n"); info(DRIVER_DESC " version: " DRIVER_VERSION "\n");
return result; return result;
} }
device_initcall(pci_hotplug_init);
static void __exit pci_hotplug_exit(void) /*
{ * not really modular, but the easiest way to keep compat with existing
cpci_hotplug_exit(); * bootargs behaviour is to continue using module_param here.
} */
module_init(pci_hotplug_init);
module_exit(pci_hotplug_exit);
MODULE_AUTHOR(DRIVER_AUTHOR);
MODULE_DESCRIPTION(DRIVER_DESC);
MODULE_LICENSE("GPL");
module_param(debug, bool, 0644); module_param(debug, bool, 0644);
MODULE_PARM_DESC(debug, "Debugging mode enabled or not"); MODULE_PARM_DESC(debug, "Debugging mode enabled or not");
...@@ -27,7 +27,6 @@ ...@@ -27,7 +27,6 @@
* *
*/ */
#include <linux/module.h>
#include <linux/moduleparam.h> #include <linux/moduleparam.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/slab.h> #include <linux/slab.h>
...@@ -47,10 +46,10 @@ static bool pciehp_force; ...@@ -47,10 +46,10 @@ static bool pciehp_force;
#define DRIVER_AUTHOR "Dan Zink <dan.zink@compaq.com>, Greg Kroah-Hartman <greg@kroah.com>, Dely Sy <dely.l.sy@intel.com>" #define DRIVER_AUTHOR "Dan Zink <dan.zink@compaq.com>, Greg Kroah-Hartman <greg@kroah.com>, Dely Sy <dely.l.sy@intel.com>"
#define DRIVER_DESC "PCI Express Hot Plug Controller Driver" #define DRIVER_DESC "PCI Express Hot Plug Controller Driver"
MODULE_AUTHOR(DRIVER_AUTHOR); /*
MODULE_DESCRIPTION(DRIVER_DESC); * not really modular, but the easiest way to keep compat with existing
MODULE_LICENSE("GPL"); * bootargs behaviour is to continue using module_param here.
*/
module_param(pciehp_debug, bool, 0644); module_param(pciehp_debug, bool, 0644);
module_param(pciehp_poll_mode, bool, 0644); module_param(pciehp_poll_mode, bool, 0644);
module_param(pciehp_poll_time, int, 0644); module_param(pciehp_poll_time, int, 0644);
...@@ -337,13 +336,4 @@ static int __init pcied_init(void) ...@@ -337,13 +336,4 @@ static int __init pcied_init(void)
return retval; return retval;
} }
device_initcall(pcied_init);
static void __exit pcied_cleanup(void)
{
dbg("unload_pciehpd()\n");
pcie_port_service_unregister(&hpdriver_portdrv);
info(DRIVER_DESC " version: " DRIVER_VERSION " unloaded\n");
}
module_init(pcied_init);
module_exit(pcied_cleanup);
...@@ -15,7 +15,6 @@ ...@@ -15,7 +15,6 @@
* *
*/ */
#include <linux/module.h>
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/pci-acpi.h> #include <linux/pci-acpi.h>
#include <linux/sched.h> #include <linux/sched.h>
...@@ -37,9 +36,6 @@ ...@@ -37,9 +36,6 @@
#define DRIVER_VERSION "v1.0" #define DRIVER_VERSION "v1.0"
#define DRIVER_AUTHOR "tom.l.nguyen@intel.com" #define DRIVER_AUTHOR "tom.l.nguyen@intel.com"
#define DRIVER_DESC "Root Port Advanced Error Reporting Driver" #define DRIVER_DESC "Root Port Advanced Error Reporting Driver"
MODULE_AUTHOR(DRIVER_AUTHOR);
MODULE_DESCRIPTION(DRIVER_DESC);
MODULE_LICENSE("GPL");
static int aer_probe(struct pcie_device *dev); static int aer_probe(struct pcie_device *dev);
static void aer_remove(struct pcie_device *dev); static void aer_remove(struct pcie_device *dev);
...@@ -417,16 +413,4 @@ static int __init aer_service_init(void) ...@@ -417,16 +413,4 @@ static int __init aer_service_init(void)
return -ENXIO; return -ENXIO;
return pcie_port_service_register(&aerdriver); return pcie_port_service_register(&aerdriver);
} }
device_initcall(aer_service_init);
/**
* aer_service_exit - unregister AER root service driver
*
* Invoked when AER root service driver is unloaded.
*/
static void __exit aer_service_exit(void)
{
pcie_port_service_unregister(&aerdriver);
}
module_init(aer_service_init);
module_exit(aer_service_exit);
/* /*
* PCI Express Downstream Port Containment services driver * PCI Express Downstream Port Containment services driver
* Author: Keith Busch <keith.busch@intel.com>
*
* Copyright (C) 2016 Intel Corp. * Copyright (C) 2016 Intel Corp.
* *
* This file is subject to the terms and conditions of the GNU General Public * This file is subject to the terms and conditions of the GNU General Public
...@@ -9,7 +11,7 @@ ...@@ -9,7 +11,7 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/module.h> #include <linux/init.h>
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/pcieport_if.h> #include <linux/pcieport_if.h>
...@@ -143,16 +145,4 @@ static int __init dpc_service_init(void) ...@@ -143,16 +145,4 @@ static int __init dpc_service_init(void)
{ {
return pcie_port_service_register(&dpcdriver); return pcie_port_service_register(&dpcdriver);
} }
device_initcall(dpc_service_init);
static void __exit dpc_service_exit(void)
{
pcie_port_service_unregister(&dpcdriver);
}
MODULE_DESCRIPTION("PCI Express Downstream Port Containment driver");
MODULE_AUTHOR("Keith Busch <keith.busch@intel.com>");
MODULE_LICENSE("GPL");
MODULE_VERSION("0.1");
module_init(dpc_service_init);
module_exit(dpc_service_exit);
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
* for more details. * for more details.
*/ */
#include <linux/module.h>
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/errno.h> #include <linux/errno.h>
...@@ -449,17 +448,6 @@ static int pcie_pme_resume(struct pcie_device *srv) ...@@ -449,17 +448,6 @@ static int pcie_pme_resume(struct pcie_device *srv)
return 0; return 0;
} }
/**
* pcie_pme_remove - Prepare PCIe PME service device for removal.
* @srv - PCIe service device to remove.
*/
static void pcie_pme_remove(struct pcie_device *srv)
{
pcie_pme_suspend(srv);
free_irq(srv->irq, srv);
kfree(get_service_data(srv));
}
static struct pcie_port_service_driver pcie_pme_driver = { static struct pcie_port_service_driver pcie_pme_driver = {
.name = "pcie_pme", .name = "pcie_pme",
.port_type = PCI_EXP_TYPE_ROOT_PORT, .port_type = PCI_EXP_TYPE_ROOT_PORT,
...@@ -468,7 +456,6 @@ static struct pcie_port_service_driver pcie_pme_driver = { ...@@ -468,7 +456,6 @@ static struct pcie_port_service_driver pcie_pme_driver = {
.probe = pcie_pme_probe, .probe = pcie_pme_probe,
.suspend = pcie_pme_suspend, .suspend = pcie_pme_suspend,
.resume = pcie_pme_resume, .resume = pcie_pme_resume,
.remove = pcie_pme_remove,
}; };
/** /**
...@@ -478,5 +465,4 @@ static int __init pcie_pme_service_init(void) ...@@ -478,5 +465,4 @@ static int __init pcie_pme_service_init(void)
{ {
return pcie_port_service_register(&pcie_pme_driver); return pcie_port_service_register(&pcie_pme_driver);
} }
device_initcall(pcie_pme_service_init);
module_init(pcie_pme_service_init);
/* /*
* File: portdrv_pci.c * File: portdrv_pci.c
* Purpose: PCI Express Port Bus Driver * Purpose: PCI Express Port Bus Driver
* Author: Tom Nguyen <tom.l.nguyen@intel.com>
* Version: v1.0
* *
* Copyright (C) 2004 Intel * Copyright (C) 2004 Intel
* Copyright (C) Tom Long Nguyen (tom.l.nguyen@intel.com) * Copyright (C) Tom Long Nguyen (tom.l.nguyen@intel.com)
*/ */
#include <linux/module.h>
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/errno.h> #include <linux/errno.h>
...@@ -21,16 +22,6 @@ ...@@ -21,16 +22,6 @@
#include "portdrv.h" #include "portdrv.h"
#include "aer/aerdrv.h" #include "aer/aerdrv.h"
/*
* Version Information
*/
#define DRIVER_VERSION "v1.0"
#define DRIVER_AUTHOR "tom.l.nguyen@intel.com"
#define DRIVER_DESC "PCIe Port Bus Driver"
MODULE_AUTHOR(DRIVER_AUTHOR);
MODULE_DESCRIPTION(DRIVER_DESC);
MODULE_LICENSE("GPL");
/* If this switch is set, PCIe port native services should not be enabled. */ /* If this switch is set, PCIe port native services should not be enabled. */
bool pcie_ports_disabled; bool pcie_ports_disabled;
...@@ -341,7 +332,6 @@ static const struct pci_device_id port_pci_ids[] = { { ...@@ -341,7 +332,6 @@ static const struct pci_device_id port_pci_ids[] = { {
PCI_DEVICE_CLASS(((PCI_CLASS_BRIDGE_PCI << 8) | 0x00), ~0), PCI_DEVICE_CLASS(((PCI_CLASS_BRIDGE_PCI << 8) | 0x00), ~0),
}, { /* end: all zeroes */ } }, { /* end: all zeroes */ }
}; };
MODULE_DEVICE_TABLE(pci, port_pci_ids);
static const struct pci_error_handlers pcie_portdrv_err_handler = { static const struct pci_error_handlers pcie_portdrv_err_handler = {
.error_detected = pcie_portdrv_error_detected, .error_detected = pcie_portdrv_error_detected,
...@@ -406,5 +396,4 @@ static int __init pcie_portdrv_init(void) ...@@ -406,5 +396,4 @@ static int __init pcie_portdrv_init(void)
out: out:
return retval; return retval;
} }
device_initcall(pcie_portdrv_init);
module_init(pcie_portdrv_init);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment