Re: [RFC PATCH 2/3] arm: dts: Add RP2350 device tree

Simon Glass <[email protected]>
Newsgroups gmane.comp.boot-loaders.u-boot
Message-ID <CAFLszTisb-KaWUZAfQrOCf_0xA85auyY2UU5oBvuFAfFnqM86g@mail.gmail.com>
Hi Bhargav,

On 2026-07-26T11:56:45, Bhargav Das <[email protected]> wrote:
> arm: dts: Add RP2350 device tree
>
> Add device tree for the RP2350 SoC (rp2350.dtsi) and the Raspberry Pi
> Pico 2 board (rp2350-pico2.dts).
>
> rpi_pico2_defconfig selects CONFIG_OF_EMBED, building the dtb from
> u-boot's source rather than CONFIG_OF_UPSTREAM.
>
> Signed-off-by: Bhargav Das <[email protected]>
>
> arch/arm/dts/Makefile         |  1 +
>  arch/arm/dts/rp2350-pico2.dts | 30 ++++++++++++++++++++++++++++++
>  arch/arm/dts/rp2350.dtsi      | 32 ++++++++++++++++++++++++++++++++
>  3 files changed, 63 insertions(+)

> diff --git a/arch/arm/dts/rp2350-pico2.dts b/arch/arm/dts/rp2350-pico2.dts
> @@ -0,0 +1,30 @@
> +// SPDX-License-Identifier: GPL-2.0+

Since the aim is to align with a mainline Linux device tree (assuming
they would accept a file for something that cannot boot Linux!),
please use the dual 'GPL-2.0-only OR MIT' licence that new Linux DT
files use. It saves a relicensing step later, and most new DTs in
arch/arm/dts already do this. Same applies to rp2350.dtsi

> diff --git a/arch/arm/dts/rp2350-pico2.dts b/arch/arm/dts/rp2350-pico2.dts
> @@ -0,0 +1,30 @@
> +     memory@20000000 {
> +             device_type = "memory";
> +             reg = <0x20000000 0x00082000>;  /* 520 KB SRAM */
> +     };

The 520KB SRAM is a fixed feature of the RP2350 itself and identical
on every board using this SoC, so this memory node belongs in
rp2350.dtsi rather than the board .dts. Only genuinely board-specific
things (aliases, chosen, which UART is enabled) belong here.

> diff --git a/arch/arm/dts/rp2350.dtsi b/arch/arm/dts/rp2350.dtsi
> @@ -0,0 +1,32 @@
> +             uart0: serial@40070000 {
> +                     compatible = "arm,pl011", "arm,primecell";
> +                     reg = <0x40070000 0x1000>;
> +                     clock = <150000000>;    /* CLK_PERI = clk_sys 150MHz */
> +                     status = "disabled";
> +             };

The 'clock' property is a U-Boot-specific fallback that the pl011
driver reads via dev_read_u32_default() - the standard pl011 binding
uses a 'clocks' phandle plus 'clock-names'. It works for now since
there is no clock driver, but it will diverge from whatever eventually
goes upstream to Linux. Just flagging it so it is not forgotten once a
clock uclass driver appears - a comment in the commit message noting
this is a temporary shortcut would help.

Regards,
Simon
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.