xref: /rk3399_rockchip-uboot/arch/arm/mach-rockchip/fit_nodes.sh (revision 60dcafe5c46ef711fb91a990075d4f3ca509780c)
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
12*60dcafe5SJoseph Chen# Periph register
13*60dcafe5SJoseph ChenMAX_ADDR_VAL=$((0xf0000000))
14*60dcafe5SJoseph Chen
15bc77fafeSJoseph Chen# compression
16bc77fafeSJoseph Chenif [ "${COMPRESSION}" == "gzip" ]; then
17bc77fafeSJoseph Chen	SUFFIX=".gz"
18ea098e48SJoseph Chen	COMPRESS_CMD="gzip -kf9"
19d3d5b888SJoseph Chenelif [ "${COMPRESSION}" == "lzma" ]; then
20d3d5b888SJoseph Chen	SUFFIX=".lzma"
21bb3c5898SJoseph Chen	COMPRESS_CMD="${srctree}/scripts/compress.sh lzma"
22bc77fafeSJoseph Chenelse
23bc77fafeSJoseph Chen	COMPRESSION="none"
24bc77fafeSJoseph Chen	SUFFIX=
25bc77fafeSJoseph Chenfi
26bc77fafeSJoseph Chen
27bc77fafeSJoseph Chen# nodes
28bc77fafeSJoseph Chenfunction gen_uboot_node()
29bc77fafeSJoseph Chen{
301e70309aSJoseph Chen	UBOOT="u-boot-nodtb.bin"
31bc77fafeSJoseph Chen	echo "		uboot {
32bc77fafeSJoseph Chen			description = \"U-Boot\";
331e70309aSJoseph Chen			data = /incbin/(\"${UBOOT}${SUFFIX}\");
34bc77fafeSJoseph Chen			type = \"standalone\";
35990e82c1SJoseph Chen			arch = \"${U_ARCH}\";
36bc77fafeSJoseph Chen			os = \"U-Boot\";
37bc77fafeSJoseph Chen			compression = \"${COMPRESSION}\";
381e70309aSJoseph Chen			load = <"${UBOOT_LOAD_ADDR}">;"
391e70309aSJoseph Chen	if [ "${COMPRESSION}" != "none" ]; then
401e70309aSJoseph Chen		openssl dgst -sha256 -binary -out ${UBOOT}.digest ${UBOOT}
411e70309aSJoseph Chen		UBOOT_SZ=`ls -l ${UBOOT} | awk '{ print $5 }'`
42bc77fafeSJoseph Chen		if [ ${UBOOT_SZ} -gt 0 ]; then
43ea098e48SJoseph Chen			${COMPRESS_CMD} ${srctree}/${UBOOT}
44bc77fafeSJoseph Chen		else
451e70309aSJoseph Chen			touch ${srctree}/${UBOOT}${SUFFIX}
46bc77fafeSJoseph Chen		fi
47ea098e48SJoseph Chen		echo "			digest {
481e70309aSJoseph Chen				value = /incbin/(\"./${UBOOT}.digest\");
491e70309aSJoseph Chen				algo = \"sha256\";
501e70309aSJoseph Chen			};"
51bc77fafeSJoseph Chen	fi
521e70309aSJoseph Chen	echo "			hash {
531e70309aSJoseph Chen				algo = \"sha256\";
541e70309aSJoseph Chen			};
551e70309aSJoseph Chen		};"
56bc77fafeSJoseph Chen}
57bc77fafeSJoseph Chen
58bc77fafeSJoseph Chenfunction gen_fdt_node()
59bc77fafeSJoseph Chen{
60bc77fafeSJoseph Chen	echo "		fdt {
61bc77fafeSJoseph Chen			description = \"U-Boot dtb\";
62bc77fafeSJoseph Chen			data = /incbin/(\"./u-boot.dtb\");
63bc77fafeSJoseph Chen			type = \"flat_dt\";
64990e82c1SJoseph Chen			arch = \"${U_ARCH}\";
65bc77fafeSJoseph Chen			compression = \"none\";
66bc77fafeSJoseph Chen			hash {
67bc77fafeSJoseph Chen				algo = \"sha256\";
68bc77fafeSJoseph Chen			};
69bc77fafeSJoseph Chen		};"
70bc77fafeSJoseph Chen};
71bc77fafeSJoseph Chen
72bc77fafeSJoseph Chenfunction gen_kfdt_node()
73bc77fafeSJoseph Chen{
74bc77fafeSJoseph Chen	KERN_DTB=`sed -n "/CONFIG_EMBED_KERNEL_DTB_PATH=/s/CONFIG_EMBED_KERNEL_DTB_PATH=//p" .config | tr -d '"'`
75bc77fafeSJoseph Chen	if [ -z "${KERN_DTB}" ]; then
76bc77fafeSJoseph Chen		return;
77bc77fafeSJoseph Chen	fi
78bc77fafeSJoseph Chen
79bc77fafeSJoseph Chen	if [ -f ${srctree}/${KERN_DTB} ]; then
80bc77fafeSJoseph Chen	PROP_KERN_DTB=', "kern-fdt"';
81bc77fafeSJoseph Chen	echo "		kern-fdt {
82bc77fafeSJoseph Chen			description = \"${KERN_DTB}\";
83bc77fafeSJoseph Chen			data = /incbin/(\"${KERN_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		};"
91bc77fafeSJoseph Chen	fi
92bc77fafeSJoseph Chen}
93bc77fafeSJoseph Chen
94bc77fafeSJoseph Chenfunction gen_bl31_node()
95bc77fafeSJoseph Chen{
96bc77fafeSJoseph Chen	${srctree}/arch/arm/mach-rockchip/decode_bl31.py
97bc77fafeSJoseph Chen
98bc77fafeSJoseph Chen	NUM=1
991e70309aSJoseph Chen	for ATF in `ls -l bl31_0x*.bin | sort --key=5 -nr | awk '{ print $9 }'`
100bc77fafeSJoseph Chen	do
1011e70309aSJoseph Chen		ATF_LOAD_ADDR=`echo ${ATF} | awk -F "_" '{ printf $2 }' | awk -F "." '{ printf $1 }'`
102bc77fafeSJoseph Chen		# only atf-1 support compress
1031e70309aSJoseph Chen		if [ "${COMPRESSION}" != "none" -a ${NUM} -eq 1  ]; then
1041e70309aSJoseph Chen			openssl dgst -sha256 -binary -out ${ATF}.digest ${ATF}
105ea098e48SJoseph Chen			${COMPRESS_CMD} ${ATF}
106bc77fafeSJoseph Chen
107bc77fafeSJoseph Chen			echo "		atf-${NUM} {
108bc77fafeSJoseph Chen			description = \"ARM Trusted Firmware\";
1091e70309aSJoseph Chen			data = /incbin/(\"./${ATF}${SUFFIX}\");
110bc77fafeSJoseph Chen			type = \"firmware\";
111bc77fafeSJoseph Chen			arch = \"${ARCH}\";
112bc77fafeSJoseph Chen			os = \"arm-trusted-firmware\";
113bc77fafeSJoseph Chen			compression = \"${COMPRESSION}\";
114bc77fafeSJoseph Chen			load = <"${ATF_LOAD_ADDR}">;
115bc77fafeSJoseph Chen			hash {
116bc77fafeSJoseph Chen				algo = \"sha256\";
117bc77fafeSJoseph Chen			};
118bc77fafeSJoseph Chen			digest {
1191e70309aSJoseph Chen				value = /incbin/(\"./${ATF}.digest\");
120bc77fafeSJoseph Chen				algo = \"sha256\";
121bc77fafeSJoseph Chen			};
122bc77fafeSJoseph Chen		};"
123bc77fafeSJoseph Chen		else
124bc77fafeSJoseph Chen			echo "		atf-${NUM} {
125bc77fafeSJoseph Chen			description = \"ARM Trusted Firmware\";
1261e70309aSJoseph Chen			data = /incbin/(\"./${ATF}\");
127bc77fafeSJoseph Chen			type = \"firmware\";
128bc77fafeSJoseph Chen			arch = \"${ARCH}\";
129bc77fafeSJoseph Chen			os = \"arm-trusted-firmware\";
130bc77fafeSJoseph Chen			compression = \"none\";
131bc77fafeSJoseph Chen			load = <"${ATF_LOAD_ADDR}">;
132bc77fafeSJoseph Chen			hash {
133bc77fafeSJoseph Chen				algo = \"sha256\";
134bc77fafeSJoseph Chen			};
135bc77fafeSJoseph Chen		};"
136bc77fafeSJoseph Chen		fi
137bc77fafeSJoseph Chen
138bc77fafeSJoseph Chen		if [ ${NUM} -gt 1 ]; then
139bc77fafeSJoseph Chen			LOADABLE_ATF=${LOADABLE_ATF}", \"atf-${NUM}\""
140bc77fafeSJoseph Chen		fi
141bc77fafeSJoseph Chen		NUM=`expr ${NUM} + 1`
142bc77fafeSJoseph Chen	done
143bc77fafeSJoseph Chen}
144bc77fafeSJoseph Chen
145bc77fafeSJoseph Chenfunction gen_bl32_node()
146bc77fafeSJoseph Chen{
147bc77fafeSJoseph Chen	if [ -z ${TEE_LOAD_ADDR} ]; then
148bc77fafeSJoseph Chen		return
149bc77fafeSJoseph Chen	fi
150bc77fafeSJoseph Chen
151bc77fafeSJoseph Chen	if [ "${ARCH}" == "arm" ]; then
152990e82c1SJoseph Chen		# If not AArch32 mode
153990e82c1SJoseph Chen		if ! grep  -q '^CONFIG_ARM64_BOOT_AARCH32=y' .config ; then
154c4853b98SJoseph Chen			ENTRY="entry = <"${TEE_LOAD_ADDR}">;"
155bc77fafeSJoseph Chen		fi
156990e82c1SJoseph Chen	fi
1571e70309aSJoseph Chen
1581e70309aSJoseph Chen	TEE="tee.bin"
159bc77fafeSJoseph Chen	echo "		optee {
160bc77fafeSJoseph Chen			description = \"OP-TEE\";
1611e70309aSJoseph Chen			data = /incbin/(\"${TEE}${SUFFIX}\");
162bc77fafeSJoseph Chen			type = \"firmware\";
163bc77fafeSJoseph Chen			arch = \"${ARCH}\";
164bc77fafeSJoseph Chen			os = \"op-tee\";
165bc77fafeSJoseph Chen			compression = \"${COMPRESSION}\";
166bc77fafeSJoseph Chen			${ENTRY}
167c4853b98SJoseph Chen			load = <"${TEE_LOAD_ADDR}">;"
1681e70309aSJoseph Chen	if [ "${COMPRESSION}" != "none" ]; then
1691e70309aSJoseph Chen		openssl dgst -sha256 -binary -out ${TEE}.digest ${TEE}
170ea098e48SJoseph Chen		${COMPRESS_CMD} ${TEE}
171ea098e48SJoseph Chen		echo "			digest {
1721e70309aSJoseph Chen				value = /incbin/(\"./${TEE}.digest\");
173bc77fafeSJoseph Chen				algo = \"sha256\";
174bc77fafeSJoseph Chen			};"
175bc77fafeSJoseph Chen	fi
1761e70309aSJoseph Chen	echo "			hash {
1771e70309aSJoseph Chen				algo = \"sha256\";
1781e70309aSJoseph Chen			};
1791e70309aSJoseph Chen		};"
180bc77fafeSJoseph Chen	LOADABLE_OPTEE=", \"optee\""
181f7d83d10SJoseph Chen	FIRMWARE_OPTEE="firmware = \"optee\";"
182f7d83d10SJoseph Chen	FIRMWARE_SIGN=", \"firmware\""
183bc77fafeSJoseph Chen}
184bc77fafeSJoseph Chen
185bc77fafeSJoseph Chenfunction gen_mcu_node()
186bc77fafeSJoseph Chen{
187bc77fafeSJoseph Chen	for ((i=0, n=0; i<5; i++))
188bc77fafeSJoseph Chen	do
189bc77fafeSJoseph Chen		if [ ${i} -eq 0 ]; then
190bc77fafeSJoseph Chen			MCU_ADDR=${MCU0_LOAD_ADDR}
191bc77fafeSJoseph Chen		elif [ ${i} -eq 1 ]; then
192bc77fafeSJoseph Chen			MCU_ADDR=${MCU1_LOAD_ADDR}
193bc77fafeSJoseph Chen		elif [ ${i} -eq 2 ]; then
194bc77fafeSJoseph Chen			MCU_ADDR=${MCU2_LOAD_ADDR}
195bc77fafeSJoseph Chen		elif [ ${i} -eq 3 ]; then
196bc77fafeSJoseph Chen			MCU_ADDR=${MCU3_LOAD_ADDR}
197bc77fafeSJoseph Chen		elif [ ${i} -eq 4 ]; then
198bc77fafeSJoseph Chen			MCU_ADDR=${MCU4_LOAD_ADDR}
199bc77fafeSJoseph Chen		fi
200bc77fafeSJoseph Chen
201bc77fafeSJoseph Chen		if [ -z ${MCU_ADDR} ]; then
202bc77fafeSJoseph Chen			continue
203bc77fafeSJoseph Chen		fi
204*60dcafe5SJoseph Chen
205*60dcafe5SJoseph Chen		MCU_ADDR_VAL=$((MCU_ADDR))
206bc77fafeSJoseph Chen		MCU="mcu${i}"
207bc77fafeSJoseph Chen		echo "		${MCU} {
208bc77fafeSJoseph Chen			description = \"${MCU}\";
209bc77fafeSJoseph Chen			type = \"standalone\";
210bc77fafeSJoseph Chen			arch = \"riscv\";
211c4853b98SJoseph Chen			load = <"${MCU_ADDR}">;"
212*60dcafe5SJoseph Chen
213*60dcafe5SJoseph Chen		if [ "${COMPRESSION}" != "none" -a ${MCU_ADDR_VAL} -lt ${MAX_ADDR_VAL} ]; then
2141e70309aSJoseph Chen			openssl dgst -sha256 -binary -out ${MCU}.bin.digest ${MCU}.bin
215ea098e48SJoseph Chen			${COMPRESS_CMD} ${MCU}.bin
216*60dcafe5SJoseph Chen			echo "			data = /incbin/(\"./${MCU}.bin${SUFFIX}\");
217*60dcafe5SJoseph Chen			compression = \"${COMPRESSION}\";
218*60dcafe5SJoseph Chen			digest {
219bc77fafeSJoseph Chen				value = /incbin/(\"./${MCU}.bin.digest\");
220bc77fafeSJoseph Chen				algo = \"sha256\";
221bc77fafeSJoseph Chen			};"
222*60dcafe5SJoseph Chen		else
223*60dcafe5SJoseph Chen			echo "			data = /incbin/(\"./${MCU}.bin\");
224*60dcafe5SJoseph Chen			compression = \"none\";"
225bc77fafeSJoseph Chen		fi
226*60dcafe5SJoseph Chen
2271e70309aSJoseph Chen		echo "			hash {
2281e70309aSJoseph Chen				algo = \"sha256\";
2291e70309aSJoseph Chen			};
2301e70309aSJoseph Chen		};"
2311e70309aSJoseph Chen
232bc77fafeSJoseph Chen		if [ ${n} -eq 0 ]; then
233bc77fafeSJoseph Chen			STANDALONE_LIST=${STANDALONE_LIST}"\"${MCU}\""
234bc77fafeSJoseph Chen		else
235bc77fafeSJoseph Chen			STANDALONE_LIST=${STANDALONE_LIST}", \"${MCU}\""
236bc77fafeSJoseph Chen		fi
237bc77fafeSJoseph Chen		n=`expr ${n} + 1`
238bc77fafeSJoseph Chen
239bc77fafeSJoseph Chen		STANDALONE_SIGN=", \"standalone\""
240bc77fafeSJoseph Chen		STANDALONE_MCU="standalone = ${STANDALONE_LIST};"
241bc77fafeSJoseph Chen	done
242bc77fafeSJoseph Chen}
243bc77fafeSJoseph Chen
244bc77fafeSJoseph Chenfunction gen_loadable_node()
245bc77fafeSJoseph Chen{
246bc77fafeSJoseph Chen	for ((i=0; i<5; i++))
247bc77fafeSJoseph Chen	do
248bc77fafeSJoseph Chen		if [ ${i} -eq 0 ]; then
249bc77fafeSJoseph Chen			LOAD_ADDR=${LOAD0_LOAD_ADDR}
250bc77fafeSJoseph Chen		elif [ ${i} -eq 1 ]; then
251bc77fafeSJoseph Chen			LOAD_ADDR=${LOAD1_LOAD_ADDR}
252bc77fafeSJoseph Chen		elif [ ${i} -eq 2 ]; then
253bc77fafeSJoseph Chen			LOAD_ADDR=${LOAD2_LOAD_ADDR}
254bc77fafeSJoseph Chen		elif [ ${i} -eq 3 ]; then
255bc77fafeSJoseph Chen			LOAD_ADDR=${LOAD3_LOAD_ADDR}
256bc77fafeSJoseph Chen		elif [ ${i} -eq 4 ]; then
257bc77fafeSJoseph Chen			LOAD_ADDR=${LOAD4_LOAD_ADDR}
258bc77fafeSJoseph Chen		fi
259bc77fafeSJoseph Chen
260bc77fafeSJoseph Chen		if [ -z ${LOAD_ADDR} ]; then
261bc77fafeSJoseph Chen			continue
262bc77fafeSJoseph Chen		fi
263*60dcafe5SJoseph Chen
264*60dcafe5SJoseph Chen		LOAD_ADDR_VAL=$((LOAD_ADDR))
265bc77fafeSJoseph Chen		LOAD="load${i}"
266bc77fafeSJoseph Chen		echo "		${LOAD} {
267bc77fafeSJoseph Chen			description = \"${LOAD}\";
268bc77fafeSJoseph Chen			type = \"standalone\";
269bc77fafeSJoseph Chen			arch = \"${ARCH}\";
270c4853b98SJoseph Chen			load = <"${LOAD_ADDR}">;"
271*60dcafe5SJoseph Chen
272*60dcafe5SJoseph Chen		if [ "${COMPRESSION}" != "none" -a ${LOAD_ADDR_VAL} -lt ${MAX_ADDR_VAL} ]; then
2731e70309aSJoseph Chen			openssl dgst -sha256 -binary -out ${LOAD}.bin.digest ${LOAD}.bin
274ea098e48SJoseph Chen			${COMPRESS_CMD} ${LOAD}.bin
275*60dcafe5SJoseph Chen			echo "			data = /incbin/(\"./${LOAD}.bin${SUFFIX}\");
276*60dcafe5SJoseph Chen			compression = \"${COMPRESSION}\";
277*60dcafe5SJoseph Chen			digest {
278bc77fafeSJoseph Chen				value = /incbin/(\"./${LOAD}.bin.digest\");
279bc77fafeSJoseph Chen				algo = \"sha256\";
280bc77fafeSJoseph Chen			};"
281*60dcafe5SJoseph Chen		else
282*60dcafe5SJoseph Chen			echo "			data = /incbin/(\"./${LOAD}.bin\");
283*60dcafe5SJoseph Chen			compression = \"none\";"
284bc77fafeSJoseph Chen		fi
285*60dcafe5SJoseph Chen
2861e70309aSJoseph Chen		echo "			hash {
2871e70309aSJoseph Chen				algo = \"sha256\";
2881e70309aSJoseph Chen			};
2891e70309aSJoseph Chen		};"
290bc77fafeSJoseph Chen
291bc77fafeSJoseph Chen		LOADABLE_OTHER=${LOADABLE_OTHER}", \"${LOAD}\""
292bc77fafeSJoseph Chen	done
293bc77fafeSJoseph Chen}
294bc77fafeSJoseph Chen
295bc77fafeSJoseph Chenfunction gen_header()
296bc77fafeSJoseph Chen{
297bc77fafeSJoseph Chenecho "
298bc77fafeSJoseph Chen/*
299bc77fafeSJoseph Chen * Copyright (C) 2020 Rockchip Electronic Co.,Ltd
300bc77fafeSJoseph Chen *
301bc77fafeSJoseph Chen * Simple U-boot fit source file containing ATF/OP-TEE/U-Boot/dtb/MCU
302bc77fafeSJoseph Chen */
303bc77fafeSJoseph Chen
304bc77fafeSJoseph Chen/dts-v1/;
305bc77fafeSJoseph Chen
306bc77fafeSJoseph Chen/ {
307bc77fafeSJoseph Chen	description = \"FIT Image with ATF/OP-TEE/U-Boot/MCU\";
308bc77fafeSJoseph Chen	#address-cells = <1>;
309bc77fafeSJoseph Chen
310bc77fafeSJoseph Chen	images {
311bc77fafeSJoseph Chen"
312bc77fafeSJoseph Chen}
313bc77fafeSJoseph Chen
314bc77fafeSJoseph Chenfunction gen_arm64_configurations()
315bc77fafeSJoseph Chen{
316bc77fafeSJoseph ChenPLATFORM=`sed -n "/CONFIG_DEFAULT_DEVICE_TREE/p" .config | awk -F "=" '{ print $2 }' | tr -d '"'`
317bc77fafeSJoseph Chenif grep  -q '^CONFIG_FIT_ENABLE_RSASSA_PSS_SUPPORT=y' .config ; then
318bc77fafeSJoseph Chen	ALGO_PADDING="				padding = \"pss\";"
319bc77fafeSJoseph Chenfi
3201e70309aSJoseph Chenecho "	};
3211e70309aSJoseph Chen
322bc77fafeSJoseph Chen	configurations {
323bc77fafeSJoseph Chen		default = \"conf\";
324bc77fafeSJoseph Chen		conf {
325bc77fafeSJoseph Chen			description = \"${PLATFORM}\";
326bc77fafeSJoseph Chen			rollback-index = <0x0>;
327bc77fafeSJoseph Chen			firmware = \"atf-1\";
328bc77fafeSJoseph Chen			loadables = \"uboot\"${LOADABLE_ATF}${LOADABLE_OPTEE}${LOADABLE_OTHER};
329bc77fafeSJoseph Chen			${STANDALONE_MCU}
330bc77fafeSJoseph Chen			fdt = \"fdt\"${PROP_KERN_DTB};
331bc77fafeSJoseph Chen			signature {
332bc77fafeSJoseph Chen				algo = \"sha256,rsa2048\";
333bc77fafeSJoseph Chen				${ALGO_PADDING}
334bc77fafeSJoseph Chen				key-name-hint = \"dev\";
335bc77fafeSJoseph Chen				sign-images = \"fdt\", \"firmware\", \"loadables\"${STANDALONE_SIGN};
336bc77fafeSJoseph Chen			};
337bc77fafeSJoseph Chen		};
338bc77fafeSJoseph Chen	};
339bc77fafeSJoseph Chen};
340bc77fafeSJoseph Chen"
341bc77fafeSJoseph Chen}
342bc77fafeSJoseph Chen
343bc77fafeSJoseph Chenfunction gen_arm_configurations()
344bc77fafeSJoseph Chen{
345bc77fafeSJoseph ChenPLATFORM=`sed -n "/CONFIG_DEFAULT_DEVICE_TREE/p" .config | awk -F "=" '{ print $2 }' | tr -d '"'`
346bc77fafeSJoseph Chenif grep  -q '^CONFIG_FIT_ENABLE_RSASSA_PSS_SUPPORT=y' .config ; then
347bc77fafeSJoseph Chen        ALGO_PADDING="                          padding = \"pss\";"
348bc77fafeSJoseph Chenfi
3491e70309aSJoseph Chenecho "	};
3501e70309aSJoseph Chen
351bc77fafeSJoseph Chen	configurations {
352bc77fafeSJoseph Chen		default = \"conf\";
353bc77fafeSJoseph Chen		conf {
354bc77fafeSJoseph Chen			description = \"${PLATFORM}\";
355bc77fafeSJoseph Chen			rollback-index = <0x0>;
356f7d83d10SJoseph Chen			${FIRMWARE_OPTEE}
357bc77fafeSJoseph Chen			loadables = \"uboot\"${LOADABLE_OTHER};
358bc77fafeSJoseph Chen			${STANDALONE_MCU}
359bc77fafeSJoseph Chen			fdt = \"fdt\"${PROP_KERN_DTB};
360bc77fafeSJoseph Chen			signature {
361bc77fafeSJoseph Chen				algo = \"sha256,rsa2048\";
362bc77fafeSJoseph Chen				${ALGO_PADDING}
363bc77fafeSJoseph Chen				key-name-hint = \"dev\";
364f7d83d10SJoseph Chen				sign-images = \"fdt\", \"loadables\"${FIRMWARE_SIGN}${STANDALONE_SIGN};
365bc77fafeSJoseph Chen			};
366bc77fafeSJoseph Chen		};
367bc77fafeSJoseph Chen	};
368bc77fafeSJoseph Chen};
369bc77fafeSJoseph Chen"
370bc77fafeSJoseph Chen}
371bc77fafeSJoseph Chen
372