Merge tag 'perf-urgent-for-mingo-20160809' of git://git.kernel.org/pub/scm/linux...
[deliverable/linux.git] / drivers / pci / host / pci-host-generic.c
index e8aa78faa16df31becd8f717e0cdcee94c42e391..c05ea9d72f693f38203e98ae92c4c95df4dab661 100644 (file)
  */
 
 #include <linux/kernel.h>
-#include <linux/module.h>
+#include <linux/init.h>
 #include <linux/of_address.h>
 #include <linux/of_pci.h>
+#include <linux/pci-ecam.h>
 #include <linux/platform_device.h>
 
-#include "pci-host-common.h"
-
-static void __iomem *gen_pci_map_cfg_bus_cam(struct pci_bus *bus,
-                                            unsigned int devfn,
-                                            int where)
-{
-       struct gen_pci *pci = bus->sysdata;
-       resource_size_t idx = bus->number - pci->cfg.bus_range->start;
-
-       return pci->cfg.win[idx] + ((devfn << 8) | where);
-}
-
-static struct gen_pci_cfg_bus_ops gen_pci_cfg_cam_bus_ops = {
+static struct pci_ecam_ops gen_pci_cfg_cam_bus_ops = {
        .bus_shift      = 16,
-       .ops            = {
-               .map_bus        = gen_pci_map_cfg_bus_cam,
-               .read           = pci_generic_config_read,
-               .write          = pci_generic_config_write,
-       }
-};
-
-static void __iomem *gen_pci_map_cfg_bus_ecam(struct pci_bus *bus,
-                                             unsigned int devfn,
-                                             int where)
-{
-       struct gen_pci *pci = bus->sysdata;
-       resource_size_t idx = bus->number - pci->cfg.bus_range->start;
-
-       return pci->cfg.win[idx] + ((devfn << 12) | where);
-}
-
-static struct gen_pci_cfg_bus_ops gen_pci_cfg_ecam_bus_ops = {
-       .bus_shift      = 20,
-       .ops            = {
-               .map_bus        = gen_pci_map_cfg_bus_ecam,
+       .pci_ops        = {
+               .map_bus        = pci_ecam_map_bus,
                .read           = pci_generic_config_read,
                .write          = pci_generic_config_write,
        }
@@ -70,25 +40,20 @@ static const struct of_device_id gen_pci_of_match[] = {
          .data = &gen_pci_cfg_cam_bus_ops },
 
        { .compatible = "pci-host-ecam-generic",
-         .data = &gen_pci_cfg_ecam_bus_ops },
+         .data = &pci_generic_ecam_ops },
 
        { },
 };
-MODULE_DEVICE_TABLE(of, gen_pci_of_match);
 
 static int gen_pci_probe(struct platform_device *pdev)
 {
-       struct device *dev = &pdev->dev;
        const struct of_device_id *of_id;
-       struct gen_pci *pci = devm_kzalloc(dev, sizeof(*pci), GFP_KERNEL);
+       struct pci_ecam_ops *ops;
 
-       if (!pci)
-               return -ENOMEM;
+       of_id = of_match_node(gen_pci_of_match, pdev->dev.of_node);
+       ops = (struct pci_ecam_ops *)of_id->data;
 
-       of_id = of_match_node(gen_pci_of_match, dev->of_node);
-       pci->cfg.ops = (struct gen_pci_cfg_bus_ops *)of_id->data;
-
-       return pci_host_common_probe(pdev, pci);
+       return pci_host_common_probe(pdev, ops);
 }
 
 static struct platform_driver gen_pci_driver = {
@@ -98,8 +63,4 @@ static struct platform_driver gen_pci_driver = {
        },
        .probe = gen_pci_probe,
 };
-module_platform_driver(gen_pci_driver);
-
-MODULE_DESCRIPTION("Generic PCI host driver");
-MODULE_AUTHOR("Will Deacon <will.deacon@arm.com>");
-MODULE_LICENSE("GPL v2");
+builtin_platform_driver(gen_pci_driver);
This page took 0.042859 seconds and 5 git commands to generate.