// SPDX-License-Identifier: GPL-2.0+
/*
 * Copyright 2021 Collabora Ltd.
 * Copyright 2021 BSH Hausgeraete GmbH
 */

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

	wdt-reboot {
		compatible = "wdt-reboot";
		wdt = <&wdog1>;
		u-boot,dm-spl;
	};
};

&{/soc@0} {
	u-boot,dm-pre-reloc;
	u-boot,dm-spl;
};

&{/soc@0/bus@30800000/i2c@30a20000/pmic@4b} {
	u-boot,dm-spl;
};

&{/soc@0/bus@30800000/i2c@30a20000/pmic@4b/regulators} {
	u-boot,dm-spl;
};

&aips1 {
	u-boot,dm-pre-reloc;
	u-boot,dm-spl;
};

&aips3 {
	u-boot,dm-spl;
};

&aips4 {
	u-boot,dm-spl;
};

&clk {
	u-boot,dm-pre-reloc;
	u-boot,dm-spl;
	/delete-property/ assigned-clocks;
	/delete-property/ assigned-clock-parents;
	/delete-property/ assigned-clock-rates;
};

&gpio1 {
	u-boot,dm-spl;
};

&gpio2 {
	u-boot,dm-spl;
};

&gpio4 {
	u-boot,dm-spl;
};

&i2c1 {
	u-boot,dm-spl;
};

&iomuxc {
	u-boot,dm-spl;
};

&osc_24m {
	u-boot,dm-pre-reloc;
	u-boot,dm-spl;
};

&pinctrl_i2c1 {
	u-boot,dm-spl;
};

&pinctrl_pmic {
	u-boot,dm-spl;
};

&pinctrl_uart4 {
	u-boot,dm-spl;
};

&pinctrl_wdog {
	u-boot,dm-spl;
};

&uart4 {
	u-boot,dm-spl;
};

&wdog1 {
	u-boot,dm-spl;
};

&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 = "ddr3_imem_1d.bin";
			align-end = <4>;
			type = "blob-ext";
		};

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

	spl {
		filename = "spl.bin";

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

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

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

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

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

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

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

					atf_blob {
						filename = "bl31.bin";
						type = "atf-bl31";
					};
				};

				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";

				binman_configuration: @config-SEQ {
					description = "NAME";
					fdt = "fdt-SEQ";
					firmware = "uboot";
					loadables = "atf";
				};
			};
		};
	};

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

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

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