Skip to contentSkip to conversation

ARM: dts: broadcom: bcm2835-rpi: Move the firmware node down 1 level

PATCH In review Rob Herring (Arm) 5 participants 7 messages Jan 14 – Mar 19

Subsystems (3)
lore
Share & tools
lore

Rob Herring (Arm)

author maintainer
#0 lore raw

PATCH 1/2 ARM: dts: broadcom: bcm2835-rpi: Move the firmware node down 1 level

Commit 32eea985999b ("ARM: dts: broadcom: bcm2835-rpi: Move non simple-bus nodes to root level") moved the firmware nodes into the standard /firmware. However, /firmware is intended to be just a container for firmware nodes as it is possible to have multiple types of firmware (e.g. SCMI, OP-TEE, etc.). Move the RPi firmware down a level.

Fixes 32eea985999b ("ARM: dts: broadcom: bcm2835-rpi: Move non simple-bus nodes to root level")

---
This is only half the fix. Unfortunately, a kernel change[1] is also needed to make this all work. I do plan for that to go to stable. I'll leave it up to the Broadcom maintainers whether it's preferred to revert the fixed patches or apply these fixes. A 3rd option is revert for now and apply these DT changes some time later to give some time for stable updates.

Rob

[1] https://lore.kernel.org/all/[email protected]/

 arch/arm/boot/dts/broadcom/bcm2835-rpi.dtsi | 24 +++++++++++----------
 1 file changed, 13 insertions(+), 11 deletions(-)
arch/arm/boot/dts/broadcom/bcm2835-rpi.dtsi +13 -11
index 9ab70b519a63..46c91468f4c5 100644
@@ -1,19 +1,21 @@
 #include <dt-bindings/power/raspberrypi-power.h>
 
 / {
-	firmware: firmware {
-		compatible = "raspberrypi,bcm2835-firmware", "simple-mfd";
-		mboxes = <&mailbox>;
+	firmware {
+		firmware: rpi-firmware {
+			compatible = "raspberrypi,bcm2835-firmware", "simple-mfd";
+			mboxes = <&mailbox>;
 
-		firmware_clocks: clocks {
-			compatible = "raspberrypi,firmware-clocks";
-			#clock-cells = <1>;
-		};
+			firmware_clocks: clocks {
+				compatible = "raspberrypi,firmware-clocks";
+				#clock-cells = <1>;
+			};
 
-		power: power {
-			compatible = "raspberrypi,bcm2835-power";
-			firmware = <&firmware>;
-			#power-domain-cells = <1>;
+			power: power {
+				compatible = "raspberrypi,bcm2835-power";
+				firmware = <&firmware>;
+				#power-domain-cells = <1>;
+			};
 		};
 	};
 
Signature · 1 line
2.51.0
author maintainer
#1 lore raw

PATCH 2/2 arm64: dts: broadcom: bcm2712-rpi: Move the firmware node down 1 level

Commit b32673d226c9 ("arm64: dts: broadcom: bcm2712: Move non simple-bus nodes to root level") moved the firmware nodes into the standard /firmware. However, /firmware is intended to be just a container for firmware nodes as it is possible to have multiple types of firmware (e.g. SCMI, OP-TEE, etc.). Move the RPi firmware down a level.

Fixes b32673d226c9 ("arm64: dts: broadcom: bcm2712: Move non simple-bus nodes to root level")
---
 .../dts/broadcom/bcm2712-rpi-5-b-base.dtsi    | 40 ++++++++++---------
 1 file changed, 21 insertions(+), 19 deletions(-)
arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b-base.dtsi +21 -19
index 7d4742ebe247..d0b7137e07d2 100644
@@ -44,25 +44,27 @@ power_button: power-button {
 		};
 	};
 
-	firmware: firmware {
-		compatible = "raspberrypi,bcm2835-firmware", "simple-mfd";
-
-		mboxes = <&mailbox>;
-
-		firmware_clocks: clocks {
-			compatible = "raspberrypi,firmware-clocks";
-			#clock-cells = <1>;
-		};
-
-		reset: reset {
-			compatible = "raspberrypi,firmware-reset";
-			#reset-cells = <1>;
-		};
-
-		power: power {
-			compatible = "raspberrypi,bcm2835-power";
-			firmware = <&firmware>;
-			#power-domain-cells = <1>;
+	firmware {
+		firmware: rpi-firmware {
+			compatible = "raspberrypi,bcm2835-firmware", "simple-mfd";
+
+			mboxes = <&mailbox>;
+
+			firmware_clocks: clocks {
+				compatible = "raspberrypi,firmware-clocks";
+				#clock-cells = <1>;
+			};
+
+			reset: reset {
+				compatible = "raspberrypi,firmware-reset";
+				#reset-cells = <1>;
+			};
+
+			power: power {
+				compatible = "raspberrypi,bcm2835-power";
+				firmware = <&firmware>;
+				#power-domain-cells = <1>;
+			};
 		};
 	};
 
Signature · 1 line
2.51.0
maintainer
#2 lore raw
In reply to Rob Herring (Arm)
Quoted 9 lines · Rob Herring (Arm)

Commit 32eea985999b ("ARM: dts: broadcom: bcm2835-rpi: Move non simple-bus nodes to root level") moved the firmware nodes into the standard /firmware. However, /firmware is intended to be just a container for firmware nodes as it is possible to have multiple types of firmware (e.g. SCMI, OP-TEE, etc.). Move the RPi firmware down a level.

Fixes 32eea985999b ("ARM: dts: broadcom: bcm2835-rpi: Move non simple-bus nodes to root level")
Quoted 7 lines

---
This is only half the fix. Unfortunately, a kernel change[1] is also needed to make this all work. I do plan for that to go to stable. I'll leave it up to the Broadcom maintainers whether it's preferred to revert the fixed patches or apply these fixes. A 3rd option is revert for now and apply these DT changes some time later to give some time for stable updates.

Let's wait until your fix for the /firmware match table gets applied and then I will pick up your two changes.

Signature · 1 line
Florian
#3 lore raw
Quoted 19 lines · Florian Fainelli
Quoted 10 lines · Rob Herring (Arm)

Commit 32eea985999b ("ARM: dts: broadcom: bcm2835-rpi: Move non simple-bus nodes to root level") moved the firmware nodes into the standard /firmware. However, /firmware is intended to be just a container for firmware nodes as it is possible to have multiple types of firmware (e.g. SCMI, OP-TEE, etc.). Move the RPi firmware down a level.

Fixes 32eea985999b ("ARM: dts: broadcom: bcm2835-rpi: Move non

simple-bus nodes to root level")

Quoted 7 lines

---
This is only half the fix. Unfortunately, a kernel change[1] is also needed to make this all work. I do plan for that to go to stable. I'll leave it up to the Broadcom maintainers whether it's preferred to revert the fixed patches or apply these fixes. A 3rd option is revert for now and apply these DT changes some time later to give some time for stable updates.

Quoted 2 lines

Let's wait until your fix for the /firmware match table gets applied and then I will pick up your two changes.

Florian: I've noticed that the $subject patch has been applied to yesterday's linux-next as commit 0603d8af97ff, but the code applied in Your tree differs from what has been posted in this thread. See:

https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/arch/arm/boot/dts/broadcom/bcm2835-rpi.dtsi?h=next-20260318&id=0603d8af97fff097daa118faf04d9f439b2227ec

https://lore.kernel.org/all/[email protected]/

https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/arch/arm/boot/dts/broadcom/bcm2835-rpi.dtsi?h=next-20260318

The "firmware" node in Your tree is under "soc" node, but without adding a "compatible = simple-mfd;" property there it won't be populated, what breaks operation of all drivers requiring the firmware driver(s).

Best regards

Signature · 2 lines
Marek Szyprowski, PhD
Samsung R&D Institute Poland
#4 lore raw
Quoted 24 lines · Marek Szyprowski
Quoted 19 lines · Florian Fainelli
Quoted 10 lines · Rob Herring (Arm)

Commit 32eea985999b ("ARM: dts: broadcom: bcm2835-rpi: Move non simple-bus nodes to root level") moved the firmware nodes into the standard /firmware. However, /firmware is intended to be just a container for firmware nodes as it is possible to have multiple types of firmware (e.g. SCMI, OP-TEE, etc.). Move the RPi firmware down a level.

Fixes 32eea985999b ("ARM: dts: broadcom: bcm2835-rpi: Move non

simple-bus nodes to root level")

Quoted 7 lines

---
This is only half the fix. Unfortunately, a kernel change[1] is also needed to make this all work. I do plan for that to go to stable. I'll leave it up to the Broadcom maintainers whether it's preferred to revert the fixed patches or apply these fixes. A 3rd option is revert for now and apply these DT changes some time later to give some time for stable updates.

Quoted 2 lines

Let's wait until your fix for the /firmware match table gets applied and then I will pick up your two changes.

Quoted 8 lines

Florian: I've noticed that the $subject patch has been applied to yesterday's linux-next as commit 0603d8af97ff, but the code applied in Your tree differs from what has been posted in this thread. See:

https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/arch/arm/boot/dts/broadcom/bcm2835-rpi.dtsi?h=next-20260318&id=0603d8af97fff097daa118faf04d9f439b2227ec

https://lore.kernel.org/all/[email protected]/

And regardless firmware as non-MMIO cannot be placed in soc node. Nothing in patch SoB changelog explains why the patch was modified when applying (and it is substantial change).

Best regards,
Krzysztof

#5 lore raw
In reply to Marek Szyprowski
Quoted 3 lines · Marek Szyprowski

Florian: I've noticed that the $subject patch has been applied to yesterday's linux-next as commit 0603d8af97ff, but the code applied in Your tree differs from what has been posted in this thread. See:

...

Quoted 3 lines

The "firmware" node in Your tree is under "soc" node, but without adding a "compatible = simple-mfd;" property there it won't be populated, what breaks operation of all drivers requiring the firmware driver(s).

This includes the ethernet controller so all testing based on NFS root is having a bad time :(

maintainer
#6 lore raw
In reply to Marek Szyprowski
Quoted 30 lines · Marek Szyprowski
Quoted 19 lines · Florian Fainelli
Quoted 10 lines · Rob Herring (Arm)

Commit 32eea985999b ("ARM: dts: broadcom: bcm2835-rpi: Move non simple-bus nodes to root level") moved the firmware nodes into the standard /firmware. However, /firmware is intended to be just a container for firmware nodes as it is possible to have multiple types of firmware (e.g. SCMI, OP-TEE, etc.). Move the RPi firmware down a level.

Fixes 32eea985999b ("ARM: dts: broadcom: bcm2835-rpi: Move non

simple-bus nodes to root level")

Quoted 7 lines

---
This is only half the fix. Unfortunately, a kernel change[1] is also needed to make this all work. I do plan for that to go to stable. I'll leave it up to the Broadcom maintainers whether it's preferred to revert the fixed patches or apply these fixes. A 3rd option is revert for now and apply these DT changes some time later to give some time for stable updates.

Quoted 2 lines

Let's wait until your fix for the /firmware match table gets applied and then I will pick up your two changes.

Florian: I've noticed that the $subject patch has been applied to yesterday's linux-next as commit 0603d8af97ff, but the code applied in Your tree differs from what has been posted in this thread. See:

https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/arch/arm/boot/dts/broadcom/bcm2835-rpi.dtsi?h=next-20260318&id=0603d8af97fff097daa118faf04d9f439b2227ec

Quoted 8 lines

https://lore.kernel.org/all/[email protected]/

https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/arch/arm/boot/dts/broadcom/bcm2835-rpi.dtsi?h=next-20260318

The "firmware" node in Your tree is under "soc" node, but without adding a "compatible = simple-mfd;" property there it won't be populated, what breaks operation of all drivers requiring the firmware driver(s).

Yes I see what happened here, Rob's patch is dependent upon 32eea985999b which I had initially applied then dropped, and then I did not (re)apply it again as a prerequisite for that one we are replying to and I incorrectly resolved the conflict as a result. It should have been clear that no conflict resolution should have been necessary, *sigh*.

This is now fixed and pushed out, sorry about that, definitively a sloppy move here.

Will let that simmer in linux-next for a day and then sent out the pull requests.

Thanks again Marek for catching this, my test rack does not currently have a working RPi system, something to address.

Signature · 1 line
Florian