// SPDX-License-Identifier: GPL-2.0+ /* * Copyright (C) 2019 Jagan Teki */ #include #ifdef CONFIG_ARM64 #define FIT_ARCH "arm64" #else #define FIT_ARCH "arm" #endif #if defined(CONFIG_SPL_GZIP) #define FIT_UBOOT_COMP "gzip" #elif defined(CONFIG_SPL_LZMA) #define FIT_UBOOT_COMP "lzma" #else #define FIT_UBOOT_COMP "none" #endif /* * SHA256 should be enabled in SPL when signature validation is involved, * CRC32 should only be used for basic checksum validation of FIT images. */ #if defined(CONFIG_SPL_FIT_SIGNATURE) #if defined(CONFIG_SPL_SHA256) #define FIT_HASH_ALGO "sha256" #elif defined(CONFIG_SPL_CRC32) #define FIT_HASH_ALGO "crc32" #endif #endif #if defined(CONFIG_SPL_FIT) && (defined(CONFIG_ARM64) || defined(CONFIG_SPL_OPTEE_IMAGE)) #define HAS_FIT #endif / { binman: binman { multiple-images; }; }; #ifdef CONFIG_SPL &binman { #ifdef HAS_FIT fit_template: template-1 { type = "fit"; #ifdef CONFIG_ARM64 description = "FIT image for U-Boot with bl31 (TF-A)"; #else description = "FIT image with OP-TEE"; #endif #address-cells = <1>; fit,fdt-list = "of-list"; fit,external-offset = ; fit,align = <512>; images { u-boot { description = "U-Boot"; type = "standalone"; os = "u-boot"; arch = FIT_ARCH; compression = FIT_UBOOT_COMP; load = ; entry = ; u-boot-nodtb { compress = FIT_UBOOT_COMP; }; #ifdef FIT_HASH_ALGO hash { algo = FIT_HASH_ALGO; }; #endif }; #ifdef CONFIG_ARM64 @atf-SEQ { fit,operation = "split-elf"; description = "ARM Trusted Firmware"; type = "firmware"; arch = FIT_ARCH; os = "arm-trusted-firmware"; compression = "none"; fit,load; fit,entry; fit,data; atf-bl31 { }; #ifdef FIT_HASH_ALGO hash { algo = FIT_HASH_ALGO; }; #endif }; @tee-SEQ { fit,operation = "split-elf"; description = "TEE"; type = "tee"; arch = FIT_ARCH; os = "tee"; compression = "none"; fit,load; fit,entry; fit,data; tee-os { optional; }; #ifdef FIT_HASH_ALGO hash { algo = FIT_HASH_ALGO; }; #endif }; #else /* !CONFIG_ARM64 */ op-tee { description = "OP-TEE"; type = "tee"; arch = FIT_ARCH; os = "tee"; compression = "none"; load = <(CFG_SYS_SDRAM_BASE + 0x8400000)>; entry = <(CFG_SYS_SDRAM_BASE + 0x8400000)>; tee-os { }; #ifdef FIT_HASH_ALGO hash { algo = FIT_HASH_ALGO; }; #endif }; #endif /* CONFIG_ARM64 */ @fdt-SEQ { description = "fdt-NAME"; compression = "none"; type = "flat_dt"; #ifdef FIT_HASH_ALGO hash { algo = FIT_HASH_ALGO; }; #endif }; }; configurations { default = "@config-DEFAULT-SEQ"; @config-SEQ { description = "NAME.dtb"; fdt = "fdt-SEQ"; #ifdef CONFIG_ARM64 fit,firmware = "atf-1", "u-boot"; #else fit,firmware = "op-tee", "u-boot"; #endif fit,loadables; fit,compatible; }; }; }; #endif /* HAS_FIT */ simple-bin { filename = "u-boot-rockchip.bin"; pad-byte = <0xff>; mkimage { filename = "idbloader.img"; args = "-n", CONFIG_SYS_SOC, "-T", "rksd"; multiple-data-files; #ifdef CONFIG_ROCKCHIP_EXTERNAL_TPL rockchip-tpl { }; #elif defined(CONFIG_TPL) u-boot-tpl { }; #endif u-boot-spl { }; }; #ifdef HAS_FIT fit { filename = "u-boot.itb"; insert-template = <&fit_template>; #else u-boot-img { #endif offset = ; }; }; #ifdef CONFIG_ROCKCHIP_SPI_IMAGE simple-bin-spi { filename = "u-boot-rockchip-spi.bin"; pad-byte = <0xff>; mkimage { filename = "idbloader-spi.img"; args = "-n", CONFIG_SYS_SOC, "-T", "rkspi"; multiple-data-files; #ifdef CONFIG_ROCKCHIP_EXTERNAL_TPL rockchip-tpl { }; #elif defined(CONFIG_TPL) u-boot-tpl { }; #endif u-boot-spl { }; }; #ifdef HAS_FIT fit { insert-template = <&fit_template>; #else u-boot-img { #endif /* Sync with u-boot,spl-payload-offset if present */ offset = ; }; }; #endif /* CONFIG_ROCKCHIP_SPI_IMAGE */ }; #endif /* CONFIG_SPL */