xref: /openbmc/u-boot/tools/k3_fit_atf.sh (revision 9d4f8c42cb98bb959adce4b2073660b120784bb1)
1*9d4f8c42SLokesh Vutla#!/bin/sh
2*9d4f8c42SLokesh Vutla# SPDX-License-Identifier: GPL-2.0+
3*9d4f8c42SLokesh Vutla#
4*9d4f8c42SLokesh Vutla# script to generate FIT image source for K3 Family boards with
5*9d4f8c42SLokesh Vutla# ATF, OPTEE, SPL and multiple device trees (given on the command line).
6*9d4f8c42SLokesh Vutla# Inspired from board/sunxi/mksunxi_fit_atf.sh
7*9d4f8c42SLokesh Vutla#
8*9d4f8c42SLokesh Vutla# usage: $0 <dt_name> [<dt_name> [<dt_name] ...]
9*9d4f8c42SLokesh Vutla
10*9d4f8c42SLokesh Vutla[ -z "$ATF" ] && ATF="bl31.bin"
11*9d4f8c42SLokesh Vutla
12*9d4f8c42SLokesh Vutlaif [ ! -f $ATF ]; then
13*9d4f8c42SLokesh Vutla	echo "WARNING ATF file $ATF NOT found, resulting binary is non-functional" >&2
14*9d4f8c42SLokesh Vutla	ATF=/dev/null
15*9d4f8c42SLokesh Vutlafi
16*9d4f8c42SLokesh Vutla
17*9d4f8c42SLokesh Vutla[ -z "$TEE" ] && TEE="bl32.bin"
18*9d4f8c42SLokesh Vutla
19*9d4f8c42SLokesh Vutlaif [ ! -f $TEE ]; then
20*9d4f8c42SLokesh Vutla	echo "WARNING OPTEE file $TEE NOT found, resulting might be non-functional" >&2
21*9d4f8c42SLokesh Vutla	TEE=/dev/null
22*9d4f8c42SLokesh Vutlafi
23*9d4f8c42SLokesh Vutla
24*9d4f8c42SLokesh Vutlacat << __HEADER_EOF
25*9d4f8c42SLokesh Vutla/dts-v1/;
26*9d4f8c42SLokesh Vutla
27*9d4f8c42SLokesh Vutla/ {
28*9d4f8c42SLokesh Vutla	description = "Configuration to load ATF and SPL";
29*9d4f8c42SLokesh Vutla	#address-cells = <1>;
30*9d4f8c42SLokesh Vutla
31*9d4f8c42SLokesh Vutla	images {
32*9d4f8c42SLokesh Vutla		atf {
33*9d4f8c42SLokesh Vutla			description = "ARM Trusted Firmware";
34*9d4f8c42SLokesh Vutla			data = /incbin/("$ATF");
35*9d4f8c42SLokesh Vutla			type = "firmware";
36*9d4f8c42SLokesh Vutla			arch = "arm64";
37*9d4f8c42SLokesh Vutla			compression = "none";
38*9d4f8c42SLokesh Vutla			os = "arm-trusted-firmware";
39*9d4f8c42SLokesh Vutla			load = <0x70000000>;
40*9d4f8c42SLokesh Vutla			entry = <0x70000000>;
41*9d4f8c42SLokesh Vutla		};
42*9d4f8c42SLokesh Vutla		tee {
43*9d4f8c42SLokesh Vutla			description = "OPTEE";
44*9d4f8c42SLokesh Vutla			data = /incbin/("$TEE");
45*9d4f8c42SLokesh Vutla			type = "tee";
46*9d4f8c42SLokesh Vutla			arch = "arm64";
47*9d4f8c42SLokesh Vutla			compression = "none";
48*9d4f8c42SLokesh Vutla			os = "tee";
49*9d4f8c42SLokesh Vutla			load = <0x9e800000>;
50*9d4f8c42SLokesh Vutla			entry = <0x9e800000>;
51*9d4f8c42SLokesh Vutla		};
52*9d4f8c42SLokesh Vutla		spl {
53*9d4f8c42SLokesh Vutla			description = "SPL (64-bit)";
54*9d4f8c42SLokesh Vutla			data = /incbin/("spl/u-boot-spl-nodtb.bin");
55*9d4f8c42SLokesh Vutla			type = "standalone";
56*9d4f8c42SLokesh Vutla			os = "U-Boot";
57*9d4f8c42SLokesh Vutla			arch = "arm64";
58*9d4f8c42SLokesh Vutla			compression = "none";
59*9d4f8c42SLokesh Vutla			load = <0x80080000>;
60*9d4f8c42SLokesh Vutla			entry = <0x80080000>;
61*9d4f8c42SLokesh Vutla		};
62*9d4f8c42SLokesh Vutla__HEADER_EOF
63*9d4f8c42SLokesh Vutla
64*9d4f8c42SLokesh Vutlafor dtname in $*
65*9d4f8c42SLokesh Vutlado
66*9d4f8c42SLokesh Vutla	cat << __FDT_IMAGE_EOF
67*9d4f8c42SLokesh Vutla		$(basename $dtname) {
68*9d4f8c42SLokesh Vutla			description = "$(basename $dtname .dtb)";
69*9d4f8c42SLokesh Vutla			data = /incbin/("$dtname");
70*9d4f8c42SLokesh Vutla			type = "flat_dt";
71*9d4f8c42SLokesh Vutla			arch = "arm";
72*9d4f8c42SLokesh Vutla			compression = "none";
73*9d4f8c42SLokesh Vutla		};
74*9d4f8c42SLokesh Vutla__FDT_IMAGE_EOF
75*9d4f8c42SLokesh Vutladone
76*9d4f8c42SLokesh Vutla
77*9d4f8c42SLokesh Vutlacat << __CONF_HEADER_EOF
78*9d4f8c42SLokesh Vutla	};
79*9d4f8c42SLokesh Vutla	configurations {
80*9d4f8c42SLokesh Vutla		default = "$(basename $1)";
81*9d4f8c42SLokesh Vutla
82*9d4f8c42SLokesh Vutla__CONF_HEADER_EOF
83*9d4f8c42SLokesh Vutla
84*9d4f8c42SLokesh Vutlafor dtname in $*
85*9d4f8c42SLokesh Vutlado
86*9d4f8c42SLokesh Vutla	cat << __CONF_SECTION_EOF
87*9d4f8c42SLokesh Vutla		$(basename $dtname) {
88*9d4f8c42SLokesh Vutla			description = "$(basename $dtname .dtb)";
89*9d4f8c42SLokesh Vutla			firmware = "atf";
90*9d4f8c42SLokesh Vutla			loadables = "tee", "spl";
91*9d4f8c42SLokesh Vutla			fdt = "$(basename $dtname)";
92*9d4f8c42SLokesh Vutla		};
93*9d4f8c42SLokesh Vutla__CONF_SECTION_EOF
94*9d4f8c42SLokesh Vutladone
95*9d4f8c42SLokesh Vutla
96*9d4f8c42SLokesh Vutlacat << __ITS_EOF
97*9d4f8c42SLokesh Vutla	};
98*9d4f8c42SLokesh Vutla};
99*9d4f8c42SLokesh Vutla__ITS_EOF
100