Loading...
// SPDX-License-Identifier: GPL-2.0
/*
 * dts file for Xilinx ZynqMP platforms
 *
 * (C) Copyright 2024-2025, Advanced Micro Devices, Inc.
 *
 * Michal Simek <michal.simek@amd.com>
 */

#include <config.h>

#if defined(CONFIG_SPL_FS_LOAD_PAYLOAD_NAME)
#define U_BOOT_ITB_FILENAME	CONFIG_SPL_FS_LOAD_PAYLOAD_NAME
#else
#define U_BOOT_ITB_FILENAME	"u-boot.itb"
#endif

/dts-v1/;
/ {
	binman: binman {
		multiple-images;

#ifdef CONFIG_SPL
		/* Generation in a static way */
		itb {
			filename = U_BOOT_ITB_FILENAME;
			pad-byte = <0>;

			fit {
				description = "Configuration for Xilinx ZynqMP SoC";
				fit,align = <0x8>;
				fit,external-offset = <0x0>;
				fit,fdt-list = "of-list";
				images {
					uboot {
						description = "U-Boot (64-bit)";
						type = "firmware";
						os = "u-boot";
						arch = "arm64";
						compression = "none";
						load = /bits/ 64 <CONFIG_TEXT_BASE>;
						entry = /bits/ 64 <CONFIG_TEXT_BASE>;
						hash {
							algo = "md5";
						};
						u-boot-nodtb {
						};
					};
					atf {
						description = "Trusted Firmware-A";
						type = "firmware";
						os = "arm-trusted-firmware";
						arch = "arm64";
						compression = "none";
						load = /bits/ 64 <CONFIG_BL31_LOAD_ADDR>;
						entry = /bits/ 64 <CONFIG_BL31_LOAD_ADDR>;
						hash {
							algo = "md5";
						};
						atf-bl31 {
							optional;
						};
					};
					tee {
						description = "OP-TEE";
						type = "tee";
						arch = "arm64";
						compression = "none";
						os = "tee";
						load = /bits/ 64 <CONFIG_BL32_LOAD_ADDR>;
						entry = /bits/ 64 <CONFIG_BL32_LOAD_ADDR>;
						hash {
							algo = "md5";
						};
						tee-os {
							optional;
						};
					};
					@fdt-SEQ {
						description = "NAME";
						type = "flat_dt";
						arch = "arm64";
						compression = "none";
#if CONFIG_XILINX_OF_BOARD_DTB_ADDR
						load = /bits/ 64 <CONFIG_XILINX_OF_BOARD_DTB_ADDR>;
#endif
						hash {
							algo = "md5";
						};
					};
				};
				configurations {
					default = "@conf-DEFAULT-SEQ";
					@conf-SEQ {
						description = "NAME";
#if CONFIG_BL31_LOAD_ADDR
						firmware = "atf";
						loadables = "tee", "uboot";
						fdt = "fdt-SEQ";
#else
						firmware = "uboot";
						loadables = "fdt";
#endif

					};
				};
			};
		};

		itb-single {
			filename = "u-boot-single.itb";
			pad-byte = <0>;

			fit {
				description = "Configuration for Xilinx ZynqMP SoC";
				fit,align = <0x8>;
				fit,external-offset = <0x0>;
				fit,fdt-list = "of-list";
				images {
					uboot {
						description = "U-Boot (64-bit)";
						type = "firmware";
						os = "u-boot";
						arch = "arm64";
						compression = "none";
						load = /bits/ 64 <CONFIG_TEXT_BASE>;
						entry = /bits/ 64 <CONFIG_TEXT_BASE>;
						hash {
							algo = "md5";
						};
						u-boot-nodtb {
						};
					};
					atf {
						description = "Trusted Firmware-A";
						type = "firmware";
						os = "arm-trusted-firmware";
						arch = "arm64";
						compression = "none";
						load = /bits/ 64 <CONFIG_BL31_LOAD_ADDR>;
						entry = /bits/ 64 <CONFIG_BL31_LOAD_ADDR>;
						hash {
							algo = "md5";
						};
						atf-bl31 {
							optional;
						};
					};
					tee {
						description = "OP-TEE";
						type = "tee";
						arch = "arm64";
						compression = "none";
						os = "tee";
						load = /bits/ 64 <CONFIG_BL32_LOAD_ADDR>;
						entry = /bits/ 64 <CONFIG_BL32_LOAD_ADDR>;
						hash {
							algo = "md5";
						};
						tee-os {
							optional;
						};
					};
					fdt {
						description = "DT";
						type = "flat_dt";
						arch = "arm64";
						compression = "none";
#if CONFIG_XILINX_OF_BOARD_DTB_ADDR
						load = /bits/ 64 <CONFIG_XILINX_OF_BOARD_DTB_ADDR>;
#endif
						hash {
							algo = "md5";
						};
						uboot-fdt-blob {
							filename = "u-boot.dtb";
							type = "blob-ext";
						};
					};
				};
				configurations {
					default = "conf-1";
					conf-1 {
						description = "Single DT";
						firmware = "atf";
						loadables = "tee", "uboot";
						fdt = "fdt";
					};
				};
			};
		};

#ifdef CONFIG_SYS_SPI_U_BOOT_OFFS
		/* QSPI image for testing QSPI boot mode */
		image {
			filename = "qspi.bin";
			pad-byte = <0>;

			blob-ext@1 {
				offset = <0x0>;
				filename = "spl/boot.bin";
			};
			blob-ext@2 {
				offset = <CONFIG_SYS_SPI_U_BOOT_OFFS>;
				filename = U_BOOT_ITB_FILENAME;
			};
			fdtmap {
			};
		};

		image-single {
			filename = "qspi-single.bin";
			pad-byte = <0>;

			blob-ext@1 {
				offset = <0x0>;
				filename = "spl/boot.bin";
			};
			blob-ext@2 {
				offset = <CONFIG_SYS_SPI_U_BOOT_OFFS>;
				filename = "u-boot-single.itb";
			};
			fdtmap {
			};
		};
#endif
#endif
	};
};