[openwrt/openwrt] bmips: pci-bcm6348: load IO resource from DT ranges

LEDE Commits lede-commits at lists.infradead.org
Tue Apr 18 11:20:17 PDT 2023


noltari pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/5ec781c4448b91a0610dbea1a5f25bbd4bb35b73

commit 5ec781c4448b91a0610dbea1a5f25bbd4bb35b73
Author: Álvaro Fernández Rojas <noltari at gmail.com>
AuthorDate: Tue Apr 18 20:11:28 2023 +0200

    bmips: pci-bcm6348: load IO resource from DT ranges
    
    Correctly load IO resource from DT ranges and remove the specific IO resource.
    
    Signed-off-by: Álvaro Fernández Rojas <noltari at gmail.com>
---
 target/linux/bmips/dts/bcm6358.dtsi                |  8 +++----
 target/linux/bmips/dts/bcm6368.dtsi                |  8 +++----
 .../files/drivers/pci/controller/pci-bcm6348.c     | 26 +++++++---------------
 3 files changed, 14 insertions(+), 28 deletions(-)

diff --git a/target/linux/bmips/dts/bcm6358.dtsi b/target/linux/bmips/dts/bcm6358.dtsi
index 606e096d2e..eb8ca0c10d 100644
--- a/target/linux/bmips/dts/bcm6358.dtsi
+++ b/target/linux/bmips/dts/bcm6358.dtsi
@@ -283,16 +283,14 @@
 
 		pci: pci at 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>;
diff --git a/target/linux/bmips/dts/bcm6368.dtsi b/target/linux/bmips/dts/bcm6368.dtsi
index 2d00434186..baa1c43417 100644
--- a/target/linux/bmips/dts/bcm6368.dtsi
+++ b/target/linux/bmips/dts/bcm6368.dtsi
@@ -412,16 +412,14 @@
 
 		pci: pci at 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>;
diff --git a/target/linux/bmips/files/drivers/pci/controller/pci-bcm6348.c b/target/linux/bmips/files/drivers/pci/controller/pci-bcm6348.c
index 730068ae79..39050b3de4 100644
--- a/target/linux/bmips/files/drivers/pci/controller/pci-bcm6348.c
+++ b/target/linux/bmips/files/drivers/pci/controller/pci-bcm6348.c
@@ -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.




More information about the lede-commits mailing list