bmips: pci-bcm6348: load IO resource from DT ranges
authorÁlvaro Fernández Rojas <noltari@gmail.com>
Tue, 18 Apr 2023 18:11:28 +0000 (20:11 +0200)
committerÁlvaro Fernández Rojas <noltari@gmail.com>
Tue, 18 Apr 2023 18:11:28 +0000 (20:11 +0200)
Correctly load IO resource from DT ranges and remove the specific IO resource.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
target/linux/bmips/dts/bcm6358.dtsi
target/linux/bmips/dts/bcm6368.dtsi
target/linux/bmips/files/drivers/pci/controller/pci-bcm6348.c

index 606e096d2e63a2e24837cf321ee871cfaf670b2f..eb8ca0c10d6ca96ba1b69b2e5754801b1cb6b59e 100644 (file)
 
                pci: pci@fffe1000 {
                        compatible = "brcm,bcm6348-pci";
-                       reg = <0xfffe1000 0x200>,
-                             <0x08000000 0x10000>;
-                       reg-names = "pci",
-                                   "pci-io";
+                       reg = <0xfffe1000 0x200>;
                        #address-cells = <3>;
                        #size-cells = <2>;
 
                        device_type = "pci";
                        bus-range = <0x00 0x01>;
-                       ranges = <0x2000000 0 0x30000000 0x30000000 0 0x8000000>;
+                       ranges = <0x2000000 0 0x30000000 0x30000000 0 0x8000000>,
+                                <0x1000000 0 0x08000000 0x08000000 0 0x0010000>;
                        linux,pci-probe-only = <1>;
 
                        interrupt-parent = <&periph_intc>;
index 2d00434186b2870a6f0a4b299255e0e8e2617a7f..baa1c434173b5e27ed478f416f67af4a3d928063 100644 (file)
 
                pci: pci@10001000 {
                        compatible = "brcm,bcm6348-pci";
-                       reg = <0x10001000 0x200>,
-                             <0x08000000 0x10000>;
-                       reg-names = "pci",
-                                   "pci-io";
+                       reg = <0x10001000 0x200>;
                        #address-cells = <3>;
                        #size-cells = <2>;
 
                        device_type = "pci";
                        bus-range = <0x00 0x01>;
-                       ranges = <0x2000000 0 0x30000000 0x30000000 0 0x8000000>;
+                       ranges = <0x2000000 0 0x30000000 0x30000000 0 0x8000000>,
+                                <0x1000000 0 0x08000000 0x08000000 0 0x0010000>;
                        linux,pci-probe-only = <1>;
 
                        interrupt-parent = <&periph_intc>;
index 730068ae7946d6175d497871c463d106fd3559e5..39050b3de4d5408978b2131054407e409553b10f 100644 (file)
@@ -335,10 +335,7 @@ static struct pci_ops bcm6348_pci_ops = {
        .write = bcm6348_pci_write,
 };
 
-static struct resource bcm6348_pci_io_resource = {
-       .name = "BCM6348 PCI IO space",
-       .flags = IORESOURCE_IO,
-};
+static struct resource bcm6348_pci_io_resource;
 static struct resource bcm6348_pci_mem_resource;
 static struct resource bcm6348_pci_busn_resource;
 
@@ -732,26 +729,13 @@ static int bcm6348_pci_probe(struct platform_device *pdev)
 
        of_pci_check_probe_only();
 
-       res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pci");
+       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        priv->pci = devm_ioremap_resource(dev, res);
        if (IS_ERR(priv->pci))
                return PTR_ERR(priv->pci);
 
        priv->pcmcia = priv->pci + PCMCIA_OFFSET;
 
-       res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pci-io");
-       if (!res)
-               return -EINVAL;
-#ifdef CONFIG_CARDBUS
-       bcm6348_pci_io_resource.start = res->start;
-       bcm6348_pci_io_resource.end = res->end - (resource_size(res) >> 1);
-       bcm6348_cb_io_resource.start = res->start + (resource_size(res) >> 1);
-       bcm6348_cb_io_resource.end = res->end;
-#else
-       bcm6348_pci_io_resource.start = res->start;
-       bcm6348_pci_io_resource.end = res->end;
-#endif
-
        priv->irq = platform_get_irq(pdev, 0);
        if (!priv->irq)
                return -ENODEV;
@@ -773,6 +757,12 @@ static int bcm6348_pci_probe(struct platform_device *pdev)
        of_pci_parse_bus_range(np, &bcm6348_pci_busn_resource);
        pci_add_resource(&resources, &bcm6348_pci_busn_resource);
 
+#ifdef CONFIG_CARDBUS
+       bcm6348_cb_io_resource.start = bcm6348_pci_io_resource.start + (resource_size(&bcm6348_pci_io_resource) >> 1);
+       bcm6348_cb_io_resource.end = bcm6348_pci_io_resource.end;
+       bcm6348_pci_io_resource.end = bcm6348_pci_io_resource.end - (resource_size(&bcm6348_pci_io_resource) >> 1);
+#endif
+
        /*
         * Configuration accesses are done through IO space, remap 4
         * first bytes to access it from CPU.