xref: /OK3568_Linux_fs/u-boot/arch/arm/mach-rockchip/fit_nodes.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/bin/bash
2*4882a593Smuzhiyun#
3*4882a593Smuzhiyun# Copyright (C) 2021 Rockchip Electronics Co., Ltd
4*4882a593Smuzhiyun#
5*4882a593Smuzhiyun# SPDX-License-Identifier:     GPL-2.0+
6*4882a593Smuzhiyun#
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun# Process args and auto set variables
9*4882a593Smuzhiyunsource ./${srctree}/arch/arm/mach-rockchip/fit_args.sh
10*4882a593Smuzhiyunrm -f ${srctree}/*.digest ${srctree}/*.bin.gz ${srctree}/bl31_0x*.bin
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun# Periph register
13*4882a593SmuzhiyunMAX_ADDR_VAL=$((0xf0000000))
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun# compression
16*4882a593Smuzhiyunif [ "${COMPRESSION}" == "gzip" ]; then
17*4882a593Smuzhiyun	SUFFIX=".gz"
18*4882a593Smuzhiyun	COMPRESS_CMD="gzip -kf9"
19*4882a593Smuzhiyunelif [ "${COMPRESSION}" == "lzma" ]; then
20*4882a593Smuzhiyun	SUFFIX=".lzma"
21*4882a593Smuzhiyun	COMPRESS_CMD="${srctree}/scripts/compress.sh lzma"
22*4882a593Smuzhiyunelse
23*4882a593Smuzhiyun	COMPRESSION="none"
24*4882a593Smuzhiyun	SUFFIX=
25*4882a593Smuzhiyunfi
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun# nodes
28*4882a593Smuzhiyunfunction gen_uboot_node()
29*4882a593Smuzhiyun{
30*4882a593Smuzhiyun	if [ -z ${UBOOT_LOAD_ADDR} ]; then
31*4882a593Smuzhiyun		return
32*4882a593Smuzhiyun	fi
33*4882a593Smuzhiyun
34*4882a593Smuzhiyun	UBOOT="u-boot-nodtb.bin"
35*4882a593Smuzhiyun	echo "		uboot {
36*4882a593Smuzhiyun			description = \"U-Boot\";
37*4882a593Smuzhiyun			data = /incbin/(\"${UBOOT}${SUFFIX}\");
38*4882a593Smuzhiyun			type = \"standalone\";
39*4882a593Smuzhiyun			arch = \"${U_ARCH}\";
40*4882a593Smuzhiyun			os = \"U-Boot\";
41*4882a593Smuzhiyun			compression = \"${COMPRESSION}\";
42*4882a593Smuzhiyun			load = <"${UBOOT_LOAD_ADDR}">;"
43*4882a593Smuzhiyun	if [ "${COMPRESSION}" != "none" ]; then
44*4882a593Smuzhiyun		openssl dgst -sha256 -binary -out ${UBOOT}.digest ${UBOOT}
45*4882a593Smuzhiyun		UBOOT_SZ=`ls -l ${UBOOT} | awk '{ print $5 }'`
46*4882a593Smuzhiyun		if [ ${UBOOT_SZ} -gt 0 ]; then
47*4882a593Smuzhiyun			${COMPRESS_CMD} ${srctree}/${UBOOT}
48*4882a593Smuzhiyun		else
49*4882a593Smuzhiyun			touch ${srctree}/${UBOOT}${SUFFIX}
50*4882a593Smuzhiyun		fi
51*4882a593Smuzhiyun		echo "			digest {
52*4882a593Smuzhiyun				value = /incbin/(\"./${UBOOT}.digest\");
53*4882a593Smuzhiyun				algo = \"sha256\";
54*4882a593Smuzhiyun			};"
55*4882a593Smuzhiyun	fi
56*4882a593Smuzhiyun	echo "			hash {
57*4882a593Smuzhiyun				algo = \"sha256\";
58*4882a593Smuzhiyun			};
59*4882a593Smuzhiyun		};"
60*4882a593Smuzhiyun
61*4882a593Smuzhiyun	LOADABLE_UBOOT="\"uboot\", "
62*4882a593Smuzhiyun}
63*4882a593Smuzhiyun
64*4882a593Smuzhiyunfunction gen_fdt_node()
65*4882a593Smuzhiyun{
66*4882a593Smuzhiyun	if [ -z ${UBOOT_LOAD_ADDR} ]; then
67*4882a593Smuzhiyun		return
68*4882a593Smuzhiyun	fi
69*4882a593Smuzhiyun
70*4882a593Smuzhiyun	echo "		fdt {
71*4882a593Smuzhiyun			description = \"U-Boot dtb\";
72*4882a593Smuzhiyun			data = /incbin/(\"./u-boot.dtb\");
73*4882a593Smuzhiyun			type = \"flat_dt\";
74*4882a593Smuzhiyun			arch = \"${U_ARCH}\";
75*4882a593Smuzhiyun			compression = \"none\";
76*4882a593Smuzhiyun			hash {
77*4882a593Smuzhiyun				algo = \"sha256\";
78*4882a593Smuzhiyun			};
79*4882a593Smuzhiyun		};"
80*4882a593Smuzhiyun
81*4882a593Smuzhiyun	FDT_SIGN=", \"fdt\""
82*4882a593Smuzhiyun	FDT="fdt = \"fdt\"${PROP_KERN_DTB};"
83*4882a593Smuzhiyun};
84*4882a593Smuzhiyun
85*4882a593Smuzhiyunfunction gen_kfdt_node()
86*4882a593Smuzhiyun{
87*4882a593Smuzhiyun	if [ -z ${UBOOT_LOAD_ADDR} ]; then
88*4882a593Smuzhiyun		return
89*4882a593Smuzhiyun	fi
90*4882a593Smuzhiyun
91*4882a593Smuzhiyun	KERN_DTB=`sed -n "/CONFIG_EMBED_KERNEL_DTB_PATH=/s/CONFIG_EMBED_KERNEL_DTB_PATH=//p" .config | tr -d '"'`
92*4882a593Smuzhiyun	if [ -z ${KERN_DTB} ]; then
93*4882a593Smuzhiyun		return;
94*4882a593Smuzhiyun	fi
95*4882a593Smuzhiyun
96*4882a593Smuzhiyun	if [ -f ${srctree}/${KERN_DTB} ]; then
97*4882a593Smuzhiyun	PROP_KERN_DTB=', "kern-fdt"';
98*4882a593Smuzhiyun	echo "		kern-fdt {
99*4882a593Smuzhiyun			description = \"${KERN_DTB}\";
100*4882a593Smuzhiyun			data = /incbin/(\"${KERN_DTB}\");
101*4882a593Smuzhiyun			type = \"flat_dt\";
102*4882a593Smuzhiyun			arch = \"${U_ARCH}\";
103*4882a593Smuzhiyun			compression = \"none\";
104*4882a593Smuzhiyun			hash {
105*4882a593Smuzhiyun				algo = \"sha256\";
106*4882a593Smuzhiyun			};
107*4882a593Smuzhiyun		};"
108*4882a593Smuzhiyun	fi
109*4882a593Smuzhiyun}
110*4882a593Smuzhiyun
111*4882a593Smuzhiyunfunction gen_bl31_node()
112*4882a593Smuzhiyun{
113*4882a593Smuzhiyun	${srctree}/arch/arm/mach-rockchip/decode_bl31.py
114*4882a593Smuzhiyun
115*4882a593Smuzhiyun	NUM=1
116*4882a593Smuzhiyun	for ATF in `ls -1 -S bl31_0x*.bin`
117*4882a593Smuzhiyun	do
118*4882a593Smuzhiyun		ATF_LOAD_ADDR=`echo ${ATF} | awk -F "_" '{ printf $2 }' | awk -F "." '{ printf $1 }'`
119*4882a593Smuzhiyun		# only atf-1 support compress
120*4882a593Smuzhiyun		if [ "${COMPRESSION}" != "none" -a ${NUM} -eq 1  ]; then
121*4882a593Smuzhiyun			openssl dgst -sha256 -binary -out ${ATF}.digest ${ATF}
122*4882a593Smuzhiyun			${COMPRESS_CMD} ${ATF}
123*4882a593Smuzhiyun
124*4882a593Smuzhiyun			echo "		atf-${NUM} {
125*4882a593Smuzhiyun			description = \"ARM Trusted Firmware\";
126*4882a593Smuzhiyun			data = /incbin/(\"./${ATF}${SUFFIX}\");
127*4882a593Smuzhiyun			type = \"firmware\";
128*4882a593Smuzhiyun			arch = \"${ARCH}\";
129*4882a593Smuzhiyun			os = \"arm-trusted-firmware\";
130*4882a593Smuzhiyun			compression = \"${COMPRESSION}\";
131*4882a593Smuzhiyun			load = <"${ATF_LOAD_ADDR}">;
132*4882a593Smuzhiyun			hash {
133*4882a593Smuzhiyun				algo = \"sha256\";
134*4882a593Smuzhiyun			};
135*4882a593Smuzhiyun			digest {
136*4882a593Smuzhiyun				value = /incbin/(\"./${ATF}.digest\");
137*4882a593Smuzhiyun				algo = \"sha256\";
138*4882a593Smuzhiyun			};
139*4882a593Smuzhiyun		};"
140*4882a593Smuzhiyun		else
141*4882a593Smuzhiyun			echo "		atf-${NUM} {
142*4882a593Smuzhiyun			description = \"ARM Trusted Firmware\";
143*4882a593Smuzhiyun			data = /incbin/(\"./${ATF}\");
144*4882a593Smuzhiyun			type = \"firmware\";
145*4882a593Smuzhiyun			arch = \"${ARCH}\";
146*4882a593Smuzhiyun			os = \"arm-trusted-firmware\";
147*4882a593Smuzhiyun			compression = \"none\";
148*4882a593Smuzhiyun			load = <"${ATF_LOAD_ADDR}">;
149*4882a593Smuzhiyun			hash {
150*4882a593Smuzhiyun				algo = \"sha256\";
151*4882a593Smuzhiyun			};
152*4882a593Smuzhiyun		};"
153*4882a593Smuzhiyun		fi
154*4882a593Smuzhiyun
155*4882a593Smuzhiyun		if [ ${NUM} -eq 2 ]; then
156*4882a593Smuzhiyun			LOADABLE_ATF=${LOADABLE_ATF}"\"atf-${NUM}\""
157*4882a593Smuzhiyun		elif [ ${NUM} -gt 2 ]; then
158*4882a593Smuzhiyun			LOADABLE_ATF=${LOADABLE_ATF}", \"atf-${NUM}\""
159*4882a593Smuzhiyun		fi
160*4882a593Smuzhiyun		NUM=`expr ${NUM} + 1`
161*4882a593Smuzhiyun	done
162*4882a593Smuzhiyun}
163*4882a593Smuzhiyun
164*4882a593Smuzhiyunfunction gen_bl32_node()
165*4882a593Smuzhiyun{
166*4882a593Smuzhiyun	if [ -z ${TEE_LOAD_ADDR} ]; then
167*4882a593Smuzhiyun		return
168*4882a593Smuzhiyun	fi
169*4882a593Smuzhiyun
170*4882a593Smuzhiyun	if [ "${ARCH}" == "arm" ]; then
171*4882a593Smuzhiyun		# If not AArch32 mode
172*4882a593Smuzhiyun		if ! grep  -q '^CONFIG_ARM64_BOOT_AARCH32=y' .config ; then
173*4882a593Smuzhiyun			ENTRY="entry = <"${TEE_LOAD_ADDR}">;"
174*4882a593Smuzhiyun
175*4882a593Smuzhiyun			# if disable packing tee.bin
176*4882a593Smuzhiyun			if ! grep -q '^CONFIG_SPL_OPTEE=y' .config ; then
177*4882a593Smuzhiyun				return
178*4882a593Smuzhiyun			fi
179*4882a593Smuzhiyun
180*4882a593Smuzhiyun		fi
181*4882a593Smuzhiyun	fi
182*4882a593Smuzhiyun
183*4882a593Smuzhiyun	TEE="tee.bin"
184*4882a593Smuzhiyun	echo "		optee {
185*4882a593Smuzhiyun			description = \"OP-TEE\";
186*4882a593Smuzhiyun			data = /incbin/(\"${TEE}${SUFFIX}\");
187*4882a593Smuzhiyun			type = \"firmware\";
188*4882a593Smuzhiyun			arch = \"${ARCH}\";
189*4882a593Smuzhiyun			os = \"op-tee\";
190*4882a593Smuzhiyun			compression = \"${COMPRESSION}\";
191*4882a593Smuzhiyun			${ENTRY}
192*4882a593Smuzhiyun			load = <"${TEE_LOAD_ADDR}">;"
193*4882a593Smuzhiyun	if [ "${COMPRESSION}" != "none" ]; then
194*4882a593Smuzhiyun		openssl dgst -sha256 -binary -out ${TEE}.digest ${TEE}
195*4882a593Smuzhiyun		${COMPRESS_CMD} ${TEE}
196*4882a593Smuzhiyun		echo "			digest {
197*4882a593Smuzhiyun				value = /incbin/(\"./${TEE}.digest\");
198*4882a593Smuzhiyun				algo = \"sha256\";
199*4882a593Smuzhiyun			};"
200*4882a593Smuzhiyun	fi
201*4882a593Smuzhiyun	echo "			hash {
202*4882a593Smuzhiyun				algo = \"sha256\";
203*4882a593Smuzhiyun			};
204*4882a593Smuzhiyun		};"
205*4882a593Smuzhiyun	LOADABLE_OPTEE=", \"optee\""
206*4882a593Smuzhiyun	FIRMWARE_OPTEE="firmware = \"optee\";"
207*4882a593Smuzhiyun	FIRMWARE_SIGN="\"firmware\""
208*4882a593Smuzhiyun}
209*4882a593Smuzhiyun
210*4882a593Smuzhiyunfunction gen_mcu_node()
211*4882a593Smuzhiyun{
212*4882a593Smuzhiyun	for ((i=0, n=0; i<5; i++))
213*4882a593Smuzhiyun	do
214*4882a593Smuzhiyun		if [ ${i} -eq 0 ]; then
215*4882a593Smuzhiyun			MCU_ADDR=${MCU0_LOAD_ADDR}
216*4882a593Smuzhiyun		elif [ ${i} -eq 1 ]; then
217*4882a593Smuzhiyun			MCU_ADDR=${MCU1_LOAD_ADDR}
218*4882a593Smuzhiyun		elif [ ${i} -eq 2 ]; then
219*4882a593Smuzhiyun			MCU_ADDR=${MCU2_LOAD_ADDR}
220*4882a593Smuzhiyun		elif [ ${i} -eq 3 ]; then
221*4882a593Smuzhiyun			MCU_ADDR=${MCU3_LOAD_ADDR}
222*4882a593Smuzhiyun		elif [ ${i} -eq 4 ]; then
223*4882a593Smuzhiyun			MCU_ADDR=${MCU4_LOAD_ADDR}
224*4882a593Smuzhiyun		fi
225*4882a593Smuzhiyun
226*4882a593Smuzhiyun		if [ -z ${MCU_ADDR} ]; then
227*4882a593Smuzhiyun			continue
228*4882a593Smuzhiyun		fi
229*4882a593Smuzhiyun
230*4882a593Smuzhiyun		MCU_ADDR_VAL=$((MCU_ADDR))
231*4882a593Smuzhiyun		MCU="mcu${i}"
232*4882a593Smuzhiyun		echo "		${MCU} {
233*4882a593Smuzhiyun			description = \"${MCU}\";
234*4882a593Smuzhiyun			type = \"standalone\";
235*4882a593Smuzhiyun			arch = \"riscv\";
236*4882a593Smuzhiyun			load = <"${MCU_ADDR}">;"
237*4882a593Smuzhiyun
238*4882a593Smuzhiyun		if [ "${COMPRESSION}" != "none" -a ${MCU_ADDR_VAL} -lt ${MAX_ADDR_VAL} ]; then
239*4882a593Smuzhiyun			openssl dgst -sha256 -binary -out ${MCU}.bin.digest ${MCU}.bin
240*4882a593Smuzhiyun			${COMPRESS_CMD} ${MCU}.bin
241*4882a593Smuzhiyun			echo "			data = /incbin/(\"./${MCU}.bin${SUFFIX}\");
242*4882a593Smuzhiyun			compression = \"${COMPRESSION}\";
243*4882a593Smuzhiyun			digest {
244*4882a593Smuzhiyun				value = /incbin/(\"./${MCU}.bin.digest\");
245*4882a593Smuzhiyun				algo = \"sha256\";
246*4882a593Smuzhiyun			};"
247*4882a593Smuzhiyun		else
248*4882a593Smuzhiyun			echo "			data = /incbin/(\"./${MCU}.bin\");
249*4882a593Smuzhiyun			compression = \"none\";"
250*4882a593Smuzhiyun		fi
251*4882a593Smuzhiyun
252*4882a593Smuzhiyun		echo "			hash {
253*4882a593Smuzhiyun				algo = \"sha256\";
254*4882a593Smuzhiyun			};
255*4882a593Smuzhiyun		};"
256*4882a593Smuzhiyun
257*4882a593Smuzhiyun		if [ ${n} -eq 0 ]; then
258*4882a593Smuzhiyun			STANDALONE_LIST=${STANDALONE_LIST}"\"${MCU}\""
259*4882a593Smuzhiyun		else
260*4882a593Smuzhiyun			STANDALONE_LIST=${STANDALONE_LIST}", \"${MCU}\""
261*4882a593Smuzhiyun		fi
262*4882a593Smuzhiyun		n=`expr ${n} + 1`
263*4882a593Smuzhiyun
264*4882a593Smuzhiyun		STANDALONE_SIGN=", \"standalone\""
265*4882a593Smuzhiyun		STANDALONE_MCU="standalone = ${STANDALONE_LIST};"
266*4882a593Smuzhiyun	done
267*4882a593Smuzhiyun}
268*4882a593Smuzhiyun
269*4882a593Smuzhiyunfunction gen_loadable_node()
270*4882a593Smuzhiyun{
271*4882a593Smuzhiyun	for ((i=0; i<5; i++))
272*4882a593Smuzhiyun	do
273*4882a593Smuzhiyun		if [ ${i} -eq 0 ]; then
274*4882a593Smuzhiyun			LOAD_ADDR=${LOAD0_LOAD_ADDR}
275*4882a593Smuzhiyun		elif [ ${i} -eq 1 ]; then
276*4882a593Smuzhiyun			LOAD_ADDR=${LOAD1_LOAD_ADDR}
277*4882a593Smuzhiyun		elif [ ${i} -eq 2 ]; then
278*4882a593Smuzhiyun			LOAD_ADDR=${LOAD2_LOAD_ADDR}
279*4882a593Smuzhiyun		elif [ ${i} -eq 3 ]; then
280*4882a593Smuzhiyun			LOAD_ADDR=${LOAD3_LOAD_ADDR}
281*4882a593Smuzhiyun		elif [ ${i} -eq 4 ]; then
282*4882a593Smuzhiyun			LOAD_ADDR=${LOAD4_LOAD_ADDR}
283*4882a593Smuzhiyun		fi
284*4882a593Smuzhiyun
285*4882a593Smuzhiyun		if [ -z ${LOAD_ADDR} ]; then
286*4882a593Smuzhiyun			continue
287*4882a593Smuzhiyun		fi
288*4882a593Smuzhiyun
289*4882a593Smuzhiyun		LOAD_ADDR_VAL=$((LOAD_ADDR))
290*4882a593Smuzhiyun		LOAD="load${i}"
291*4882a593Smuzhiyun		echo "		${LOAD} {
292*4882a593Smuzhiyun			description = \"${LOAD}\";
293*4882a593Smuzhiyun			type = \"standalone\";
294*4882a593Smuzhiyun			arch = \"${ARCH}\";
295*4882a593Smuzhiyun			load = <"${LOAD_ADDR}">;"
296*4882a593Smuzhiyun
297*4882a593Smuzhiyun		if [ "${COMPRESSION}" != "none" -a ${LOAD_ADDR_VAL} -lt ${MAX_ADDR_VAL} ]; then
298*4882a593Smuzhiyun			openssl dgst -sha256 -binary -out ${LOAD}.bin.digest ${LOAD}.bin
299*4882a593Smuzhiyun			${COMPRESS_CMD} ${LOAD}.bin
300*4882a593Smuzhiyun			echo "			data = /incbin/(\"./${LOAD}.bin${SUFFIX}\");
301*4882a593Smuzhiyun			compression = \"${COMPRESSION}\";
302*4882a593Smuzhiyun			digest {
303*4882a593Smuzhiyun				value = /incbin/(\"./${LOAD}.bin.digest\");
304*4882a593Smuzhiyun				algo = \"sha256\";
305*4882a593Smuzhiyun			};"
306*4882a593Smuzhiyun		else
307*4882a593Smuzhiyun			echo "			data = /incbin/(\"./${LOAD}.bin\");
308*4882a593Smuzhiyun			compression = \"none\";"
309*4882a593Smuzhiyun		fi
310*4882a593Smuzhiyun
311*4882a593Smuzhiyun		echo "			hash {
312*4882a593Smuzhiyun				algo = \"sha256\";
313*4882a593Smuzhiyun			};
314*4882a593Smuzhiyun		};"
315*4882a593Smuzhiyun
316*4882a593Smuzhiyun		LOADABLE_OTHER=${LOADABLE_OTHER}", \"${LOAD}\""
317*4882a593Smuzhiyun	done
318*4882a593Smuzhiyun}
319*4882a593Smuzhiyun
320*4882a593Smuzhiyunfunction gen_header()
321*4882a593Smuzhiyun{
322*4882a593Smuzhiyunecho "
323*4882a593Smuzhiyun/*
324*4882a593Smuzhiyun * Copyright (C) 2020 Rockchip Electronic Co.,Ltd
325*4882a593Smuzhiyun *
326*4882a593Smuzhiyun * Simple U-boot fit source file containing ATF/OP-TEE/U-Boot/dtb/MCU
327*4882a593Smuzhiyun */
328*4882a593Smuzhiyun
329*4882a593Smuzhiyun/dts-v1/;
330*4882a593Smuzhiyun
331*4882a593Smuzhiyun/ {
332*4882a593Smuzhiyun	description = \"FIT Image with ATF/OP-TEE/U-Boot/MCU\";
333*4882a593Smuzhiyun	#address-cells = <1>;
334*4882a593Smuzhiyun
335*4882a593Smuzhiyun	images {
336*4882a593Smuzhiyun"
337*4882a593Smuzhiyun}
338*4882a593Smuzhiyun
339*4882a593Smuzhiyunfunction gen_arm64_configurations()
340*4882a593Smuzhiyun{
341*4882a593SmuzhiyunPLATFORM=`sed -n "/CONFIG_DEFAULT_DEVICE_TREE/p" .config | awk -F "=" '{ print $2 }' | tr -d '"'`
342*4882a593Smuzhiyunif grep -q '^CONFIG_FIT_ENABLE_RSASSA_PSS_SUPPORT=y' .config ; then
343*4882a593Smuzhiyun	ALGO_PADDING="				padding = \"pss\";"
344*4882a593Smuzhiyunfi
345*4882a593Smuzhiyunif grep -q '^CONFIG_FIT_ENABLE_RSA4096_SUPPORT=y' .config ; then
346*4882a593Smuzhiyun	ALGO_NAME="				algo = \"sha256,rsa4096\";"
347*4882a593Smuzhiyunelse
348*4882a593Smuzhiyun	ALGO_NAME="				algo = \"sha256,rsa2048\";"
349*4882a593Smuzhiyunfi
350*4882a593Smuzhiyunecho "	};
351*4882a593Smuzhiyun
352*4882a593Smuzhiyun	configurations {
353*4882a593Smuzhiyun		default = \"conf\";
354*4882a593Smuzhiyun		conf {
355*4882a593Smuzhiyun			description = \"${PLATFORM}\";
356*4882a593Smuzhiyun			rollback-index = <0x0>;
357*4882a593Smuzhiyun			firmware = \"atf-1\";
358*4882a593Smuzhiyun			loadables = ${LOADABLE_UBOOT}${LOADABLE_ATF}${LOADABLE_OPTEE}${LOADABLE_OTHER};
359*4882a593Smuzhiyun			${STANDALONE_MCU}
360*4882a593Smuzhiyun			${FDT}
361*4882a593Smuzhiyun			signature {
362*4882a593Smuzhiyun				${ALGO_NAME}
363*4882a593Smuzhiyun				${ALGO_PADDING}
364*4882a593Smuzhiyun				key-name-hint = \"dev\";
365*4882a593Smuzhiyun				sign-images = \"firmware\", \"loadables\"${FDT_SIGN}${STANDALONE_SIGN};
366*4882a593Smuzhiyun			};
367*4882a593Smuzhiyun		};
368*4882a593Smuzhiyun	};
369*4882a593Smuzhiyun};
370*4882a593Smuzhiyun"
371*4882a593Smuzhiyun}
372*4882a593Smuzhiyun
373*4882a593Smuzhiyunfunction gen_arm_configurations()
374*4882a593Smuzhiyun{
375*4882a593SmuzhiyunPLATFORM=`sed -n "/CONFIG_DEFAULT_DEVICE_TREE/p" .config | awk -F "=" '{ print $2 }' | tr -d '"'`
376*4882a593Smuzhiyunif grep -q '^CONFIG_FIT_ENABLE_RSASSA_PSS_SUPPORT=y' .config ; then
377*4882a593Smuzhiyun        ALGO_PADDING="                          padding = \"pss\";"
378*4882a593Smuzhiyunfi
379*4882a593Smuzhiyunif grep -q '^CONFIG_FIT_ENABLE_RSA4096_SUPPORT=y' .config ; then
380*4882a593Smuzhiyun	ALGO_NAME="				algo = \"sha256,rsa4096\";"
381*4882a593Smuzhiyunelse
382*4882a593Smuzhiyun	ALGO_NAME="				algo = \"sha256,rsa2048\";"
383*4882a593Smuzhiyunfi
384*4882a593Smuzhiyunif [ ! -z "${LOADABLE_UBOOT}" ] || [ ! -z "${LOADABLE_OTHER}" ]; then
385*4882a593Smuzhiyun	LOADABLE_UBOOT="\"uboot\""
386*4882a593Smuzhiyun	LOADABLES="loadables = ${LOADABLE_UBOOT}${LOADABLE_OTHER};"
387*4882a593Smuzhiyun	if [ -z ${FIRMWARE_SIGN} ]; then
388*4882a593Smuzhiyun		LOADABLES_SIGN="\"loadables\""
389*4882a593Smuzhiyun	else
390*4882a593Smuzhiyun		LOADABLES_SIGN=", \"loadables\""
391*4882a593Smuzhiyun	fi
392*4882a593Smuzhiyunfi
393*4882a593Smuzhiyun
394*4882a593Smuzhiyunecho "	};
395*4882a593Smuzhiyun
396*4882a593Smuzhiyun	configurations {
397*4882a593Smuzhiyun		default = \"conf\";
398*4882a593Smuzhiyun		conf {
399*4882a593Smuzhiyun			description = \"${PLATFORM}\";
400*4882a593Smuzhiyun			rollback-index = <0x0>;
401*4882a593Smuzhiyun			${FIRMWARE_OPTEE}
402*4882a593Smuzhiyun			${LOADABLES}
403*4882a593Smuzhiyun			${STANDALONE_MCU}
404*4882a593Smuzhiyun			${FDT}
405*4882a593Smuzhiyun			signature {
406*4882a593Smuzhiyun				${ALGO_NAME}
407*4882a593Smuzhiyun				${ALGO_PADDING}
408*4882a593Smuzhiyun				key-name-hint = \"dev\";
409*4882a593Smuzhiyun				sign-images = ${FIRMWARE_SIGN}${LOADABLES_SIGN}${FDT_SIGN}${STANDALONE_SIGN};
410*4882a593Smuzhiyun			};
411*4882a593Smuzhiyun		};
412*4882a593Smuzhiyun	};
413*4882a593Smuzhiyun};
414*4882a593Smuzhiyun"
415*4882a593Smuzhiyun}
416*4882a593Smuzhiyun
417