From 4a8592eeabbdd2795b691ed88cc6e95610e5493b Mon Sep 17 00:00:00 2001 From: Samuel Holland Date: Tue, 31 Oct 2023 00:17:40 -0500 Subject: [PATCH] sunxi: binman: Support FIT generation for 32-bit SoCs 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. This requires to provide an entry point property for the U-Boot image node, which confuses some loaders like sunxi-fel, so protect that to only be used if we have no BL31. Signed-off-by: Samuel Holland [Andre: filter U-Boot entry point property] Reviewed-by: Andre Przywara Reviewed-by: Simon Glass --- arch/arm/dts/sunxi-u-boot.dtsi | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/arch/arm/dts/sunxi-u-boot.dtsi b/arch/arm/dts/sunxi-u-boot.dtsi index 7a8764e463..0909a67883 100644 --- a/arch/arm/dts/sunxi-u-boot.dtsi +++ b/arch/arm/dts/sunxi-u-boot.dtsi @@ -1,5 +1,11 @@ #include +#ifdef CONFIG_ARM64 +#define ARCH "arm64" +#else +#define ARCH "arm" +#endif + / { aliases { mmc0 = &mmc0; @@ -34,30 +40,34 @@ 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 = ; +#if CONFIG_SUNXI_BL31_BASE == 0 + entry = ; +#endif 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 = ; entry = ; @@ -67,6 +77,7 @@ missing-msg = "atf-bl31-sunxi"; }; }; +#endif #if CONFIG_SUNXI_SCP_BASE scp { @@ -95,7 +106,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 -- 2.39.5