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.
Unified · Split
| @@ -171,14 +171,8 @@ static int cdns_pcie_host_init_address_translation(struct cdns_pcie_rc *rc) · 170 unmodified lines | ||
| 171 | 171 | static int cdns_pcie_host_init(struct device *dev, |
| 172 | 172 | struct cdns_pcie_rc *rc) |
| 173 | 173 | { |
| 174 | − struct pci_host_bridge *bridge = pci_host_bridge_from_priv(rc); | |
| 175 | 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 | 176 | err = cdns_pcie_host_init_root_port(rc); |
| 183 | 177 | if (err) |
| 184 | 178 | return err; |
| @@ -346,11 +346,6 @@ int dw_pcie_host_init(struct pcie_port *pp) · 345 unmodified lines | ||
| 346 | 346 | if (!bridge) |
| 347 | 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 | 349 | /* Get the I/O and memory ranges from DT */ |
| 355 | 350 | resource_list_for_each_entry(win, &bridge->windows) { |
| 356 | 351 | switch (resource_type(win->res)) { |
| @@ -577,14 +577,6 @@ int mobiveil_pcie_host_probe(struct mobiveil_pcie *pcie) · 576 unmodified lines | ||
| 577 | 577 | if (!mobiveil_pcie_is_bridge(pcie)) |
| 578 | 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 | 581 | * configure all inbound and outbound windows and prepare the RC for |
| 590 | 582 | * config access |
| @@ -1130,13 +1130,6 @@ static int advk_pcie_probe(struct platform_device *pdev) · 1129 unmodified lines | ||
| 1130 | 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 | 1133 | pcie->reset_gpio = devm_gpiod_get_from_of_node(dev, dev->of_node, |
| 1141 | 1134 | "reset-gpios", 0, |
| 1142 | 1135 | GPIOD_OUT_LOW, |
| @@ -465,11 +465,6 @@ static int faraday_pci_probe(struct platform_device *pdev) · 464 unmodified lines | ||
| 465 | 465 | if (IS_ERR(p->base)) |
| 466 | 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 | 468 | win = resource_list_first_type(&host->windows, IORESOURCE_IO); |
| 474 | 469 | if (win) { |
| 475 | 470 | io = win->res; |
| @@ -25,21 +25,20 @@ static struct pci_config_window *gen_pci_init(struct device *dev, · 24 unmodified lines | ||
| 25 | 25 | { |
| 26 | 26 | int err; |
| 27 | 27 | struct resource cfgres; |
| 28 | − struct resource *bus_range = NULL; | |
| 28 | + struct resource_entry *bus; | |
| 29 | 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 | 31 | err = of_address_to_resource(dev->of_node, 0, &cfgres); |
| 37 | 32 | if (err) { |
| 38 | 33 | dev_err(dev, "missing \"reg\" property\n"); |
| 39 | 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 | 42 | if (IS_ERR(cfg)) |
| 44 | 43 | return cfg; |
| 45 | 44 | |
| @@ -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 | 221 | bridge->sysdata = priv; |
| 229 | 222 | bridge->ops = &loongson_pci_ops; |
| 230 | 223 | bridge->map_irq = loongson_map_irq; |
| @@ -282,7 +282,6 @@ static int rcar_pci_probe(struct platform_device *pdev) · 281 unmodified lines | ||
| 282 | 282 | struct rcar_pci_priv *priv; |
| 283 | 283 | struct pci_host_bridge *bridge; |
| 284 | 284 | void __iomem *reg; |
| 285 | − int ret; | |
| 286 | 285 | |
| 287 | 286 | bridge = devm_pci_alloc_host_bridge(dev, sizeof(*priv)); |
| 288 | 287 | if (!bridge) |
| @@ -315,11 +314,6 @@ static int rcar_pci_probe(struct platform_device *pdev) · 26 unmodified lines | ||
| 315 | 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 | 317 | bridge->ops = &rcar_pci_ops; |
| 324 | 318 | |
| 325 | 319 | pci_add_flags(PCI_REASSIGN_ALL_BUS); |
| @@ -2682,12 +2682,6 @@ static int tegra_pcie_probe(struct platform_device *pdev) · 2681 unmodified lines | ||
| 2682 | 2682 | INIT_LIST_HEAD(&pcie->ports); |
| 2683 | 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 | 2685 | err = tegra_pcie_parse_dt(pcie); |
| 2692 | 2686 | if (err < 0) |
| 2693 | 2687 | return err; |
| @@ -764,11 +764,6 @@ static int v3_pci_probe(struct platform_device *pdev) · 763 unmodified lines | ||
| 764 | 764 | if (IS_ERR(v3->config_base)) |
| 765 | 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 | 767 | /* Get and request error IRQ resource */ |
| 773 | 768 | irq = platform_get_irq(pdev, 0); |
| 774 | 769 | if (irq < 0) { |
| @@ -67,7 +67,7 @@ static int versatile_pci_probe(struct platform_device *pdev) · 66 unmodified lines | ||
| 67 | 67 | struct device *dev = &pdev->dev; |
| 68 | 68 | struct resource *res; |
| 69 | 69 | struct resource_entry *entry; |
| 70 | − int ret, i, myslot = -1, mem = 1; | |
| 70 | + int i, myslot = -1, mem = 1; | |
| 71 | 71 | u32 val; |
| 72 | 72 | void __iomem *local_pci_cfg_base; |
| 73 | 73 | struct pci_host_bridge *bridge; |
| @@ -89,11 +89,6 @@ static int versatile_pci_probe(struct platform_device *pdev) · 15 unmodified lines | ||
| 89 | 89 | if (IS_ERR(versatile_cfg_base[1])) |
| 90 | 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 | 92 | resource_list_for_each_entry(entry, &bridge->windows) { |
| 98 | 93 | if (resource_type(entry->res) == IORESOURCE_MEM) { |
| 99 | 94 | writel(entry->res->start >> 28, PCI_IMAP(mem)); |
| @@ -614,11 +614,6 @@ static int xgene_pcie_probe(struct platform_device *pdev) · 613 unmodified lines | ||
| 614 | 614 | if (ret) |
| 615 | 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 | 617 | ret = xgene_pcie_setup(port); |
| 623 | 618 | if (ret) |
| 624 | 619 | return ret; |
| @@ -794,13 +794,6 @@ static int altera_pcie_probe(struct platform_device *pdev) · 793 unmodified lines | ||
| 794 | 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 | 797 | ret = altera_pcie_init_irq_domain(pcie); |
| 805 | 798 | if (ret) { |
| 806 | 799 | dev_err(dev, "Failed creating IRQ Domain\n"); |
| @@ -970,11 +970,6 @@ static int brcm_pcie_probe(struct platform_device *pdev) · 969 unmodified lines | ||
| 970 | 970 | |
| 971 | 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 | 973 | ret = clk_prepare_enable(pcie->clk); |
| 979 | 974 | if (ret) { |
| 980 | 975 | dev_err(&pdev->dev, "could not enable clock\n"); |
| @@ -95,13 +95,6 @@ static int iproc_pcie_pltfm_probe(struct platform_device *pdev) · 94 unmodified lines | ||
| 95 | 95 | if (IS_ERR(pcie->phy)) |
| 96 | 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 | 98 | /* PAXC doesn't support legacy IRQs, skip mapping */ |
| 106 | 99 | switch (pcie->type) { |
| 107 | 100 | case IPROC_PCIE_PAXC: |
| @@ -1027,15 +1027,8 @@ static int mtk_pcie_setup(struct mtk_pcie *pcie) · 1026 unmodified lines | ||
| 1027 | 1027 | struct device *dev = pcie->dev; |
| 1028 | 1028 | struct device_node *node = dev->of_node, *child; |
| 1029 | 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 | 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 | 1032 | for_each_available_child_of_node(node, child) { |
| 1040 | 1033 | int slot; |
| 1041 | 1034 | |
| @@ -913,11 +913,6 @@ static int rcar_pcie_probe(struct platform_device *pdev) · 912 unmodified lines | ||
| 913 | 913 | pcie->dev = dev; |
| 914 | 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 | 916 | pm_runtime_enable(pcie->dev); |
| 922 | 917 | err = pm_runtime_get_sync(pcie->dev); |
| 923 | 918 | if (err < 0) { |
| @@ -989,11 +989,6 @@ static int rockchip_pcie_probe(struct platform_device *pdev) · 988 unmodified lines | ||
| 989 | 989 | if (err < 0) |
| 990 | 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 | 992 | err = rockchip_pcie_cfg_atu(rockchip); |
| 998 | 993 | if (err) |
| 999 | 994 | goto err_remove_irq_domain; |
| @@ -838,13 +838,6 @@ static int nwl_pcie_probe(struct platform_device *pdev) · 837 unmodified lines | ||
| 838 | 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 | 841 | err = nwl_pcie_init_irq_domain(pcie); |
| 849 | 842 | if (err) { |
| 850 | 843 | dev_err(dev, "Failed creating IRQ Domain\n"); |
| @@ -641,13 +641,6 @@ static int xilinx_pcie_probe(struct platform_device *pdev) · 640 unmodified lines | ||
| 641 | 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 | 644 | bridge->sysdata = port; |
| 652 | 645 | bridge->ops = &xilinx_pcie_ops; |
| 653 | 646 | bridge->map_irq = of_irq_parse_and_map_pci; |
| @@ -521,28 +521,26 @@ int of_irq_parse_and_map_pci(const struct pci_dev *dev, u8 slot, u8 pin) · 520 unmodified lines | ||
| 521 | 521 | EXPORT_SYMBOL_GPL(of_irq_parse_and_map_pci); |
| 522 | 522 | #endif /* CONFIG_OF_IRQ */ |
| 523 | 523 | |
| 524 | −int pci_parse_request_of_pci_ranges(struct device *dev, | |
| 525 | − struct list_head *resources, | |
| 526 | − struct list_head *ib_resources, | |
| 527 | − struct resource **bus_range) | |
| 524 | +static int pci_parse_request_of_pci_ranges(struct device *dev, | |
| 525 | + struct pci_host_bridge *bridge) | |
| 528 | 526 | { |
| 529 | 527 | int err, res_valid = 0; |
| 530 | 528 | resource_size_t iobase; |
| 531 | 529 | struct resource_entry *win, *tmp; |
| 532 | 530 | |
| 533 | − INIT_LIST_HEAD(resources); | |
| 534 | − if (ib_resources) | |
| 535 | − INIT_LIST_HEAD(ib_resources); | |
| 536 | − err = devm_of_pci_get_host_bridge_resources(dev, 0, 0xff, resources, | |
| 537 | − ib_resources, &iobase); | |
| 531 | + INIT_LIST_HEAD(&bridge->windows); | |
| 532 | + INIT_LIST_HEAD(&bridge->dma_ranges); | |
| 533 | + | |
| 534 | + err = devm_of_pci_get_host_bridge_resources(dev, 0, 0xff, &bridge->windows, | |
| 535 | + &bridge->dma_ranges, &iobase); | |
| 538 | 536 | if (err) |
| 539 | 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 | 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 | 544 | struct resource *res = win->res; |
| 547 | 545 | |
| 548 | 546 | switch (resource_type(res)) { |
| @@ -557,10 +555,6 @@ int pci_parse_request_of_pci_ranges(struct device *dev, · 8 unmodified lines | ||
| 557 | 555 | case IORESOURCE_MEM: |
| 558 | 556 | res_valid |= !(res->flags & IORESOURCE_PREFETCH); |
| 559 | 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 | 562 | dev_warn(dev, "non-prefetchable memory resource required\n"); |
| 569 | 563 | |
| 570 | 564 | return 0; |
| 565 | +} | |
| 571 | 566 | |
| 572 | − out_release_res: | |
| 573 | − pci_free_resource_list(resources); | |
| 574 | − return err; | |
| 567 | +int devm_of_pci_bridge_init(struct device *dev, struct pci_host_bridge *bridge) | |
| 568 | +{ | |
| 569 | + if (!dev->of_node) | |
| 570 | + return 0; | |
| 571 | + | |
| 572 | + return pci_parse_request_of_pci_ranges(dev, bridge); | |
| 575 | 573 | } |
| 576 | −EXPORT_SYMBOL_GPL(pci_parse_request_of_pci_ranges); | |
| 577 | 574 | |
| 578 | 575 | #endif /* CONFIG_PCI */ |
| 579 | 576 | |
| @@ -627,6 +627,8 @@ void pci_release_of_node(struct pci_dev *dev); · 626 unmodified lines | ||
| 627 | 627 | void pci_set_bus_of_node(struct pci_bus *bus); |
| 628 | 628 | void pci_release_bus_of_node(struct pci_bus *bus); |
| 629 | 629 | |
| 630 | +int devm_of_pci_bridge_init(struct device *dev, struct pci_host_bridge *bridge); | |
| 631 | + | |
| 630 | 632 | #else |
| 631 | 633 | static inline int |
| 632 | 634 | of_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 | ||
| 650 | 652 | static inline void pci_release_of_node(struct pci_dev *dev) { } |
| 651 | 653 | static inline void pci_set_bus_of_node(struct pci_bus *bus) { } |
| 652 | 654 | static inline void pci_release_bus_of_node(struct pci_bus *bus) { } |
| 655 | + | |
| 656 | +static inline int devm_of_pci_bridge_init(struct device *dev, struct pci_host_bridge *bridge) | |
| 657 | +{ | |
| 658 | + return 0; | |
| 659 | +} | |
| 660 | + | |
| 653 | 661 | #endif /* CONFIG_OF */ |
| 654 | 662 | |
| 655 | 663 | #ifdef CONFIG_PCIEAER |
| @@ -635,6 +635,10 @@ struct pci_host_bridge *devm_pci_alloc_host_bridge(struct device *dev, · 634 unmodified lines | ||
| 635 | 635 | if (ret) |
| 636 | 636 | return NULL; |
| 637 | 637 | |
| 638 | + ret = devm_of_pci_bridge_init(dev, bridge); | |
| 639 | + if (ret) | |
| 640 | + return NULL; | |
| 641 | + | |
| 638 | 642 | return bridge; |
| 639 | 643 | } |
| 640 | 644 | EXPORT_SYMBOL(devm_pci_alloc_host_bridge); |
| @@ -2303,10 +2303,6 @@ int pci_vpd_find_info_keyword(const u8 *buf, unsigned int off, · 2302 unmodified lines | ||
| 2303 | 2303 | struct device_node; |
| 2304 | 2304 | struct irq_domain; |
| 2305 | 2305 | struct irq_domain *pci_host_bridge_of_msi_domain(struct pci_bus *bus); |
| 2306 | −int 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 | 2307 | /* Arch may override this (weak) */ |
| 2312 | 2308 | struct 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 | 2310 | #else /* CONFIG_OF */ |
| 2315 | 2311 | static inline struct irq_domain * |
| 2316 | 2312 | pci_host_bridge_of_msi_domain(struct pci_bus *bus) { return NULL; } |
| 2317 | −static inline int | |
| 2318 | −pci_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 | 2313 | #endif /* CONFIG_OF */ |
| 2326 | 2314 | |
| 2327 | 2315 | static inline struct device_node * |