// 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/k3-j721e-common-proc-board.dtb"
#define SPL_J721E_SK_DTB "spl/dts/k3-j721e-sk.dtb"

#define J721E_EVM_DTB "u-boot.dtb"
#define J721E_SK_DTB "arch/arm/dts/k3-j721e-sk.dtb"

&binman {
	ti-dm {
		filename = "ti-dm.bin";
		blob-ext {
			filename = "ti-dm/j721e/ipc_echo_testb_mcu1_0_release_strip.xer5f";
		};
	};
	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_evm_dtb>;
						keyfile = "custMpk.pem";
					};
					spl_j721e_evm_dtb: blob-ext {
						filename = SPL_J721E_EVM_DTB;
					};
				};

				fdt-1 {
					description = "k3-j721e-sk";
					type = "flat_dt";
					arch = "arm";
					compression = "none";
					ti-secure {
						content = <&spl_j721e_sk_dtb>;
						keyfile = "custMpk.pem";

					};
					spl_j721e_sk_dtb: blob-ext {
						filename = SPL_J721E_SK_DTB;
					};
				};
			};

			configurations {
				default = "conf-0";

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

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

&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_evm_dtb>;
						keyfile = "custMpk.pem";

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

				fdt-1 {
					description = "k3-j721e-sk";
					type = "flat_dt";
					arch = "arm";
					compression = "none";
					ti-secure {
						content = <&j721e_sk_dtb>;
						keyfile = "custMpk.pem";

					};
					j721e_sk_dtb: blob-ext {
						filename = J721E_SK_DTB;
					};
					hash {
						algo = "crc32";
					};
				};
			};

			configurations {
				default = "conf-0";

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

				conf-1 {
					description = "k3-j721e-sk";
					firmware = "uboot";
					loadables = "uboot";
					fdt = "fdt-1";
				};
			};
		};
	};
};

&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";
					blob {
						filename = SPL_J721E_EVM_DTB;
					};
				};

				fdt-1 {
					description = "k3-j721e-sk";
					type = "flat_dt";
					arch = "arm";
					compression = "none";
					blob {
						filename = SPL_J721E_SK_DTB;
					};
				};
			};

			configurations {
				default = "conf-0";

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

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

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

				fdt-1 {
					description = "k3-j721e-sk";
					type = "flat_dt";
					arch = "arm";
					compression = "none";
					blob {
						filename = J721E_SK_DTB;
					};
					hash {
						algo = "crc32";
					};
				};
			};

			configurations {
				default = "conf-0";

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

				conf-1 {
					description = "k3-j721e-sk";
					firmware = "uboot";
					loadables = "uboot";
					fdt = "fdt-1";
				};
			};
		};
	};
};

#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
