diff mbox series

[v3,11/19] am64x: dts: binman: Package tiboot3.bin, tispl.bin u-boot.img

Message ID 20230421123203.1315330-12-n-francis@ti.com
State Changes Requested
Delegated to: Tom Rini
Headers show
Series Migration to using binman for bootloader | expand

Commit Message

Neha Malcom Francis April 21, 2023, 12:31 p.m. UTC
Support added for HS and GP boot binaries for AM64x.

tiboot3.bin, tispl.bin and u-boot.img: For HS-SE devices
tiboot3.bin_fs, tispl.bin and u-boot.img: For HS-FS devices
tiboot3.bin_unsigned, tispl.bin_unsigned, u-boot.img_unsigned: For GP
devices

Note that the bootflow followed by AM64x requires:

tiboot3.bin:
	* R5 SPL
	* R5 SPL dtbs
	* sysfw
	* board-cfg
	* pm-cfg
	* sec-cfg
	* rm-cfg

tispl.bin:
	* ATF
	* OPTEE
	* A53 SPL
	* A53 SPL dtbs

u-boot.img:
	* A53 U-Boot
	* A53 U-Boot dtbs

Signed-off-by: Neha Malcom Francis <n-francis@ti.com>
---
 arch/arm/dts/k3-am642-evm-u-boot.dtsi |   2 +
 arch/arm/dts/k3-am642-r5-evm.dts      |   1 +
 arch/arm/dts/k3-am64x-binman.dtsi     | 569 ++++++++++++++++++++++++++
 board/ti/am64x/Kconfig                |   2 +
 4 files changed, 574 insertions(+)
 create mode 100644 arch/arm/dts/k3-am64x-binman.dtsi

Comments

Simon Glass April 24, 2023, 7:42 p.m. UTC | #1
Hi Neha,

On Fri, 21 Apr 2023 at 06:32, Neha Malcom Francis <n-francis@ti.com> wrote:
>
> Support added for HS and GP boot binaries for AM64x.
>
> tiboot3.bin, tispl.bin and u-boot.img: For HS-SE devices
> tiboot3.bin_fs, tispl.bin and u-boot.img: For HS-FS devices
> tiboot3.bin_unsigned, tispl.bin_unsigned, u-boot.img_unsigned: For GP
> devices
>
> Note that the bootflow followed by AM64x requires:
>
> tiboot3.bin:
>         * R5 SPL
>         * R5 SPL dtbs
>         * sysfw
>         * board-cfg
>         * pm-cfg
>         * sec-cfg
>         * rm-cfg
>
> tispl.bin:
>         * ATF
>         * OPTEE
>         * A53 SPL
>         * A53 SPL dtbs
>
> u-boot.img:
>         * A53 U-Boot
>         * A53 U-Boot dtbs
>
> Signed-off-by: Neha Malcom Francis <n-francis@ti.com>
> ---
>  arch/arm/dts/k3-am642-evm-u-boot.dtsi |   2 +
>  arch/arm/dts/k3-am642-r5-evm.dts      |   1 +
>  arch/arm/dts/k3-am64x-binman.dtsi     | 569 ++++++++++++++++++++++++++
>  board/ti/am64x/Kconfig                |   2 +
>  4 files changed, 574 insertions(+)
>  create mode 100644 arch/arm/dts/k3-am64x-binman.dtsi

Reviewed-by: Simon Glass <sjg@chromium.org>

I notice that some of the entries are optional. Do you actual make use
of this (i.e. that when they are missing binman removes the entries)?

Regards,
Simon
Neha Malcom Francis April 25, 2023, 7:31 a.m. UTC | #2
Hi Simon

On 25/04/23 01:12, Simon Glass wrote:
> Hi Neha,
> 
> On Fri, 21 Apr 2023 at 06:32, Neha Malcom Francis <n-francis@ti.com> wrote:
>>
>> Support added for HS and GP boot binaries for AM64x.
>>
>> tiboot3.bin, tispl.bin and u-boot.img: For HS-SE devices
>> tiboot3.bin_fs, tispl.bin and u-boot.img: For HS-FS devices
>> tiboot3.bin_unsigned, tispl.bin_unsigned, u-boot.img_unsigned: For GP
>> devices
>>
>> Note that the bootflow followed by AM64x requires:
>>
>> tiboot3.bin:
>>          * R5 SPL
>>          * R5 SPL dtbs
>>          * sysfw
>>          * board-cfg
>>          * pm-cfg
>>          * sec-cfg
>>          * rm-cfg
>>
>> tispl.bin:
>>          * ATF
>>          * OPTEE
>>          * A53 SPL
>>          * A53 SPL dtbs
>>
>> u-boot.img:
>>          * A53 U-Boot
>>          * A53 U-Boot dtbs
>>
>> Signed-off-by: Neha Malcom Francis <n-francis@ti.com>
>> ---
>>   arch/arm/dts/k3-am642-evm-u-boot.dtsi |   2 +
>>   arch/arm/dts/k3-am642-r5-evm.dts      |   1 +
>>   arch/arm/dts/k3-am64x-binman.dtsi     | 569 ++++++++++++++++++++++++++
>>   board/ti/am64x/Kconfig                |   2 +
>>   4 files changed, 574 insertions(+)
>>   create mode 100644 arch/arm/dts/k3-am64x-binman.dtsi
> 
> Reviewed-by: Simon Glass <sjg@chromium.org>
> 
> I notice that some of the entries are optional. Do you actual make use
> of this (i.e. that when they are missing binman removes the entries)?
> 

So right now the build generates binaries for all three types: HS-FS, 
HS-SE and GP devices. It's not necessary for the user to provide 
component binaries for all three of them, say they only have GP SYSFW 
binaries available with them. So that was the reasoning behind putting 
those binaries as optional, we should not have a failed build in those 
cases. However binaries like DM and board-config binaries that are 
common between all three needs to be there so it's not optional.

> Regards,
> Simon
Andrew Davis April 25, 2023, 6:46 p.m. UTC | #3
On 4/25/23 2:31 AM, Neha Malcom Francis wrote:
> Hi Simon
> 
> On 25/04/23 01:12, Simon Glass wrote:
>> Hi Neha,
>>
>> On Fri, 21 Apr 2023 at 06:32, Neha Malcom Francis <n-francis@ti.com> wrote:
>>>
>>> Support added for HS and GP boot binaries for AM64x.
>>>
>>> tiboot3.bin, tispl.bin and u-boot.img: For HS-SE devices
>>> tiboot3.bin_fs, tispl.bin and u-boot.img: For HS-FS devices
>>> tiboot3.bin_unsigned, tispl.bin_unsigned, u-boot.img_unsigned: For GP
>>> devices
>>>
>>> Note that the bootflow followed by AM64x requires:
>>>
>>> tiboot3.bin:
>>>          * R5 SPL
>>>          * R5 SPL dtbs
>>>          * sysfw
>>>          * board-cfg
>>>          * pm-cfg
>>>          * sec-cfg
>>>          * rm-cfg
>>>
>>> tispl.bin:
>>>          * ATF
>>>          * OPTEE
>>>          * A53 SPL
>>>          * A53 SPL dtbs
>>>
>>> u-boot.img:
>>>          * A53 U-Boot
>>>          * A53 U-Boot dtbs
>>>
>>> Signed-off-by: Neha Malcom Francis <n-francis@ti.com>
>>> ---
>>>   arch/arm/dts/k3-am642-evm-u-boot.dtsi |   2 +
>>>   arch/arm/dts/k3-am642-r5-evm.dts      |   1 +
>>>   arch/arm/dts/k3-am64x-binman.dtsi     | 569 ++++++++++++++++++++++++++
>>>   board/ti/am64x/Kconfig                |   2 +
>>>   4 files changed, 574 insertions(+)
>>>   create mode 100644 arch/arm/dts/k3-am64x-binman.dtsi
>>
>> Reviewed-by: Simon Glass <sjg@chromium.org>
>>
>> I notice that some of the entries are optional. Do you actual make use
>> of this (i.e. that when they are missing binman removes the entries)?
>>
> 
> So right now the build generates binaries for all three types: HS-FS, HS-SE and GP devices. It's not necessary for the user to provide component binaries for all three of them, say they only have GP SYSFW binaries available with them.

Would this ever need to happen? We provide all three firmware types for all our
SoCs out in public[0], why would anyone only have one type of firmware available?

Andrew

[0] https://git.ti.com/cgit/processor-firmware/ti-linux-firmware/tree/ti-sysfw?h=ti-linux-firmware

> So that was the reasoning behind putting those binaries as optional, we should not have a failed build in those cases. However binaries like DM and board-config binaries that are common between all three needs to be there so it's not optional.
> 
>> Regards,
>> Simon
>
Simon Glass April 25, 2023, 7:23 p.m. UTC | #4
Hi Neha,

On Tue, 25 Apr 2023 at 01:32, Neha Malcom Francis <n-francis@ti.com> wrote:
>
> Hi Simon
>
> On 25/04/23 01:12, Simon Glass wrote:
> > Hi Neha,
> >
> > On Fri, 21 Apr 2023 at 06:32, Neha Malcom Francis <n-francis@ti.com> wrote:
> >>
> >> Support added for HS and GP boot binaries for AM64x.
> >>
> >> tiboot3.bin, tispl.bin and u-boot.img: For HS-SE devices
> >> tiboot3.bin_fs, tispl.bin and u-boot.img: For HS-FS devices
> >> tiboot3.bin_unsigned, tispl.bin_unsigned, u-boot.img_unsigned: For GP
> >> devices
> >>
> >> Note that the bootflow followed by AM64x requires:
> >>
> >> tiboot3.bin:
> >>          * R5 SPL
> >>          * R5 SPL dtbs
> >>          * sysfw
> >>          * board-cfg
> >>          * pm-cfg
> >>          * sec-cfg
> >>          * rm-cfg
> >>
> >> tispl.bin:
> >>          * ATF
> >>          * OPTEE
> >>          * A53 SPL
> >>          * A53 SPL dtbs
> >>
> >> u-boot.img:
> >>          * A53 U-Boot
> >>          * A53 U-Boot dtbs
> >>
> >> Signed-off-by: Neha Malcom Francis <n-francis@ti.com>
> >> ---
> >>   arch/arm/dts/k3-am642-evm-u-boot.dtsi |   2 +
> >>   arch/arm/dts/k3-am642-r5-evm.dts      |   1 +
> >>   arch/arm/dts/k3-am64x-binman.dtsi     | 569 ++++++++++++++++++++++++++
> >>   board/ti/am64x/Kconfig                |   2 +
> >>   4 files changed, 574 insertions(+)
> >>   create mode 100644 arch/arm/dts/k3-am64x-binman.dtsi
> >
> > Reviewed-by: Simon Glass <sjg@chromium.org>
> >
> > I notice that some of the entries are optional. Do you actual make use
> > of this (i.e. that when they are missing binman removes the entries)?
> >
>
> So right now the build generates binaries for all three types: HS-FS,
> HS-SE and GP devices. It's not necessary for the user to provide
> component binaries for all three of them, say they only have GP SYSFW
> binaries available with them. So that was the reasoning behind putting
> those binaries as optional, we should not have a failed build in those
> cases. However binaries like DM and board-config binaries that are
> common between all three needs to be there so it's not optional.

The way 'optional' is supposed to work is that an etype decides that
an optional entry is absent and so marks it as absent. Then when
drop_absent() is called, the entry is removed from its section.

You can certainly add that functionality if you like.

But we must have a reliable signal for whether an image is valid or not.

Regards,
Simon
diff mbox series

Patch

diff --git a/arch/arm/dts/k3-am642-evm-u-boot.dtsi b/arch/arm/dts/k3-am642-evm-u-boot.dtsi
index 64857b0909..73577e8cfd 100644
--- a/arch/arm/dts/k3-am642-evm-u-boot.dtsi
+++ b/arch/arm/dts/k3-am642-evm-u-boot.dtsi
@@ -3,6 +3,8 @@ 
  * Copyright (C) 2020-2021 Texas Instruments Incorporated - https://www.ti.com/
  */
 
+#include "k3-am64x-binman.dtsi"
+
 / {
 	chosen {
 		stdout-path = "serial2:115200n8";
diff --git a/arch/arm/dts/k3-am642-r5-evm.dts b/arch/arm/dts/k3-am642-r5-evm.dts
index ca5ce4a35a..d6b1ec6e58 100644
--- a/arch/arm/dts/k3-am642-r5-evm.dts
+++ b/arch/arm/dts/k3-am642-r5-evm.dts
@@ -8,6 +8,7 @@ 
 #include "k3-am642.dtsi"
 #include "k3-am64-evm-ddr4-1600MTs.dtsi"
 #include "k3-am64-ddr.dtsi"
+#include "k3-am64x-binman.dtsi"
 
 / {
 	chosen {
diff --git a/arch/arm/dts/k3-am64x-binman.dtsi b/arch/arm/dts/k3-am64x-binman.dtsi
new file mode 100644
index 0000000000..72ffc798b7
--- /dev/null
+++ b/arch/arm/dts/k3-am64x-binman.dtsi
@@ -0,0 +1,569 @@ 
+// SPDX-License-Identifier: GPL-2.0+
+// Copyright (C) 2022 Texas Instruments Incorporated - https://www.ti.com/
+
+#include <config.h>
+
+/ {
+	binman: binman {
+		multiple-images;
+	};
+};
+
+#ifdef CONFIG_TARGET_AM642_R5_EVM
+
+&binman {
+	board-cfg {
+		filename = "board-cfg.bin";
+		ti-board-config {
+			config = "board-cfg.yaml";
+			schema = "schema.yaml";
+		};
+	};
+	pm-cfg {
+		filename = "pm-cfg.bin";
+		ti-board-config {
+			config = "pm-cfg.yaml";
+			schema = "schema.yaml";
+		};
+	};
+	rm-cfg {
+		filename = "rm-cfg.bin";
+		ti-board-config {
+			config = "rm-cfg.yaml";
+			schema = "schema.yaml";
+		};
+	};
+	sec-cfg {
+		filename = "sec-cfg.bin";
+		ti-board-config {
+			config = "sec-cfg.yaml";
+			schema = "schema.yaml";
+		};
+	};
+	combined-sysfw-cfg {
+		filename = "combined-sysfw-cfg.bin";
+		ti-board-config {
+			board-cfg {
+				config = "board-cfg.yaml";
+				schema = "schema.yaml";
+			};
+			sec-cfg {
+				config = "sec-cfg.yaml";
+				schema = "schema.yaml";
+			};
+			pm-cfg {
+				config = "pm-cfg.yaml";
+				schema = "schema.yaml";
+			};
+			rm-cfg {
+				config = "rm-cfg.yaml";
+				schema = "schema.yaml";
+			};
+		};
+	};
+	tiboot3 {
+		filename = "tiboot3.bin";
+		ti-secure-rom {
+			content = <&u_boot_spl>, <&ti_sci_enc>,
+				<&combined_sysfw_cfg>, <&sysfw_inner_cert>;
+			combined;
+			sysfw-inner-cert;
+			keyfile = "custMpk.pem";
+			sw-rev = <1>;
+			content-sbl = <&u_boot_spl>;
+			content-sysfw = <&ti_sci_enc>;
+			content-sysfw-data = <&combined_sysfw_cfg>;
+			content-sysfw-inner-cert = <&sysfw_inner_cert>;
+			load = <0x70000000>;
+			load-sysfw = <0x44000>;
+			load-sysfw-data = <0x7b000>;
+		};
+		u_boot_spl: u-boot-spl {
+			no-expanded;
+		};
+		ti_sci_enc: ti-fs-enc.bin {
+			filename = "ti-sysfw/ti-sci-firmware-am64x_sr2-hs-enc.bin";
+			type = "blob-ext";
+			optional;
+		};
+		combined_sysfw_cfg: combined-sysfw-cfg.bin {
+			filename = "combined-sysfw-cfg.bin";
+			type = "blob-ext";
+		};
+		sysfw_inner_cert: sysfw-inner-cert {
+			filename = "ti-sysfw/ti-sci-firmware-am64x_sr2-hs-cert.bin";
+			type = "blob-ext";
+			optional;
+		};
+
+	};
+};
+
+&binman {
+	tiboot3_fs {
+		filename = "tiboot3.bin_fs";
+		ti-secure-rom {
+			content = <&u_boot_spl_fs>, <&ti_sci_enc_fs>,
+				<&combined_sysfw_cfg_fs>, <&sysfw_inner_cert_fs>;
+			combined;
+			sysfw-inner-cert;
+			keyfile = "custMpk.pem";
+			sw-rev = <1>;
+			content-sbl = <&u_boot_spl_fs>;
+			content-sysfw = <&ti_sci_enc_fs>;
+			content-sysfw-data = <&combined_sysfw_cfg_fs>;
+			content-sysfw-inner-cert = <&sysfw_inner_cert_fs>;
+			load = <0x70000000>;
+			load-sysfw = <0x44000>;
+			load-sysfw-data = <0x7b000>;
+		};
+		u_boot_spl_fs: u-boot-spl {
+			no-expanded;
+		};
+		ti_sci_enc_fs: ti-fs-enc.bin {
+			filename = "ti-sysfw/ti-sci-firmware-am64x_sr2-hs-enc.bin";
+			type = "blob-ext";
+			optional;
+		};
+		combined_sysfw_cfg_fs: combined-sysfw-cfg.bin {
+			filename = "combined-sysfw-cfg.bin";
+			type = "blob-ext";
+		};
+		sysfw_inner_cert_fs: sysfw-inner-cert {
+			filename = "ti-sysfw/ti-sci-firmware-am64x_sr2-hs-cert.bin";
+			type = "blob-ext";
+			optional;
+		};
+
+	};
+};
+
+&binman {
+	tiboot3_unsigned {
+		filename = "tiboot3.bin_unsigned";
+		ti-secure-rom {
+			content = <&u_boot_spl_unsigned>, <&ti_sci_gp>, <&combined_sysfw_cfg_gp>;
+			combined;
+			content-sbl = <&u_boot_spl_unsigned>;
+			load = <0x70000000>;
+			content-sysfw = <&ti_sci_gp>;
+			load-sysfw = <0x44000>;
+			content-sysfw-data = <&combined_sysfw_cfg_gp>;
+			load-sysfw-data = <0x7b000>;
+			sw-rev = <1>;
+			keyfile = "ti-degenerate-key.pem";
+		};
+		u_boot_spl_unsigned: u-boot-spl {
+			no-expanded;
+		};
+		ti_sci_gp: ti-sci-gp.bin {
+			filename = "ti-sysfw/ti-sci-firmware-am64x-gp.bin";
+			type = "blob-ext";
+			optional;
+		};
+		combined_sysfw_cfg_gp: combined-sysfw-cfg-gp.bin {
+			filename = "combined-sysfw-cfg.bin";
+			type = "blob-ext";
+		};
+	};
+};
+
+#endif
+
+#ifdef CONFIG_TARGET_AM642_A53_EVM
+
+#define SPL_NODTB "spl/u-boot-spl-nodtb.bin"
+#define SPL_AM642_EVM_DTB "spl/dts/k3-am642-evm.dtb"
+#define SPL_AM642_SK_DTB "spl/dts/k3-am642-sk.dtb"
+
+#define UBOOT_NODTB "u-boot-nodtb.bin"
+#define AM642_EVM_DTB "arch/arm/dts/k3-am642-evm.dtb"
+#define AM642_SK_DTB "arch/arm/dts/k3-am642-sk.dtb"
+
+&binman {
+	ti-spl {
+		filename = "tispl.bin";
+		pad-byte = <0xff>;
+
+		fit {
+			description = "Configuration to load ATF and SPL";
+			#address-cells = <1>;
+
+			images {
+
+				atf {
+					description = "ARM Trusted Firmware";
+					type = "firmware";
+					arch = "arm64";
+					compression = "none";
+					os = "arm-trusted-firmware";
+					load = <CONFIG_K3_ATF_LOAD_ADDR>;
+					entry = <CONFIG_K3_ATF_LOAD_ADDR>;
+					ti-secure {
+						content = <&atf>;
+						keyfile = "custMpk.pem";
+					};
+					atf: atf-bl31 {
+					};
+				};
+
+				tee {
+					description = "OPTEE";
+					type = "tee";
+					arch = "arm64";
+					compression = "none";
+					os = "tee";
+					load = <0x9e800000>;
+					entry = <0x9e800000>;
+					ti-secure {
+						content = <&tee>;
+						keyfile = "custMpk.pem";
+					};
+					tee: tee-os {
+					};
+				};
+
+				dm {
+					description = "DM binary";
+					type = "firmware";
+					arch = "arm32";
+					compression = "none";
+					os = "DM";
+					load = <0x89000000>;
+					entry = <0x89000000>;
+					blob-ext {
+						filename = "/dev/null";
+					};
+				};
+
+				spl {
+					description = "SPL (64-bit)";
+					type = "standalone";
+					os = "U-Boot";
+					arch = "arm64";
+					compression = "none";
+					load = <CONFIG_SPL_TEXT_BASE>;
+					entry = <CONFIG_SPL_TEXT_BASE>;
+					ti-secure {
+						content = <&u_boot_spl_nodtb>;
+						keyfile = "custMpk.pem";
+
+					};
+					u_boot_spl_nodtb: blob-ext {
+						filename = SPL_NODTB;
+					};
+				};
+
+				fdt-0 {
+					description = "k3-am642-evm";
+					type = "flat_dt";
+					arch = "arm";
+					compression = "none";
+					ti-secure {
+						content = <&spl_am64x_evm_dtb>;
+						keyfile = "custMpk.pem";
+					};
+					spl_am64x_evm_dtb: blob-ext {
+						filename = SPL_AM642_EVM_DTB;
+					};
+
+				};
+
+				fdt-1 {
+					description = "k3-am642-sk";
+					type = "flat_dt";
+					arch = "arm";
+					compression = "none";
+					ti-secure {
+						content = <&spl_am64x_sk_dtb>;
+						keyfile = "custMpk.pem";
+					};
+					spl_am64x_sk_dtb: blob-ext {
+						filename = SPL_AM642_SK_DTB;
+					};
+
+				};
+			};
+
+			configurations {
+				default = "conf-0";
+
+				conf-0 {
+					description = "k3-am642-evm";
+					firmware = "atf";
+					loadables = "tee", "dm", "spl";
+					fdt = "fdt-0";
+				};
+
+				conf-1 {
+					description = "k3-am642-sk";
+					firmware = "atf";
+					loadables = "tee", "dm", "spl";
+					fdt = "fdt-1";
+				};
+			};
+		};
+	};
+};
+
+&binman {
+	u-boot {
+		filename = "u-boot.img";
+		pad-byte = <0xff>;
+
+		fit {
+			description = "FIT image with multiple configurations";
+
+			images {
+				uboot {
+					description = "U-Boot for AM64 board";
+					type = "firmware";
+					os = "u-boot";
+					arch = "arm";
+					compression = "none";
+					load = <CONFIG_TEXT_BASE>;
+					ti-secure {
+						content = <&u_boot_nodtb>;
+						keyfile = "custMpk.pem";
+					};
+					u_boot_nodtb: u-boot-nodtb {
+					};
+					hash {
+						algo = "crc32";
+					};
+				};
+
+				fdt-0 {
+					description = "k3-am642-evm";
+					type = "flat_dt";
+					arch = "arm";
+					compression = "none";
+					ti-secure {
+						content = <&am64x_evm_dtb>;
+						keyfile = "custMpk.pem";
+
+					};
+					am64x_evm_dtb: blob-ext {
+						filename = AM642_EVM_DTB;
+					};
+					hash {
+						algo = "crc32";
+					};
+				};
+
+				fdt-1 {
+					description = "k3-am642-sk";
+					type = "flat_dt";
+					arch = "arm";
+					compression = "none";
+					ti-secure {
+						content = <&am64x_sk_dtb>;
+						keyfile = "custMpk.pem";
+
+					};
+					am64x_sk_dtb: blob-ext {
+						filename = AM642_SK_DTB;
+					};
+					hash {
+						algo = "crc32";
+					};
+				};
+
+			};
+
+			configurations {
+				default = "conf-0";
+
+				conf-0 {
+					description = "k3-am642-evm";
+					firmware = "uboot";
+					loadables = "uboot";
+					fdt = "fdt-0";
+				};
+
+				conf-1 {
+					description = "k3-am642-sk";
+					firmware = "uboot";
+					loadables = "uboot";
+					fdt = "fdt-1";
+				};
+			};
+		};
+	};
+};
+
+&binman {
+	ti-spl_unsigned {
+		filename = "tispl.bin_unsigned";
+		pad-byte = <0xff>;
+
+		fit {
+			description = "Configuration to load ATF and SPL";
+			#address-cells = <1>;
+
+			images {
+
+				atf {
+					description = "ARM Trusted Firmware";
+					type = "firmware";
+					arch = "arm64";
+					compression = "none";
+					os = "arm-trusted-firmware";
+					load = <CONFIG_K3_ATF_LOAD_ADDR>;
+					entry = <CONFIG_K3_ATF_LOAD_ADDR>;
+					atf-bl31 {
+					};
+				};
+
+				tee {
+					description = "OPTEE";
+					type = "tee";
+					arch = "arm64";
+					compression = "none";
+					os = "tee";
+					load = <0x9e800000>;
+					entry = <0x9e800000>;
+					tee-os {
+					};
+				};
+
+				dm {
+					description = "DM binary";
+					type = "firmware";
+					arch = "arm32";
+					compression = "none";
+					os = "DM";
+					load = <0x89000000>;
+					entry = <0x89000000>;
+					blob-ext {
+						filename = "/dev/null";
+					};
+				};
+
+				spl {
+					description = "SPL (64-bit)";
+					type = "standalone";
+					os = "U-Boot";
+					arch = "arm64";
+					compression = "none";
+					load = <CONFIG_SPL_TEXT_BASE>;
+					entry = <CONFIG_SPL_TEXT_BASE>;
+					blob {
+						filename = "spl/u-boot-spl-nodtb.bin";
+					};
+				};
+
+				fdt-0 {
+					description = "k3-am642-evm";
+					type = "flat_dt";
+					arch = "arm";
+					compression = "none";
+					blob {
+						filename = SPL_AM642_EVM_DTB;
+					};
+				};
+
+				fdt-1 {
+					description = "k3-am642-sk";
+					type = "flat_dt";
+					arch = "arm";
+					compression = "none";
+					blob {
+						filename = SPL_AM642_SK_DTB;
+					};
+				};
+			};
+
+			configurations {
+				default = "conf-0";
+
+				conf-0 {
+					description = "k3-am642-evm";
+					firmware = "atf";
+					loadables = "tee", "dm", "spl";
+					fdt = "fdt-0";
+				};
+
+				conf-1 {
+					description = "k3-am642-sk";
+					firmware = "atf";
+					loadables = "tee", "dm", "spl";
+					fdt = "fdt-1";
+				};
+			};
+		};
+	};
+};
+
+&binman {
+	u-boot_unsigned {
+		filename = "u-boot.img_unsigned";
+		pad-byte = <0xff>;
+
+		fit {
+			description = "FIT image with multiple configurations";
+
+			images {
+				uboot {
+					description = "U-Boot for AM64 board";
+					type = "firmware";
+					os = "u-boot";
+					arch = "arm";
+					compression = "none";
+					load = <CONFIG_TEXT_BASE>;
+					blob {
+						filename = UBOOT_NODTB;
+					};
+					hash {
+						algo = "crc32";
+					};
+				};
+
+				fdt-0 {
+					description = "k3-am642-evm";
+					type = "flat_dt";
+					arch = "arm";
+					compression = "none";
+					blob {
+						filename = AM642_EVM_DTB;
+					};
+					hash {
+						algo = "crc32";
+					};
+				};
+
+				fdt-1 {
+					description = "k3-am642-sk";
+					type = "flat_dt";
+					arch = "arm";
+					compression = "none";
+					blob {
+						filename = AM642_SK_DTB;
+					};
+					hash {
+						algo = "crc32";
+					};
+				};
+			};
+
+			configurations {
+				default = "conf-0";
+
+				conf-0 {
+					description = "k3-am642-evm";
+					firmware = "uboot";
+					loadables = "uboot";
+					fdt = "fdt-0";
+				};
+
+				conf-1 {
+					description = "k3-am642-sk";
+					firmware = "uboot";
+					loadables = "uboot";
+					fdt = "fdt-1";
+				};
+			};
+		};
+	};
+};
+#endif
diff --git a/board/ti/am64x/Kconfig b/board/ti/am64x/Kconfig
index afb54f8cda..fb596e4adf 100644
--- a/board/ti/am64x/Kconfig
+++ b/board/ti/am64x/Kconfig
@@ -9,6 +9,7 @@  choice
 config TARGET_AM642_A53_EVM
 	bool "TI K3 based AM642 EVM running on A53"
 	select ARM64
+	select BINMAN
 	imply BOARD
 	imply SPL_BOARD
 	imply TI_I2C_BOARD_DETECT
@@ -21,6 +22,7 @@  config TARGET_AM642_R5_EVM
 	select RAM
 	select SPL_RAM
 	select K3_DDRSS
+	select BINMAN
 	imply SYS_K3_SPL_ATF
 	imply TI_I2C_BOARD_DETECT