On Tue, 31 Oct 2023 00:17:40 -0500 Samuel Holland <sam...@sholland.org> wrote:
Hi, > Some 32-bit SoCs can use SCP firmware to implement additional PSCI > functionality, such as system suspend. In order to load this firmware > from SPL, we need to generate and use a FIT instead of a legacy image. > > Adjust the binman FIT definition so it does not rely on TF-A BL31, as > this is not used on 32-bit SoCs. Instead, after loading the firmware, > U-Boot proper is executed directly. I like that it removes the artificial restriction to use a FIT image only on arm64 builds, and indeed hinges that on the relevant CONFIG_SPL_LOAD_FIT variable. The changes look alright, even "uboot" being mentioned twice (once as firmware, once as loadable): the SPL code can cope with that. > Signed-off-by: Samuel Holland <sam...@sholland.org> Reviewed-by: Andre Przywara <andre.przyw...@arm.com> Cheers, Andre > --- > > (no changes since v2) > > Changes in v2: > - Rely on binman min-size instead of using explicit offsets > - Use Kconfig for firmware addresses instead of an #ifdef staircase > > arch/arm/dts/sunxi-u-boot.dtsi | 23 ++++++++++++++++++----- > 1 file changed, 18 insertions(+), 5 deletions(-) > > diff --git a/arch/arm/dts/sunxi-u-boot.dtsi b/arch/arm/dts/sunxi-u-boot.dtsi > index 7a8764e463b..ed1cb91eeb5 100644 > --- a/arch/arm/dts/sunxi-u-boot.dtsi > +++ b/arch/arm/dts/sunxi-u-boot.dtsi > @@ -1,5 +1,11 @@ > #include <config.h> > > +#ifdef CONFIG_ARM64 > +#define ARCH "arm64" > +#else > +#define ARCH "arm" > +#endif > + > / { > aliases { > mmc0 = &mmc0; > @@ -34,30 +40,32 @@ > filename = "spl/sunxi-spl.bin"; > }; > > -#ifdef CONFIG_ARM64 > +#ifdef CONFIG_SPL_LOAD_FIT > fit { > - description = "Configuration to load ATF before U-Boot"; > + description = "Configuration to load U-Boot and > firmware"; > #address-cells = <1>; > fit,fdt-list = "of-list"; > > images { > uboot { > - description = "U-Boot (64-bit)"; > + description = "U-Boot"; > type = "standalone"; > os = "u-boot"; > - arch = "arm64"; > + arch = ARCH; > compression = "none"; > load = <CONFIG_TEXT_BASE>; > + entry = <CONFIG_TEXT_BASE>; > > u-boot-nodtb { > }; > }; > > +#if CONFIG_SUNXI_BL31_BASE > atf { > description = "ARM Trusted Firmware"; > type = "firmware"; > os = "arm-trusted-firmware"; > - arch = "arm64"; > + arch = ARCH; > compression = "none"; > load = <CONFIG_SUNXI_BL31_BASE>; > entry = <CONFIG_SUNXI_BL31_BASE>; > @@ -67,6 +75,7 @@ > missing-msg = "atf-bl31-sunxi"; > }; > }; > +#endif > > #if CONFIG_SUNXI_SCP_BASE > scp { > @@ -95,7 +104,11 @@ > > @config-SEQ { > description = "NAME"; > +#if CONFIG_SUNXI_BL31_BASE > firmware = "atf"; > +#else > + firmware = "uboot"; > +#endif > #if CONFIG_SUNXI_SCP_BASE > loadables = "scp", "uboot"; > #else