bcm53xx: backport pcie patches
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run

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>
This commit is contained in:
Rosen Penev 2026-03-01 16:14:38 -08:00 committed by Robert Marko
parent b995f318b2
commit 24ce1491cc
2 changed files with 362 additions and 0 deletions

View file

@ -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>;
};

View file

@ -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";
};
};