Skip to content

Commit e0aebfe

Browse files
robherringLorenzo Pieralisi
authored andcommitted
PCI: v3-semi: Use pci_parse_request_of_pci_ranges()
Convert V3 host bridge to use the common pci_parse_request_of_pci_ranges(). Signed-off-by: Rob Herring <[email protected]> Signed-off-by: Lorenzo Pieralisi <[email protected]> Acked-by: Linus Walleij <[email protected]> Cc: Lorenzo Pieralisi <[email protected]> Cc: Andrew Murray <[email protected]> Cc: Bjorn Helgaas <[email protected]>
1 parent 62240a8 commit e0aebfe

File tree

1 file changed

+6
-29
lines changed

1 file changed

+6
-29
lines changed

drivers/pci/controller/pci-v3-semi.c

Lines changed: 6 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -241,10 +241,8 @@ struct v3_pci {
241241
void __iomem *config_base;
242242
struct pci_bus *bus;
243243
u32 config_mem;
244-
u32 io_mem;
245244
u32 non_pre_mem;
246245
u32 pre_mem;
247-
phys_addr_t io_bus_addr;
248246
phys_addr_t non_pre_bus_addr;
249247
phys_addr_t pre_bus_addr;
250248
struct regmap *map;
@@ -520,35 +518,22 @@ static int v3_integrator_init(struct v3_pci *v3)
520518
}
521519

522520
static int v3_pci_setup_resource(struct v3_pci *v3,
523-
resource_size_t io_base,
524521
struct pci_host_bridge *host,
525522
struct resource_entry *win)
526523
{
527524
struct device *dev = v3->dev;
528525
struct resource *mem;
529526
struct resource *io;
530-
int ret;
531527

532528
switch (resource_type(win->res)) {
533529
case IORESOURCE_IO:
534530
io = win->res;
535-
io->name = "V3 PCI I/O";
536-
v3->io_mem = io_base;
537-
v3->io_bus_addr = io->start - win->offset;
538-
dev_dbg(dev, "I/O window %pR, bus addr %pap\n",
539-
io, &v3->io_bus_addr);
540-
ret = devm_pci_remap_iospace(dev, io, io_base);
541-
if (ret) {
542-
dev_warn(dev,
543-
"error %d: failed to map resource %pR\n",
544-
ret, io);
545-
return ret;
546-
}
531+
547532
/* Setup window 2 - PCI I/O */
548-
writel(v3_addr_to_lb_base2(v3->io_mem) |
533+
writel(v3_addr_to_lb_base2(pci_pio_to_address(io->start)) |
549534
V3_LB_BASE2_ENABLE,
550535
v3->base + V3_LB_BASE2);
551-
writew(v3_addr_to_lb_map2(v3->io_bus_addr),
536+
writew(v3_addr_to_lb_map2(io->start - win->offset),
552537
v3->base + V3_LB_MAP2);
553538
break;
554539
case IORESOURCE_MEM:
@@ -732,7 +717,6 @@ static int v3_pci_probe(struct platform_device *pdev)
732717
{
733718
struct device *dev = &pdev->dev;
734719
struct device_node *np = dev->of_node;
735-
resource_size_t io_base;
736720
struct resource *regs;
737721
struct resource_entry *win;
738722
struct v3_pci *v3;
@@ -741,7 +725,6 @@ static int v3_pci_probe(struct platform_device *pdev)
741725
u16 val;
742726
int irq;
743727
int ret;
744-
LIST_HEAD(res);
745728

746729
host = pci_alloc_host_bridge(sizeof(*v3));
747730
if (!host)
@@ -793,12 +776,7 @@ static int v3_pci_probe(struct platform_device *pdev)
793776
if (IS_ERR(v3->config_base))
794777
return PTR_ERR(v3->config_base);
795778

796-
ret = devm_of_pci_get_host_bridge_resources(dev, 0, 0xff, &res,
797-
&io_base);
798-
if (ret)
799-
return ret;
800-
801-
ret = devm_request_pci_bus_resources(dev, &res);
779+
ret = pci_parse_request_of_pci_ranges(dev, &host->windows, NULL);
802780
if (ret)
803781
return ret;
804782

@@ -852,8 +830,8 @@ static int v3_pci_probe(struct platform_device *pdev)
852830
writew(val, v3->base + V3_PCI_CMD);
853831

854832
/* Get the I/O and memory ranges from DT */
855-
resource_list_for_each_entry(win, &res) {
856-
ret = v3_pci_setup_resource(v3, io_base, host, win);
833+
resource_list_for_each_entry(win, &host->windows) {
834+
ret = v3_pci_setup_resource(v3, host, win);
857835
if (ret) {
858836
dev_err(dev, "error setting up resources\n");
859837
return ret;
@@ -931,7 +909,6 @@ static int v3_pci_probe(struct platform_device *pdev)
931909
val |= V3_SYSTEM_M_LOCK;
932910
writew(val, v3->base + V3_SYSTEM);
933911

934-
list_splice_init(&res, &host->windows);
935912
ret = pci_scan_root_bus_bridge(host);
936913
if (ret) {
937914
dev_err(dev, "failed to register host: %d\n", ret);

0 commit comments

Comments
 (0)