xref: /OK3568_Linux_fs/u-boot/board/sunxi/mksunxi_fit_atf.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/bin/sh
2*4882a593Smuzhiyun#
3*4882a593Smuzhiyun# script to generate FIT image source for 64-bit sunxi boards with
4*4882a593Smuzhiyun# ARM Trusted Firmware and multiple device trees (given on the command line)
5*4882a593Smuzhiyun#
6*4882a593Smuzhiyun# usage: $0 <dt_name> [<dt_name> [<dt_name] ...]
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun[ -z "$BL31" ] && BL31="bl31.bin"
9*4882a593Smuzhiyun
10*4882a593Smuzhiyunif [ ! -f $BL31 ]; then
11*4882a593Smuzhiyun	echo "WARNING: BL31 file $BL31 NOT found, resulting binary is non-functional" >&2
12*4882a593Smuzhiyun	echo "Please read the section on ARM Trusted Firmware (ATF) in board/sunxi/README.sunxi64" >&2
13*4882a593Smuzhiyun	BL31=/dev/null
14*4882a593Smuzhiyunfi
15*4882a593Smuzhiyun
16*4882a593Smuzhiyuncat << __HEADER_EOF
17*4882a593Smuzhiyun/dts-v1/;
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun/ {
20*4882a593Smuzhiyun	description = "Configuration to load ATF before U-Boot";
21*4882a593Smuzhiyun	#address-cells = <1>;
22*4882a593Smuzhiyun
23*4882a593Smuzhiyun	images {
24*4882a593Smuzhiyun		uboot@1 {
25*4882a593Smuzhiyun			description = "U-Boot (64-bit)";
26*4882a593Smuzhiyun			data = /incbin/("u-boot-nodtb.bin");
27*4882a593Smuzhiyun			type = "standalone";
28*4882a593Smuzhiyun			arch = "arm64";
29*4882a593Smuzhiyun			compression = "none";
30*4882a593Smuzhiyun			load = <0x4a000000>;
31*4882a593Smuzhiyun		};
32*4882a593Smuzhiyun		atf@1 {
33*4882a593Smuzhiyun			description = "ARM Trusted Firmware";
34*4882a593Smuzhiyun			data = /incbin/("$BL31");
35*4882a593Smuzhiyun			type = "firmware";
36*4882a593Smuzhiyun			arch = "arm64";
37*4882a593Smuzhiyun			compression = "none";
38*4882a593Smuzhiyun			load = <0x44000>;
39*4882a593Smuzhiyun			entry = <0x44000>;
40*4882a593Smuzhiyun		};
41*4882a593Smuzhiyun__HEADER_EOF
42*4882a593Smuzhiyun
43*4882a593Smuzhiyuncnt=1
44*4882a593Smuzhiyunfor dtname in $*
45*4882a593Smuzhiyundo
46*4882a593Smuzhiyun	cat << __FDT_IMAGE_EOF
47*4882a593Smuzhiyun		fdt@$cnt {
48*4882a593Smuzhiyun			description = "$(basename $dtname .dtb)";
49*4882a593Smuzhiyun			data = /incbin/("$dtname");
50*4882a593Smuzhiyun			type = "flat_dt";
51*4882a593Smuzhiyun			compression = "none";
52*4882a593Smuzhiyun		};
53*4882a593Smuzhiyun__FDT_IMAGE_EOF
54*4882a593Smuzhiyun	cnt=$((cnt+1))
55*4882a593Smuzhiyundone
56*4882a593Smuzhiyun
57*4882a593Smuzhiyuncat << __CONF_HEADER_EOF
58*4882a593Smuzhiyun	};
59*4882a593Smuzhiyun	configurations {
60*4882a593Smuzhiyun		default = "config@1";
61*4882a593Smuzhiyun
62*4882a593Smuzhiyun__CONF_HEADER_EOF
63*4882a593Smuzhiyun
64*4882a593Smuzhiyuncnt=1
65*4882a593Smuzhiyunfor dtname in $*
66*4882a593Smuzhiyundo
67*4882a593Smuzhiyun	cat << __CONF_SECTION_EOF
68*4882a593Smuzhiyun		config@$cnt {
69*4882a593Smuzhiyun			description = "$(basename $dtname .dtb)";
70*4882a593Smuzhiyun			firmware = "uboot@1";
71*4882a593Smuzhiyun			loadables = "atf@1";
72*4882a593Smuzhiyun			fdt = "fdt@$cnt";
73*4882a593Smuzhiyun		};
74*4882a593Smuzhiyun__CONF_SECTION_EOF
75*4882a593Smuzhiyun	cnt=$((cnt+1))
76*4882a593Smuzhiyundone
77*4882a593Smuzhiyun
78*4882a593Smuzhiyuncat << __ITS_EOF
79*4882a593Smuzhiyun	};
80*4882a593Smuzhiyun};
81*4882a593Smuzhiyun__ITS_EOF
82