xref: /rk3399_rockchip-uboot/arch/arm/mach-rockchip/fit_nodes.sh (revision 568668158232933b5fe724d2b02fffb5aeaf519f)
1bc77fafeSJoseph Chen#!/bin/bash
2bc77fafeSJoseph Chen#
3bc77fafeSJoseph Chen# Copyright (C) 2021 Rockchip Electronics Co., Ltd
4bc77fafeSJoseph Chen#
5bc77fafeSJoseph Chen# SPDX-License-Identifier:     GPL-2.0+
6bc77fafeSJoseph Chen#
7bc77fafeSJoseph Chen
8bc77fafeSJoseph Chen# Process args and auto set variables
9bc77fafeSJoseph Chensource ./${srctree}/arch/arm/mach-rockchip/fit_args.sh
10bc77fafeSJoseph Chenrm -f ${srctree}/*.digest ${srctree}/*.bin.gz ${srctree}/bl31_0x*.bin
11bc77fafeSJoseph Chen
128e5f6fd7SXuhui Lin# Periph register base
138e5f6fd7SXuhui Linif grep -q '^CONFIG_ROCKCHIP_RK3576=y' .config ; then
148e5f6fd7SXuhui LinMAX_ADDR_VAL=$((0x10000000))
154e72b326SXuhui Linelif grep -q '^CONFIG_ROCKCHIP_RV1126B=y' .config ; then
164e72b326SXuhui LinMAX_ADDR_VAL=$((0x20000000))
178e5f6fd7SXuhui Linelif grep -q '^CONFIG_ROCKCHIP_RV1103B=y' .config ; then
188e5f6fd7SXuhui LinMAX_ADDR_VAL=$((0x20000000))
198e5f6fd7SXuhui Linelse
2060dcafe5SJoseph ChenMAX_ADDR_VAL=$((0xf0000000))
218e5f6fd7SXuhui Linfi
228e5f6fd7SXuhui Lin
238e5f6fd7SXuhui Lin# dram base
24e034a1b9SJoseph ChenDRAM_BASE_VAL=`sed -n "/CONFIG_SYS_SDRAM_BASE=/s/CONFIG_SYS_SDRAM_BASE=//p" ${srctree}/include/autoconf.mk|tr -d '\r'`
2560dcafe5SJoseph Chen
26bc77fafeSJoseph Chen# compression
27bc77fafeSJoseph Chenif [ "${COMPRESSION}" == "gzip" ]; then
28bc77fafeSJoseph Chen	SUFFIX=".gz"
29ea098e48SJoseph Chen	COMPRESS_CMD="gzip -kf9"
30d3d5b888SJoseph Chenelif [ "${COMPRESSION}" == "lzma" ]; then
31d3d5b888SJoseph Chen	SUFFIX=".lzma"
32bb3c5898SJoseph Chen	COMPRESS_CMD="${srctree}/scripts/compress.sh lzma"
33bc77fafeSJoseph Chenelse
34bc77fafeSJoseph Chen	COMPRESSION="none"
35bc77fafeSJoseph Chen	SUFFIX=
36bc77fafeSJoseph Chenfi
37bc77fafeSJoseph Chen
38bc77fafeSJoseph Chen# nodes
39bc77fafeSJoseph Chenfunction gen_uboot_node()
40bc77fafeSJoseph Chen{
41999755ecSJoseph Chen	if [ -z ${UBOOT_LOAD_ADDR} ]; then
42999755ecSJoseph Chen		return
43999755ecSJoseph Chen	fi
44999755ecSJoseph Chen
451e70309aSJoseph Chen	UBOOT="u-boot-nodtb.bin"
46bc77fafeSJoseph Chen	echo "		uboot {
47bc77fafeSJoseph Chen			description = \"U-Boot\";
481e70309aSJoseph Chen			data = /incbin/(\"${UBOOT}${SUFFIX}\");
49bc77fafeSJoseph Chen			type = \"standalone\";
50990e82c1SJoseph Chen			arch = \"${U_ARCH}\";
51bc77fafeSJoseph Chen			os = \"U-Boot\";
52bc77fafeSJoseph Chen			compression = \"${COMPRESSION}\";
531e70309aSJoseph Chen			load = <"${UBOOT_LOAD_ADDR}">;"
541e70309aSJoseph Chen	if [ "${COMPRESSION}" != "none" ]; then
551e70309aSJoseph Chen		openssl dgst -sha256 -binary -out ${UBOOT}.digest ${UBOOT}
561e70309aSJoseph Chen		UBOOT_SZ=`ls -l ${UBOOT} | awk '{ print $5 }'`
57bc77fafeSJoseph Chen		if [ ${UBOOT_SZ} -gt 0 ]; then
58ea098e48SJoseph Chen			${COMPRESS_CMD} ${srctree}/${UBOOT}
59bc77fafeSJoseph Chen		else
601e70309aSJoseph Chen			touch ${srctree}/${UBOOT}${SUFFIX}
61bc77fafeSJoseph Chen		fi
62ea098e48SJoseph Chen		echo "			digest {
631e70309aSJoseph Chen				value = /incbin/(\"./${UBOOT}.digest\");
641e70309aSJoseph Chen				algo = \"sha256\";
651e70309aSJoseph Chen			};"
66bc77fafeSJoseph Chen	fi
671e70309aSJoseph Chen	echo "			hash {
681e70309aSJoseph Chen				algo = \"sha256\";
691e70309aSJoseph Chen			};
701e70309aSJoseph Chen		};"
71999755ecSJoseph Chen
72999755ecSJoseph Chen	LOADABLE_UBOOT="\"uboot\", "
73bc77fafeSJoseph Chen}
74bc77fafeSJoseph Chen
75bc77fafeSJoseph Chenfunction gen_fdt_node()
76bc77fafeSJoseph Chen{
77999755ecSJoseph Chen	if [ -z ${UBOOT_LOAD_ADDR} ]; then
78999755ecSJoseph Chen		return
79999755ecSJoseph Chen	fi
80999755ecSJoseph Chen
81bc77fafeSJoseph Chen	echo "		fdt {
82bc77fafeSJoseph Chen			description = \"U-Boot dtb\";
83bc77fafeSJoseph Chen			data = /incbin/(\"./u-boot.dtb\");
84bc77fafeSJoseph Chen			type = \"flat_dt\";
85990e82c1SJoseph Chen			arch = \"${U_ARCH}\";
86bc77fafeSJoseph Chen			compression = \"none\";
87bc77fafeSJoseph Chen			hash {
88bc77fafeSJoseph Chen				algo = \"sha256\";
89bc77fafeSJoseph Chen			};
90bc77fafeSJoseph Chen		};"
91999755ecSJoseph Chen
92999755ecSJoseph Chen	FDT_SIGN=", \"fdt\""
93999755ecSJoseph Chen	FDT="fdt = \"fdt\"${PROP_KERN_DTB};"
94bc77fafeSJoseph Chen};
95bc77fafeSJoseph Chen
96bc77fafeSJoseph Chenfunction gen_kfdt_node()
97bc77fafeSJoseph Chen{
98999755ecSJoseph Chen	if [ -z ${UBOOT_LOAD_ADDR} ]; then
99999755ecSJoseph Chen		return
100999755ecSJoseph Chen	fi
101999755ecSJoseph Chen
102bc77fafeSJoseph Chen	KERN_DTB=`sed -n "/CONFIG_EMBED_KERNEL_DTB_PATH=/s/CONFIG_EMBED_KERNEL_DTB_PATH=//p" .config | tr -d '"'`
103999755ecSJoseph Chen	if [ -z ${KERN_DTB} ]; then
104bc77fafeSJoseph Chen		return;
105bc77fafeSJoseph Chen	fi
106bc77fafeSJoseph Chen
107bc77fafeSJoseph Chen	if [ -f ${srctree}/${KERN_DTB} ]; then
108bc77fafeSJoseph Chen	PROP_KERN_DTB=', "kern-fdt"';
109bc77fafeSJoseph Chen	echo "		kern-fdt {
110bc77fafeSJoseph Chen			description = \"${KERN_DTB}\";
111bc77fafeSJoseph Chen			data = /incbin/(\"${KERN_DTB}\");
112bc77fafeSJoseph Chen			type = \"flat_dt\";
113990e82c1SJoseph Chen			arch = \"${U_ARCH}\";
114bc77fafeSJoseph Chen			compression = \"none\";
115bc77fafeSJoseph Chen			hash {
116bc77fafeSJoseph Chen				algo = \"sha256\";
117bc77fafeSJoseph Chen			};
118bc77fafeSJoseph Chen		};"
119bc77fafeSJoseph Chen	fi
120bc77fafeSJoseph Chen}
121bc77fafeSJoseph Chen
122bc77fafeSJoseph Chenfunction gen_bl31_node()
123bc77fafeSJoseph Chen{
124bc77fafeSJoseph Chen	${srctree}/arch/arm/mach-rockchip/decode_bl31.py
125bc77fafeSJoseph Chen
126bc77fafeSJoseph Chen	NUM=1
1278c5d7294SJoseph Chen	for ATF in `ls -1 -S bl31_0x*.bin`
128bc77fafeSJoseph Chen	do
1291e70309aSJoseph Chen		ATF_LOAD_ADDR=`echo ${ATF} | awk -F "_" '{ printf $2 }' | awk -F "." '{ printf $1 }'`
130bc77fafeSJoseph Chen		# only atf-1 support compress
1311e70309aSJoseph Chen		if [ "${COMPRESSION}" != "none" -a ${NUM} -eq 1  ]; then
1321e70309aSJoseph Chen			openssl dgst -sha256 -binary -out ${ATF}.digest ${ATF}
133ea098e48SJoseph Chen			${COMPRESS_CMD} ${ATF}
134bc77fafeSJoseph Chen
135bc77fafeSJoseph Chen			echo "		atf-${NUM} {
136bc77fafeSJoseph Chen			description = \"ARM Trusted Firmware\";
1371e70309aSJoseph Chen			data = /incbin/(\"./${ATF}${SUFFIX}\");
138bc77fafeSJoseph Chen			type = \"firmware\";
139bc77fafeSJoseph Chen			arch = \"${ARCH}\";
140bc77fafeSJoseph Chen			os = \"arm-trusted-firmware\";
141bc77fafeSJoseph Chen			compression = \"${COMPRESSION}\";
142bc77fafeSJoseph Chen			load = <"${ATF_LOAD_ADDR}">;
143bc77fafeSJoseph Chen			hash {
144bc77fafeSJoseph Chen				algo = \"sha256\";
145bc77fafeSJoseph Chen			};
146bc77fafeSJoseph Chen			digest {
1471e70309aSJoseph Chen				value = /incbin/(\"./${ATF}.digest\");
148bc77fafeSJoseph Chen				algo = \"sha256\";
149bc77fafeSJoseph Chen			};
150bc77fafeSJoseph Chen		};"
151bc77fafeSJoseph Chen		else
152bc77fafeSJoseph Chen			echo "		atf-${NUM} {
153bc77fafeSJoseph Chen			description = \"ARM Trusted Firmware\";
1541e70309aSJoseph Chen			data = /incbin/(\"./${ATF}\");
155bc77fafeSJoseph Chen			type = \"firmware\";
156bc77fafeSJoseph Chen			arch = \"${ARCH}\";
157bc77fafeSJoseph Chen			os = \"arm-trusted-firmware\";
158bc77fafeSJoseph Chen			compression = \"none\";
159bc77fafeSJoseph Chen			load = <"${ATF_LOAD_ADDR}">;
160bc77fafeSJoseph Chen			hash {
161bc77fafeSJoseph Chen				algo = \"sha256\";
162bc77fafeSJoseph Chen			};
163bc77fafeSJoseph Chen		};"
164bc77fafeSJoseph Chen		fi
165bc77fafeSJoseph Chen
166999755ecSJoseph Chen		if [ ${NUM} -eq 2 ]; then
167999755ecSJoseph Chen			LOADABLE_ATF=${LOADABLE_ATF}"\"atf-${NUM}\""
168999755ecSJoseph Chen		elif [ ${NUM} -gt 2 ]; then
169bc77fafeSJoseph Chen			LOADABLE_ATF=${LOADABLE_ATF}", \"atf-${NUM}\""
170bc77fafeSJoseph Chen		fi
171bc77fafeSJoseph Chen		NUM=`expr ${NUM} + 1`
172bc77fafeSJoseph Chen	done
173bc77fafeSJoseph Chen}
174bc77fafeSJoseph Chen
175bc77fafeSJoseph Chenfunction gen_bl32_node()
176bc77fafeSJoseph Chen{
177bc77fafeSJoseph Chen	if [ -z ${TEE_LOAD_ADDR} ]; then
178bc77fafeSJoseph Chen		return
179bc77fafeSJoseph Chen	fi
180bc77fafeSJoseph Chen
181bc77fafeSJoseph Chen	if [ "${ARCH}" == "arm" ]; then
182990e82c1SJoseph Chen		# If not AArch32 mode
183990e82c1SJoseph Chen		if ! grep  -q '^CONFIG_ARM64_BOOT_AARCH32=y' .config ; then
184c4853b98SJoseph Chen			ENTRY="entry = <"${TEE_LOAD_ADDR}">;"
185c58278f4SJoseph Chen
186c58278f4SJoseph Chen			# if disable packing tee.bin
187c58278f4SJoseph Chen			if ! grep -q '^CONFIG_SPL_OPTEE=y' .config ; then
188c58278f4SJoseph Chen				return
189c58278f4SJoseph Chen			fi
190c58278f4SJoseph Chen
191bc77fafeSJoseph Chen		fi
192990e82c1SJoseph Chen	fi
1931e70309aSJoseph Chen
1941e70309aSJoseph Chen	TEE="tee.bin"
195bc77fafeSJoseph Chen	echo "		optee {
196bc77fafeSJoseph Chen			description = \"OP-TEE\";
1971e70309aSJoseph Chen			data = /incbin/(\"${TEE}${SUFFIX}\");
198bc77fafeSJoseph Chen			type = \"firmware\";
199bc77fafeSJoseph Chen			arch = \"${ARCH}\";
200bc77fafeSJoseph Chen			os = \"op-tee\";
201bc77fafeSJoseph Chen			compression = \"${COMPRESSION}\";
202bc77fafeSJoseph Chen			${ENTRY}
203c4853b98SJoseph Chen			load = <"${TEE_LOAD_ADDR}">;"
2041e70309aSJoseph Chen	if [ "${COMPRESSION}" != "none" ]; then
2051e70309aSJoseph Chen		openssl dgst -sha256 -binary -out ${TEE}.digest ${TEE}
206ea098e48SJoseph Chen		${COMPRESS_CMD} ${TEE}
207ea098e48SJoseph Chen		echo "			digest {
2081e70309aSJoseph Chen				value = /incbin/(\"./${TEE}.digest\");
209bc77fafeSJoseph Chen				algo = \"sha256\";
210bc77fafeSJoseph Chen			};"
211bc77fafeSJoseph Chen	fi
2121e70309aSJoseph Chen	echo "			hash {
2131e70309aSJoseph Chen				algo = \"sha256\";
2141e70309aSJoseph Chen			};
2151e70309aSJoseph Chen		};"
216bc77fafeSJoseph Chen	LOADABLE_OPTEE=", \"optee\""
217f7d83d10SJoseph Chen	FIRMWARE_OPTEE="firmware = \"optee\";"
218999755ecSJoseph Chen	FIRMWARE_SIGN="\"firmware\""
219bc77fafeSJoseph Chen}
220bc77fafeSJoseph Chen
221bc77fafeSJoseph Chenfunction gen_mcu_node()
222bc77fafeSJoseph Chen{
223bc77fafeSJoseph Chen	for ((i=0, n=0; i<5; i++))
224bc77fafeSJoseph Chen	do
225bc77fafeSJoseph Chen		if [ ${i} -eq 0 ]; then
226bc77fafeSJoseph Chen			MCU_ADDR=${MCU0_LOAD_ADDR}
227bc77fafeSJoseph Chen		elif [ ${i} -eq 1 ]; then
228bc77fafeSJoseph Chen			MCU_ADDR=${MCU1_LOAD_ADDR}
229bc77fafeSJoseph Chen		elif [ ${i} -eq 2 ]; then
230bc77fafeSJoseph Chen			MCU_ADDR=${MCU2_LOAD_ADDR}
231bc77fafeSJoseph Chen		elif [ ${i} -eq 3 ]; then
232bc77fafeSJoseph Chen			MCU_ADDR=${MCU3_LOAD_ADDR}
233bc77fafeSJoseph Chen		elif [ ${i} -eq 4 ]; then
234bc77fafeSJoseph Chen			MCU_ADDR=${MCU4_LOAD_ADDR}
235bc77fafeSJoseph Chen		fi
236bc77fafeSJoseph Chen
237bc77fafeSJoseph Chen		if [ -z ${MCU_ADDR} ]; then
238bc77fafeSJoseph Chen			continue
239bc77fafeSJoseph Chen		fi
24060dcafe5SJoseph Chen
24160dcafe5SJoseph Chen		MCU_ADDR_VAL=$((MCU_ADDR))
242bc77fafeSJoseph Chen		MCU="mcu${i}"
243bc77fafeSJoseph Chen		echo "		${MCU} {
244bc77fafeSJoseph Chen			description = \"${MCU}\";
245bc77fafeSJoseph Chen			type = \"standalone\";
246bc77fafeSJoseph Chen			arch = \"riscv\";
247c4853b98SJoseph Chen			load = <"${MCU_ADDR}">;"
24860dcafe5SJoseph Chen
2498e5f6fd7SXuhui Lin		# When allow to be compressed?
2508e5f6fd7SXuhui Lin		# DRAM base < load addr < Periph register base
2518e5f6fd7SXuhui Lin		# Periph register base < DRAM base < load addr
252c41d50d2SJoseph Chen		if [ "${COMPRESSION}" != "none" -a "$((MCU_ADDR_VAL))" -gt "$((DRAM_BASE_VAL))" ] &&
253c41d50d2SJoseph Chen		   [ "$((DRAM_BASE_VAL))" -gt "$((MAX_ADDR_VAL))" -o "$((MCU_ADDR_VAL))" -lt "$((MAX_ADDR_VAL))" ]; then
2541e70309aSJoseph Chen				openssl dgst -sha256 -binary -out ${MCU}.bin.digest ${MCU}.bin
255ea098e48SJoseph Chen				${COMPRESS_CMD} ${MCU}.bin
25660dcafe5SJoseph Chen				echo "			data = /incbin/(\"./${MCU}.bin${SUFFIX}\");
25760dcafe5SJoseph Chen				compression = \"${COMPRESSION}\";
25860dcafe5SJoseph Chen				digest {
259bc77fafeSJoseph Chen					value = /incbin/(\"./${MCU}.bin.digest\");
260bc77fafeSJoseph Chen					algo = \"sha256\";
261bc77fafeSJoseph Chen				};"
26260dcafe5SJoseph Chen		else
26360dcafe5SJoseph Chen			echo "			data = /incbin/(\"./${MCU}.bin\");
26460dcafe5SJoseph Chen			compression = \"none\";"
265bc77fafeSJoseph Chen		fi
26660dcafe5SJoseph Chen
2671e70309aSJoseph Chen		echo "			hash {
2681e70309aSJoseph Chen				algo = \"sha256\";
2691e70309aSJoseph Chen			};
2701e70309aSJoseph Chen		};"
2711e70309aSJoseph Chen
272bc77fafeSJoseph Chen		if [ ${n} -eq 0 ]; then
273bc77fafeSJoseph Chen			STANDALONE_LIST=${STANDALONE_LIST}"\"${MCU}\""
274bc77fafeSJoseph Chen		else
275bc77fafeSJoseph Chen			STANDALONE_LIST=${STANDALONE_LIST}", \"${MCU}\""
276bc77fafeSJoseph Chen		fi
277bc77fafeSJoseph Chen		n=`expr ${n} + 1`
278bc77fafeSJoseph Chen
279bc77fafeSJoseph Chen		STANDALONE_SIGN=", \"standalone\""
280bc77fafeSJoseph Chen		STANDALONE_MCU="standalone = ${STANDALONE_LIST};"
281bc77fafeSJoseph Chen	done
28224ea65e6SJoseph Chen
28324ea65e6SJoseph Chen	if [ -z ${INIT0_LOAD_ADDR} ]; then
28424ea65e6SJoseph Chen		return
28524ea65e6SJoseph Chen	fi
28624ea65e6SJoseph Chen
28724ea65e6SJoseph Chen	INIT="init0"
28824ea65e6SJoseph Chen	echo "		${INIT} {
28924ea65e6SJoseph Chen			description = \"${INIT}\";
29024ea65e6SJoseph Chen			type = \"standalone\";
29124ea65e6SJoseph Chen			arch = \"${ARCH}\";
29224ea65e6SJoseph Chen			load = <"${INIT0_LOAD_ADDR}">;
29324ea65e6SJoseph Chen			data = /incbin/(\"./${INIT}.bin\");
29424ea65e6SJoseph Chen			compression = \"none\";
29524ea65e6SJoseph Chen			hash {
29624ea65e6SJoseph Chen				algo = \"sha256\";
29724ea65e6SJoseph Chen			};
29824ea65e6SJoseph Chen		};"
299*56866815SXiaoDong Huang	STANDALONE_MCU="standalone = \"init0\"${STANDALONE_LIST};"
300bc77fafeSJoseph Chen}
301bc77fafeSJoseph Chen
302bc77fafeSJoseph Chenfunction gen_loadable_node()
303bc77fafeSJoseph Chen{
304bc77fafeSJoseph Chen	for ((i=0; i<5; i++))
305bc77fafeSJoseph Chen	do
306bc77fafeSJoseph Chen		if [ ${i} -eq 0 ]; then
307bc77fafeSJoseph Chen			LOAD_ADDR=${LOAD0_LOAD_ADDR}
308bc77fafeSJoseph Chen		elif [ ${i} -eq 1 ]; then
309bc77fafeSJoseph Chen			LOAD_ADDR=${LOAD1_LOAD_ADDR}
310bc77fafeSJoseph Chen		elif [ ${i} -eq 2 ]; then
311bc77fafeSJoseph Chen			LOAD_ADDR=${LOAD2_LOAD_ADDR}
312bc77fafeSJoseph Chen		elif [ ${i} -eq 3 ]; then
313bc77fafeSJoseph Chen			LOAD_ADDR=${LOAD3_LOAD_ADDR}
314bc77fafeSJoseph Chen		elif [ ${i} -eq 4 ]; then
315bc77fafeSJoseph Chen			LOAD_ADDR=${LOAD4_LOAD_ADDR}
316bc77fafeSJoseph Chen		fi
317bc77fafeSJoseph Chen
318bc77fafeSJoseph Chen		if [ -z ${LOAD_ADDR} ]; then
319bc77fafeSJoseph Chen			continue
320bc77fafeSJoseph Chen		fi
32160dcafe5SJoseph Chen
32260dcafe5SJoseph Chen		LOAD_ADDR_VAL=$((LOAD_ADDR))
323bc77fafeSJoseph Chen		LOAD="load${i}"
324bc77fafeSJoseph Chen		echo "		${LOAD} {
325bc77fafeSJoseph Chen			description = \"${LOAD}\";
326bc77fafeSJoseph Chen			type = \"standalone\";
327bc77fafeSJoseph Chen			arch = \"${ARCH}\";
32809d80afdSJoseph Chen			load = <"${LOAD_ADDR}">;"
32960dcafe5SJoseph Chen
3308e5f6fd7SXuhui Lin		# When allow to be compressed?
3318e5f6fd7SXuhui Lin		# DRAM base < load addr < Periph register base
3328e5f6fd7SXuhui Lin		# Periph register base < DRAM base < load addr
333c41d50d2SJoseph Chen		if [ "${COMPRESSION}" != "none" -a "$((MCU_ADDR_VAL))" -gt "$((DRAM_BASE_VAL))" ] &&
334c41d50d2SJoseph Chen		   [ "$((DRAM_BASE_VAL))" -gt "$((MAX_ADDR_VAL))" -o "$((MCU_ADDR_VAL))" -lt "$((MAX_ADDR_VAL))" ]; then
3351e70309aSJoseph Chen				openssl dgst -sha256 -binary -out ${LOAD}.bin.digest ${LOAD}.bin
336ea098e48SJoseph Chen				${COMPRESS_CMD} ${LOAD}.bin
33760dcafe5SJoseph Chen				echo "			data = /incbin/(\"./${LOAD}.bin${SUFFIX}\");
33860dcafe5SJoseph Chen				compression = \"${COMPRESSION}\";
33960dcafe5SJoseph Chen				digest {
340bc77fafeSJoseph Chen					value = /incbin/(\"./${LOAD}.bin.digest\");
341bc77fafeSJoseph Chen					algo = \"sha256\";
342bc77fafeSJoseph Chen				};"
34360dcafe5SJoseph Chen		else
34460dcafe5SJoseph Chen			echo "			data = /incbin/(\"./${LOAD}.bin\");
34560dcafe5SJoseph Chen			compression = \"none\";"
346bc77fafeSJoseph Chen		fi
34760dcafe5SJoseph Chen
3481e70309aSJoseph Chen		echo "			hash {
3491e70309aSJoseph Chen				algo = \"sha256\";
3501e70309aSJoseph Chen			};
3511e70309aSJoseph Chen		};"
352bc77fafeSJoseph Chen
353bc77fafeSJoseph Chen		LOADABLE_OTHER=${LOADABLE_OTHER}", \"${LOAD}\""
354bc77fafeSJoseph Chen	done
355bc77fafeSJoseph Chen}
356bc77fafeSJoseph Chen
357bc77fafeSJoseph Chenfunction gen_header()
358bc77fafeSJoseph Chen{
359bc77fafeSJoseph Chenecho "
360bc77fafeSJoseph Chen/*
361bc77fafeSJoseph Chen * Copyright (C) 2020 Rockchip Electronic Co.,Ltd
362bc77fafeSJoseph Chen *
363bc77fafeSJoseph Chen * Simple U-boot fit source file containing ATF/OP-TEE/U-Boot/dtb/MCU
364bc77fafeSJoseph Chen */
365bc77fafeSJoseph Chen
366bc77fafeSJoseph Chen/dts-v1/;
367bc77fafeSJoseph Chen
368bc77fafeSJoseph Chen/ {
369bc77fafeSJoseph Chen	description = \"FIT Image with ATF/OP-TEE/U-Boot/MCU\";
370bc77fafeSJoseph Chen	#address-cells = <1>;
371bc77fafeSJoseph Chen
372bc77fafeSJoseph Chen	images {
373bc77fafeSJoseph Chen"
374bc77fafeSJoseph Chen}
375bc77fafeSJoseph Chen
376bc77fafeSJoseph Chenfunction gen_arm64_configurations()
377bc77fafeSJoseph Chen{
378bc77fafeSJoseph ChenPLATFORM=`sed -n "/CONFIG_DEFAULT_DEVICE_TREE/p" .config | awk -F "=" '{ print $2 }' | tr -d '"'`
379bc77fafeSJoseph Chenif grep -q '^CONFIG_FIT_ENABLE_RSASSA_PSS_SUPPORT=y' .config ; then
380bc77fafeSJoseph Chen	ALGO_PADDING="				padding = \"pss\";"
381bc77fafeSJoseph Chenfi
3820644ce13SXuhui Linif grep -q '^CONFIG_FIT_ENABLE_RSA4096_SUPPORT=y' .config ; then
3830644ce13SXuhui Lin	ALGO_NAME="				algo = \"sha256,rsa4096\";"
3840644ce13SXuhui Linelse
3850644ce13SXuhui Lin	ALGO_NAME="				algo = \"sha256,rsa2048\";"
3860644ce13SXuhui Linfi
38766554dbcSJoseph Chenif [ -z "${LOADABLE_ATF}" ]; then
38866554dbcSJoseph Chen	LOADABLE_UBOOT="\"uboot\""
38966554dbcSJoseph Chenfi
39066554dbcSJoseph Chen
3911e70309aSJoseph Chenecho "	};
3921e70309aSJoseph Chen
393bc77fafeSJoseph Chen	configurations {
394bc77fafeSJoseph Chen		default = \"conf\";
395bc77fafeSJoseph Chen		conf {
396bc77fafeSJoseph Chen			description = \"${PLATFORM}\";
397bc77fafeSJoseph Chen			rollback-index = <0x0>;
398bc77fafeSJoseph Chen			firmware = \"atf-1\";
399999755ecSJoseph Chen			loadables = ${LOADABLE_UBOOT}${LOADABLE_ATF}${LOADABLE_OPTEE}${LOADABLE_OTHER};
400bc77fafeSJoseph Chen			${STANDALONE_MCU}
401999755ecSJoseph Chen			${FDT}
402bc77fafeSJoseph Chen			signature {
4030644ce13SXuhui Lin				${ALGO_NAME}
404bc77fafeSJoseph Chen				${ALGO_PADDING}
405bc77fafeSJoseph Chen				key-name-hint = \"dev\";
406999755ecSJoseph Chen				sign-images = \"firmware\", \"loadables\"${FDT_SIGN}${STANDALONE_SIGN};
407bc77fafeSJoseph Chen			};
408bc77fafeSJoseph Chen		};
409bc77fafeSJoseph Chen	};
410bc77fafeSJoseph Chen};
411bc77fafeSJoseph Chen"
412bc77fafeSJoseph Chen}
413bc77fafeSJoseph Chen
414bc77fafeSJoseph Chenfunction gen_arm_configurations()
415bc77fafeSJoseph Chen{
416bc77fafeSJoseph ChenPLATFORM=`sed -n "/CONFIG_DEFAULT_DEVICE_TREE/p" .config | awk -F "=" '{ print $2 }' | tr -d '"'`
417bc77fafeSJoseph Chenif grep -q '^CONFIG_FIT_ENABLE_RSASSA_PSS_SUPPORT=y' .config ; then
418bc77fafeSJoseph Chen        ALGO_PADDING="                          padding = \"pss\";"
419bc77fafeSJoseph Chenfi
4200644ce13SXuhui Linif grep -q '^CONFIG_FIT_ENABLE_RSA4096_SUPPORT=y' .config ; then
4210644ce13SXuhui Lin	ALGO_NAME="				algo = \"sha256,rsa4096\";"
4220644ce13SXuhui Linelse
4230644ce13SXuhui Lin	ALGO_NAME="				algo = \"sha256,rsa2048\";"
4240644ce13SXuhui Linfi
425999755ecSJoseph Chenif [ ! -z "${LOADABLE_UBOOT}" ] || [ ! -z "${LOADABLE_OTHER}" ]; then
426999755ecSJoseph Chen	LOADABLE_UBOOT="\"uboot\""
427999755ecSJoseph Chen	LOADABLES="loadables = ${LOADABLE_UBOOT}${LOADABLE_OTHER};"
428999755ecSJoseph Chen	if [ -z ${FIRMWARE_SIGN} ]; then
429999755ecSJoseph Chen		LOADABLES_SIGN="\"loadables\""
430999755ecSJoseph Chen	else
431999755ecSJoseph Chen		LOADABLES_SIGN=", \"loadables\""
432999755ecSJoseph Chen	fi
433999755ecSJoseph Chenfi
434999755ecSJoseph Chen
4351e70309aSJoseph Chenecho "	};
4361e70309aSJoseph Chen
437bc77fafeSJoseph Chen	configurations {
438bc77fafeSJoseph Chen		default = \"conf\";
439bc77fafeSJoseph Chen		conf {
440bc77fafeSJoseph Chen			description = \"${PLATFORM}\";
441bc77fafeSJoseph Chen			rollback-index = <0x0>;
442f7d83d10SJoseph Chen			${FIRMWARE_OPTEE}
443999755ecSJoseph Chen			${LOADABLES}
444bc77fafeSJoseph Chen			${STANDALONE_MCU}
445999755ecSJoseph Chen			${FDT}
446bc77fafeSJoseph Chen			signature {
4470644ce13SXuhui Lin				${ALGO_NAME}
448bc77fafeSJoseph Chen				${ALGO_PADDING}
449bc77fafeSJoseph Chen				key-name-hint = \"dev\";
450999755ecSJoseph Chen				sign-images = ${FIRMWARE_SIGN}${LOADABLES_SIGN}${FDT_SIGN}${STANDALONE_SIGN};
451bc77fafeSJoseph Chen			};
452bc77fafeSJoseph Chen		};
453bc77fafeSJoseph Chen	};
454bc77fafeSJoseph Chen};
455bc77fafeSJoseph Chen"
456bc77fafeSJoseph Chen}
457bc77fafeSJoseph Chen
458