// SPDX-License-Identifier: GPL-2.0+
/*
 * Copyright (C) 2019 Jagan Teki <jagan@amarulasolutions.com>
 */

#include <config.h>

/ {
	binman: binman {
		multiple-images;
	};
};

#ifdef CONFIG_SPL
&binman {
	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 {
			};
		};

#if defined(CONFIG_SPL_FIT) && (defined(CONFIG_ARM64) || defined(CONFIG_SPL_OPTEE_IMAGE))
		fit: 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";
			filename = "u-boot.itb";
			fit,external-offset = <CONFIG_FIT_EXTERNAL_OFFSET>;
			fit,align = <512>;
			offset = <CONFIG_SPL_PAD_TO>;
			images {
				u-boot {
					description = "U-Boot";
					type = "standalone";
					os = "U-Boot";
#ifdef CONFIG_ARM64
					arch = "arm64";
#else
					arch = "arm";
#endif
					compression = "none";
					load = <CONFIG_TEXT_BASE>;
					entry = <CONFIG_TEXT_BASE>;
					u-boot-nodtb {
					};
#ifdef CONFIG_SPL_FIT_SIGNATURE
					hash {
						algo = "sha256";
					};
#endif
				};

#ifdef CONFIG_ARM64
				@atf-SEQ {
					fit,operation = "split-elf";
					description = "ARM Trusted Firmware";
					type = "firmware";
					arch = "arm64";
					os = "arm-trusted-firmware";
					compression = "none";
					fit,load;
					fit,entry;
					fit,data;

					atf-bl31 {
					};
#ifdef CONFIG_SPL_FIT_SIGNATURE
					hash {
						algo = "sha256";
					};
#endif
				};
				@tee-SEQ {
					fit,operation = "split-elf";
					description = "TEE";
					type = "tee";
					arch = "arm64";
					os = "tee";
					compression = "none";
					fit,load;
					fit,entry;
					fit,data;

					tee-os {
						optional;
					};
#ifdef CONFIG_SPL_FIT_SIGNATURE
					hash {
						algo = "sha256";
					};
#endif
				};
#else
				op-tee {
					description = "OP-TEE";
					type = "tee";
					arch = "arm";
					os = "tee";
					compression = "none";
					load = <(CFG_SYS_SDRAM_BASE + 0x8400000)>;
					entry = <(CFG_SYS_SDRAM_BASE + 0x8400000)>;

					tee-os {
					};
#ifdef CONFIG_SPL_FIT_SIGNATURE
					hash {
						algo = "sha256";
					};
#endif
				};
#endif

				@fdt-SEQ {
					description = "fdt-NAME";
					compression = "none";
					type = "flat_dt";
#ifdef CONFIG_SPL_FIT_SIGNATURE
					hash {
						algo = "sha256";
					};
#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;
				};
			};
		};
#else
		u-boot-img {
			offset = <CONFIG_SPL_PAD_TO>;
		};
#endif
	};

#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 {
			};
		};

#if defined(CONFIG_ARM64) || defined(CONFIG_SPL_OPTEE_IMAGE)
		fit {
			type = "blob";
			filename = "u-boot.itb";
#else
		u-boot-img {
#endif
			/* Sync with u-boot,spl-payload-offset if present */
			offset = <CONFIG_SYS_SPI_U_BOOT_OFFS>;
		};
	};
#endif /* CONFIG_ROCKCHIP_SPI_IMAGE */
};
#endif /* CONFIG_SPL */
