u-boot/arch/arm/dts/sunxi-u-boot.dtsi
Samuel Holland 4a8592eeab 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 <samuel@sholland.org>
[Andre: filter U-Boot entry point property]
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2024-01-29 14:31:00 +00:00

128 lines
2.2 KiB
Text

#include <config.h>
#ifdef CONFIG_ARM64
#define ARCH "arm64"
#else
#define ARCH "arm"
#endif
/ {
aliases {
mmc0 = &mmc0;
#if CONFIG_MMC_SUNXI_SLOT_EXTRA == 2
mmc1 = &mmc2;
#endif
};
binman: binman {
multiple-images;
};
};
/* Let U-Boot be the firmware layer that controls the watchdog. */
#ifdef CONFIG_MACH_SUN8I_R528
&wdt {
status = "okay";
};
#endif
&binman {
u-boot-sunxi-with-spl {
filename = "u-boot-sunxi-with-spl.bin";
pad-byte = <0xff>;
blob {
/*
* This value matches SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR
* and SYS_SPI_U_BOOT_OFFS if those are defined.
*/
min-size = <0x8000>;
filename = "spl/sunxi-spl.bin";
};
#ifdef CONFIG_SPL_LOAD_FIT
fit {
description = "Configuration to load U-Boot and firmware";
#address-cells = <1>;
fit,fdt-list = "of-list";
images {
uboot {
description = "U-Boot";
type = "standalone";
os = "u-boot";
arch = ARCH;
compression = "none";
load = <CONFIG_TEXT_BASE>;
#if CONFIG_SUNXI_BL31_BASE == 0
entry = <CONFIG_TEXT_BASE>;
#endif
u-boot-nodtb {
};
};
#if CONFIG_SUNXI_BL31_BASE
atf {
description = "ARM Trusted Firmware";
type = "firmware";
os = "arm-trusted-firmware";
arch = ARCH;
compression = "none";
load = <CONFIG_SUNXI_BL31_BASE>;
entry = <CONFIG_SUNXI_BL31_BASE>;
atf-bl31 {
filename = "bl31.bin";
missing-msg = "atf-bl31-sunxi";
};
};
#endif
#if CONFIG_SUNXI_SCP_BASE
scp {
description = "SCP firmware";
type = "firmware";
arch = "or1k";
compression = "none";
load = <CONFIG_SUNXI_SCP_BASE>;
scp {
filename = "scp.bin";
missing-msg = "scp-sunxi";
};
};
#endif
@fdt-SEQ {
description = "NAME";
type = "flat_dt";
compression = "none";
};
};
configurations {
default = "@config-DEFAULT-SEQ";
@config-SEQ {
description = "NAME";
#if CONFIG_SUNXI_BL31_BASE
firmware = "atf";
#else
firmware = "uboot";
#endif
#if CONFIG_SUNXI_SCP_BASE
loadables = "scp", "uboot";
#else
loadables = "uboot";
#endif
fdt = "fdt-SEQ";
};
};
};
#else
u-boot-img {
};
#endif
};
};