History

PCI: Move DT resource setup into devm_pci_alloc_host_bridge()

Now that pci_parse_request_of_pci_ranges() callers just setup pci_host_bridge.windows and dma_ranges directly and don't need the bus range returned, we can just initialize them when allocating the pci_host_bridge struct. With this, pci_parse_request_of_pci_ranges() becomes a static function.

Rob Herring committed 6 years ago

Commit 669cbc71 parent 4a9575624 files · +36 −155Browse files

Unified · Split

24 files
  1. drivers/pci/controller/cadence/pcie-cadence-host.c +0 −6
  2. drivers/pci/controller/dwc/pcie-designware-host.c +0 −5
  3. drivers/pci/controller/mobiveil/pcie-mobiveil-host.c +0 −8
  4. drivers/pci/controller/pci-aardvark.c +0 −7
  5. drivers/pci/controller/pci-ftpci100.c +0 −5
  6. drivers/pci/controller/pci-host-common.c +6 −7
  7. drivers/pci/controller/pci-loongson.c +0 −7
  8. drivers/pci/controller/pci-rcar-gen2.c +0 −6
  9. drivers/pci/controller/pci-tegra.c +0 −6
  10. drivers/pci/controller/pci-v3-semi.c +0 −5
  11. drivers/pci/controller/pci-versatile.c +1 −6
  12. drivers/pci/controller/pci-xgene.c +0 −5
  13. drivers/pci/controller/pcie-altera.c +0 −7
  14. drivers/pci/controller/pcie-brcmstb.c +0 −5
  15. drivers/pci/controller/pcie-iproc-platform.c +0 −7
  16. drivers/pci/controller/pcie-mediatek.c +0 −7
  17. drivers/pci/controller/pcie-rcar-host.c +0 −5
  18. drivers/pci/controller/pcie-rockchip-host.c +0 −5
  19. drivers/pci/controller/pcie-xilinx-nwl.c +0 −7
  20. drivers/pci/controller/pcie-xilinx.c +0 −7
  21. drivers/pci/of.c +17 −20
  22. drivers/pci/pci.h +8 −0
  23. drivers/pci/probe.c +4 −0
  24. include/linux/pci.h +0 −12
drivers/pci/controller/cadence/pcie-cadence-host.c+0−6
@@ -171,14 +171,8 @@ static int cdns_pcie_host_init_address_translation(struct cdns_pcie_rc *rc) · 170 unmodified lines
171static int cdns_pcie_host_init(struct device *dev,171static int cdns_pcie_host_init(struct device *dev,
172 struct cdns_pcie_rc *rc)172 struct cdns_pcie_rc *rc)
173{173{
174 struct pci_host_bridge *bridge = pci_host_bridge_from_priv(rc);
175 int err;174 int err;
176 175
177 /* Parse our PCI ranges and request their resources */
178 err = pci_parse_request_of_pci_ranges(dev, &bridge->windows, NULL, NULL);
179 if (err)
180 return err;
181
182 err = cdns_pcie_host_init_root_port(rc);176 err = cdns_pcie_host_init_root_port(rc);
183 if (err)177 if (err)
184 return err;178 return err;
drivers/pci/controller/dwc/pcie-designware-host.c+0−5
@@ -346,11 +346,6 @@ int dw_pcie_host_init(struct pcie_port *pp) · 345 unmodified lines
346 if (!bridge)346 if (!bridge)
347 return -ENOMEM;347 return -ENOMEM;
348 348
349 ret = pci_parse_request_of_pci_ranges(dev, &bridge->windows,
350 &bridge->dma_ranges, NULL);
351 if (ret)
352 return ret;
353
354 /* Get the I/O and memory ranges from DT */349 /* Get the I/O and memory ranges from DT */
355 resource_list_for_each_entry(win, &bridge->windows) {350 resource_list_for_each_entry(win, &bridge->windows) {
356 switch (resource_type(win->res)) {351 switch (resource_type(win->res)) {
drivers/pci/controller/mobiveil/pcie-mobiveil-host.c+0−8
@@ -577,14 +577,6 @@ int mobiveil_pcie_host_probe(struct mobiveil_pcie *pcie) · 576 unmodified lines
577 if (!mobiveil_pcie_is_bridge(pcie))577 if (!mobiveil_pcie_is_bridge(pcie))
578 return -ENODEV;578 return -ENODEV;
579 579
580 /* parse the host bridge base addresses from the device tree file */
581 ret = pci_parse_request_of_pci_ranges(dev, &bridge->windows,
582 &bridge->dma_ranges, NULL);
583 if (ret) {
584 dev_err(dev, "Getting bridge resources failed\n");
585 return ret;
586 }
587
588 /*580 /*
589 * configure all inbound and outbound windows and prepare the RC for581 * configure all inbound and outbound windows and prepare the RC for
590 * config access582 * config access
drivers/pci/controller/pci-aardvark.c+0−7
@@ -1130,13 +1130,6 @@ static int advk_pcie_probe(struct platform_device *pdev) · 1129 unmodified lines
1130 return ret;1130 return ret;
1131 }1131 }
1132 1132
1133 ret = pci_parse_request_of_pci_ranges(dev, &bridge->windows,
1134 &bridge->dma_ranges, NULL);
1135 if (ret) {
1136 dev_err(dev, "Failed to parse resources\n");
1137 return ret;
1138 }
1139
1140 pcie->reset_gpio = devm_gpiod_get_from_of_node(dev, dev->of_node,1133 pcie->reset_gpio = devm_gpiod_get_from_of_node(dev, dev->of_node,
1141 "reset-gpios", 0,1134 "reset-gpios", 0,
1142 GPIOD_OUT_LOW,1135 GPIOD_OUT_LOW,
drivers/pci/controller/pci-ftpci100.c+0−5
@@ -465,11 +465,6 @@ static int faraday_pci_probe(struct platform_device *pdev) · 464 unmodified lines
465 if (IS_ERR(p->base))465 if (IS_ERR(p->base))
466 return PTR_ERR(p->base);466 return PTR_ERR(p->base);
467 467
468 ret = pci_parse_request_of_pci_ranges(dev, &host->windows,
469 &host->dma_ranges, NULL);
470 if (ret)
471 return ret;
472
473 win = resource_list_first_type(&host->windows, IORESOURCE_IO);468 win = resource_list_first_type(&host->windows, IORESOURCE_IO);
474 if (win) {469 if (win) {
475 io = win->res;470 io = win->res;
drivers/pci/controller/pci-host-common.c+6−7
@@ -25,21 +25,20 @@ static struct pci_config_window *gen_pci_init(struct device *dev, · 24 unmodified lines
25{25{
26 int err;26 int err;
27 struct resource cfgres;27 struct resource cfgres;
28 struct resource *bus_range = NULL;28 struct resource_entry *bus;
29 struct pci_config_window *cfg;29 struct pci_config_window *cfg;
30 30
31 /* Parse our PCI ranges and request their resources */
32 err = pci_parse_request_of_pci_ranges(dev, &bridge->windows, NULL, &bus_range);
33 if (err)
34 return ERR_PTR(err);
35
36 err = of_address_to_resource(dev->of_node, 0, &cfgres);31 err = of_address_to_resource(dev->of_node, 0, &cfgres);
37 if (err) {32 if (err) {
38 dev_err(dev, "missing \"reg\" property\n");33 dev_err(dev, "missing \"reg\" property\n");
39 return ERR_PTR(err);34 return ERR_PTR(err);
40 }35 }
41 36
42 cfg = pci_ecam_create(dev, &cfgres, bus_range, ops);37 bus = resource_list_first_type(&bridge->windows, IORESOURCE_BUS);
38 if (!bus)
39 return ERR_PTR(-ENODEV);
40
41 cfg = pci_ecam_create(dev, &cfgres, bus->res, ops);
43 if (IS_ERR(cfg))42 if (IS_ERR(cfg))
44 return cfg;43 return cfg;
45 44
drivers/pci/controller/pci-loongson.c+0−7
@@ -218,13 +218,6 @@ static int loongson_pci_probe(struct platform_device *pdev) · 217 unmodified lines
218 }218 }
219 }219 }
220 220
221 err = pci_parse_request_of_pci_ranges(dev, &bridge->windows,
222 &bridge->dma_ranges, NULL);
223 if (err) {
224 dev_err(dev, "failed to get bridge resources\n");
225 return err;
226 }
227
228 bridge->sysdata = priv;221 bridge->sysdata = priv;
229 bridge->ops = &loongson_pci_ops;222 bridge->ops = &loongson_pci_ops;
230 bridge->map_irq = loongson_map_irq;223 bridge->map_irq = loongson_map_irq;
drivers/pci/controller/pci-rcar-gen2.c+0−6
@@ -282,7 +282,6 @@ static int rcar_pci_probe(struct platform_device *pdev) · 281 unmodified lines
282 struct rcar_pci_priv *priv;282 struct rcar_pci_priv *priv;
283 struct pci_host_bridge *bridge;283 struct pci_host_bridge *bridge;
284 void __iomem *reg;284 void __iomem *reg;
285 int ret;
286 285
287 bridge = devm_pci_alloc_host_bridge(dev, sizeof(*priv));286 bridge = devm_pci_alloc_host_bridge(dev, sizeof(*priv));
288 if (!bridge)287 if (!bridge)
@@ -315,11 +314,6 @@ static int rcar_pci_probe(struct platform_device *pdev) · 26 unmodified lines
315 return priv->irq;314 return priv->irq;
316 }315 }
317 316
318 ret = pci_parse_request_of_pci_ranges(dev, &bridge->windows,
319 &bridge->dma_ranges, NULL);
320 if (ret)
321 return ret;
322
323 bridge->ops = &rcar_pci_ops;317 bridge->ops = &rcar_pci_ops;
324 318
325 pci_add_flags(PCI_REASSIGN_ALL_BUS);319 pci_add_flags(PCI_REASSIGN_ALL_BUS);
drivers/pci/controller/pci-tegra.c+0−6
@@ -2682,12 +2682,6 @@ static int tegra_pcie_probe(struct platform_device *pdev) · 2681 unmodified lines
2682 INIT_LIST_HEAD(&pcie->ports);2682 INIT_LIST_HEAD(&pcie->ports);
2683 pcie->dev = dev;2683 pcie->dev = dev;
2684 2684
2685 err = pci_parse_request_of_pci_ranges(dev, &host->windows, NULL, NULL);
2686 if (err) {
2687 dev_err(dev, "Getting bridge resources failed\n");
2688 return err;
2689 }
2690
2691 err = tegra_pcie_parse_dt(pcie);2685 err = tegra_pcie_parse_dt(pcie);
2692 if (err < 0)2686 if (err < 0)
2693 return err;2687 return err;
drivers/pci/controller/pci-v3-semi.c+0−5
@@ -764,11 +764,6 @@ static int v3_pci_probe(struct platform_device *pdev) · 763 unmodified lines
764 if (IS_ERR(v3->config_base))764 if (IS_ERR(v3->config_base))
765 return PTR_ERR(v3->config_base);765 return PTR_ERR(v3->config_base);
766 766
767 ret = pci_parse_request_of_pci_ranges(dev, &host->windows,
768 &host->dma_ranges, NULL);
769 if (ret)
770 return ret;
771
772 /* Get and request error IRQ resource */767 /* Get and request error IRQ resource */
773 irq = platform_get_irq(pdev, 0);768 irq = platform_get_irq(pdev, 0);
774 if (irq < 0) {769 if (irq < 0) {
drivers/pci/controller/pci-versatile.c+1−6
@@ -67,7 +67,7 @@ static int versatile_pci_probe(struct platform_device *pdev) · 66 unmodified lines
67 struct device *dev = &pdev->dev;67 struct device *dev = &pdev->dev;
68 struct resource *res;68 struct resource *res;
69 struct resource_entry *entry;69 struct resource_entry *entry;
70 int ret, i, myslot = -1, mem = 1;70 int i, myslot = -1, mem = 1;
71 u32 val;71 u32 val;
72 void __iomem *local_pci_cfg_base;72 void __iomem *local_pci_cfg_base;
73 struct pci_host_bridge *bridge;73 struct pci_host_bridge *bridge;
@@ -89,11 +89,6 @@ static int versatile_pci_probe(struct platform_device *pdev) · 15 unmodified lines
89 if (IS_ERR(versatile_cfg_base[1]))89 if (IS_ERR(versatile_cfg_base[1]))
90 return PTR_ERR(versatile_cfg_base[1]);90 return PTR_ERR(versatile_cfg_base[1]);
91 91
92 ret = pci_parse_request_of_pci_ranges(dev, &bridge->windows,
93 NULL, NULL);
94 if (ret)
95 return ret;
96
97 resource_list_for_each_entry(entry, &bridge->windows) {92 resource_list_for_each_entry(entry, &bridge->windows) {
98 if (resource_type(entry->res) == IORESOURCE_MEM) {93 if (resource_type(entry->res) == IORESOURCE_MEM) {
99 writel(entry->res->start >> 28, PCI_IMAP(mem));94 writel(entry->res->start >> 28, PCI_IMAP(mem));
drivers/pci/controller/pci-xgene.c+0−5
@@ -614,11 +614,6 @@ static int xgene_pcie_probe(struct platform_device *pdev) · 613 unmodified lines
614 if (ret)614 if (ret)
615 return ret;615 return ret;
616 616
617 ret = pci_parse_request_of_pci_ranges(dev, &bridge->windows,
618 &bridge->dma_ranges, NULL);
619 if (ret)
620 return ret;
621
622 ret = xgene_pcie_setup(port);617 ret = xgene_pcie_setup(port);
623 if (ret)618 if (ret)
624 return ret;619 return ret;
drivers/pci/controller/pcie-altera.c+0−7
@@ -794,13 +794,6 @@ static int altera_pcie_probe(struct platform_device *pdev) · 793 unmodified lines
794 return ret;794 return ret;
795 }795 }
796 796
797 ret = pci_parse_request_of_pci_ranges(dev, &bridge->windows,
798 &bridge->dma_ranges, NULL);
799 if (ret) {
800 dev_err(dev, "Failed add resources\n");
801 return ret;
802 }
803
804 ret = altera_pcie_init_irq_domain(pcie);797 ret = altera_pcie_init_irq_domain(pcie);
805 if (ret) {798 if (ret) {
806 dev_err(dev, "Failed creating IRQ Domain\n");799 dev_err(dev, "Failed creating IRQ Domain\n");
drivers/pci/controller/pcie-brcmstb.c+0−5
@@ -970,11 +970,6 @@ static int brcm_pcie_probe(struct platform_device *pdev) · 969 unmodified lines
970 970
971 pcie->ssc = of_property_read_bool(np, "brcm,enable-ssc");971 pcie->ssc = of_property_read_bool(np, "brcm,enable-ssc");
972 972
973 ret = pci_parse_request_of_pci_ranges(pcie->dev, &bridge->windows,
974 &bridge->dma_ranges, NULL);
975 if (ret)
976 return ret;
977
978 ret = clk_prepare_enable(pcie->clk);973 ret = clk_prepare_enable(pcie->clk);
979 if (ret) {974 if (ret) {
980 dev_err(&pdev->dev, "could not enable clock\n");975 dev_err(&pdev->dev, "could not enable clock\n");
drivers/pci/controller/pcie-iproc-platform.c+0−7
@@ -95,13 +95,6 @@ static int iproc_pcie_pltfm_probe(struct platform_device *pdev) · 94 unmodified lines
95 if (IS_ERR(pcie->phy))95 if (IS_ERR(pcie->phy))
96 return PTR_ERR(pcie->phy);96 return PTR_ERR(pcie->phy);
97 97
98 ret = pci_parse_request_of_pci_ranges(dev, &bridge->windows,
99 &bridge->dma_ranges, NULL);
100 if (ret) {
101 dev_err(dev, "unable to get PCI host bridge resources\n");
102 return ret;
103 }
104
105 /* PAXC doesn't support legacy IRQs, skip mapping */98 /* PAXC doesn't support legacy IRQs, skip mapping */
106 switch (pcie->type) {99 switch (pcie->type) {
107 case IPROC_PCIE_PAXC:100 case IPROC_PCIE_PAXC:
drivers/pci/controller/pcie-mediatek.c+0−7
@@ -1027,15 +1027,8 @@ static int mtk_pcie_setup(struct mtk_pcie *pcie) · 1026 unmodified lines
1027 struct device *dev = pcie->dev;1027 struct device *dev = pcie->dev;
1028 struct device_node *node = dev->of_node, *child;1028 struct device_node *node = dev->of_node, *child;
1029 struct mtk_pcie_port *port, *tmp;1029 struct mtk_pcie_port *port, *tmp;
1030 struct pci_host_bridge *host = pci_host_bridge_from_priv(pcie);
1031 struct list_head *windows = &host->windows;
1032 int err;1030 int err;
1033 1031
1034 err = pci_parse_request_of_pci_ranges(dev, windows,
1035 &host->dma_ranges, NULL);
1036 if (err)
1037 return err;
1038
1039 for_each_available_child_of_node(node, child) {1032 for_each_available_child_of_node(node, child) {
1040 int slot;1033 int slot;
1041 1034
drivers/pci/controller/pcie-rcar-host.c+0−5
@@ -913,11 +913,6 @@ static int rcar_pcie_probe(struct platform_device *pdev) · 912 unmodified lines
913 pcie->dev = dev;913 pcie->dev = dev;
914 platform_set_drvdata(pdev, host);914 platform_set_drvdata(pdev, host);
915 915
916 err = pci_parse_request_of_pci_ranges(dev, &bridge->windows,
917 &bridge->dma_ranges, NULL);
918 if (err)
919 return err;
920
921 pm_runtime_enable(pcie->dev);916 pm_runtime_enable(pcie->dev);
922 err = pm_runtime_get_sync(pcie->dev);917 err = pm_runtime_get_sync(pcie->dev);
923 if (err < 0) {918 if (err < 0) {
drivers/pci/controller/pcie-rockchip-host.c+0−5
@@ -989,11 +989,6 @@ static int rockchip_pcie_probe(struct platform_device *pdev) · 988 unmodified lines
989 if (err < 0)989 if (err < 0)
990 goto err_deinit_port;990 goto err_deinit_port;
991 991
992 err = pci_parse_request_of_pci_ranges(dev, &bridge->windows,
993 &bridge->dma_ranges, NULL);
994 if (err)
995 goto err_remove_irq_domain;
996
997 err = rockchip_pcie_cfg_atu(rockchip);992 err = rockchip_pcie_cfg_atu(rockchip);
998 if (err)993 if (err)
999 goto err_remove_irq_domain;994 goto err_remove_irq_domain;
drivers/pci/controller/pcie-xilinx-nwl.c+0−7
@@ -838,13 +838,6 @@ static int nwl_pcie_probe(struct platform_device *pdev) · 837 unmodified lines
838 return err;838 return err;
839 }839 }
840 840
841 err = pci_parse_request_of_pci_ranges(dev, &bridge->windows,
842 &bridge->dma_ranges, NULL);
843 if (err) {
844 dev_err(dev, "Getting bridge resources failed\n");
845 return err;
846 }
847
848 err = nwl_pcie_init_irq_domain(pcie);841 err = nwl_pcie_init_irq_domain(pcie);
849 if (err) {842 if (err) {
850 dev_err(dev, "Failed creating IRQ Domain\n");843 dev_err(dev, "Failed creating IRQ Domain\n");
drivers/pci/controller/pcie-xilinx.c+0−7
@@ -641,13 +641,6 @@ static int xilinx_pcie_probe(struct platform_device *pdev) · 640 unmodified lines
641 return err;641 return err;
642 }642 }
643 643
644 err = pci_parse_request_of_pci_ranges(dev, &bridge->windows,
645 &bridge->dma_ranges, NULL);
646 if (err) {
647 dev_err(dev, "Getting bridge resources failed\n");
648 return err;
649 }
650
651 bridge->sysdata = port;644 bridge->sysdata = port;
652 bridge->ops = &xilinx_pcie_ops;645 bridge->ops = &xilinx_pcie_ops;
653 bridge->map_irq = of_irq_parse_and_map_pci;646 bridge->map_irq = of_irq_parse_and_map_pci;
drivers/pci/of.c+17−20
@@ -521,28 +521,26 @@ int of_irq_parse_and_map_pci(const struct pci_dev *dev, u8 slot, u8 pin) · 520 unmodified lines
521EXPORT_SYMBOL_GPL(of_irq_parse_and_map_pci);521EXPORT_SYMBOL_GPL(of_irq_parse_and_map_pci);
522#endif /* CONFIG_OF_IRQ */522#endif /* CONFIG_OF_IRQ */
523 523
524int pci_parse_request_of_pci_ranges(struct device *dev,524static int pci_parse_request_of_pci_ranges(struct device *dev,
525 struct list_head *resources,525 struct pci_host_bridge *bridge)
526 struct list_head *ib_resources,
527 struct resource **bus_range)
528{526{
529 int err, res_valid = 0;527 int err, res_valid = 0;
530 resource_size_t iobase;528 resource_size_t iobase;
531 struct resource_entry *win, *tmp;529 struct resource_entry *win, *tmp;
532 530
533 INIT_LIST_HEAD(resources);531 INIT_LIST_HEAD(&bridge->windows);
534 if (ib_resources)532 INIT_LIST_HEAD(&bridge->dma_ranges);
535 INIT_LIST_HEAD(ib_resources);533
536 err = devm_of_pci_get_host_bridge_resources(dev, 0, 0xff, resources,534 err = devm_of_pci_get_host_bridge_resources(dev, 0, 0xff, &bridge->windows,
537 ib_resources, &iobase);535 &bridge->dma_ranges, &iobase);
538 if (err)536 if (err)
539 return err;537 return err;
540 538
541 err = devm_request_pci_bus_resources(dev, resources);539 err = devm_request_pci_bus_resources(dev, &bridge->windows);
542 if (err)540 if (err)
543 goto out_release_res;541 return err;
544 542
545 resource_list_for_each_entry_safe(win, tmp, resources) {543 resource_list_for_each_entry_safe(win, tmp, &bridge->windows) {
546 struct resource *res = win->res;544 struct resource *res = win->res;
547 545
548 switch (resource_type(res)) {546 switch (resource_type(res)) {
@@ -557,10 +555,6 @@ int pci_parse_request_of_pci_ranges(struct device *dev, · 8 unmodified lines
557 case IORESOURCE_MEM:555 case IORESOURCE_MEM:
558 res_valid |= !(res->flags & IORESOURCE_PREFETCH);556 res_valid |= !(res->flags & IORESOURCE_PREFETCH);
559 break;557 break;
560 case IORESOURCE_BUS:
561 if (bus_range)
562 *bus_range = res;
563 break;
564 }558 }
565 }559 }
566 560
@@ -568,12 +562,15 @@ int pci_parse_request_of_pci_ranges(struct device *dev, · 1 unmodified line
568 dev_warn(dev, "non-prefetchable memory resource required\n");562 dev_warn(dev, "non-prefetchable memory resource required\n");
569 563
570 return 0;564 return 0;
565}
571 566
572 out_release_res:567int devm_of_pci_bridge_init(struct device *dev, struct pci_host_bridge *bridge)
573 pci_free_resource_list(resources);568{
574 return err;569 if (!dev->of_node)
570 return 0;
571
572 return pci_parse_request_of_pci_ranges(dev, bridge);
575}573}
576EXPORT_SYMBOL_GPL(pci_parse_request_of_pci_ranges);
577 574
578#endif /* CONFIG_PCI */575#endif /* CONFIG_PCI */
579 576
drivers/pci/pci.h+8−0
@@ -627,6 +627,8 @@ void pci_release_of_node(struct pci_dev *dev); · 626 unmodified lines
627void pci_set_bus_of_node(struct pci_bus *bus);627void pci_set_bus_of_node(struct pci_bus *bus);
628void pci_release_bus_of_node(struct pci_bus *bus);628void pci_release_bus_of_node(struct pci_bus *bus);
629 629
630int devm_of_pci_bridge_init(struct device *dev, struct pci_host_bridge *bridge);
631
630#else632#else
631static inline int633static inline int
632of_pci_parse_bus_range(struct device_node *node, struct resource *res)634of_pci_parse_bus_range(struct device_node *node, struct resource *res)
@@ -650,6 +652,12 @@ static inline void pci_set_of_node(struct pci_dev *dev) { } · 17 unmodified lines
650static inline void pci_release_of_node(struct pci_dev *dev) { }652static inline void pci_release_of_node(struct pci_dev *dev) { }
651static inline void pci_set_bus_of_node(struct pci_bus *bus) { }653static inline void pci_set_bus_of_node(struct pci_bus *bus) { }
652static inline void pci_release_bus_of_node(struct pci_bus *bus) { }654static inline void pci_release_bus_of_node(struct pci_bus *bus) { }
655
656static inline int devm_of_pci_bridge_init(struct device *dev, struct pci_host_bridge *bridge)
657{
658 return 0;
659}
660
653#endif /* CONFIG_OF */661#endif /* CONFIG_OF */
654 662
655#ifdef CONFIG_PCIEAER663#ifdef CONFIG_PCIEAER
drivers/pci/probe.c+4−0
@@ -635,6 +635,10 @@ struct pci_host_bridge *devm_pci_alloc_host_bridge(struct device *dev, · 634 unmodified lines
635 if (ret)635 if (ret)
636 return NULL;636 return NULL;
637 637
638 ret = devm_of_pci_bridge_init(dev, bridge);
639 if (ret)
640 return NULL;
641
638 return bridge;642 return bridge;
639}643}
640EXPORT_SYMBOL(devm_pci_alloc_host_bridge);644EXPORT_SYMBOL(devm_pci_alloc_host_bridge);
include/linux/pci.h+0−12
@@ -2303,10 +2303,6 @@ int pci_vpd_find_info_keyword(const u8 *buf, unsigned int off, · 2302 unmodified lines
2303struct device_node;2303struct device_node;
2304struct irq_domain;2304struct irq_domain;
2305struct irq_domain *pci_host_bridge_of_msi_domain(struct pci_bus *bus);2305struct irq_domain *pci_host_bridge_of_msi_domain(struct pci_bus *bus);
2306int pci_parse_request_of_pci_ranges(struct device *dev,
2307 struct list_head *resources,
2308 struct list_head *ib_resources,
2309 struct resource **bus_range);
2310 2306
2311/* Arch may override this (weak) */2307/* Arch may override this (weak) */
2312struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus);2308struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus);
@@ -2314,14 +2310,6 @@ struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus); · 1 unmodified line
2314#else /* CONFIG_OF */2310#else /* CONFIG_OF */
2315static inline struct irq_domain *2311static inline struct irq_domain *
2316pci_host_bridge_of_msi_domain(struct pci_bus *bus) { return NULL; }2312pci_host_bridge_of_msi_domain(struct pci_bus *bus) { return NULL; }
2317static inline int
2318pci_parse_request_of_pci_ranges(struct device *dev,
2319 struct list_head *resources,
2320 struct list_head *ib_resources,
2321 struct resource **bus_range)
2322{
2323 return -EINVAL;
2324}
2325#endif /* CONFIG_OF */2313#endif /* CONFIG_OF */
2326 2314
2327static inline struct device_node *2315static inline struct device_node *