--- /dev/null
+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>;
+ };
--- /dev/null
+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";
+ };
+ };
+