Hi Peter,

>
> 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?
>

In this hardware booting Linux would be close to impossible without
making hardware changes.
I was thinking maybe booting RTOSs from here, maybe freertos or zephyr.

I took this initially as PoC for porting U-Boot to a NO MMU
environment using a modern hardware.
I will share some workflow for the above in v2 but that might be while
before I port/write drivers for
some of the devices eg, timer , watchdog.

> > 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?
>

No, it hasn't been sent. Also since it is almost impossible to boot
linux here, shall I send it ?

> >   - 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.
>

Thanks for the clarifications.

> >   - 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
> >

Reply via email to