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

Reply via email to