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

#include "k3-binman.dtsi"

#ifdef CONFIG_TARGET_J7200_R5_EVM

&bcfg_yaml {
	config = "board-cfg_j7200.yaml";
};

&rcfg_yaml {
	config = "rm-cfg_j7200.yaml";
};

&pcfg_yaml {
	config = "pm-cfg_j7200.yaml";
};

&scfg_yaml {
	config = "sec-cfg_j7200.yaml";
};

&bcfg_yaml_tifs {
	config = "board-cfg_j7200.yaml";
};

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

&pcfg_yaml_tifs {
	config = "pm-cfg_j7200.yaml";
};

&scfg_yaml_tifs {
	config = "sec-cfg_j7200.yaml";
};

&rcfg_yaml_dm {
	config = "rm-cfg_j7200.yaml";
};

&pcfg_yaml_dm {
	config = "pm-cfg_j7200.yaml";
};

&binman {
	tiboot3-j7200-hs-evm.bin {
		filename = "tiboot3-j7200-hs-evm.bin";
		ti-secure-rom {
			content = <&u_boot_spl_sr1>, <&ti_fs_enc_sr1>, <&combined_tifs_cfg_sr1>,
				<&combined_dm_cfg_sr1>, <&sysfw_inner_cert_sr1>;
			combined;
			dm-data;
			core-opts = <2>;
			sysfw-inner-cert;
			keyfile = "custMpk.pem";
			sw-rev = <1>;
			content-sbl = <&u_boot_spl_sr1>;
			content-sysfw = <&ti_fs_enc_sr1>;
			content-sysfw-data = <&combined_tifs_cfg_sr1>;
			content-sysfw-inner-cert = <&sysfw_inner_cert_sr1>;
			content-dm-data = <&combined_dm_cfg_sr1>;
			load = <0x41c00000>;
			load-sysfw = <0x40000>;
			load-sysfw-data = <0x7f000>;
			load-dm-data = <0x41c80000>;
		};
		u_boot_spl_sr1: u-boot-spl {
			no-expanded;
		};
		ti_fs_enc_sr1: ti-fs-enc.bin {
			filename = "ti-sysfw/ti-fs-firmware-j7200-hs-enc.bin";
			type = "blob-ext";
			optional;
		};
		combined_tifs_cfg_sr1: combined-tifs-cfg.bin {
			filename = "combined-tifs-cfg.bin";
			type = "blob-ext";
		};
		sysfw_inner_cert_sr1: sysfw-inner-cert {
			filename = "ti-sysfw/ti-fs-firmware-j7200-hs-cert.bin";
			type = "blob-ext";
			optional;
		};
		combined_dm_cfg_sr1: combined-dm-cfg.bin {
			filename = "combined-dm-cfg.bin";
			type = "blob-ext";
		};
	};
};

&binman {
	tiboot3-j7200_sr2-hs-evm.bin {
		filename = "tiboot3-j7200_sr2-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 = <0x7f000>;
			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-j7200_sr2-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-j7200_sr2-hs-cert.bin";
			type = "blob-ext";
			optional;
		};
		combined_dm_cfg: combined-dm-cfg.bin {
			filename = "combined-dm-cfg.bin";
			type = "blob-ext";
		};
	};
};

&binman {
	tiboot3-j7200-hs-fs-evm.bin {
		filename = "tiboot3-j7200-hs-fs-evm.bin";
		ti-secure-rom {
			content = <&u_boot_spl_fs_sr1>, <&ti_fs_enc_fs_sr1>,
				  <&combined_tifs_cfg_fs_sr1>, <&combined_dm_cfg_fs_sr1>,
				  <&sysfw_inner_cert_fs_sr1>;
			combined;
			dm-data;
			core-opts = <2>;
			sysfw-inner-cert;
			keyfile = "custMpk.pem";
			sw-rev = <1>;
			content-sbl = <&u_boot_spl_fs_sr1>;
			content-sysfw = <&ti_fs_enc_fs_sr1>;
			content-sysfw-data = <&combined_tifs_cfg_fs_sr1>;
			content-sysfw-inner-cert = <&sysfw_inner_cert_fs_sr1>;
			content-dm-data = <&combined_dm_cfg_fs_sr1>;
			load = <0x41c00000>;
			load-sysfw = <0x40000>;
			load-sysfw-data = <0x7f000>;
			load-dm-data = <0x41c80000>;
		};
		u_boot_spl_fs_sr1: u-boot-spl {
			no-expanded;
		};
		ti_fs_enc_fs_sr1: ti-fs-enc.bin {
			filename = "ti-sysfw/ti-fs-firmware-j7200-hs-fs-enc.bin";
			type = "blob-ext";
			optional;
		};
		combined_tifs_cfg_fs_sr1: combined-tifs-cfg.bin {
			filename = "combined-tifs-cfg.bin";
			type = "blob-ext";
		};
		sysfw_inner_cert_fs_sr1: sysfw-inner-cert {
			filename = "ti-sysfw/ti-fs-firmware-j7200-hs-fs-cert.bin";
			type = "blob-ext";
			optional;
		};
		combined_dm_cfg_fs_sr1: combined-dm-cfg.bin {
			filename = "combined-dm-cfg.bin";
			type = "blob-ext";
		};
	};
};

&binman {
	tiboot3-j7200_sr2-hs-fs-evm.bin {
		filename = "tiboot3-j7200_sr2-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 = <0x7f000>;
			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-j7200_sr2-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-j7200_sr2-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-j7200-gp-evm.bin {
		filename = "tiboot3-j7200-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 = <0x7f000>;
			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-j7200-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_J7200_A72_EVM

#define SPL_J7200_EVM_DTB "spl/dts/ti/k3-j7200-common-proc-board.dtb"
#define J7200_EVM_DTB "u-boot.dtb"

&binman {
	ti-dm {
		filename = "ti-dm.bin";
		blob-ext {
			filename = "ti-dm/j7200/ipc_echo_testb_mcu1_0_release_strip.xer5f";
			optional;
		};
	};
	ti-spl {
		insert-template = <&ti_spl_template>;

		fit {
			images {
				atf {
					ti-secure {
						auth-in-place = <0xa02>;

						firewall-257-0 {
							/* cpu_0_cpu_0_msmc Background Firewall */
							insert-template = <&firewall_bg_1>;
							id = <257>;
							region = <0>;
						};

						firewall-257-1 {
							/* cpu_0_cpu_0_msmc Foreground Firewall */
							insert-template = <&firewall_armv8_atf_fg>;
							id = <257>;
							region = <1>;
						};

						/*	firewall-4760-0 {
						 *		nb_slv0__mem0 Background Firewall
						 *		Already configured by the secure entity
						 *	};
						 */

						firewall-4760-1 {
							/* nb_slv0__mem0 Foreground Firewall */
							insert-template = <&firewall_armv8_atf_fg>;
							id = <4760>;
							region = <1>;
						};

						/*	firewall-4761-0 {
						 *		nb_slv1__mem0 Background Firewall
						 *		Already configured by the secure entity
						 *	};
						 */

						firewall-4761-1 {
							/* nb_slv1__mem0 Foreground Firewall */
							insert-template = <&firewall_armv8_atf_fg>;
							id = <4761>;
							region = <1>;
						};
					};
				};

				tee {
					ti-secure {
						auth-in-place = <0xa02>;

						/* cpu_0_cpu_0_msmc region 0 and 1 configured
						 * during ATF Firewalling
						 */

						firewall-257-2 {
							/* cpu_0_cpu_0_msmc Foreground Firewall */
							insert-template = <&firewall_armv8_optee_fg>;
							id = <257>;
							region = <2>;
						};

						firewall-4762-0 {
							/* nb_slv2__mem0 Background Firewall - 0 */
							insert-template = <&firewall_bg_3>;
							id = <4762>;
							region = <0>;
						};

						firewall-4762-1 {
							/* nb_slv2__mem0 Foreground Firewall */
							insert-template = <&firewall_armv8_optee_fg>;
							id = <4762>;
							region = <1>;
						};

						firewall-4763-0 {
							/* nb_slv3__mem0 Background Firewall - 0 */
							insert-template = <&firewall_bg_3>;
							id = <4763>;
							region = <0>;
						};

						firewall-4763-1 {
							/* nb_slv3__mem0 Foreground Firewall */
							insert-template = <&firewall_armv8_optee_fg>;
							id = <4763>;
							region = <1>;
						};
					};
				};
				dm {
					ti-secure {
						content = <&dm>;
						keyfile = "custMpk.pem";
					};
					dm: ti-dm {
						filename = "ti-dm.bin";
					};
				};

				fdt-0 {
					description = "k3-j7200-common-proc-board";
					type = "flat_dt";
					arch = "arm";
					compression = "none";
					ti-secure {
						content = <&spl_j7200_evm_dtb>;
						keyfile = "custMpk.pem";
					};
					spl_j7200_evm_dtb: blob-ext {
						filename = SPL_J7200_EVM_DTB;
					};
				};

			};

			configurations {
				default = "conf-0";

				conf-0 {
					description = "k3-j7200-common-proc-board";
					firmware = "atf";
					loadables = "tee", "dm", "spl";
					fdt = "fdt-0";
				};
			};
		};
	};
};

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

		fit {
			images {
				uboot {
					description = "U-Boot for J7200 Board";
				};

				fdt-0 {
					description = "k3-j7200-common-proc-board";
					type = "flat_dt";
					arch = "arm";
					compression = "none";
					ti-secure {
						content = <&j7200_evm_dtb>;
						keyfile = "custMpk.pem";
					};
					j7200_evm_dtb: blob-ext {
						filename = J7200_EVM_DTB;
					};
					hash {
						algo = "crc32";
					};
				};
			};

			configurations {
				default = "conf-0";

				conf-0 {
					description = "k3-j7200-common-proc-board";
					firmware = "uboot";
					loadables = "uboot";
					fdt = "fdt-0";
				};

			};
		};
	};
};

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

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

				fdt-1 {
					description = "k3-j7200-common-proc-board";
					type = "flat_dt";
					arch = "arm";
					compression = "none";
					blob {
						filename = SPL_J7200_EVM_DTB;
					};
				};
			};

			configurations {
				default = "conf-1";

				conf-1 {
					description = "k3-j7200-common-proc-board";
					firmware = "atf";
					loadables = "tee", "dm", "spl";
					fdt = "fdt-1";
				};
			};
		};
	};
};

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

		fit {
			images {
				uboot {
					description = "U-Boot for J7200 Board";
				};

				fdt-1 {
					description = "k3-j7200-common-proc-board";
					type = "flat_dt";
					arch = "arm";
					compression = "none";
					blob {
						filename = J7200_EVM_DTB;
					};
					hash {
						algo = "crc32";
					};
				};
			};

			configurations {
				default = "conf-1";

				conf-1 {
					description = "k3-j7200-common-proc-board";
					firmware = "uboot";
					loadables = "uboot";
					fdt = "fdt-1";
				};
			};
		};
	};
};
#endif
