On Wed, Oct 16, 2019 at 03:06:27PM -0500, Rob Herring wrote: > Convert the Designware host bridge to use the common > pci_parse_request_of_pci_ranges(). > > Cc: Jingoo Han <jingoohan1@xxxxxxxxx> > Cc: Gustavo Pimentel <gustavo.pimentel@xxxxxxxxxxxx> > Cc: Lorenzo Pieralisi <lorenzo.pieralisi@xxxxxxx> > Cc: Andrew Murray <andrew.murray@xxxxxxx> > Cc: Bjorn Helgaas <bhelgaas@xxxxxxxxxx> > Signed-off-by: Rob Herring <robh@xxxxxxxxxx> > --- > v2: > - New patch > > .../pci/controller/dwc/pcie-designware-host.c | 28 ++++++------------- > 1 file changed, 8 insertions(+), 20 deletions(-) > > diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c > index 0f36a926059a..aeec8b65eb97 100644 > --- a/drivers/pci/controller/dwc/pcie-designware-host.c > +++ b/drivers/pci/controller/dwc/pcie-designware-host.c > @@ -319,7 +319,7 @@ int dw_pcie_host_init(struct pcie_port *pp) > struct device *dev = pci->dev; > struct device_node *np = dev->of_node; > struct platform_device *pdev = to_platform_device(dev); > - struct resource_entry *win, *tmp; > + struct resource_entry *win; > struct pci_bus *child; > struct pci_host_bridge *bridge; > struct resource *cfg_res; > @@ -342,31 +342,19 @@ int dw_pcie_host_init(struct pcie_port *pp) > if (!bridge) > return -ENOMEM; > > - ret = devm_of_pci_get_host_bridge_resources(dev, 0, 0xff, > - &bridge->windows, &pp->io_base); > - if (ret) > - return ret; > - > - ret = devm_request_pci_bus_resources(dev, &bridge->windows); > + ret = pci_parse_request_of_pci_ranges(dev, &bridge->windows, NULL); > if (ret) > return ret; > > /* Get the I/O and memory ranges from DT */ > - resource_list_for_each_entry_safe(win, tmp, &bridge->windows) { > + resource_list_for_each_entry(win, &bridge->windows) { > switch (resource_type(win->res)) { > case IORESOURCE_IO: > - ret = devm_pci_remap_iospace(dev, win->res, > - pp->io_base); > - if (ret) { > - dev_warn(dev, "Error %d: failed to map resource %pR\n", > - ret, win->res); > - resource_list_destroy_entry(win); > - } else { > - pp->io = win->res; > - pp->io->name = "I/O"; > - pp->io_size = resource_size(pp->io); > - pp->io_bus_addr = pp->io->start - win->offset; > - } > + pp->io = win->res; > + pp->io->name = "I/O"; > + pp->io_size = resource_size(pp->io); > + pp->io_bus_addr = pp->io->start - win->offset; > + pp->io_base = pci_pio_to_address(pp->io->start); Where did io_base come from? This wasn't here before, so why are we setting it now? Does this fix any issue? Thanks, Andrew Murray > break; > case IORESOURCE_MEM: > pp->mem = win->res; > -- > 2.20.1