// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (C) 2022-2023 Texas Instruments Incorporated - https://www.ti.com/
 */

#include "k3-binman.dtsi"

#ifdef CONFIG_TARGET_AM625_R5_EVM

&binman {
	tiboot3-am62x-hs-evm.bin {
		filename = "tiboot3-am62x-hs-evm.bin";
		ti-secure-rom {
			content = <&u_boot_spl>, <&ti_fs_enc>, <&combined_tifs_cfg>,
				<&combined_dm_cfg>, <&sysfw_inner_cert>;
			combined;
			dm-data;
			sysfw-inner-cert;
			keyfile = "custMpk.pem";
			sw-rev = <1>;
			content-sbl = <&u_boot_spl>;
			content-sysfw = <&ti_fs_enc>;
			content-sysfw-data = <&combined_tifs_cfg>;
			content-sysfw-inner-cert = <&sysfw_inner_cert>;
			content-dm-data = <&combined_dm_cfg>;
			load = <0x43c00000>;
			load-sysfw = <0x40000>;
			load-sysfw-data = <0x67000>;
			load-dm-data = <0x43c3a800>;
		};
		u_boot_spl: u-boot-spl {
			no-expanded;
		};
		ti_fs_enc: ti-fs-enc.bin {
			filename = "ti-sysfw/ti-fs-firmware-am62x-hs-enc.bin";
			type = "blob-ext";
			optional;
		};
		combined_tifs_cfg: combined-tifs-cfg.bin {
			filename = "combined-tifs-cfg.bin";
			type = "blob-ext";
		};
		sysfw_inner_cert: sysfw-inner-cert {
			filename = "ti-sysfw/ti-fs-firmware-am62x-hs-cert.bin";
			type = "blob-ext";
			optional;
		};
		combined_dm_cfg: combined-dm-cfg.bin {
			filename = "combined-dm-cfg.bin";
			type = "blob-ext";
		};
	};
};

&binman {
	tiboot3-am62x-hs-fs-evm.bin {
		filename = "tiboot3-am62x-hs-fs-evm.bin";
		symlink = "tiboot3.bin";
		ti-secure-rom {
			content = <&u_boot_spl_fs>, <&ti_fs_enc_fs>, <&combined_tifs_cfg_fs>,
				<&combined_dm_cfg_fs>, <&sysfw_inner_cert_fs>;
			combined;
			dm-data;
			sysfw-inner-cert;
			keyfile = "custMpk.pem";
			sw-rev = <1>;
			content-sbl = <&u_boot_spl_fs>;
			content-sysfw = <&ti_fs_enc_fs>;
			content-sysfw-data = <&combined_tifs_cfg_fs>;
			content-sysfw-inner-cert = <&sysfw_inner_cert_fs>;
			content-dm-data = <&combined_dm_cfg_fs>;
			load = <0x43c00000>;
			load-sysfw = <0x40000>;
			load-sysfw-data = <0x67000>;
			load-dm-data = <0x43c3a800>;
		};
		u_boot_spl_fs: u-boot-spl {
			no-expanded;
		};
		ti_fs_enc_fs: ti-fs-enc.bin {
			filename = "ti-sysfw/ti-fs-firmware-am62x-hs-fs-enc.bin";
			type = "blob-ext";
			optional;
		};
		combined_tifs_cfg_fs: combined-tifs-cfg.bin {
			filename = "combined-tifs-cfg.bin";
			type = "blob-ext";
		};
		sysfw_inner_cert_fs: sysfw-inner-cert {
			filename = "ti-sysfw/ti-fs-firmware-am62x-hs-fs-cert.bin";
			type = "blob-ext";
			optional;
		};
		combined_dm_cfg_fs: combined-dm-cfg.bin {
			filename = "combined-dm-cfg.bin";
			type = "blob-ext";
		};
	};
};

&binman {
	tiboot3-am62x-gp-evm.bin {
		filename = "tiboot3-am62x-gp-evm.bin";
		ti-secure-rom {
			content = <&u_boot_spl_unsigned>, <&ti_fs_gp>,
				<&combined_tifs_cfg_gp>, <&combined_dm_cfg_gp>;
			combined;
			dm-data;
			content-sbl = <&u_boot_spl_unsigned>;
			load = <0x43c00000>;
			content-sysfw = <&ti_fs_gp>;
			load-sysfw = <0x40000>;
			content-sysfw-data = <&combined_tifs_cfg_gp>;
			load-sysfw-data = <0x67000>;
			content-dm-data = <&combined_dm_cfg_gp>;
			load-dm-data = <0x43c3a800>;
			sw-rev = <1>;
			keyfile = "ti-degenerate-key.pem";
		};
		u_boot_spl_unsigned: u-boot-spl {
			no-expanded;
		};
		ti_fs_gp: ti-fs-gp.bin {
			filename = "ti-sysfw/ti-fs-firmware-am62x-gp.bin";
			type = "blob-ext";
			optional;
		};
		combined_tifs_cfg_gp: combined-tifs-cfg-gp.bin {
			filename = "combined-tifs-cfg.bin";
			type = "blob-ext";
		};
		combined_dm_cfg_gp: combined-dm-cfg-gp.bin {
			filename = "combined-dm-cfg.bin";
			type = "blob-ext";
		};

	};
};

#endif

#ifdef CONFIG_TARGET_AM625_A53_EVM

#define SPL_NODTB "spl/u-boot-spl-nodtb.bin"
#define SPL_AM625_SK_DTB "spl/dts/k3-am625-sk.dtb"

#define UBOOT_NODTB "u-boot-nodtb.bin"
#define AM625_SK_DTB "u-boot.dtb"

&binman {
	ti-dm {
		filename = "ti-dm.bin";
		blob-ext {
			filename = "ti-dm/am62xx/ipc_echo_testb_mcu1_0_release_strip.xer5f";
		};
	};
	ti-spl {
		filename = "tispl.bin";
		pad-byte = <0xff>;

		fit {
			description = "Configuration to load ATF and SPL";
			#address-cells = <1>;

			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>;
					ti-secure {
						content = <&atf>;
						keyfile = "custMpk.pem";
					};
					atf: atf-bl31 {
					};
				};

				tee {
					description = "OP-TEE";
					type = "tee";
					arch = "arm64";
					compression = "none";
					os = "tee";
					load = <0x9e800000>;
					entry = <0x9e800000>;
					ti-secure {
						content = <&tee>;
						keyfile = "custMpk.pem";
					};
					tee: tee-os {
					};
				};

				dm {
					description = "DM binary";
					type = "firmware";
					arch = "arm32";
					compression = "none";
					os = "DM";
					load = <0x89000000>;
					entry = <0x89000000>;
					ti-secure {
						content = <&dm>;
						keyfile = "custMpk.pem";
					};
					dm: blob-ext {
						filename = "ti-dm.bin";
					};
				};

				spl {
					description = "SPL (64-bit)";
					type = "standalone";
					os = "U-Boot";
					arch = "arm64";
					compression = "none";
					load = <CONFIG_SPL_TEXT_BASE>;
					entry = <CONFIG_SPL_TEXT_BASE>;
					ti-secure {
						content = <&u_boot_spl_nodtb>;
						keyfile = "custMpk.pem";
					};
					u_boot_spl_nodtb: blob-ext {
						filename = SPL_NODTB;
					};
				};

				fdt-0 {
					description = "k3-am625-sk";
					type = "flat_dt";
					arch = "arm";
					compression = "none";
					ti-secure {
						content = <&spl_am625_sk_dtb>;
						keyfile = "custMpk.pem";
					};
					spl_am625_sk_dtb: blob-ext {
						filename = SPL_AM625_SK_DTB;
					};

				};

			};

			configurations {
				default = "conf-0";

				conf-0 {
					description = "k3-am625-sk";
					firmware = "atf";
					loadables = "tee", "dm", "spl";
					fdt = "fdt-0";
				};
			};
		};
	};
};

&binman {
	u-boot {
		filename = "u-boot.img";
		pad-byte = <0xff>;

		fit {
			description = "FIT image with multiple configurations";

			images {
				uboot {
					description = "U-Boot for AM625 board";
					type = "firmware";
					os = "u-boot";
					arch = "arm";
					compression = "none";
					load = <CONFIG_TEXT_BASE>;
					ti-secure {
						content = <&u_boot_nodtb>;
						keyfile = "custMpk.pem";
					};
					u_boot_nodtb: u-boot-nodtb {
					};
					hash {
						algo = "crc32";
					};
				};

				fdt-0 {
					description = "k3-am625-sk";
					type = "flat_dt";
					arch = "arm";
					compression = "none";
					ti-secure {
						content = <&am625_sk_dtb>;
						keyfile = "custMpk.pem";
					};
					am625_sk_dtb: blob-ext {
						filename = AM625_SK_DTB;
					};
					hash {
						algo = "crc32";
					};
				};
			};

			configurations {
				default = "conf-0";

				conf-0 {
					description = "k3-am625-sk";
					firmware = "uboot";
					loadables = "uboot";
					fdt = "fdt-0";
				};

			};
		};
	};
};

&binman {
	ti-spl_unsigned {
		filename = "tispl.bin_unsigned";
		pad-byte = <0xff>;

		fit {
			description = "Configuration to load ATF and SPL";
			#address-cells = <1>;

			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-bl31 {
						filename = "bl31.bin";
					};
				};

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

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

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

				fdt-0 {
					description = "k3-am625-sk";
					type = "flat_dt";
					arch = "arm";
					compression = "none";
					spl_am625_sk_dtb_unsigned: blob {
						filename = SPL_AM625_SK_DTB;
					};
				};
			};

			configurations {
				default = "conf-0";

				conf-0 {
					description = "k3-am625-sk";
					firmware = "atf";
					loadables = "tee", "dm", "spl";
					fdt = "fdt-0";
				};
			};
		};
	};
};

&binman {
	u-boot_unsigned {
		filename = "u-boot.img_unsigned";
		pad-byte = <0xff>;

		fit {
			description = "FIT image with multiple configurations";

			images {
				uboot {
					description = "U-Boot for AM625 board";
					type = "firmware";
					os = "u-boot";
					arch = "arm";
					compression = "none";
					load = <CONFIG_TEXT_BASE>;
					blob {
						filename = UBOOT_NODTB;
					};
					hash {
						algo = "crc32";
					};
				};

				fdt-0 {
					description = "k3-am625-sk";
					type = "flat_dt";
					arch = "arm";
					compression = "none";
					am625_sk_dtb_unsigned: blob {
						filename = AM625_SK_DTB;
					};
					hash {
						algo = "crc32";
					};
				};
			};

			configurations {
				default = "conf-0";

				conf-0 {
					description = "k3-am625-sk";
					firmware = "uboot";
					loadables = "uboot";
					fdt = "fdt-0";
				};
			};
		};
	};
};
#endif