if (err)
return err;
------- resource_list_for_each_entry(win, res, list) {
+++++++ resource_list_for_each_entry(win, res) {
struct resource *parent, *res = win->res;
switch (resource_type(res)) {
LIST_HEAD(pci_res);
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
------- if (!res)
------- return -ENODEV;
versatile_pci_base = devm_ioremap_resource(&pdev->dev, res);
+++++++ if (IS_ERR(versatile_pci_base))
+++++++ return PTR_ERR(versatile_pci_base);
res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
------- if (!res)
------- return -ENODEV;
versatile_cfg_base[0] = devm_ioremap_resource(&pdev->dev, res);
+++++++ if (IS_ERR(versatile_cfg_base[0]))
+++++++ return PTR_ERR(versatile_cfg_base[0]);
res = platform_get_resource(pdev, IORESOURCE_MEM, 2);
------- if (!res)
------- return -ENODEV;
versatile_cfg_base[1] = devm_ioremap_resource(&pdev->dev, res);
+++++++ if (IS_ERR(versatile_cfg_base[1]))
+++++++ return PTR_ERR(versatile_cfg_base[1]);
ret = versatile_pci_parse_request_of_pci_ranges(&pdev->dev, &pci_res);
if (ret)
pci_fixup_irqs(pci_common_swizzle, of_irq_parse_and_map_pci);
pci_assign_unassigned_bus_resources(bus);
+++++++ pci_bus_add_devices(bus);
return 0;
}
#ifdef CONFIG_HAS_IOMEM
void __iomem *pci_ioremap_bar(struct pci_dev *pdev, int bar)
{
+++++++ struct resource *res = &pdev->resource[bar];
+++++++
/*
* Make sure the BAR is actually a memory resource, not an IO resource
*/
------- if (!(pci_resource_flags(pdev, bar) & IORESOURCE_MEM)) {
------- WARN_ON(1);
+++++++ if (res->flags & IORESOURCE_UNSET || !(res->flags & IORESOURCE_MEM)) {
+++++++ dev_warn(&pdev->dev, "can't ioremap BAR %d: %pR\n", bar, res);
return NULL;
}
------- return ioremap_nocache(pci_resource_start(pdev, bar),
------- pci_resource_len(pdev, bar));
+++++++ return ioremap_nocache(res->start, resource_size(res));
}
EXPORT_SYMBOL_GPL(pci_ioremap_bar);
#endif
*pinp = pin;
return PCI_SLOT(dev->devfn);
}
++ +++++EXPORT_SYMBOL_GPL(pci_common_swizzle);
/**
* pci_release_region - Release a PCI bar
#include <linux/delay.h>
#include <linux/init.h>
#include <linux/pci.h>
+++++++#include <linux/of_pci.h>
#include <linux/pci_hotplug.h>
#include <linux/slab.h>
#include <linux/module.h>
dev->dev.dma_mask = &dev->dma_mask;
dev->dev.dma_parms = &dev->dma_parms;
dev->dev.coherent_dma_mask = 0xffffffffull;
+++++++ of_pci_dma_configure(dev);
pci_set_dma_max_seg_size(dev, 65536);
pci_set_dma_seg_boundary(dev, 0xffffffff);
kfree(b);
return NULL;
}
++ +++++EXPORT_SYMBOL_GPL(pci_create_root_bus);
int pci_bus_insert_busn_res(struct pci_bus *b, int bus, int bus_max)
{
if (!found)
pci_bus_update_busn_res_end(b, max);
------- pci_bus_add_devices(b);
return b;
}
EXPORT_SYMBOL(pci_scan_root_bus);
b = pci_create_root_bus(NULL, bus, ops, sysdata, &resources);
if (b) {
pci_scan_child_bus(b);
------- pci_bus_add_devices(b);
} else {
pci_free_resource_list(&resources);
}