// SPDX-License-Identifier: GPL-2.0+
/*
 * Copyright (C) 2020 Jagan Teki <jagan@amarulasolutions.com>
 */

/ {
	binman: binman {
		multiple-images;
	};

#ifdef CONFIG_OPTEE
	firmware {
		optee {
			compatible = "linaro,optee-tz";
			method = "smc";
		};
	};
#endif
};

#ifdef CONFIG_FSL_CAAM
&crypto {
	bootph-pre-ram;
};
#endif

&soc {
	bootph-all;
	bootph-pre-ram;
};

&aips1 {
	bootph-all;
	bootph-pre-ram;
};

&aips2 {
	bootph-pre-ram;
};

&aips3 {
	bootph-pre-ram;
};

&binman {
	u-boot-spl-ddr {
		align = <4>;
		align-size = <4>;
		filename = "u-boot-spl-ddr.bin";
		pad-byte = <0xff>;

		u-boot-spl {
			align-end = <4>;
			filename = "u-boot-spl.bin";
		};

		ddr-1d-imem-fw {
			filename = "lpddr4_pmu_train_1d_imem.bin";
			align-end = <4>;
			type = "blob-ext";
		};

		ddr-1d-dmem-fw {
			filename = "lpddr4_pmu_train_1d_dmem.bin";
			align-end = <4>;
			type = "blob-ext";
		};

		ddr-2d-imem-fw {
			filename = "lpddr4_pmu_train_2d_imem.bin";
			align-end = <4>;
			type = "blob-ext";
		};

		ddr-2d-dmem-fw {
			filename = "lpddr4_pmu_train_2d_dmem.bin";
			align-end = <4>;
			type = "blob-ext";
		};
	};

	spl {
		filename = "spl.bin";

		mkimage {
			args = "-n spl/u-boot-spl.cfgout -T imx8mimage -e 0x7e1000";

			blob {
				filename = "u-boot-spl-ddr.bin";
			};
		};
	};

	itb {
		filename = "u-boot.itb";

		fit {
			description = "Configuration to load ATF before U-Boot";
#ifndef CONFIG_IMX_HAB
			fit,external-offset = <CONFIG_FIT_EXTERNAL_OFFSET>;
#endif
			fit,fdt-list = "of-list";
			#address-cells = <1>;

			images {
				uboot {
					arch = "arm64";
					compression = "none";
					description = "U-Boot (64-bit)";
					load = <CONFIG_TEXT_BASE>;
					type = "standalone";

					uboot-blob {
						filename = "u-boot-nodtb.bin";
						type = "blob-ext";
					};
				};

#ifndef CONFIG_ARMV8_PSCI
				atf {
					arch = "arm64";
					compression = "none";
					description = "ARM Trusted Firmware";
					entry = <0x920000>;
					load = <0x920000>;
					type = "firmware";

					atf-blob {
						filename = "bl31.bin";
						type = "atf-bl31";
					};
				};
#endif

				binman_fip: fip {
					arch = "arm64";
					compression = "none";
					description = "Trusted Firmware FIP";
					load = <0x40310000>;
					type = "firmware";
				};

				@fdt-SEQ {
					compression = "none";
					description = "NAME";
					type = "flat_dt";

					uboot-fdt-blob {
						filename = "u-boot.dtb";
						type = "blob-ext";
					};
				};
			};

			configurations {
				default = "@config-DEFAULT-SEQ";

				@config-SEQ {
					description = "NAME";
					fdt = "fdt-SEQ";
					firmware = "uboot";
#ifndef CONFIG_ARMV8_PSCI
					loadables = "atf";
#endif
				};
			};
		};
	};

	imx-boot {
		filename = "flash.bin";
		pad-byte = <0x00>;

#ifdef CONFIG_FSPI_CONF_HEADER
		fspi_conf_block {
			filename = CONFIG_FSPI_CONF_FILE;
			type = "blob-ext";
			size = <0x1000>;
		};

		spl {
			filename = "spl.bin";
			offset = <0x1000>;
			type = "blob-ext";
		};

		binman_uboot: uboot {
			filename = "u-boot.itb";
			offset = <0x58C00>;
			type = "blob-ext";
		};
#else
		spl {
			filename = "spl.bin";
			offset = <0x0>;
			type = "blob-ext";
		};

		binman_uboot: uboot {
			filename = "u-boot.itb";
			offset = <0x57c00>;
			type = "blob-ext";
		};
#endif
	};
};

&clk {
	bootph-all;
	bootph-pre-ram;
	/delete-property/ assigned-clocks;
	/delete-property/ assigned-clock-parents;
	/delete-property/ assigned-clock-rates;
};

&iomuxc {
	bootph-pre-ram;
};

&osc_24m {
	bootph-all;
	bootph-pre-ram;
};

#ifdef CONFIG_FSL_CAAM
&sec_jr0 {
	bootph-pre-ram;
};

&sec_jr1 {
	bootph-pre-ram;
};

&sec_jr2 {
	bootph-pre-ram;
};
#endif

&spba1 {
	bootph-all;
	bootph-pre-ram;
};

&spba2 {
	bootph-all;
	bootph-pre-ram;
};
