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

Reply via email to