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

#include "k3-binman.dtsi"

#ifdef CONFIG_TARGET_J784S4_R5_EVM

&rcfg_yaml_tifs {
	config = "tifs-rm-cfg.yaml";
};

&binman {
	tiboot3-j784s4-hs-evm.bin {
		filename = "tiboot3-j784s4-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 = <0x41c00000>;
			load-sysfw = <0x40000>;
			load-sysfw-data = <0x66800>;
			load-dm-data = <0x41c80000>;
		};

		u_boot_spl: u-boot-spl {
			no-expanded;
		};

		ti_fs_enc: ti-fs-enc.bin {
			filename = "ti-sysfw/ti-fs-firmware-j784s4-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-j784s4-hs-cert.bin";
			type = "blob-ext";
			optional;
		};

		combined_dm_cfg: combined-dm-cfg.bin {
			filename = "combined-dm-cfg.bin";
			type = "blob-ext";
		};
	};
};

&binman {
	tiboot3-j784s4-hs-fs-evm.bin {
		filename = "tiboot3-j784s4-hs-fs-evm.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 = <0x41c00000>;
			load-sysfw = <0x40000>;
			load-sysfw-data = <0x66800>;
			load-dm-data = <0x41c80000>;
		};

		u_boot_spl_fs: u-boot-spl {
			no-expanded;
		};

		ti_fs_enc_fs: ti-fs-enc.bin {
			filename = "ti-sysfw/ti-fs-firmware-j784s4-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-j784s4-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-j784s4-gp-evm.bin {
		filename = "tiboot3-j784s4-gp-evm.bin";
		symlink = "tiboot3.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 = <0x41c00000>;
			content-sysfw = <&ti_fs_gp>;
			load-sysfw = <0x40000>;
			content-sysfw-data = <&combined_tifs_cfg_gp>;
			load-sysfw-data = < 0x66800>;
			content-dm-data = <&combined_dm_cfg_gp>;
			load-dm-data = <0x41c80000>;
			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-j784s4-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_J784S4_A72_EVM

#define SPL_J784S4_EVM_DTB "spl/dts/ti/k3-j784s4-evm.dtb"
#define J784S4_EVM_DTB "u-boot.dtb"

&binman {
	ti-dm {
		filename = "ti-dm.bin";

		blob-ext {
			filename = "ti-dm/j784s4/ipc_echo_testb_mcu1_0_release_strip.xer5f";
			optional;
		};
	};

	ti-spl {
		insert-template = <&ti_spl_template>;

		fit {
			images {
				dm {
					ti-secure {
						content = <&dm>;
						keyfile = "custMpk.pem";
					};

					dm: blob-ext {
						filename = "ti-dm.bin";
					};
				};

				fdt-0 {
					description = "k3-j784s4-evm";
					type = "flat_dt";
					arch = "arm";
					compression = "none";

					ti-secure {
						content = <&spl_j784s4_evm_dtb>;
						keyfile = "custMpk.pem";
					};

					spl_j784s4_evm_dtb: blob-ext {
						filename = SPL_J784S4_EVM_DTB;
					};
				};
			};

			configurations {
				default = "conf-0";

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

&binman {
	u-boot {
		insert-template = <&u_boot_template>;

		fit {
			images {
				uboot {
					description = "U-Boot for J784S4 board";
				};

				fdt-0 {
					description = "k3-j784s4-evm";
					type = "flat_dt";
					arch = "arm";
					compression = "none";

					ti-secure {
						content = <&j784s4_evm_dtb>;
						keyfile = "custMpk.pem";
					};

					j784s4_evm_dtb: blob-ext {
						filename = J784S4_EVM_DTB;
					};

					hash {
						algo = "crc32";
					};
				};
			};

			configurations {
				default = "conf-0";

				conf-0 {
					description = "k3-j784s4-evm";
					firmware = "uboot";
					loadables = "uboot";
					fdt = "fdt-0";
				};
			};
		};
	};
};

&binman {
	ti-spl_unsigned {
		insert-template = <&ti_spl_unsigned_template>;

		fit {
			images {
				dm {
					blob-ext {
						filename = "ti-dm.bin";
					};
				};

				fdt-0 {
					description = "k3-j784s4-evm";
					type = "flat_dt";
					arch = "arm";
					compression = "none";

					spl_j784s4_evm_dtb_unsigned: blob {
						filename = SPL_J784S4_EVM_DTB;
					};
				};
			};

			configurations {
				default = "conf-0";

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

&binman {
	u-boot_unsigned {
		insert-template = <&u_boot_unsigned_template>;

		fit {
			images {
				uboot {
					description = "U-Boot for J784S4 board";
				};

				fdt-0 {
					description = "k3-j784s4-evm";
					type = "flat_dt";
					arch = "arm";
					compression = "none";

					j784s4_evm_dtb_unsigned: blob {
						filename = J784S4_EVM_DTB;
					};

					hash {
						algo = "crc32";
					};
				};
			};

			configurations {
				default = "conf-0";

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