[PATCH 02/13] ARM: dts: broadcom: bcm2835-rpi: Move non simple-bus nodes to root level

Rob Herring robh at kernel.org
Mon Jan 12 10:09:15 PST 2026


On Fri, Jan 9, 2026 at 6:01 AM Marek Szyprowski
<m.szyprowski at samsung.com> wrote:
>
> On 07.01.2026 03:09, Rob Herring (Arm) wrote:
> > The 'gpu' and 'firmware' nodes are not MMIO devices, so they should not be
> > under a 'simple-bus'. Additionally, the "raspberrypi,bcm2835-power" node
> > is part of the firmware, so move it under the /firmware node.
> >
> > Signed-off-by: Rob Herring (Arm) <robh at kernel.org>
>
> This breaks operation of all drivers under the firmware node. I'm not
> exactly sure why, but they are not properly instantiated. It must be
> something specific to "firmware" name, but I didn't dig enough to find
> exactly where and why.
>
> After changing the "/firmware" node name "xfirmware" everything works again:
>
>
> diff --git a/arch/arm/boot/dts/broadcom/bcm2835-rpi.dtsi
> b/arch/arm/boot/dts/broadcom/bcm2835-rpi.dtsi
> index 9ab70b519a63..464f032ccb71 100644
> --- a/arch/arm/boot/dts/broadcom/bcm2835-rpi.dtsi
> +++ b/arch/arm/boot/dts/broadcom/bcm2835-rpi.dtsi
> @@ -1,7 +1,7 @@
>   #include <dt-bindings/power/raspberrypi-power.h>
>
>   / {
> -       firmware: firmware {
> +       firmware: xfirmware {
>                  compatible = "raspberrypi,bcm2835-firmware", "simple-mfd";
>                  mboxes = <&mailbox>;
>
>
> Same issue occurs with bcm2712 change (patch 3/13).

The issue is how /firmware is handled in drivers/of/platform.c and it
doesn't create a device for the /firmware node. I think the fix here
is /firmware needs to be just a container node and move
"raspberrypi,bcm2835-firmware" down a level. That also allows for
different types of firmware such as a TEE or SCMI should those or
something similar ever be needed.

I'll see if I can get kernelci to test that change. I don't think my
branch boots all boards though...

Rob



More information about the linux-arm-kernel mailing list