// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (c) Siemens AG, 2020-2023
 *
 * Authors:
 *   Jan Kiszka <jan.kiszka@siemens.com>
 *   Chao Zeng <chao.zeng@siemens.com>
 */

#include <config.h>

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

&binman {
	common_part: template {
		pad-byte = <0xff>;
		size = <0x8c0000>;
		allow-repack;

		blob-ext@0 {
			offset = <0x000000>;
			missing-msg = "iot2050-seboot";
		};

		fit@180000 {
			offset = <0x180000>;
			filename = "tispl.bin";
			pad-byte = <0xff>;
			description = "Configuration to load ATF and SPL";

			images {
				atf {
					description = "ARM Trusted Firmware";
					type = "firmware";
					arch = "arm64";
					compression = "none";
					os = "arm-trusted-firmware";
					load = <CONFIG_K3_ATF_LOAD_ADDR>;
					entry = <CONFIG_K3_ATF_LOAD_ADDR>;
					atf: atf-bl31 {
					};
				};

				tee {
					description = "OP-TEE";
					type = "tee";
					arch = "arm64";
					compression = "none";
					os = "tee";
					load = <0x9e800000>;
					entry = <0x9e800000>;
					tee: tee-os {
					};
				};

				dm {
					description = "DM binary";
					type = "firmware";
					arch = "arm32";
					compression = "none";
					os = "DM";
					load = <0x89000000>;
					entry = <0x89000000>;
					blob-ext {
						filename = "/dev/null";
					};
				};

				spl {
					description = "SPL (64-bit)";
					type = "standalone";
					os = "U-Boot";
					arch = "arm64";
					compression = "none";
					load = <CONFIG_SPL_TEXT_BASE>;
					entry = <CONFIG_SPL_TEXT_BASE>;
					u_boot_spl_nodtb: blob-ext {
						filename = "spl/u-boot-spl-nodtb.bin";
					};
				};

				fdt-0 {
					description = "k3-am65-iot2050-spl.dtb";
					type = "flat_dt";
					arch = "arm";
					compression = "none";
					spl_am65x_evm_dtb: blob-ext {
						filename = "spl/dts/k3-am65-iot2050-spl.dtb";
					};
				};
			};

			configurations {
				default = "spl";
				spl {
					fdt = "fdt-0";
					firmware = "atf";
					loadables = "tee", "dm", "spl";
				};
			};
		};

		fit@380000 {
			description = "U-Boot for IOT2050";
			offset = <0x380000>;
			images {
				u-boot {
					description = "U-Boot";
					type = "standalone";
					arch = "arm64";
					os = "u-boot";
					compression = "none";
					load = <0x80800000>;
					entry = <0x80800000>;
					u-boot-nodtb {
					};
					hash {
						algo = "sha256";
					};
				};

				@fdt-SEQ {
					description = "fdt-NAME";
					type = "flat_dt";
					arch = "arm64";
					compression = "none";
					hash {
						algo = "sha256";
					};
				};

#ifdef CONFIG_WDT_K3_RTI_FW_FILE
				k3-rti-wdt-firmware {
					type = "firmware";
					load = <0x82000000>;
					arch = "arm";
					compression = "none";
					blob-ext {
						filename = CONFIG_WDT_K3_RTI_FW_FILE;
						missing-msg = "k3-rti-wdt-firmware";
					};
					hash {
						algo = "sha256";
					};
				};
#endif
			};

			configurations {
				@config-SEQ {
					description = "NAME";
					firmware = "u-boot";
					fdt = "fdt-SEQ";
					signature {
						sign-images = "firmware", "fdt", "loadables";
					};
				};
			};
		};

		fdtmap {
		};

		/* primary env */
		fill@680000 {
			offset = <0x680000>;
			size   = <0x020000>;
			fill-byte = [00];
		};
		/* secondary env */
		fill@6a0000 {
			offset = <0x6a0000>;
			size   = <0x020000>;
			fill-byte = [00];
		};

/* OTP update command block */
#ifdef CONFIG_IOT2050_EMBED_OTPCMD
		blob-ext@6c0000 {
			offset = <0x6c0000>;

			size   = <0x010000>;
			filename = "otpcmd.bin";
			missing-msg = "iot2050-otpcmd";
		};
#else
		fill@6c0000 {
			offset = <0x6c0000>;
			size   = <0x010000>;
			fill-byte = [ff];
		};
#endif
	};

	flash-pg1 {
		filename = "flash-pg1.bin";
		insert-template = <&common_part>;

		blob-ext@0 {
			filename = "seboot_pg1.bin";
		};

		fit@380000 {
			fit,fdt-list-val = "k3-am6528-iot2050-basic", "k3-am6548-iot2050-advanced";

			configurations {
				default = "k3-am6528-iot2050-basic";
				@config-SEQ {
					loadables =
#ifdef CONFIG_WDT_K3_RTI_FW_FILE
						"k3-rti-wdt-firmware",
#endif
						<>;
				};
			};
		};
	};

	flash-pg2 {
		filename = "flash-pg2.bin";
		insert-template = <&common_part>;

		blob-ext@0 {
			filename = "seboot_pg2.bin";
		};

		fit@380000 {
			fit,fdt-list-val = "k3-am6528-iot2050-basic-pg2", "k3-am6548-iot2050-advanced-pg2", "k3-am6548-iot2050-advanced-m2";

			images {
				bkey-usb3-overlay {
					description = "M.2-bkey-usb3-overlay";
					type = "blob";
					load = <0x82100000>;
					arch = "arm64";
					compression = "none";
					blob-ext {
						filename = "k3-am6548-iot2050-advanced-m2-bkey-usb3-overlay.dtbo";
					};
					hash {
						algo = "sha256";
					};
				};

				bkey-ekey-pcie-overlay {
					description = "M.2-bkey-ekey-pcie-overlay";
					type = "blob";
					load = <0x82110000>;
					arch = "arm64";
					compression = "none";
					blob-ext {
						filename = "k3-am6548-iot2050-advanced-m2-bkey-ekey-pcie-overlay.dtbo";
					};
					hash {
						algo = "sha256";
					};
				};
			};

			configurations {
				default = "k3-am6528-iot2050-basic-pg2";
				@config-SEQ {
					loadables =
#ifdef CONFIG_WDT_K3_RTI_FW_FILE
						"k3-rti-wdt-firmware",
#endif
						"bkey-usb3-overlay",
						"bkey-ekey-pcie-overlay";
				};
			};
		};
	};
};
