// 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)
		fit: fit {
			description = "FIT image for U-Boot with bl31 (TF-A)";
			#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 (64-bit)";
					type = "standalone";
					os = "U-Boot";
					arch = "arm64";
					compression = "none";
					load = <CONFIG_TEXT_BASE>;
					entry = <CONFIG_TEXT_BASE>;
					u-boot-nodtb {
					};
#ifdef CONFIG_SPL_FIT_SIGNATURE
					hash {
						algo = "sha256";
					};
#endif
				};

				@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
				};

				@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";
					fit,firmware = "atf-1", "u-boot";
					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 {
			};
		};

#ifdef CONFIG_ARM64
		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 */