Re: [PATCH v2 08/10] rockchip: spl: default to Falcon mode boot in SPL if enabled

Alexey Charkov <[email protected]> Tue, 4 Aug 2026 18:27:46 +0400
Newsgroups gmane.comp.boot-loaders.u-boot
Message-ID <CAKTNdwHJLa47xA7GOuLL_dKW04GuqsoZZH-0Ma9C8Vre8AC6OQ@mail.gmail.com>
On Tue, Aug 4, 2026 at 5:03=E2=80=AFPM Simon Glass <[email protected]> wrote=
:
>
> Hi Alexey,
>
> On 2026-07-31T17:10:44, Alexey Charkov <[email protected]> wrote:
> > rockchip: spl: default to Falcon mode boot in SPL if enabled
> >
> > Common code calls into a platform specific function to determine whethe=
r
> > to attempt OS boot in Falcon mode.
> >
> > There is currently no platform logic to drive that decision on Rockchip=
,
> > so attempt Falcon mode boot whenever it is enabled in the configuration=
.
> >
> > This can be overridden by board code if needed with appropriate logic, =
such
> > as checking for a button state to skip Falcon mode boot when pressed.
> >
> > Signed-off-by: Alexey Charkov <[email protected]>
> >
> > arch/arm/mach-rockchip/spl.c | 29 +++++++++++++++++++++++++++++
> >  1 file changed, 29 insertions(+)
>
> > diff --git a/arch/arm/mach-rockchip/spl.c b/arch/arm/mach-rockchip/spl.=
c
> > @@ -153,6 +153,35 @@ void spl_board_prepare_for_boot(void)
> > +/*
> > + * This overrides the weak default in common/spl/spl.c, so it must not=
 itself
> > + * be weak: two weak definitions of the same symbol would leave the ch=
oice
> > + * between them up to archive link order.
> > + */
> > +int spl_start_uboot(void)
> > +{
> > +     return board_spl_start_uboot();
> > +}
> > +#endif
>
> You've already seen the vyasa-rk3288 problem here.

Yes, it's an odd one out, will fix up in the next iteration.

> > diff --git a/arch/arm/mach-rockchip/spl.c b/arch/arm/mach-rockchip/spl.=
c
> > @@ -153,6 +153,35 @@ void spl_board_prepare_for_boot(void)
> > +#if CONFIG_IS_ENABLED(OS_BOOT)
> > +/**
> > + * board_spl_start_uboot() - decides whether to boot the OS or U-Boot =
proper
> > + *
> > + * If Falcon mode (direct Linux boot via TF-A from SPL) is selected vi=
a config,
> > + * try booting to Linux first, with automatic fallback to U-Boot if it=
 fails to
> > + * load. Boards that want to implement conditional U-Boot/Linux select=
ion logic
> > + * override this, for instance to look at a button.
>
> Introducing a Rockchip-only board_spl_start_uboot() alongside the
> existing standard spl_start_uboot() hook is awkward - a board author
> has to know that on Rockchip the hook to override is the new one, not
> the documented one. Would it not be cleaner to leave spl_start_uboot()
> weak in the common code, drop this wrapper, and just have the
> mach-rockchip default live behind the existing weak symbol? The
> link-order concern applies equally to every other arch that provides a
> non-weak default (arm-k3, layerscape, zynqmp=E2=80=A6), and none of them =
add a
> second indirection.

It would be cleaner, but it foregoes the board-level override by
construction, which is a useful thing to support. Maybe I'll add a
Kconfig symbol which defaults y if CONFIG_ARM64 && CONFIG_SPL_OS_BOOT
&& MACH_ROCKCHIP and just let the boards disable it via defconfig when
they define a smarter version.

Best regards,
Alexey