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

#include "k3-binman.dtsi"

#ifdef CONFIG_TARGET_J721E_R5_EVM

&binman {
	tiboot3-j721e_sr1_1-hs-evm.bin {
		filename = "tiboot3-j721e_sr1_1-hs-evm.bin";
		ti-secure-rom {
			content = <&u_boot_spl>;
			core = "public";
			load = <CONFIG_SPL_TEXT_BASE>;
			keyfile = "custMpk.pem";
		};
		u_boot_spl: u-boot-spl {
			no-expanded;
		};
	};

	tiboot3-j721e_sr2-hs-evm.bin {
		filename = "tiboot3-j721e_sr2-hs-evm.bin";
		ti-secure-rom {
			content = <&u_boot_spl_sr2>;
			core = "public";
			load = <CONFIG_SPL_TEXT_BASE>;
			keyfile = "custMpk.pem";
		};
		u_boot_spl_sr2: u-boot-spl {
			no-expanded;
		};
	};

	sysfw {
		filename = "sysfw.bin";
		ti-secure-rom {
			content = <&ti_fs_cert>;
			core = "secure";
			load = <0x40000>;
			keyfile = "custMpk.pem";
			countersign;
		};
		ti_fs_cert: ti-fs-cert.bin {
			filename = "ti-sysfw/ti-fs-firmware-j721e_sr1_1-hs-cert.bin";
			type = "blob-ext";
			optional;
		};
		ti-fs-firmware-j721e_sr1_1-hs-enc.bin {
			filename = "ti-sysfw/ti-fs-firmware-j721e_sr1_1-hs-enc.bin";
			type = "blob-ext";
			optional;
		};
	};

	sysfw_sr2 {
		filename = "sysfw.bin_sr2";
		ti-secure-rom {
			content = <&ti_fs_cert_sr2>;
			core = "secure";
			load = <0x40000>;
			keyfile = "custMpk.pem";
			countersign;
		};
		ti_fs_cert_sr2: ti-fs-cert.bin {
			filename = "ti-sysfw/ti-fs-firmware-j721e_sr2-hs-cert.bin";
			type = "blob-ext";
			optional;
		};
		ti-fs-firmware-j721e_sr2-hs-enc.bin {
			filename = "ti-sysfw/ti-fs-firmware-j721e_sr2-hs-enc.bin";
			type = "blob-ext";
			optional;
		};
	};

	itb {
		filename = "sysfw-j721e_sr1_1-hs-evm.itb";
		insert-template = <&itb_template>;
	};

	itb_sr2 {
		filename = "sysfw-j721e_sr2-hs-evm.itb";
		insert-template = <&itb_template>;
		fit {
			images {
				sysfw.bin {
					blob-ext {
						filename = "sysfw.bin_sr2";
					};
				};
				board-cfg.bin {
					ti-secure {
						content = <&board_cfg_sr2>;
					};
					board_cfg_sr2: board-cfg {
						filename = "board-cfg.bin";
					};
				};
				pm-cfg.bin {
					ti-secure {
						content = <&pm_cfg_sr2>;
					};
					pm_cfg_sr2: pm-cfg {
						filename = "pm-cfg.bin";
					};
				};
				rm-cfg.bin {
					ti-secure {
						content = <&rm_cfg_sr2>;
					};
					rm_cfg_sr2: rm-cfg {
						filename = "rm-cfg.bin";
					};
				};
				sec-cfg.bin {
					ti-secure {
						content = <&sec_cfg_sr2>;
					};
					sec_cfg_sr2: sec-cfg {
						filename = "sec-cfg.bin";
					};
				};

			};
		};
	};
};

&binman {
	tiboot3-j721e_sr1_1-hs-fs-evm.bin {
		filename = "tiboot3-j721e_sr1_1-hs-fs-evm.bin";
		ti-secure-rom {
			content = <&u_boot_spl_fs_sr1_1>;
			core = "public";
			core-opts = <2>;
			load = <CONFIG_SPL_TEXT_BASE>;
			keyfile = "custMpk.pem";
		};
		u_boot_spl_fs_sr1_1: u-boot-spl {
			no-expanded;
		};
	};
	sysfw_fs_sr1_1 {
		filename = "sysfw.bin_fs_sr1_1";
		ti-fs-cert-fs.bin {
			filename = "ti-sysfw/ti-fs-firmware-j721e_sr1_1-hs-fs-cert.bin";
			type = "blob-ext";
			optional;
		};
		ti-fs-firmware-j721e-hs-fs-enc.bin {
			filename = "ti-sysfw/ti-fs-firmware-j721e_sr1_1-hs-fs-enc.bin";
			type = "blob-ext";
			optional;
		};
	};
	itb_fs_sr1_1 {
		filename = "sysfw-j721e_sr1_1-hs-fs-evm.itb";
		fit {
			description = "SYSFW and Config fragments";
			#address-cells = <1>;
			images {
				sysfw.bin {
					description = "sysfw";
					type = "firmware";
					arch = "arm";
					compression = "none";
					blob-ext {
					    filename = "sysfw.bin_fs_sr1_1";
					};
				};
				board-cfg.bin {
					description = "board-cfg";
					type = "firmware";
					arch = "arm";
					compression = "none";
					board-cfg {
						filename = "board-cfg.bin";
						type = "blob-ext";
					};

				};
				pm-cfg.bin {
					description = "pm-cfg";
					type = "firmware";
					arch = "arm";
					compression = "none";
					pm-cfg {
						filename = "pm-cfg.bin";
						type = "blob-ext";
					};
				};
				rm-cfg.bin {
					description = "rm-cfg";
					type = "firmware";
					arch = "arm";
					compression = "none";
					rm-cfg {
						filename = "rm-cfg.bin";
						type = "blob-ext";
					};
				};
				sec-cfg.bin {
					description = "sec-cfg";
					type = "firmware";
					arch = "arm";
					compression = "none";
					sec-cfg {
						filename = "sec-cfg.bin";
						type = "blob-ext";
					};
				};
			};
		};
	};
};

&binman {
	tiboot3-j721e_sr2-hs-fs-evm.bin {
		filename = "tiboot3-j721e_sr2-hs-fs-evm.bin";
		ti-secure-rom {
			content = <&u_boot_spl_fs>;
			core = "public";
			load = <CONFIG_SPL_TEXT_BASE>;
			keyfile = "custMpk.pem";
		};
		u_boot_spl_fs: u-boot-spl {
			no-expanded;
		};
	};
	sysfw_fs {
		filename = "sysfw.bin_fs";
		ti-fs-cert-fs.bin {
			filename = "ti-sysfw/ti-fs-firmware-j721e_sr2-hs-fs-cert.bin";
			type = "blob-ext";
			optional;
		};
		ti-fs-firmware-j721e-hs-fs-enc.bin {
			filename = "ti-sysfw/ti-fs-firmware-j721e_sr2-hs-fs-enc.bin";
			type = "blob-ext";
			optional;
		};
	};
	itb_fs {
		filename = "sysfw-j721e_sr2-hs-fs-evm.itb";
		insert-template = <&itb_unsigned_template>;
	};
};

&binman {
	tiboot3-j721e-gp-evm.bin {
		filename = "tiboot3-j721e-gp-evm.bin";
		symlink = "tiboot3.bin";
		ti-secure-rom {
			content = <&u_boot_spl_unsigned>;
			core = "public";
			load = <CONFIG_SPL_TEXT_BASE>;
			sw-rev = <CONFIG_K3_X509_SWRV>;
			keyfile = "ti-degenerate-key.pem";
		};
		u_boot_spl_unsigned: u-boot-spl {
			no-expanded;
		};
	};
	sysfw_gp {
		filename = "sysfw.bin_gp";
		ti-secure-rom {
			content = <&ti_fs>;
			core = "secure";
			load = <0x40000>;
			sw-rev = <CONFIG_K3_X509_SWRV>;
			keyfile = "ti-degenerate-key.pem";
		};
		ti_fs: ti-fs.bin {
			filename = "ti-sysfw/ti-fs-firmware-j721e-gp.bin";
			type = "blob-ext";
			optional;
		};
	};
	itb_gp {
		filename = "sysfw-j721e-gp-evm.itb";
		symlink = "sysfw.itb";
		insert-template = <&itb_unsigned_template>;

		fit {
			images {
				sysfw.bin {
					blob-ext {
					    filename = "sysfw.bin_gp";
					};
				};
			};
		};
	};
};

#include "k3-binman-capsule-r5.dtsi"

// Capsule update GUIDs in string form.  See j721e_evm.h
#define J721E_SK_TIBOOT3_IMAGE_GUID_STR "e672b518-7cd7-4014-bd8d-40724d0ad4dc"
#define J721E_SK_SYSFW_IMAGE_GUID_STR "6fd10680-361b-431f-80aa-899455819e11"

&capsule_tiboot3 {
	efi-capsule {
		image-guid = J721E_SK_TIBOOT3_IMAGE_GUID_STR;
	};
};

&binman {
	capsule-sysfw {
		filename = "sysfw-capsule.bin";
		efi-capsule {
			image-index = <0x4>;
			image-guid = J721E_SK_SYSFW_IMAGE_GUID_STR;
			private-key = "arch/arm/mach-k3/keys/custMpk.pem";
			public-key-cert = "arch/arm/mach-k3/keys/custMpk.crt";
			monotonic-count = <0x1>;

			blob {
				filename = "sysfw.itb";
			};
		};
	};
};

#endif

#ifdef CONFIG_TARGET_J721E_A72_EVM

#define SPL_J721E_EVM_DTB "spl/dts/ti/k3-j721e-common-proc-board.dtb"
#define J721E_EVM_DTB "u-boot.dtb"

&binman {
	ti-dm {
		filename = "ti-dm.bin";
		blob-ext {
			filename = "ti-dm/j721e/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-284-0 {
							/* dru_0_msmc Background Firewall */
							insert-template = <&firewall_bg_3>;
							id = <284>;
							region = <0>;
						};

						firewall-284-1 {
							/* dru_0_msmc Foreground Firewall */
							insert-template = <&firewall_armv8_atf_fg>;
							id = <284>;
							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>;
						};

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

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

						firewall-4762-0 {
							/* nb_slv2__mem0 Background Firewall */
							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 */
							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-j721e-common-proc-board";
					type = "flat_dt";
					arch = "arm";
					compression = "none";
					ti-secure {
						content = <&spl_j721e_dtb>;
						keyfile = "custMpk.pem";
					};
					spl_j721e_dtb: blob-ext {
						filename = SPL_J721E_EVM_DTB;
					};
				};
			};

			configurations {
				default = "conf-0";

				conf-0 {
					description = "k3-j721e-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 J721E Board";
				};

				fdt-0 {
					description = "k3-j721e-common-proc-board";
					type = "flat_dt";
					arch = "arm";
					compression = "none";
					ti-secure {
						content = <&j721e_dtb>;
						keyfile = "custMpk.pem";

					};
					j721e_dtb: blob-ext {
						filename = J721E_EVM_DTB;
					};
					hash {
						algo = "crc32";
					};
				};
			};

			configurations {
				default = "conf-0";

				conf-0 {
					description = "k3-j721e-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-0 {
					description = "k3-j721e-common-proc-board";
					type = "flat_dt";
					arch = "arm";
					compression = "none";
					spl_j721e_dtb_unsigned: blob {
						filename = SPL_J721E_EVM_DTB;
					};
				};
			};

			configurations {
				default = "conf-0";

				conf-0 {
					description = "k3-j721e-common-proc-board";
					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 J721E Board";
				};

				fdt-0 {
					description = "k3-j721e-common-proc-board";
					type = "flat_dt";
					arch = "arm";
					compression = "none";
					j721e_dtb_unsigned: blob {
						filename = J721E_EVM_DTB;
					};
					hash {
						algo = "crc32";
					};
				};
			};

			configurations {
				default = "conf-0";

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

#include "k3-binman-capsule.dtsi"

// Capsule update GUIDs in string form.  See j721e_evm.h
#define J721E_SK_SPL_IMAGE_GUID_STR "86f710ad-10cf-46ea-ac67-856ae06efad2"
#define J721E_SK_UBOOT_IMAGE_GUID_STR "81b58fb0-3b00-4add-a20a-c185bbaca1ed"

&capsule_tispl {
	efi-capsule {
		image-guid = J721E_SK_SPL_IMAGE_GUID_STR;
	};
};

&capsule_uboot {
	efi-capsule {
		image-guid = J721E_SK_UBOOT_IMAGE_GUID_STR;
	};
};

#endif
