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

#include "k3-binman.dtsi"

#if IS_ENABLED(CONFIG_TARGET_AM62P5_R5_EVM)

&binman {
	tiboot3-am62px-hs-fs-evm.bin {
		filename = "tiboot3-am62px-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 = <0x43c4a800>;
		};

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

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

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

#endif /* CONFIG_TARGET_AM62P5_R5_EVM */

#if IS_ENABLED(CONFIG_TARGET_AM62P5_A53_EVM)

#define SPL_AM62PX_SK_DTB "spl/dts/ti/k3-am62p5-sk.dtb"
#define AM62PX_SK_DTB "u-boot.dtb"

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

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

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

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

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

				fdt-0 {
					description = "k3-am62p5-sk";
					type = "flat_dt";
					arch = "arm";
					compression = "none";

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

					spl_am62p5_sk_dtb: blob-ext {
						filename = SPL_AM62PX_SK_DTB;
					};

				};

			};

			configurations {
				default = "conf-0";

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

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

		fit {
			images {
				uboot {
					description = "U-Boot for AM62P5 Boards";
				};

				fdt-0 {
					description = "k3-am62px-sk";
					type = "flat_dt";
					arch = "arm";
					compression = "none";

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

					am62px_sk_dtb: blob-ext {
						filename = AM62PX_SK_DTB;
					};

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

			configurations {
				default = "conf-0";

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

			};
		};
	};
};

#endif /* CONFIG_TARGET_AM62P5_A53_EVM */
