Skip to content

Commit 83083e2

Browse files
robherringLorenzo Pieralisi
authored andcommitted
PCI: xgene: Use pci_parse_request_of_pci_ranges()
Convert the xgene host bridge to use the common pci_parse_request_of_pci_ranges(). There's no need to assign the resources to a temporary list first. Just use bridge->windows directly and remove all the temporary list handling. Signed-off-by: Rob Herring <[email protected]> Signed-off-by: Lorenzo Pieralisi <[email protected]> Cc: Toan Le <[email protected]> Cc: Lorenzo Pieralisi <[email protected]> Cc: Andrew Murray <[email protected]> Cc: Bjorn Helgaas <[email protected]>
1 parent e0aebfe commit 83083e2

File tree

1 file changed

+11
-28
lines changed

1 file changed

+11
-28
lines changed

drivers/pci/controller/pci-xgene.c

Lines changed: 11 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -405,27 +405,23 @@ static void xgene_pcie_setup_cfg_reg(struct xgene_pcie_port *port)
405405
xgene_pcie_writel(port, CFGCTL, EN_REG);
406406
}
407407

408-
static int xgene_pcie_map_ranges(struct xgene_pcie_port *port,
409-
struct list_head *res,
410-
resource_size_t io_base)
408+
static int xgene_pcie_map_ranges(struct xgene_pcie_port *port)
411409
{
410+
struct pci_host_bridge *bridge = pci_host_bridge_from_priv(port);
412411
struct resource_entry *window;
413412
struct device *dev = port->dev;
414-
int ret;
415413

416-
resource_list_for_each_entry(window, res) {
414+
resource_list_for_each_entry(window, &bridge->windows) {
417415
struct resource *res = window->res;
418416
u64 restype = resource_type(res);
419417

420418
dev_dbg(dev, "%pR\n", res);
421419

422420
switch (restype) {
423421
case IORESOURCE_IO:
424-
xgene_pcie_setup_ob_reg(port, res, OMR3BARL, io_base,
422+
xgene_pcie_setup_ob_reg(port, res, OMR3BARL,
423+
pci_pio_to_address(res->start),
425424
res->start - window->offset);
426-
ret = devm_pci_remap_iospace(dev, res, io_base);
427-
if (ret < 0)
428-
return ret;
429425
break;
430426
case IORESOURCE_MEM:
431427
if (res->flags & IORESOURCE_PREFETCH)
@@ -567,8 +563,7 @@ static void xgene_pcie_clear_config(struct xgene_pcie_port *port)
567563
xgene_pcie_writel(port, i, 0);
568564
}
569565

570-
static int xgene_pcie_setup(struct xgene_pcie_port *port, struct list_head *res,
571-
resource_size_t io_base)
566+
static int xgene_pcie_setup(struct xgene_pcie_port *port)
572567
{
573568
struct device *dev = port->dev;
574569
u32 val, lanes = 0, speed = 0;
@@ -580,7 +575,7 @@ static int xgene_pcie_setup(struct xgene_pcie_port *port, struct list_head *res,
580575
val = (XGENE_PCIE_DEVICEID << 16) | XGENE_PCIE_VENDORID;
581576
xgene_pcie_writel(port, BRIDGE_CFG_0, val);
582577

583-
ret = xgene_pcie_map_ranges(port, res, io_base);
578+
ret = xgene_pcie_map_ranges(port);
584579
if (ret)
585580
return ret;
586581

@@ -607,11 +602,9 @@ static int xgene_pcie_probe(struct platform_device *pdev)
607602
struct device *dev = &pdev->dev;
608603
struct device_node *dn = dev->of_node;
609604
struct xgene_pcie_port *port;
610-
resource_size_t iobase = 0;
611605
struct pci_bus *bus, *child;
612606
struct pci_host_bridge *bridge;
613607
int ret;
614-
LIST_HEAD(res);
615608

616609
bridge = devm_pci_alloc_host_bridge(dev, sizeof(*port));
617610
if (!bridge)
@@ -634,20 +627,14 @@ static int xgene_pcie_probe(struct platform_device *pdev)
634627
if (ret)
635628
return ret;
636629

637-
ret = devm_of_pci_get_host_bridge_resources(dev, 0, 0xff, &res,
638-
&iobase);
630+
ret = pci_parse_request_of_pci_ranges(dev, &bridge->windows, NULL);
639631
if (ret)
640632
return ret;
641633

642-
ret = devm_request_pci_bus_resources(dev, &res);
643-
if (ret)
644-
goto error;
645-
646-
ret = xgene_pcie_setup(port, &res, iobase);
634+
ret = xgene_pcie_setup(port);
647635
if (ret)
648-
goto error;
636+
return ret;
649637

650-
list_splice_init(&res, &bridge->windows);
651638
bridge->dev.parent = dev;
652639
bridge->sysdata = port;
653640
bridge->busnr = 0;
@@ -657,7 +644,7 @@ static int xgene_pcie_probe(struct platform_device *pdev)
657644

658645
ret = pci_scan_root_bus_bridge(bridge);
659646
if (ret < 0)
660-
goto error;
647+
return ret;
661648

662649
bus = bridge->bus;
663650

@@ -666,10 +653,6 @@ static int xgene_pcie_probe(struct platform_device *pdev)
666653
pcie_bus_configure_settings(child);
667654
pci_bus_add_devices(bus);
668655
return 0;
669-
670-
error:
671-
pci_free_resource_list(&res);
672-
return ret;
673656
}
674657

675658
static const struct of_device_id xgene_pcie_match_table[] = {

0 commit comments

Comments
 (0)