u-boot.itb has been generated via mkimage_fit_atf.sh but it is on the way
out that's why convert it's description to binman.
Compare to script binman description is not able to configure BL31 and BL32
load/entry addresses which should be done separately.

Signed-off-by: Michal Simek <michal.si...@amd.com>
---

Changes in v2:
- new patch

 arch/arm/dts/Makefile                |   1 +
 arch/arm/dts/zynqmp-binman.dts       | 111 +++++++++++++++++++++++++++
 configs/xilinx_zynqmp_virt_defconfig |   3 +
 3 files changed, 115 insertions(+)
 create mode 100644 arch/arm/dts/zynqmp-binman.dts

diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
index 5d28a17b8b8c..25945efa5ae3 100644
--- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile
@@ -320,6 +320,7 @@ dtb-$(CONFIG_ARCH_ZYNQMP) += 
zynqmp-p-a2197-00-revA-x-prc-02-revA.dtb
 dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-p-a2197-00-revA-x-prc-03-revA.dtb
 dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-p-a2197-00-revA-x-prc-04-revA.dtb
 dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-p-a2197-00-revA-x-prc-05-revA.dtb
+dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-binman.dtb
 
 zynqmp-sc-vek280-revA-dtbs := zynqmp-sc-revB.dtb zynqmp-sc-vek280-revA.dtbo
 zynqmp-sc-vek280-revB-dtbs := zynqmp-sc-revC.dtb zynqmp-sc-vek280-revB.dtbo
diff --git a/arch/arm/dts/zynqmp-binman.dts b/arch/arm/dts/zynqmp-binman.dts
new file mode 100644
index 000000000000..df0fdf465107
--- /dev/null
+++ b/arch/arm/dts/zynqmp-binman.dts
@@ -0,0 +1,111 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * dts file for Xilinx ZynqMP platforms
+ *
+ * (C) Copyright 2024, Advanced Micro Devices, Inc.
+ *
+ * Michal Simek <michal.si...@amd.com>
+ */
+
+#include <config.h>
+
+/dts-v1/;
+/ {
+       binman: binman {
+               multiple-images;
+
+               /* u-boot.itb generation in a static way */
+               itb {
+                       filename = "u-boot.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_BL31_LOAD_ADDR>;
+                                               entry = /bits/ 64 
<CONFIG_BL31_LOAD_ADDR>;
+                                               tee-os {
+                                                       optional;
+                                               };
+                                       };
+                                       @fdt-SEQ {
+                                               description = "NAME";
+                                               type = "flat_dt";
+                                               arch = "arm64";
+                                               compression = "none";
+                                               load = <0x0 0x100000>;
+                                               hash-1 {
+                                                       algo = "md5";
+                                               };
+                                       };
+                               };
+                               configurations {
+                                       default = "@conf-DEFAULT-SEQ";
+                                       @conf-SEQ {
+                                               description = "NAME";
+                                               firmware = "atf";
+                                               loadables = "tee", "uboot";
+                                               fdt = "fdt-SEQ";
+                                       };
+                               };
+                       };
+               };
+
+#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";
+                       };
+                       fdtmap {
+                       };
+               };
+#endif
+       };
+};
diff --git a/configs/xilinx_zynqmp_virt_defconfig 
b/configs/xilinx_zynqmp_virt_defconfig
index 310efdf2338a..09f487acf0dc 100644
--- a/configs/xilinx_zynqmp_virt_defconfig
+++ b/configs/xilinx_zynqmp_virt_defconfig
@@ -41,6 +41,7 @@ CONFIG_SYS_PBSIZE=2073
 CONFIG_BOARD_EARLY_INIT_R=y
 CONFIG_CLOCKS=y
 CONFIG_SPL_MAX_SIZE=0x40000
+# CONFIG_SPL_BINMAN_SYMBOLS is not set
 # CONFIG_SPL_SHARES_INIT_SP_ADDR is not set
 CONFIG_SPL_SYS_MALLOC=y
 CONFIG_SPL_HAS_CUSTOM_MALLOC_START=y
@@ -241,6 +242,8 @@ CONFIG_BMP_32BPP=y
 CONFIG_VIRTIO_MMIO=y
 CONFIG_VIRTIO_NET=y
 CONFIG_VIRTIO_BLK=y
+# CONFIG_BINMAN_FDT is not set
+CONFIG_BINMAN_DTB="./arch/arm/dts/zynqmp-binman.dtb"
 CONFIG_PANIC_HANG=y
 CONFIG_TPM=y
 CONFIG_SPL_GZIP=y
-- 
2.43.0

Reply via email to