[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