[PATCH v2 3/4] sunxi: binman: Support FIT generation for 32-bit SoCs

Samuel Holland samuel at sholland.org
Mon Jan 23 00:42:38 CET 2023


On 1/22/23 17:37, Jesse Taube wrote:
> 
> 
> On 1/22/23 16:15, Samuel Holland wrote:
>> 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.
>>
>> Signed-off-by: Samuel Holland <samuel at sholland.org>
>> ---
>>
>> 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 f38359fd42..c7089b8619 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
>> +
> There should be a better way to do this, but if not shouldn't the else
> should be elseif because of the RISCV SOCs.

This file is in arch/arm, so it will not be used for RISC-V. RISC-V SoCs
have a different firmware (OpenSBI instead of TF-A), so they would need
a different binman configuration anyway. If you know of a better way to
get the architecture string, I would be happy to use it, but I don't see
any code in the U-Boot tree that generates the string "arm64".

Regards,
Samuel

>>   / {
>>       aliases {
>>   #ifndef CONFIG_MACH_SUNIV
>> @@ -29,30 +35,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>;
>> @@ -62,6 +70,7 @@
>>                           missing-msg = "atf-bl31-sunxi";
>>                       };
>>                   };
>> +#endif
>>     #if CONFIG_SUNXI_SCP_BASE
>>                   scp {
>> @@ -90,7 +99,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



More information about the U-Boot mailing list