mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-12-21 01:12:11 +01:00
binman can omit packaging an optional blob when it is missing.
This allows us to not bother with config options.
The core challenge is the interaction between tf-a and OP-TEE where
U-Boot/binman does not know whether tf-a was built with SPD=opteed or
without. This is important because tf-a might jump into the void when no
optee_os is present, leading to boot failure. Thus by marking it
optional, user is prompted to recheck (due to the warning message)
whether they really have the right combination of tf-a and optee.
Due to a bug in binman, we had to guard binman tee.bin with OPTEE config
as builds would error when tee.bin was not present in path; Even though
optee_os was marked as optional in the binman tree. Since the bug has
been resolved in
commit d4f61eae2ab7 ("Merge patch series "Fix handling of optional blobs in binman"")
we can mark it optional again without getting build errors.
Note that after this commit a warning will be printed when optee is not
present for a binman build.
Image 'image' is missing optional external blobs but is still functional: tee-os
/binman/section/fit/images/tee/tee-os (tee.bin):
See the documentation for your board. You may need to build Open Portable
Trusted Execution Environment (OP-TEE) and build with TEE=/path/to/tee.bin
Signed-off-by: Yannic Moog <y.moog@phytec.de>
296 lines
5.0 KiB
Plaintext
296 lines
5.0 KiB
Plaintext
// SPDX-License-Identifier: GPL-2.0+
|
|
/*
|
|
* Copyright 2022 Logic PD, Inc dba Beacon EmbeddedWorks
|
|
*/
|
|
|
|
/ {
|
|
binman: binman {
|
|
};
|
|
|
|
#ifdef CONFIG_OPTEE
|
|
firmware {
|
|
optee {
|
|
compatible = "linaro,optee-tz";
|
|
method = "smc";
|
|
};
|
|
};
|
|
#endif
|
|
|
|
wdt-reboot {
|
|
compatible = "wdt-reboot";
|
|
wdt = <&wdog1>;
|
|
bootph-pre-ram;
|
|
};
|
|
};
|
|
|
|
&{/soc@0} {
|
|
bootph-all;
|
|
bootph-pre-ram;
|
|
};
|
|
|
|
&aips1 {
|
|
bootph-pre-ram;
|
|
bootph-all;
|
|
};
|
|
|
|
&aips2 {
|
|
bootph-pre-ram;
|
|
};
|
|
|
|
&aips3 {
|
|
bootph-pre-ram;
|
|
};
|
|
|
|
&aips4 {
|
|
bootph-pre-ram;
|
|
};
|
|
|
|
&clk {
|
|
bootph-pre-ram;
|
|
bootph-all;
|
|
/delete-property/ assigned-clocks;
|
|
/delete-property/ assigned-clock-parents;
|
|
/delete-property/ assigned-clock-rates;
|
|
};
|
|
|
|
#ifdef CONFIG_FSL_CAAM
|
|
&crypto {
|
|
bootph-pre-ram;
|
|
};
|
|
#endif
|
|
|
|
&iomuxc {
|
|
bootph-pre-ram;
|
|
};
|
|
|
|
&osc_24m {
|
|
bootph-pre-ram;
|
|
bootph-all;
|
|
};
|
|
|
|
&osc_32k {
|
|
bootph-pre-ram;
|
|
bootph-all;
|
|
};
|
|
|
|
#ifdef CONFIG_FSL_CAAM
|
|
&sec_jr0 {
|
|
bootph-pre-ram;
|
|
};
|
|
|
|
&sec_jr1 {
|
|
bootph-pre-ram;
|
|
};
|
|
|
|
&sec_jr2 {
|
|
bootph-pre-ram;
|
|
};
|
|
#endif
|
|
|
|
&spba1 {
|
|
bootph-pre-ram;
|
|
};
|
|
|
|
&wdog1 {
|
|
bootph-pre-ram;
|
|
};
|
|
|
|
&binman {
|
|
filename = "flash.bin";
|
|
section {
|
|
pad-byte = <0x00>;
|
|
|
|
#ifdef CONFIG_FSPI_CONF_HEADER
|
|
fspi_conf_block {
|
|
filename = CONFIG_FSPI_CONF_FILE;
|
|
type = "blob-ext";
|
|
offset = <0x400>;
|
|
};
|
|
#endif
|
|
|
|
#ifdef CONFIG_IMX_HAB
|
|
nxp-imx8mcst@0 {
|
|
filename = "u-boot-spl-mkimage.signed.bin";
|
|
nxp,loader-address = <CONFIG_SPL_TEXT_BASE>;
|
|
nxp,unlock;
|
|
args; /* Needed by mkimage etype superclass */
|
|
#endif
|
|
|
|
binman_imx_spl: nxp-imx8mimage {
|
|
filename = "u-boot-spl-mkimage.bin";
|
|
nxp,boot-from = "sd";
|
|
nxp,rom-version = <2>;
|
|
nxp,loader-address = <CONFIG_SPL_TEXT_BASE>;
|
|
args; /* Needed by mkimage etype superclass */
|
|
|
|
section {
|
|
filename = "u-boot-spl-ddr.bin";
|
|
pad-byte = <0xff>;
|
|
align-size = <4>;
|
|
align = <4>;
|
|
|
|
u-boot-spl {
|
|
align-end = <4>;
|
|
filename = "u-boot-spl.bin";
|
|
};
|
|
|
|
ddr-1d-imem-fw {
|
|
#ifdef CONFIG_IMX8M_LPDDR4
|
|
filename = "lpddr4_pmu_train_1d_imem.bin";
|
|
#elif CONFIG_IMX8M_DDR4
|
|
filename = "ddr4_imem_1d_201810.bin";
|
|
#else
|
|
filename = "ddr3_imem_1d.bin";
|
|
#endif
|
|
type = "blob-ext";
|
|
align-end = <4>;
|
|
};
|
|
|
|
ddr-1d-dmem-fw {
|
|
#ifdef CONFIG_IMX8M_LPDDR4
|
|
filename = "lpddr4_pmu_train_1d_dmem.bin";
|
|
#elif CONFIG_IMX8M_DDR4
|
|
filename = "ddr4_dmem_1d_201810.bin";
|
|
#else
|
|
filename = "ddr3_dmem_1d.bin";
|
|
#endif
|
|
type = "blob-ext";
|
|
align-end = <4>;
|
|
};
|
|
|
|
#if defined(CONFIG_IMX8M_LPDDR4) || defined(CONFIG_IMX8M_DDR4)
|
|
ddr-2d-imem-fw {
|
|
#ifdef CONFIG_IMX8M_LPDDR4
|
|
filename = "lpddr4_pmu_train_2d_imem.bin";
|
|
#else
|
|
filename = "ddr4_imem_2d_201810.bin";
|
|
#endif
|
|
type = "blob-ext";
|
|
align-end = <4>;
|
|
};
|
|
|
|
ddr-2d-dmem-fw {
|
|
#ifdef CONFIG_IMX8M_LPDDR4
|
|
filename = "lpddr4_pmu_train_2d_dmem.bin";
|
|
#else
|
|
filename = "ddr4_dmem_2d_201810.bin";
|
|
#endif
|
|
type = "blob-ext";
|
|
align-end = <4>;
|
|
};
|
|
#endif
|
|
};
|
|
};
|
|
|
|
#ifdef CONFIG_IMX_HAB
|
|
};
|
|
|
|
nxp-imx8mcst@1 {
|
|
filename = "u-boot-fit.signed.bin";
|
|
nxp,loader-address = <CONFIG_SPL_LOAD_FIT_ADDRESS>;
|
|
#ifdef CONFIG_FSPI_CONF_HEADER
|
|
offset = <0x59000>;
|
|
#else
|
|
offset = <0x58000>;
|
|
#endif
|
|
args; /* Needed by mkimage etype superclass */
|
|
#endif
|
|
|
|
binman_imx_fit: fit {
|
|
description = "Configuration to load ATF before U-Boot";
|
|
filename = "u-boot.itb";
|
|
#ifndef CONFIG_IMX_HAB
|
|
fit,external-offset = <CONFIG_FIT_EXTERNAL_OFFSET>;
|
|
#endif
|
|
fit,fdt-list = "of-list";
|
|
#address-cells = <1>;
|
|
#ifdef CONFIG_FSPI_CONF_HEADER
|
|
offset = <0x59000>;
|
|
#else
|
|
offset = <0x58000>;
|
|
#endif
|
|
|
|
images {
|
|
uboot {
|
|
arch = "arm64";
|
|
compression = "none";
|
|
description = "U-Boot (64-bit)";
|
|
load = <CONFIG_TEXT_BASE>;
|
|
type = "standalone";
|
|
|
|
uboot-blob {
|
|
filename = "u-boot-nodtb.bin";
|
|
type = "blob-ext";
|
|
};
|
|
};
|
|
|
|
#ifndef CONFIG_ARMV8_PSCI
|
|
atf {
|
|
arch = "arm64";
|
|
compression = "none";
|
|
description = "ARM Trusted Firmware";
|
|
entry = <0x960000>;
|
|
load = <0x960000>;
|
|
type = "firmware";
|
|
|
|
atf-blob {
|
|
filename = "bl31.bin";
|
|
type = "atf-bl31";
|
|
};
|
|
};
|
|
#endif
|
|
|
|
tee: tee {
|
|
description = "OP-TEE";
|
|
type = "tee";
|
|
arch = "arm64";
|
|
compression = "none";
|
|
os = "tee";
|
|
load = <CONFIG_IMX8M_OPTEE_LOAD_ADDR>;
|
|
entry = <CONFIG_IMX8M_OPTEE_LOAD_ADDR>;
|
|
|
|
tee-os {
|
|
filename = "tee.bin";
|
|
optional;
|
|
};
|
|
};
|
|
|
|
binman_fip: fip {
|
|
arch = "arm64";
|
|
compression = "none";
|
|
description = "Trusted Firmware FIP";
|
|
load = <0x40310000>;
|
|
type = "firmware";
|
|
};
|
|
|
|
@fdt-SEQ {
|
|
compression = "none";
|
|
description = "NAME";
|
|
type = "flat_dt";
|
|
|
|
uboot-fdt-blob {
|
|
filename = "u-boot.dtb";
|
|
type = "blob-ext";
|
|
};
|
|
};
|
|
};
|
|
|
|
configurations {
|
|
default = "@config-DEFAULT-SEQ";
|
|
|
|
@config-SEQ {
|
|
description = "NAME";
|
|
fdt = "fdt-SEQ";
|
|
firmware = "uboot";
|
|
#ifndef CONFIG_ARMV8_PSCI
|
|
loadables = "atf", "tee";
|
|
#endif
|
|
};
|
|
};
|
|
};
|
|
#ifdef CONFIG_IMX_HAB
|
|
};
|
|
#endif
|
|
};
|
|
};
|