]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
bcm53xx: backport pcie patches 22307/head
authorRosen Penev <rosenp@gmail.com>
Mon, 2 Mar 2026 00:14:38 +0000 (16:14 -0800)
committerRobert Marko <robimarko@gmail.com>
Tue, 10 Mar 2026 10:23:45 +0000 (11:23 +0100)
Needed for various fixes.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22307
Signed-off-by: Robert Marko <robimarko@gmail.com>
target/linux/bcm53xx/patches-6.12/349-ARM-dts-BCM5301X-Describe-PCIe-controllers-fully.patch [new file with mode: 0644]
target/linux/bcm53xx/patches-6.12/350-ARM-dts-BCM5301X-add-root-pcie-bridges.patch [new file with mode: 0644]

diff --git a/target/linux/bcm53xx/patches-6.12/349-ARM-dts-BCM5301X-Describe-PCIe-controllers-fully.patch b/target/linux/bcm53xx/patches-6.12/349-ARM-dts-BCM5301X-Describe-PCIe-controllers-fully.patch
new file mode 100644 (file)
index 0000000..bf2c38b
--- /dev/null
@@ -0,0 +1,90 @@
+From 9f60f2d9e1920245acbb9b0493d0c073905c3976 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Thu, 8 Jan 2026 23:40:26 +0100
+Subject: [PATCH] ARM: dts: BCM5301X: Describe PCIe controllers fully
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Tested successfully on BCM47094 SoC using Linux's pcie-iproc-platform
+driver.
+
+This fixes:
+arch/arm/boot/dts/broadcom/bcm4708-asus-rt-ac56u.dtb: pcie@12000: 'device_type' is a required property
+        from schema $id: http://devicetree.org/schemas/pci/pci-bus.yaml#
+arch/arm/boot/dts/broadcom/bcm4708-asus-rt-ac56u.dtb: pcie@12000: 'ranges' is a required property
+        from schema $id: http://devicetree.org/schemas/pci/pci-bus.yaml#
+arch/arm/boot/dts/broadcom/bcm4708-asus-rt-ac56u.dtb: pcie@13000: 'device_type' is a required property
+        from schema $id: http://devicetree.org/schemas/pci/pci-bus.yaml#
+arch/arm/boot/dts/broadcom/bcm4708-asus-rt-ac56u.dtb: pcie@13000: 'ranges' is a required property
+        from schema $id: http://devicetree.org/schemas/pci/pci-bus.yaml#
+arch/arm/boot/dts/broadcom/bcm4708-asus-rt-ac56u.dtb: pcie@14000: 'device_type' is a required property
+        from schema $id: http://devicetree.org/schemas/pci/pci-bus.yaml#
+arch/arm/boot/dts/broadcom/bcm4708-asus-rt-ac56u.dtb: pcie@14000: 'ranges' is a required property
+        from schema $id: http://devicetree.org/schemas/pci/pci-bus.yaml#
+
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+Link: https://lore.kernel.org/r/20260108224026.3550-1-zajec5@gmail.com
+Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
+---
+ arch/arm/boot/dts/broadcom/bcm-ns.dtsi | 26 +++++++++++++++++++++++++-
+ 1 file changed, 25 insertions(+), 1 deletion(-)
+
+--- a/arch/arm/boot/dts/broadcom/bcm-ns.dtsi
++++ b/arch/arm/boot/dts/broadcom/bcm-ns.dtsi
+@@ -95,7 +95,10 @@
+       axi@18000000 {
+               compatible = "brcm,bus-axi";
+               reg = <0x18000000 0x1000>;
+-              ranges = <0x00000000 0x18000000 0x00100000>;
++              ranges = <0x00000000 0x18000000 0x00100000>,
++                       <0x08000000 0x08000000 0x08000000>,
++                       <0x20000000 0x20000000 0x08000000>,
++                       <0x28000000 0x28000000 0x08000000>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+@@ -182,22 +185,43 @@
+               };
+               pcie0: pcie@12000 {
++                      compatible = "brcm,iproc-pcie";
+                       reg = <0x00012000 0x1000>;
++                      ranges = <0x82000000 0 0x08000000  0x08000000  0 0x08000000>;
++                      interrupt-map-mask = <0 0 0 0>;
++                      interrupt-map = <0 0 0 0 &gic GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
++                      bus-range = <0x00 0xff>;
++                      device_type = "pci";
++                      #interrupt-cells = <1>;
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+               };
+               pcie1: pcie@13000 {
++                      compatible = "brcm,iproc-pcie";
+                       reg = <0x00013000 0x1000>;
++                      ranges = <0x82000000 0 0x20000000  0x20000000  0 0x08000000>;
++                      interrupt-map-mask = <0 0 0 0>;
++                      interrupt-map = <0 0 0 0 &gic GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
++                      bus-range = <0x00 0xff>;
++                      device_type = "pci";
++                      #interrupt-cells = <1>;
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+               };
+               pcie2: pcie@14000 {
++                      compatible = "brcm,iproc-pcie";
+                       reg = <0x00014000 0x1000>;
++                      ranges = <0x82000000 0 0x28000000  0x28000000  0 0x08000000>;
++                      interrupt-map-mask = <0 0 0 0>;
++                      interrupt-map = <0 0 0 0 &gic GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
++                      bus-range = <0x00 0xff>;
++                      device_type = "pci";
++                      #interrupt-cells = <1>;
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+               };
diff --git a/target/linux/bcm53xx/patches-6.12/350-ARM-dts-BCM5301X-add-root-pcie-bridges.patch b/target/linux/bcm53xx/patches-6.12/350-ARM-dts-BCM5301X-add-root-pcie-bridges.patch
new file mode 100644 (file)
index 0000000..75b3457
--- /dev/null
@@ -0,0 +1,272 @@
+From 14022b103616ec01417e6c707095d57d61162450 Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Sun, 1 Mar 2026 16:01:04 -0800
+Subject: [PATCH] ARM: dts: BCM5301X: add root pcie bridges
+
+They are always required and instead of duplicating a definition in each
+dts file, place it in dtsi with labels and work based on that.
+
+Also changed each bridge@ to pcie@ to get extra dtc static analysis.
+
+Fixed bridge numbers as a result.
+
+Signed-off-by: Rosen Penev <rosenp@gmail.com>
+---
+ arch/arm/boot/dts/broadcom/bcm-ns.dtsi        | 30 ++++++++
+ .../dts/broadcom/bcm4709-netgear-r8000.dts    | 73 ++++++++-----------
+ .../dts/broadcom/bcm47094-luxul-xap-1610.dts  | 36 ++-------
+ .../broadcom/bcm47094-luxul-xwr-3150-v1.dts   | 36 ++-------
+ 4 files changed, 76 insertions(+), 99 deletions(-)
+
+--- a/arch/arm/boot/dts/broadcom/bcm-ns.dtsi
++++ b/arch/arm/boot/dts/broadcom/bcm-ns.dtsi
+@@ -196,6 +196,16 @@
+                       #interrupt-cells = <1>;
+                       #address-cells = <3>;
+                       #size-cells = <2>;
++
++                      pcie_bridge0: pcie@0 {
++                              device_type = "pci";
++                              reg = <0x0000 0 0 0 0>;
++                              bus-range = <0x00 0xff>;
++
++                              #address-cells = <3>;
++                              #size-cells = <2>;
++                              ranges;
++                      };
+               };
+               pcie1: pcie@13000 {
+@@ -210,6 +220,16 @@
+                       #interrupt-cells = <1>;
+                       #address-cells = <3>;
+                       #size-cells = <2>;
++
++                      pcie_bridge1: pcie@0 {
++                              device_type = "pci";
++                              reg = <0x0000 0 0 0 0>;
++                              bus-range = <0x00 0xff>;
++
++                              #address-cells = <3>;
++                              #size-cells = <2>;
++                              ranges;
++                      };
+               };
+               pcie2: pcie@14000 {
+@@ -224,6 +244,16 @@
+                       #interrupt-cells = <1>;
+                       #address-cells = <3>;
+                       #size-cells = <2>;
++
++                      pcie_bridge2: pcie@0 {
++                              device_type = "pci";
++                              reg = <0x0000 0 0 0 0>;
++                              bus-range = <0x00 0xff>;
++
++                              #address-cells = <3>;
++                              #size-cells = <2>;
++                              ranges;
++                      };
+               };
+               usb2: usb2@21000 {
+--- a/arch/arm/boot/dts/broadcom/bcm4709-netgear-r8000.dts
++++ b/arch/arm/boot/dts/broadcom/bcm4709-netgear-r8000.dts
+@@ -126,66 +126,53 @@
+       };
+ };
+-&pcie0 {
+-      #address-cells = <3>;
+-      #size-cells = <2>;
+-
+-      bridge@0,0,0 {
++&pcie_bridge0 {
++      wifi@0,0 {
++              compatible = "brcm,bcm4366-fmac", "brcm,bcm4329-fmac";
+               reg = <0x0000 0 0 0 0>;
+-
+-              #address-cells = <3>;
+-              #size-cells = <2>;
+-
+-              wifi@0,1,0 {
+-                      compatible = "brcm,bcm4366-fmac", "brcm,bcm4329-fmac";
+-                      reg = <0x0000 0 0 0 0>;
+-                      ieee80211-freq-limit = <5735000 5835000>;
+-                      brcm,ccode-map = "JP-JP-78", "US-Q2-86";
+-              };
++              ieee80211-freq-limit = <5735000 5835000>;
++              brcm,ccode-map = "JP-JP-78", "US-Q2-86";
+       };
+ };
+-&pcie1 {
+-      #address-cells = <3>;
+-      #size-cells = <2>;
+-
+-      bridge@1,0,0 {
++&pcie_bridge1 {
++      pcie@0,0 {
++              device_type = "pci";
+               reg = <0x0000 0 0 0 0>;
++              bus-range = <0x01 0xff>;
+               #address-cells = <3>;
+               #size-cells = <2>;
++              ranges;
+-              bridge@1,1,0 {
+-                      reg = <0x0000 0 0 0 0>;
++              pcie@1,0 {
++                      device_type = "pci";
++                      reg = <0x800 0 0 0 0>;
+                       #address-cells = <3>;
+                       #size-cells = <2>;
++                      ranges;
+-                      bridge@1,0 {
+-                              reg = <0x800 0 0 0 0>;
+-
+-                              #address-cells = <3>;
+-                              #size-cells = <2>;
+-
+-                              wifi@0,0 {
+-                                      compatible = "brcm,bcm4366-fmac", "brcm,bcm4329-fmac";
+-                                      reg = <0x0000 0 0 0 0>;
+-                                      brcm,ccode-map = "JP-JP-78", "US-Q2-86";
+-                              };
++                      wifi@0,0 {
++                              compatible = "brcm,bcm4366-fmac", "brcm,bcm4329-fmac";
++                              reg = <0x0000 0 0 0 0>;
++                              brcm,ccode-map = "JP-JP-78", "US-Q2-86";
+                       };
++              };
+-                      bridge@1,2,2 {
+-                              reg = <0x1000 0 0 0 0>;
++              pcie@2,0 {
++                      device_type = "pci";
++                      reg = <0x1000 0 0 0 0>;
+-                              #address-cells = <3>;
+-                              #size-cells = <2>;
++                      #address-cells = <3>;
++                      #size-cells = <2>;
++                      ranges;
+-                              wifi@1,4,0 {
+-                                      compatible = "brcm,bcm4366-fmac", "brcm,bcm4329-fmac";
+-                                      reg = <0x0000 0 0 0 0>;
+-                                      ieee80211-freq-limit = <5170000 5730000>;
+-                                      brcm,ccode-map = "JP-JP-78", "US-Q2-86";
+-                              };
++                      wifi@0,0 {
++                              compatible = "brcm,bcm4366-fmac", "brcm,bcm4329-fmac";
++                              reg = <0x0000 0 0 0 0>;
++                              ieee80211-freq-limit = <5170000 5730000>;
++                              brcm,ccode-map = "JP-JP-78", "US-Q2-86";
+                       };
+               };
+       };
+--- a/arch/arm/boot/dts/broadcom/bcm47094-luxul-xap-1610.dts
++++ b/arch/arm/boot/dts/broadcom/bcm47094-luxul-xap-1610.dts
+@@ -65,39 +65,19 @@
+ };
+-&pcie0 {
+-      #address-cells = <3>;
+-      #size-cells = <2>;
+-
+-      bridge@0,0 {
++&pcie_bridge0 {
++      wifi@0,0 {
++              compatible = "brcm,bcm4366-fmac", "brcm,bcm4329-fmac";
+               reg = <0x0000 0 0 0 0>;
+-
+-              #address-cells = <3>;
+-              #size-cells = <2>;
+-
+-              wifi@0,0 {
+-                      compatible = "brcm,bcm4366-fmac", "brcm,bcm4329-fmac";
+-                      reg = <0x0000 0 0 0 0>;
+-                      brcm,ccode-map = "AU-AU-920", "CA-CA-892", "GB-DE-964", "NZ-AU-920", "US-US-825";
+-              };
++              brcm,ccode-map = "AU-AU-920", "CA-CA-892", "GB-DE-964", "NZ-AU-920", "US-US-825";
+       };
+ };
+-&pcie1 {
+-      #address-cells = <3>;
+-      #size-cells = <2>;
+-
+-      bridge@0,0 {
++&pcie_bridge1 {
++      wifi@0,0 {
++              compatible = "brcm,bcm4366-fmac", "brcm,bcm4329-fmac";
+               reg = <0x0000 0 0 0 0>;
+-
+-              #address-cells = <3>;
+-              #size-cells = <2>;
+-
+-              wifi@0,0 {
+-                      compatible = "brcm,bcm4366-fmac", "brcm,bcm4329-fmac";
+-                      reg = <0x0000 0 0 0 0>;
+-                      brcm,ccode-map = "AU-AU-920", "CA-CA-892", "GB-DE-964", "NZ-AU-920", "US-US-825";
+-              };
++              brcm,ccode-map = "AU-AU-920", "CA-CA-892", "GB-DE-964", "NZ-AU-920", "US-US-825";
+       };
+ };
+--- a/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3150-v1.dts
++++ b/arch/arm/boot/dts/broadcom/bcm47094-luxul-xwr-3150-v1.dts
+@@ -81,39 +81,19 @@
+       nvmem-cell-names = "mac-address";
+ };
+-&pcie0 {
+-      #address-cells = <3>;
+-      #size-cells = <2>;
+-
+-      bridge@0,0 {
++&pcie_bridge0 {
++      wifi@0,0 {
++              compatible = "brcm,bcm4366-fmac", "brcm,bcm4329-fmac";
+               reg = <0x0000 0 0 0 0>;
+-
+-              #address-cells = <3>;
+-              #size-cells = <2>;
+-
+-              wifi@0,0 {
+-                      compatible = "brcm,bcm4366-fmac", "brcm,bcm4329-fmac";
+-                      reg = <0x0000 0 0 0 0>;
+-                      brcm,ccode-map = "AU-AU-953", "CA-CA-946", "GB-E0-846", "NZ-AU-953", "US-Q2-930";
+-              };
++              brcm,ccode-map = "AU-AU-953", "CA-CA-946", "GB-E0-846", "NZ-AU-953", "US-Q2-930";
+       };
+ };
+-&pcie1 {
+-      #address-cells = <3>;
+-      #size-cells = <2>;
+-
+-      bridge@0,0 {
++&pcie_bridge1 {
++      wifi@0,0 {
++              compatible = "brcm,bcm4366-fmac", "brcm,bcm4329-fmac";
+               reg = <0x0000 0 0 0 0>;
+-
+-              #address-cells = <3>;
+-              #size-cells = <2>;
+-
+-              wifi@0,0 {
+-                      compatible = "brcm,bcm4366-fmac", "brcm,bcm4329-fmac";
+-                      reg = <0x0000 0 0 0 0>;
+-                      brcm,ccode-map = "AU-AU-953", "CA-CA-946", "GB-E0-846", "NZ-AU-953", "US-Q2-930";
+-              };
++              brcm,ccode-map = "AU-AU-953", "CA-CA-946", "GB-E0-846", "NZ-AU-953", "US-Q2-930";
+       };
+ };