Hi Bhargav, > This series adds initial U-Boot support for the Raspberry Pi Pico 2 board > and its RP2350 SoC, only the dual-core Cortex-M33 support is added.
It would be useful to give a bigger overview of *why* this is happening? Is it used to boot Linux, some other OS? How can I test the wider ecosystem that this functionality provides? > Sent as an RFC to get feedback on the overall approach before polishing > further. > > Status as of this RFC: > > - UART1 console works; UART0 is not usable yet. Need to investigate. > - Boot-tested on both Pico 2 and Pico 2 W boards. > - `make sandbox_defconfig` passes with patches applied. > - This series selects CPU_V7M for RP2350. RP2350's Cortex-M33 core is > Armv8-M since there is no CPU_V8M support in U-Boot yet. Is CPU_V7M > acceptable as a starting point with CPU_V8M as a later follow-up? > - RP2350 has no device tree in mainline Linux yet, so patch 2 > hand-writes rp2350.dtsi / rp2350-pico2.dts locally, and > rpi_pico2_defconfig uses CONFIG_OF_EMBED rather than > CONFIG_OF_UPSTREAM. Has it been sent to a list upstream for review? Is there a timeline for that to happen? > - board/raspberrypi/pico2/ is added alongside the existing, unrelated > BCM283x Raspberry Pi boards under board/raspberrypi/. Is this > directory placement acceptable given the SoC is unrelated, or should > it live elsewhere? It doesn't matter the relationship between SoCs, they're related because of the vendor. EG toradex is a board vendor that uses SoCs from a number of vendors. > - Some functions and structures such as `struct rp2350_clocks_regs` is > defined but not yet used. > - misc_init_r() sets a fixed value for the "serial#" environment > variable. This runs after relocation, so a successful env_set() here > confirms env works post-relocation. > > Flashing procedure used for testing: > > picotool uf2 convert u-boot.bin u-boot.uf2 --family rp2350-arm-s --offset > 0x10000000 > picotool load u-boot.uf2 -v -x > > Bootlog: > > U-Boot 2026.04-rc3-00070-gbabf6d42fec7-dirty (Jun 23 2026 - 01:55:20 > +0530) > > CPU: Raspberry Pi RP2350 > Model: Raspberry Pi Pico 2 > DRAM: 520 KiB > Core: 5 devices, 5 uclasses, devicetree: embed > MMC: > Loading Environment from nowhere... OK > In: serial@40078000 > Out: serial@40078000 > Err: serial@40078000 > RP2350> > > Bhargav Das (3): > arm: Add RP2350 architecture support > arm: dts: Add RP2350 device tree > board: raspberrypi: Add Pico 2 support > > arch/arm/Kconfig | 7 + > arch/arm/Makefile | 2 + > arch/arm/dts/Makefile | 1 + > arch/arm/dts/rp2350-pico2.dts | 30 +++ > arch/arm/dts/rp2350.dtsi | 32 +++ > arch/arm/include/asm/arch-rp2xxx/rp2350.h | 307 ++++++++++++++++++++++ > arch/arm/mach-rp2xxx/Kconfig | 58 ++++ > arch/arm/mach-rp2xxx/Makefile | 4 + > arch/arm/mach-rp2xxx/image_def.S | 23 ++ > arch/arm/mach-rp2xxx/rp2350.c | 261 ++++++++++++++++++ > arch/arm/mach-rp2xxx/u-boot.lds | 94 +++++++ > board/raspberrypi/pico2/Kconfig | 15 ++ > board/raspberrypi/pico2/MAINTAINERS | 9 + > board/raspberrypi/pico2/Makefile | 3 + > board/raspberrypi/pico2/pico2.c | 83 ++++++ > configs/rpi_pico2_defconfig | 29 ++ > include/configs/rpi_pico2.h | 48 ++++ > 17 files changed, 1006 insertions(+) > create mode 100644 arch/arm/dts/rp2350-pico2.dts > create mode 100644 arch/arm/dts/rp2350.dtsi > create mode 100644 arch/arm/include/asm/arch-rp2xxx/rp2350.h > create mode 100644 arch/arm/mach-rp2xxx/Kconfig > create mode 100644 arch/arm/mach-rp2xxx/Makefile > create mode 100644 arch/arm/mach-rp2xxx/image_def.S > create mode 100644 arch/arm/mach-rp2xxx/rp2350.c > create mode 100644 arch/arm/mach-rp2xxx/u-boot.lds > create mode 100644 board/raspberrypi/pico2/Kconfig > create mode 100644 board/raspberrypi/pico2/MAINTAINERS > create mode 100644 board/raspberrypi/pico2/Makefile > create mode 100644 board/raspberrypi/pico2/pico2.c > create mode 100644 configs/rpi_pico2_defconfig > create mode 100644 include/configs/rpi_pico2.h > > -- > 2.43.0 >
