xref: /OK3568_Linux_fs/u-boot/scripts/fit-core.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/bin/bash
2*4882a593Smuzhiyun#
3*4882a593Smuzhiyun# Copyright (c) 2022 Rockchip Electronics Co., Ltd
4*4882a593Smuzhiyun#
5*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0
6*4882a593Smuzhiyun#
7*4882a593Smuzhiyunset -e
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunFIT_DIR="fit"
10*4882a593SmuzhiyunIMG_UBOOT="uboot.img"
11*4882a593SmuzhiyunIMG_BOOT="boot.img"
12*4882a593SmuzhiyunIMG_RECOVERY="recovery.img"
13*4882a593SmuzhiyunITB_UBOOT="${FIT_DIR}/uboot.itb"
14*4882a593SmuzhiyunITB_BOOT="${FIT_DIR}/boot.itb"
15*4882a593SmuzhiyunITB_RECOVERY="${FIT_DIR}/recovery.itb"
16*4882a593SmuzhiyunSIG_BIN="data2sign.bin"
17*4882a593SmuzhiyunSIG_UBOOT="${FIT_DIR}/uboot.data2sign"
18*4882a593SmuzhiyunSIG_BOOT="${FIT_DIR}/boot.data2sign"
19*4882a593SmuzhiyunSIG_RECOVERY="${FIT_DIR}/recovery.data2sign"
20*4882a593Smuzhiyun# offs
21*4882a593Smuzhiyunif grep -q '^CONFIG_FIT_ENABLE_RSA4096_SUPPORT=y' .config ; then
22*4882a593Smuzhiyun	OFFS_DATA="0x1200"
23*4882a593Smuzhiyunelse
24*4882a593Smuzhiyun	OFFS_DATA="0x1000"
25*4882a593Smuzhiyunfi
26*4882a593Smuzhiyun# placeholder address
27*4882a593SmuzhiyunFDT_ADDR_PLACEHOLDER="0xffffff00"
28*4882a593SmuzhiyunKERNEL_ADDR_PLACEHOLDER="0xffffff01"
29*4882a593SmuzhiyunRAMDISK_ADDR_PLACEHOLDER="0xffffff02"
30*4882a593Smuzhiyun# tools
31*4882a593SmuzhiyunMKIMAGE="./tools/mkimage"
32*4882a593SmuzhiyunRK_SIGN_TOOL="../rkbin/tools/rk_sign_tool"
33*4882a593SmuzhiyunFIT_UNPACK="./scripts/fit-unpack.sh"
34*4882a593SmuzhiyunCHECK_SIGN="./tools/fit_check_sign"
35*4882a593Smuzhiyun# key
36*4882a593SmuzhiyunKEY_DIR="keys/"
37*4882a593SmuzhiyunRSA_PRI_KEY="keys/dev.key"
38*4882a593SmuzhiyunRSA_PUB_KEY="keys/dev.pubkey"
39*4882a593SmuzhiyunRSA_CRT_KEY="keys/dev.crt"
40*4882a593SmuzhiyunSIGNATURE_KEY_NODE="/signature/key-dev"
41*4882a593SmuzhiyunSPL_DTB="spl/u-boot-spl.dtb"
42*4882a593SmuzhiyunUBOOT_DTB="u-boot.dtb"
43*4882a593Smuzhiyun# its
44*4882a593SmuzhiyunITS_UBOOT="u-boot.its"
45*4882a593SmuzhiyunITS_BOOT="boot.its"
46*4882a593SmuzhiyunITS_RECOVERY="recovery.its"
47*4882a593SmuzhiyunARG_VER_UBOOT="0"
48*4882a593SmuzhiyunARG_VER_BOOT="0"
49*4882a593SmuzhiyunARG_VER_RECOVERY="0"
50*4882a593Smuzhiyun
51*4882a593Smuzhiyunfunction help()
52*4882a593Smuzhiyun{
53*4882a593Smuzhiyun	echo
54*4882a593Smuzhiyun	echo "usage:"
55*4882a593Smuzhiyun	echo "    $0 [args]"
56*4882a593Smuzhiyun	echo
57*4882a593Smuzhiyun	echo "args:"
58*4882a593Smuzhiyun	echo "    --rollback-index-recovery  <decimal integer>"
59*4882a593Smuzhiyun	echo "    --rollback-index-boot      <decimal integer>"
60*4882a593Smuzhiyun	echo "    --rollback-index-uboot     <decimal integer>"
61*4882a593Smuzhiyun	echo "    --version-recovery         <decimal integer>"
62*4882a593Smuzhiyun	echo "    --version-boot             <decimal integer>"
63*4882a593Smuzhiyun	echo "    --version-uboot            <decimal integer>"
64*4882a593Smuzhiyun	echo "    --boot_img                 <boot image>"
65*4882a593Smuzhiyun	echo "    --recovery_img             <recovery image>"
66*4882a593Smuzhiyun	echo "    --args                     <arg>"
67*4882a593Smuzhiyun	echo "    --ini-loader               <loader ini file>"
68*4882a593Smuzhiyun	echo "    --ini-trust                <trust ini file>"
69*4882a593Smuzhiyun	echo "    --no-check"
70*4882a593Smuzhiyun	echo "    --spl-new"
71*4882a593Smuzhiyun	echo
72*4882a593Smuzhiyun}
73*4882a593Smuzhiyun
74*4882a593Smuzhiyunfunction arg_check_decimal()
75*4882a593Smuzhiyun{
76*4882a593Smuzhiyun	if [ -z $1 ]; then
77*4882a593Smuzhiyun		help
78*4882a593Smuzhiyun		exit 1
79*4882a593Smuzhiyun	fi
80*4882a593Smuzhiyun
81*4882a593Smuzhiyun	decimal=`echo $1 |sed 's/[0-9]//g'`
82*4882a593Smuzhiyun	if [ ! -z ${decimal} ]; then
83*4882a593Smuzhiyun		echo "ERROR: $1 is not decimal integer"
84*4882a593Smuzhiyun		help
85*4882a593Smuzhiyun		exit 1
86*4882a593Smuzhiyun	fi
87*4882a593Smuzhiyun}
88*4882a593Smuzhiyun
89*4882a593Smuzhiyunfunction check_its()
90*4882a593Smuzhiyun{
91*4882a593Smuzhiyun	cat $1 | while read line
92*4882a593Smuzhiyun	do
93*4882a593Smuzhiyun		file=`echo ${line} | sed -n "/incbin/p" | awk -F '"' '{ printf $2 }' | tr -d ' '`
94*4882a593Smuzhiyun		if [ ! -f ${file} ]; then
95*4882a593Smuzhiyun			echo "ERROR: No ${file}"
96*4882a593Smuzhiyun			exit 1
97*4882a593Smuzhiyun		fi
98*4882a593Smuzhiyun	done
99*4882a593Smuzhiyun}
100*4882a593Smuzhiyun
101*4882a593Smuzhiyunfunction check_rsa_algo()
102*4882a593Smuzhiyun{
103*4882a593Smuzhiyun	if grep -q '^CONFIG_FIT_ENABLE_RSA4096_SUPPORT=y' .config ; then
104*4882a593Smuzhiyun		rsa_algo="rsa4096"
105*4882a593Smuzhiyun	else
106*4882a593Smuzhiyun		rsa_algo="rsa2048"
107*4882a593Smuzhiyun	fi
108*4882a593Smuzhiyun	if ! grep -qr ${rsa_algo} $1 ; then
109*4882a593Smuzhiyun		echo "ERROR: Wrong rsa_algo in its file. It should be ${rsa_algo}."
110*4882a593Smuzhiyun		exit 1
111*4882a593Smuzhiyun	fi
112*4882a593Smuzhiyun}
113*4882a593Smuzhiyun
114*4882a593Smuzhiyunfunction check_rsa_keys()
115*4882a593Smuzhiyun{
116*4882a593Smuzhiyun	if [ ! -f ${RSA_PRI_KEY} ]; then
117*4882a593Smuzhiyun		echo "ERROR: No ${RSA_PRI_KEY} "
118*4882a593Smuzhiyun		exit 1
119*4882a593Smuzhiyun	elif [ ! -f ${RSA_PUB_KEY} ]; then
120*4882a593Smuzhiyun		echo "ERROR: No ${RSA_PUB_KEY} "
121*4882a593Smuzhiyun		exit 1
122*4882a593Smuzhiyun	elif [ ! -f ${RSA_CRT_KEY} ]; then
123*4882a593Smuzhiyun		echo "ERROR: No ${RSA_CRT_KEY} "
124*4882a593Smuzhiyun		exit 1
125*4882a593Smuzhiyun	fi
126*4882a593Smuzhiyun}
127*4882a593Smuzhiyun
128*4882a593Smuzhiyunfunction validate_arg()
129*4882a593Smuzhiyun{
130*4882a593Smuzhiyun	case $1 in
131*4882a593Smuzhiyun		--no-check|--spl-new|--burn-key-hash)
132*4882a593Smuzhiyun			shift=1
133*4882a593Smuzhiyun			;;
134*4882a593Smuzhiyun		--ini-trust|--ini-loader|--rollback-index-boot|--rollback-index-recovery|--rollback-index-uboot|--boot_img|--recovery_img|--version-uboot|--version-boot|--version-recovery|--chip)
135*4882a593Smuzhiyun			shift=2
136*4882a593Smuzhiyun			;;
137*4882a593Smuzhiyun		*)
138*4882a593Smuzhiyun			shift=0
139*4882a593Smuzhiyun			;;
140*4882a593Smuzhiyun	esac
141*4882a593Smuzhiyun	echo ${shift}
142*4882a593Smuzhiyun}
143*4882a593Smuzhiyun
144*4882a593Smuzhiyunfunction fit_process_args()
145*4882a593Smuzhiyun{
146*4882a593Smuzhiyun	if [ $# -eq 0 ]; then
147*4882a593Smuzhiyun		help
148*4882a593Smuzhiyun		exit 0
149*4882a593Smuzhiyun	fi
150*4882a593Smuzhiyun
151*4882a593Smuzhiyun	while [ $# -gt 0 ]; do
152*4882a593Smuzhiyun		case $1 in
153*4882a593Smuzhiyun			--args)
154*4882a593Smuzhiyun				ARG_VALIDATE=$2
155*4882a593Smuzhiyun				shift 2
156*4882a593Smuzhiyun				;;
157*4882a593Smuzhiyun			--boot_img)     # boot.img
158*4882a593Smuzhiyun				ARG_BOOT_IMG=$2
159*4882a593Smuzhiyun				shift 2
160*4882a593Smuzhiyun				;;
161*4882a593Smuzhiyun			--chip)
162*4882a593Smuzhiyun				ARG_CHIP=$2
163*4882a593Smuzhiyun				shift 2
164*4882a593Smuzhiyun				;;
165*4882a593Smuzhiyun			--recovery_img) # recovery.img
166*4882a593Smuzhiyun				ARG_RECOVERY_IMG=$2
167*4882a593Smuzhiyun				shift 2
168*4882a593Smuzhiyun				;;
169*4882a593Smuzhiyun			--boot_img_dir) # boot.img components directory
170*4882a593Smuzhiyun				ARG_BOOT_IMG_DIR=$2
171*4882a593Smuzhiyun				shift 2
172*4882a593Smuzhiyun				;;
173*4882a593Smuzhiyun			--no-check)     # No hostcc fit signature check
174*4882a593Smuzhiyun				ARG_NO_CHECK="y"
175*4882a593Smuzhiyun				shift 1
176*4882a593Smuzhiyun				;;
177*4882a593Smuzhiyun			--ini-trust)    # Assign trust ini file
178*4882a593Smuzhiyun				ARG_INI_TRUST=$2
179*4882a593Smuzhiyun				shift 2
180*4882a593Smuzhiyun				;;
181*4882a593Smuzhiyun			--ini-loader)   # Assign loader ini file
182*4882a593Smuzhiyun				ARG_INI_LOADER=$2
183*4882a593Smuzhiyun				shift 2
184*4882a593Smuzhiyun				;;
185*4882a593Smuzhiyun			--spl-new)      # Use current build u-boot-spl.bin to pack loader
186*4882a593Smuzhiyun				ARG_SPL_NEW="y"
187*4882a593Smuzhiyun				shift 1
188*4882a593Smuzhiyun				;;
189*4882a593Smuzhiyun			--rollback-index-boot)
190*4882a593Smuzhiyun				ARG_ROLLBACK_IDX_BOOT=$2
191*4882a593Smuzhiyun				arg_check_decimal $2
192*4882a593Smuzhiyun				shift 2
193*4882a593Smuzhiyun				;;
194*4882a593Smuzhiyun			--rollback-index-recovery)
195*4882a593Smuzhiyun				ARG_ROLLBACK_IDX_RECOVERY=$2
196*4882a593Smuzhiyun				arg_check_decimal $2
197*4882a593Smuzhiyun				shift 2
198*4882a593Smuzhiyun				;;
199*4882a593Smuzhiyun			--rollback-index-uboot)
200*4882a593Smuzhiyun				ARG_ROLLBACK_IDX_UBOOT=$2
201*4882a593Smuzhiyun				arg_check_decimal $2
202*4882a593Smuzhiyun				shift 2
203*4882a593Smuzhiyun				;;
204*4882a593Smuzhiyun			--version-uboot)
205*4882a593Smuzhiyun				ARG_VER_UBOOT=$2
206*4882a593Smuzhiyun				arg_check_decimal $2
207*4882a593Smuzhiyun				shift 2
208*4882a593Smuzhiyun				;;
209*4882a593Smuzhiyun			--version-boot)
210*4882a593Smuzhiyun				ARG_VER_BOOT=$2
211*4882a593Smuzhiyun				arg_check_decimal $2
212*4882a593Smuzhiyun				shift 2
213*4882a593Smuzhiyun				;;
214*4882a593Smuzhiyun			--version-recovery)
215*4882a593Smuzhiyun				ARG_VER_RECOVERY=$2
216*4882a593Smuzhiyun				arg_check_decimal $2
217*4882a593Smuzhiyun				shift 2
218*4882a593Smuzhiyun				;;
219*4882a593Smuzhiyun			--burn-key-hash)
220*4882a593Smuzhiyun				ARG_BURN_KEY_HASH="y"
221*4882a593Smuzhiyun				shift 1
222*4882a593Smuzhiyun				;;
223*4882a593Smuzhiyun			*)
224*4882a593Smuzhiyun				help
225*4882a593Smuzhiyun				exit 1
226*4882a593Smuzhiyun				;;
227*4882a593Smuzhiyun		esac
228*4882a593Smuzhiyun	done
229*4882a593Smuzhiyun
230*4882a593Smuzhiyun	if grep -q '^CONFIG_FIT_SIGNATURE=y' .config ; then
231*4882a593Smuzhiyun		ARG_SIGN="y"
232*4882a593Smuzhiyun	fi
233*4882a593Smuzhiyun}
234*4882a593Smuzhiyun
235*4882a593Smuzhiyunfunction fit_raw_compile()
236*4882a593Smuzhiyun{
237*4882a593Smuzhiyun	# Verified-boot: should rebuild code but don't need to repack images.
238*4882a593Smuzhiyun	if [ "${ARG_SIGN}" == "y" ]; then
239*4882a593Smuzhiyun		./make.sh --raw-compile
240*4882a593Smuzhiyun	fi
241*4882a593Smuzhiyun	rm ${FIT_DIR} -rf && mkdir -p ${FIT_DIR}
242*4882a593Smuzhiyun}
243*4882a593Smuzhiyun
244*4882a593Smuzhiyunfunction fit_gen_uboot_itb()
245*4882a593Smuzhiyun{
246*4882a593Smuzhiyun	# generate u-boot.its file
247*4882a593Smuzhiyun	./make.sh itb ${ARG_INI_TRUST}
248*4882a593Smuzhiyun
249*4882a593Smuzhiyun	# check existance of file in its
250*4882a593Smuzhiyun	check_its ${ITS_UBOOT}
251*4882a593Smuzhiyun
252*4882a593Smuzhiyun	if [ "${ARG_SIGN}" != "y" ]; then
253*4882a593Smuzhiyun		${MKIMAGE} -f ${ITS_UBOOT} -E -p ${OFFS_DATA} ${ITB_UBOOT} -v ${ARG_VER_UBOOT}
254*4882a593Smuzhiyun		if [ "${ARG_SPL_NEW}" == "y" ]; then
255*4882a593Smuzhiyun			./make.sh --spl ${ARG_INI_LOADER}
256*4882a593Smuzhiyun			echo "pack loader with new: spl/u-boot-spl.bin"
257*4882a593Smuzhiyun		else
258*4882a593Smuzhiyun			./make.sh loader ${ARG_INI_LOADER}
259*4882a593Smuzhiyun		fi
260*4882a593Smuzhiyun	else
261*4882a593Smuzhiyun		check_rsa_keys
262*4882a593Smuzhiyun
263*4882a593Smuzhiyun		if ! grep -q '^CONFIG_SPL_FIT_SIGNATURE=y' .config ; then
264*4882a593Smuzhiyun			echo "ERROR: CONFIG_SPL_FIT_SIGNATURE is disabled"
265*4882a593Smuzhiyun			exit 1
266*4882a593Smuzhiyun		fi
267*4882a593Smuzhiyun
268*4882a593Smuzhiyun		# rollback-index
269*4882a593Smuzhiyun		if grep -q '^CONFIG_SPL_FIT_ROLLBACK_PROTECT=y' .config ; then
270*4882a593Smuzhiyun			ARG_SPL_ROLLBACK_PROTECT="y"
271*4882a593Smuzhiyun			if [ -z ${ARG_ROLLBACK_IDX_UBOOT} ]; then
272*4882a593Smuzhiyun				echo "ERROR: No arg \"--rollback-index-uboot <n>\""
273*4882a593Smuzhiyun				exit 1
274*4882a593Smuzhiyun			fi
275*4882a593Smuzhiyun		fi
276*4882a593Smuzhiyun
277*4882a593Smuzhiyun		if [ "${ARG_SPL_ROLLBACK_PROTECT}" == "y" ]; then
278*4882a593Smuzhiyun			VERSION=`grep 'rollback-index' ${ITS_UBOOT} | awk -F '=' '{ printf $2 }' | tr -d ' '`
279*4882a593Smuzhiyun			sed -i "s/rollback-index = ${VERSION}/rollback-index = <${ARG_ROLLBACK_IDX_UBOOT}>;/g" ${ITS_UBOOT}
280*4882a593Smuzhiyun		fi
281*4882a593Smuzhiyun
282*4882a593Smuzhiyun		# Generally, boot.img is signed before uboot.img, so the ras key can be found
283*4882a593Smuzhiyun		# in u-boot.dtb. If not found, let's insert rsa key anyway.
284*4882a593Smuzhiyun		if ! fdtget -l ${UBOOT_DTB} /signature >/dev/null 2>&1 ; then
285*4882a593Smuzhiyun			${MKIMAGE} -f ${ITS_UBOOT} -k ${KEY_DIR} -K ${UBOOT_DTB} -E -p ${OFFS_DATA} -r ${ITB_UBOOT} -v ${ARG_VER_UBOOT}
286*4882a593Smuzhiyun			echo "## Adding RSA public key into ${UBOOT_DTB}"
287*4882a593Smuzhiyun		fi
288*4882a593Smuzhiyun
289*4882a593Smuzhiyun		# Pack
290*4882a593Smuzhiyun		${MKIMAGE} -f ${ITS_UBOOT} -k ${KEY_DIR} -K ${SPL_DTB} -E -p ${OFFS_DATA} -r ${ITB_UBOOT} -v ${ARG_VER_UBOOT}
291*4882a593Smuzhiyun		mv ${SIG_BIN} ${SIG_UBOOT}
292*4882a593Smuzhiyun
293*4882a593Smuzhiyun		# burn-key-hash
294*4882a593Smuzhiyun		if [ "${ARG_BURN_KEY_HASH}" == "y" ]; then
295*4882a593Smuzhiyun			if grep -q '^CONFIG_SPL_FIT_HW_CRYPTO=y' .config ; then
296*4882a593Smuzhiyun				fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} burn-key-hash 0x1
297*4882a593Smuzhiyun			else
298*4882a593Smuzhiyun				echo "ERROR: --burn-key-hash requires CONFIG_SPL_FIT_HW_CRYPTO=y"
299*4882a593Smuzhiyun				exit 1
300*4882a593Smuzhiyun			fi
301*4882a593Smuzhiyun		fi
302*4882a593Smuzhiyun
303*4882a593Smuzhiyun		# rollback-index read back check
304*4882a593Smuzhiyun		if [ "${ARG_SPL_ROLLBACK_PROTECT}" == "y" ]; then
305*4882a593Smuzhiyun			VERSION=`fdtget -ti ${ITB_UBOOT} /configurations/conf rollback-index`
306*4882a593Smuzhiyun			if [ "${VERSION}" != "${ARG_ROLLBACK_IDX_UBOOT}" ]; then
307*4882a593Smuzhiyun				echo "ERROR: Failed to set rollback-index for ${ITB_UBOOT}";
308*4882a593Smuzhiyun				exit 1
309*4882a593Smuzhiyun			fi
310*4882a593Smuzhiyun		fi
311*4882a593Smuzhiyun
312*4882a593Smuzhiyun		# burn-key-hash read back check
313*4882a593Smuzhiyun		if [ "${ARG_BURN_KEY_HASH}" == "y" ]; then
314*4882a593Smuzhiyun			if [ "`fdtget -ti ${SPL_DTB} ${SIGNATURE_KEY_NODE} burn-key-hash`" != "1" ]; then
315*4882a593Smuzhiyun				echo "ERROR: Failed to set burn-key-hash for ${SPL_DTB}";
316*4882a593Smuzhiyun				exit 1
317*4882a593Smuzhiyun			fi
318*4882a593Smuzhiyun		fi
319*4882a593Smuzhiyun
320*4882a593Smuzhiyun		# host check signature
321*4882a593Smuzhiyun		if [ "${ARG_NO_CHECK}" != "y" ]; then
322*4882a593Smuzhiyun			if [ "${ARG_SPL_NEW}" == "y" ]; then
323*4882a593Smuzhiyun				 ${CHECK_SIGN} -f ${ITB_UBOOT} -k ${SPL_DTB} -s
324*4882a593Smuzhiyun			else
325*4882a593Smuzhiyun				spl_file="../rkbin/"`sed -n "/FlashBoot=/s/FlashBoot=//p" ${ARG_INI_LOADER}  |tr -d '\r'`
326*4882a593Smuzhiyun				offs=`fdtdump -s ${spl_file} | head -1 | awk -F ":" '{ print $2 }' | sed "s/ found fdt at offset //g" | tr -d " "`
327*4882a593Smuzhiyun				if [ -z ${offs}  ]; then
328*4882a593Smuzhiyun					echo "ERROR: invalid ${spl_file} , unable to find fdt blob"
329*4882a593Smuzhiyun				fi
330*4882a593Smuzhiyun				offs=`printf %d ${offs} ` # hex -> dec
331*4882a593Smuzhiyun				dd if=${spl_file} of=spl/u-boot-spl-old.dtb bs=${offs} skip=1 >/dev/null 2>&1
332*4882a593Smuzhiyun				${CHECK_SIGN} -f ${ITB_UBOOT} -k spl/u-boot-spl-old.dtb -s
333*4882a593Smuzhiyun			fi
334*4882a593Smuzhiyun		fi
335*4882a593Smuzhiyun
336*4882a593Smuzhiyun		# minimize u-boot-spl.dtb: clear as 0 but not remove property.
337*4882a593Smuzhiyun		if grep -q '^CONFIG_SPL_FIT_HW_CRYPTO=y' .config ; then
338*4882a593Smuzhiyun			fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} rsa,r-squared 0x0
339*4882a593Smuzhiyun			if grep -q '^CONFIG_SPL_ROCKCHIP_CRYPTO_V1=y' .config ; then
340*4882a593Smuzhiyun				fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} rsa,np 0x0
341*4882a593Smuzhiyun				fdtput -r ${SPL_DTB} ${SIGNATURE_KEY_NODE}/hash@np
342*4882a593Smuzhiyun			else
343*4882a593Smuzhiyun				fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} rsa,c 0x0
344*4882a593Smuzhiyun				fdtput -r ${SPL_DTB} ${SIGNATURE_KEY_NODE}/hash@c
345*4882a593Smuzhiyun			fi
346*4882a593Smuzhiyun		else
347*4882a593Smuzhiyun			fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} rsa,c 0x0
348*4882a593Smuzhiyun			fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} rsa,np 0x0
349*4882a593Smuzhiyun			fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} rsa,exponent-BN 0x0
350*4882a593Smuzhiyun			fdtput -r ${SPL_DTB} ${SIGNATURE_KEY_NODE}/hash@c
351*4882a593Smuzhiyun			fdtput -r ${SPL_DTB} ${SIGNATURE_KEY_NODE}/hash@np
352*4882a593Smuzhiyun		fi
353*4882a593Smuzhiyun
354*4882a593Smuzhiyun		# repack spl
355*4882a593Smuzhiyun		if [ "${ARG_SPL_NEW}" == "y" ]; then
356*4882a593Smuzhiyun			cat spl/u-boot-spl-nodtb.bin > spl/u-boot-spl.bin
357*4882a593Smuzhiyun			if ! grep -q '^CONFIG_SPL_SEPARATE_BSS=y' .config ; then
358*4882a593Smuzhiyun				cat spl/u-boot-spl-pad.bin >> spl/u-boot-spl.bin
359*4882a593Smuzhiyun			fi
360*4882a593Smuzhiyun			cat ${SPL_DTB} >> spl/u-boot-spl.bin
361*4882a593Smuzhiyun
362*4882a593Smuzhiyun			./make.sh --spl ${ARG_INI_LOADER}
363*4882a593Smuzhiyun			echo "## pack loader with new: spl/u-boot-spl.bin"
364*4882a593Smuzhiyun		else
365*4882a593Smuzhiyun			./make.sh loader ${ARG_INI_LOADER}
366*4882a593Smuzhiyun		fi
367*4882a593Smuzhiyun
368*4882a593Smuzhiyun		if [ "${ARG_BURN_KEY_HASH}" == "y" ]; then
369*4882a593Smuzhiyun			echo "## ${SPL_DTB}: burn-key-hash=1"
370*4882a593Smuzhiyun		fi
371*4882a593Smuzhiyun	fi
372*4882a593Smuzhiyun
373*4882a593Smuzhiyun	rm -f u-boot.itb u-boot.img u-boot-dtb.img
374*4882a593Smuzhiyun	mv ${ITS_UBOOT} ${FIT_DIR}
375*4882a593Smuzhiyun}
376*4882a593Smuzhiyun
377*4882a593Smuzhiyunfunction fit_gen_boot_itb()
378*4882a593Smuzhiyun{
379*4882a593Smuzhiyun	if [ ! -z ${ARG_BOOT_IMG} ]; then
380*4882a593Smuzhiyun		${FIT_UNPACK} -f ${ARG_BOOT_IMG} -o ${FIT_DIR}/unpack
381*4882a593Smuzhiyun		ITS_BOOT="${FIT_DIR}/unpack/image.its"
382*4882a593Smuzhiyun	else
383*4882a593Smuzhiyun		compression=`awk -F"," '/COMPRESSION=/  { printf $1 }' ${ARG_INI_TRUST} | tr -d ' ' | cut -c 13-`
384*4882a593Smuzhiyun		if [ -z "${compression}" ]; then
385*4882a593Smuzhiyun			compression="none"
386*4882a593Smuzhiyun		fi
387*4882a593Smuzhiyun		./arch/arm/mach-rockchip/make_fit_boot.sh -c ${compression} > ${ITS_BOOT}
388*4882a593Smuzhiyun		check_its ${ITS_BOOT}
389*4882a593Smuzhiyun	fi
390*4882a593Smuzhiyun
391*4882a593Smuzhiyun	if [ "${ARG_SIGN}" != "y" ]; then
392*4882a593Smuzhiyun		${MKIMAGE} -f ${ITS_BOOT} -E -p ${OFFS_DATA} ${ITB_BOOT} -v ${ARG_VER_BOOT}
393*4882a593Smuzhiyun	else
394*4882a593Smuzhiyun		check_rsa_keys
395*4882a593Smuzhiyun
396*4882a593Smuzhiyun		check_rsa_algo ${ITS_BOOT}
397*4882a593Smuzhiyun
398*4882a593Smuzhiyun		if ! grep -q '^CONFIG_FIT_SIGNATURE=y' .config ; then
399*4882a593Smuzhiyun			echo "ERROR: CONFIG_FIT_SIGNATURE is disabled"
400*4882a593Smuzhiyun			exit 1
401*4882a593Smuzhiyun		fi
402*4882a593Smuzhiyun
403*4882a593Smuzhiyun		if grep -q '^CONFIG_FIT_ROLLBACK_PROTECT=y' .config ; then
404*4882a593Smuzhiyun			ARG_ROLLBACK_PROTECT="y"
405*4882a593Smuzhiyun			if [ -z ${ARG_ROLLBACK_IDX_BOOT} ]; then
406*4882a593Smuzhiyun				echo "ERROR: No arg \"--rollback-index-boot <n>\""
407*4882a593Smuzhiyun				exit 1
408*4882a593Smuzhiyun			fi
409*4882a593Smuzhiyun			if ! grep -q '^CONFIG_OPTEE_CLIENT=y' .config ; then
410*4882a593Smuzhiyun				echo "ERROR: Don't support \"--rollback-index-boot <n>\""
411*4882a593Smuzhiyun				exit 1
412*4882a593Smuzhiyun			fi
413*4882a593Smuzhiyun		fi
414*4882a593Smuzhiyun
415*4882a593Smuzhiyun		# fixup
416*4882a593Smuzhiyun		FDT_ADDR_R=`strings env/built-in.o | grep 'fdt_addr_r=' | awk -F "=" '{ print $2 }'`
417*4882a593Smuzhiyun		KERNEL_ADDR_R=`strings env/built-in.o | grep 'kernel_addr_r=' | awk -F "=" '{ print $2 }'`
418*4882a593Smuzhiyun		RMADISK_ADDR_R=`strings env/built-in.o | grep 'ramdisk_addr_r=' | awk -F "=" '{ print $2 }'`
419*4882a593Smuzhiyun		sed -i "s/${FDT_ADDR_PLACEHOLDER}/${FDT_ADDR_R}/g"         ${ITS_BOOT}
420*4882a593Smuzhiyun		sed -i "s/${KERNEL_ADDR_PLACEHOLDER}/${KERNEL_ADDR_R}/g"   ${ITS_BOOT}
421*4882a593Smuzhiyun		sed -i "s/${RAMDISK_ADDR_PLACEHOLDER}/${RMADISK_ADDR_R}/g" ${ITS_BOOT}
422*4882a593Smuzhiyun		if grep -q '^CONFIG_ARM64=y' .config ; then
423*4882a593Smuzhiyun			sed -i 's/arch = "arm";/arch = "arm64";/g' ${ITS_BOOT}
424*4882a593Smuzhiyun		fi
425*4882a593Smuzhiyun
426*4882a593Smuzhiyun		if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then
427*4882a593Smuzhiyun			VERSION=`grep 'rollback-index' ${ITS_BOOT} | awk -F '=' '{ printf $2 }' | tr -d ' '`
428*4882a593Smuzhiyun			sed -i "s/rollback-index = ${VERSION}/rollback-index = <${ARG_ROLLBACK_IDX_BOOT}>;/g" ${ITS_BOOT}
429*4882a593Smuzhiyun		fi
430*4882a593Smuzhiyun
431*4882a593Smuzhiyun		${MKIMAGE} -f ${ITS_BOOT} -k ${KEY_DIR} -K ${UBOOT_DTB} -E -p ${OFFS_DATA} -r ${ITB_BOOT} -v ${ARG_VER_BOOT}
432*4882a593Smuzhiyun		mv ${SIG_BIN} ${SIG_BOOT}
433*4882a593Smuzhiyun
434*4882a593Smuzhiyun		# rollback-index read back check
435*4882a593Smuzhiyun		if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then
436*4882a593Smuzhiyun			VERSION=`fdtget -ti ${ITB_BOOT} /configurations/conf rollback-index`
437*4882a593Smuzhiyun			if [ "${VERSION}" != "${ARG_ROLLBACK_IDX_BOOT}" ]; then
438*4882a593Smuzhiyun				echo "ERROR: Failed to set rollback-index for ${ITB_BOOT}";
439*4882a593Smuzhiyun				exit 1
440*4882a593Smuzhiyun			fi
441*4882a593Smuzhiyun		fi
442*4882a593Smuzhiyun
443*4882a593Smuzhiyun		# host check signature
444*4882a593Smuzhiyun		if [ "${ARG_NO_CHECK}" != "y" ]; then
445*4882a593Smuzhiyun			 ${CHECK_SIGN} -f ${ITB_BOOT} -k ${UBOOT_DTB}
446*4882a593Smuzhiyun		fi
447*4882a593Smuzhiyun
448*4882a593Smuzhiyun		# minimize u-boot.dtb: clearn as 0 but not remove property.
449*4882a593Smuzhiyun		if grep -q '^CONFIG_FIT_HW_CRYPTO=y' .config ; then
450*4882a593Smuzhiyun			fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,r-squared 0x0
451*4882a593Smuzhiyun			if grep -q '^CONFIG_ROCKCHIP_CRYPTO_V1=y' .config ; then
452*4882a593Smuzhiyun				fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,np 0x0
453*4882a593Smuzhiyun			else
454*4882a593Smuzhiyun				fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,c 0x0
455*4882a593Smuzhiyun			fi
456*4882a593Smuzhiyun		else
457*4882a593Smuzhiyun			fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,c 0x0
458*4882a593Smuzhiyun			fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,np 0x0
459*4882a593Smuzhiyun			fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,exponent-BN 0x0
460*4882a593Smuzhiyun		fi
461*4882a593Smuzhiyun		fdtput -r ${UBOOT_DTB} ${SIGNATURE_KEY_NODE}/hash@c
462*4882a593Smuzhiyun		fdtput -r ${UBOOT_DTB} ${SIGNATURE_KEY_NODE}/hash@np
463*4882a593Smuzhiyun	fi
464*4882a593Smuzhiyun
465*4882a593Smuzhiyun	mv ${ITS_BOOT} ${FIT_DIR}
466*4882a593Smuzhiyun}
467*4882a593Smuzhiyun
468*4882a593Smuzhiyunfunction fit_gen_recovery_itb()
469*4882a593Smuzhiyun{
470*4882a593Smuzhiyun	if [ ! -z ${ARG_RECOVERY_IMG} ]; then
471*4882a593Smuzhiyun		${FIT_UNPACK} -f ${ARG_RECOVERY_IMG} -o ${FIT_DIR}/unpack
472*4882a593Smuzhiyun		ITS_RECOVERY="${FIT_DIR}/unpack/image.its"
473*4882a593Smuzhiyun	else
474*4882a593Smuzhiyun		echo "ERROR: No recovery.img"
475*4882a593Smuzhiyun		exit 1
476*4882a593Smuzhiyun	fi
477*4882a593Smuzhiyun
478*4882a593Smuzhiyun	if [ "${ARG_SIGN}" != "y" ]; then
479*4882a593Smuzhiyun		${MKIMAGE} -f ${ITS_RECOVERY} -E -p ${OFFS_DATA} ${ITB_RECOVERY} -v ${ARG_VER_RECOVERY}
480*4882a593Smuzhiyun	else
481*4882a593Smuzhiyun		check_rsa_keys
482*4882a593Smuzhiyun
483*4882a593Smuzhiyun		check_rsa_algo ${ITS_RECOVERY}
484*4882a593Smuzhiyun
485*4882a593Smuzhiyun		if ! grep -q '^CONFIG_FIT_SIGNATURE=y' .config ; then
486*4882a593Smuzhiyun			echo "ERROR: CONFIG_FIT_SIGNATURE is disabled"
487*4882a593Smuzhiyun			exit 1
488*4882a593Smuzhiyun		fi
489*4882a593Smuzhiyun
490*4882a593Smuzhiyun		if grep -q '^CONFIG_FIT_ROLLBACK_PROTECT=y' .config ; then
491*4882a593Smuzhiyun			ARG_ROLLBACK_PROTECT="y"
492*4882a593Smuzhiyun			if [ -z ${ARG_ROLLBACK_IDX_RECOVERY} ]; then
493*4882a593Smuzhiyun				echo "ERROR: No arg \"--rollback-index-recovery <n>\""
494*4882a593Smuzhiyun				exit 1
495*4882a593Smuzhiyun			fi
496*4882a593Smuzhiyun			if ! grep -q '^CONFIG_OPTEE_CLIENT=y' .config ; then
497*4882a593Smuzhiyun				echo "ERROR: Don't support \"--rollback-index-recovery <n>\""
498*4882a593Smuzhiyun				exit 1
499*4882a593Smuzhiyun			fi
500*4882a593Smuzhiyun		fi
501*4882a593Smuzhiyun
502*4882a593Smuzhiyun		# fixup
503*4882a593Smuzhiyun		FDT_ADDR_R=`strings env/built-in.o | grep 'fdt_addr_r=' | awk -F "=" '{ print $2 }'`
504*4882a593Smuzhiyun		KERNEL_ADDR_R=`strings env/built-in.o | grep 'kernel_addr_r=' | awk -F "=" '{ print $2 }'`
505*4882a593Smuzhiyun		RMADISK_ADDR_R=`strings env/built-in.o | grep 'ramdisk_addr_r=' | awk -F "=" '{ print $2 }'`
506*4882a593Smuzhiyun		sed -i "s/${FDT_ADDR_PLACEHOLDER}/${FDT_ADDR_R}/g"         ${ITS_RECOVERY}
507*4882a593Smuzhiyun		sed -i "s/${KERNEL_ADDR_PLACEHOLDER}/${KERNEL_ADDR_R}/g"   ${ITS_RECOVERY}
508*4882a593Smuzhiyun		sed -i "s/${RAMDISK_ADDR_PLACEHOLDER}/${RMADISK_ADDR_R}/g" ${ITS_RECOVERY}
509*4882a593Smuzhiyun		if grep -q '^CONFIG_ARM64=y' .config ; then
510*4882a593Smuzhiyun			sed -i 's/arch = "arm";/arch = "arm64";/g' ${ITS_RECOVERY}
511*4882a593Smuzhiyun		fi
512*4882a593Smuzhiyun
513*4882a593Smuzhiyun		if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then
514*4882a593Smuzhiyun			VERSION=`grep 'rollback-index' ${ITS_RECOVERY} | awk -F '=' '{ printf $2 }' | tr -d ' '`
515*4882a593Smuzhiyun			sed -i "s/rollback-index = ${VERSION}/rollback-index = <${ARG_ROLLBACK_IDX_RECOVERY}>;/g" ${ITS_RECOVERY}
516*4882a593Smuzhiyun		fi
517*4882a593Smuzhiyun
518*4882a593Smuzhiyun		${MKIMAGE} -f ${ITS_RECOVERY} -k ${KEY_DIR} -K ${UBOOT_DTB} -E -p ${OFFS_DATA} -r ${ITB_RECOVERY} -v ${ARG_VER_RECOVERY}
519*4882a593Smuzhiyun		mv ${SIG_BIN} ${SIG_RECOVERY}
520*4882a593Smuzhiyun
521*4882a593Smuzhiyun		# rollback-index read back check
522*4882a593Smuzhiyun		if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then
523*4882a593Smuzhiyun			VERSION=`fdtget -ti ${ITB_RECOVERY} /configurations/conf rollback-index`
524*4882a593Smuzhiyun			if [ "${VERSION}" != "${ARG_ROLLBACK_IDX_RECOVERY}" ]; then
525*4882a593Smuzhiyun				echo "ERROR: Failed to set rollback-index for ${ITB_RECOVERY}";
526*4882a593Smuzhiyun				exit 1
527*4882a593Smuzhiyun			fi
528*4882a593Smuzhiyun		fi
529*4882a593Smuzhiyun
530*4882a593Smuzhiyun		# host check signature
531*4882a593Smuzhiyun		if [ "${ARG_NO_CHECK}" != "y" ]; then
532*4882a593Smuzhiyun			 ${CHECK_SIGN} -f ${ITB_RECOVERY} -k ${UBOOT_DTB}
533*4882a593Smuzhiyun		fi
534*4882a593Smuzhiyun
535*4882a593Smuzhiyun		# minimize u-boot.dtb: clearn as 0 but not remove property.
536*4882a593Smuzhiyun		if grep -q '^CONFIG_FIT_HW_CRYPTO=y' .config ; then
537*4882a593Smuzhiyun			fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,r-squared 0x0
538*4882a593Smuzhiyun			if grep -q '^CONFIG_ROCKCHIP_CRYPTO_V1=y' .config ; then
539*4882a593Smuzhiyun				fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,np 0x0
540*4882a593Smuzhiyun			else
541*4882a593Smuzhiyun				fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,c 0x0
542*4882a593Smuzhiyun			fi
543*4882a593Smuzhiyun		else
544*4882a593Smuzhiyun			fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,c 0x0
545*4882a593Smuzhiyun			fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,np 0x0
546*4882a593Smuzhiyun			fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,exponent-BN 0x0
547*4882a593Smuzhiyun		fi
548*4882a593Smuzhiyun		fdtput -r ${UBOOT_DTB} ${SIGNATURE_KEY_NODE}/hash@c
549*4882a593Smuzhiyun		fdtput -r ${UBOOT_DTB} ${SIGNATURE_KEY_NODE}/hash@np
550*4882a593Smuzhiyun	fi
551*4882a593Smuzhiyun
552*4882a593Smuzhiyun	mv ${ITS_RECOVERY} ${FIT_DIR}
553*4882a593Smuzhiyun}
554*4882a593Smuzhiyun
555*4882a593Smuzhiyunfunction fit_gen_uboot_img()
556*4882a593Smuzhiyun{
557*4882a593Smuzhiyun	ITB=$1
558*4882a593Smuzhiyun
559*4882a593Smuzhiyun	if [ -z ${ITB} ]; then
560*4882a593Smuzhiyun		ITB=${ITB_UBOOT}
561*4882a593Smuzhiyun	fi
562*4882a593Smuzhiyun
563*4882a593Smuzhiyun	ITB_MAX_NUM=`sed -n "/SPL_FIT_IMAGE_MULTIPLE/p" .config | awk -F "=" '{ print $2 }'`
564*4882a593Smuzhiyun	ITB_MAX_KB=`sed  -n "/SPL_FIT_IMAGE_KB/p" .config | awk -F "=" '{ print $2 }'`
565*4882a593Smuzhiyun	ITB_MAX_BS=$((ITB_MAX_KB*1024))
566*4882a593Smuzhiyun	ITB_BS=`ls -l ${ITB} | awk '{ print $5 }'`
567*4882a593Smuzhiyun
568*4882a593Smuzhiyun	if [ ${ITB_BS} -gt ${ITB_MAX_BS} ]; then
569*4882a593Smuzhiyun		echo "ERROR: pack ${IMG_UBOOT} failed! ${ITB} actual: ${ITB_BS} bytes, max limit: ${ITB_MAX_BS} bytes"
570*4882a593Smuzhiyun		exit 1
571*4882a593Smuzhiyun	fi
572*4882a593Smuzhiyun
573*4882a593Smuzhiyun	rm -f ${IMG_UBOOT}
574*4882a593Smuzhiyun	for ((i = 0; i < ${ITB_MAX_NUM}; i++));
575*4882a593Smuzhiyun	do
576*4882a593Smuzhiyun		cat ${ITB} >> ${IMG_UBOOT}
577*4882a593Smuzhiyun		truncate -s %${ITB_MAX_KB}K ${IMG_UBOOT}
578*4882a593Smuzhiyun	done
579*4882a593Smuzhiyun}
580*4882a593Smuzhiyun
581*4882a593Smuzhiyunfunction fit_gen_boot_img()
582*4882a593Smuzhiyun{
583*4882a593Smuzhiyun	ITB=$1
584*4882a593Smuzhiyun
585*4882a593Smuzhiyun	if [ -z ${ITB} ]; then
586*4882a593Smuzhiyun		ITB=${ITB_BOOT}
587*4882a593Smuzhiyun	fi
588*4882a593Smuzhiyun
589*4882a593Smuzhiyun	if [ "${ITB}" != "${IMG_BOOT}" ]; then
590*4882a593Smuzhiyun		cp ${ITB} ${IMG_BOOT} -f
591*4882a593Smuzhiyun	fi
592*4882a593Smuzhiyun}
593*4882a593Smuzhiyun
594*4882a593Smuzhiyunfunction fit_gen_recovery_img()
595*4882a593Smuzhiyun{
596*4882a593Smuzhiyun	ITB=$1
597*4882a593Smuzhiyun
598*4882a593Smuzhiyun	if [ -z ${ITB} ]; then
599*4882a593Smuzhiyun		ITB=${ITB_RECOVERY}
600*4882a593Smuzhiyun	fi
601*4882a593Smuzhiyun
602*4882a593Smuzhiyun	if [ "${ITB}" != "${IMG_RECOVERY}" ]; then
603*4882a593Smuzhiyun		cp ${ITB} ${IMG_RECOVERY} -f
604*4882a593Smuzhiyun	fi
605*4882a593Smuzhiyun}
606*4882a593Smuzhiyun
607*4882a593Smuzhiyunfunction fit_gen_loader()
608*4882a593Smuzhiyun{
609*4882a593Smuzhiyun	if grep -Eq '^CONFIG_FIT_SIGNATURE=y' .config ; then
610*4882a593Smuzhiyun		${RK_SIGN_TOOL} cc --chip ${ARG_CHIP: 2: 6}
611*4882a593Smuzhiyun		${RK_SIGN_TOOL} lk --key ${RSA_PRI_KEY} --pubkey ${RSA_PUB_KEY}
612*4882a593Smuzhiyun		if ls *loader*.bin >/dev/null 2>&1 ; then
613*4882a593Smuzhiyun			${RK_SIGN_TOOL} sl --loader *loader*.bin
614*4882a593Smuzhiyun		fi
615*4882a593Smuzhiyun		if ls *download*.bin >/dev/null 2>&1 ; then
616*4882a593Smuzhiyun			${RK_SIGN_TOOL} sl --loader *download*.bin
617*4882a593Smuzhiyun		fi
618*4882a593Smuzhiyun		if ls *idblock*.img >/dev/null 2>&1 ; then
619*4882a593Smuzhiyun			${RK_SIGN_TOOL} sb --idb *idblock*.img
620*4882a593Smuzhiyun		fi
621*4882a593Smuzhiyun	fi
622*4882a593Smuzhiyun}
623*4882a593Smuzhiyun
624*4882a593Smuzhiyunfunction fit_msg_uboot()
625*4882a593Smuzhiyun{
626*4882a593Smuzhiyun	if [ "${ARG_SIGN}" != "y" ]; then
627*4882a593Smuzhiyun		MSG_SIGN="no-signed"
628*4882a593Smuzhiyun	else
629*4882a593Smuzhiyun		MSG_SIGN="signed"
630*4882a593Smuzhiyun	fi
631*4882a593Smuzhiyun
632*4882a593Smuzhiyun	VERSION=`fdtget -ti ${ITB_UBOOT} / version`
633*4882a593Smuzhiyun	if [ "${VERSION}" != "" ]; then
634*4882a593Smuzhiyun		MSG_VER=", version=${VERSION}"
635*4882a593Smuzhiyun	fi
636*4882a593Smuzhiyun
637*4882a593Smuzhiyun	if [ "${ARG_SPL_ROLLBACK_PROTECT}" == "y" ]; then
638*4882a593Smuzhiyun		echo "Image(${MSG_SIGN}${MSG_VER}, rollback-index=${ARG_ROLLBACK_IDX_UBOOT}): ${IMG_UBOOT} (with uboot, trust...) is ready"
639*4882a593Smuzhiyun	else
640*4882a593Smuzhiyun		echo "Image(${MSG_SIGN}${MSG_VER}): ${IMG_UBOOT} (FIT with uboot, trust...) is ready"
641*4882a593Smuzhiyun	fi
642*4882a593Smuzhiyun}
643*4882a593Smuzhiyun
644*4882a593Smuzhiyunfunction fit_msg_boot()
645*4882a593Smuzhiyun{
646*4882a593Smuzhiyun	if [ -z "${ARG_BOOT_IMG}" ]; then
647*4882a593Smuzhiyun		return;
648*4882a593Smuzhiyun	fi
649*4882a593Smuzhiyun
650*4882a593Smuzhiyun	if [ "${ARG_SIGN}" != "y" ]; then
651*4882a593Smuzhiyun		MSG_SIGN="no-signed"
652*4882a593Smuzhiyun	else
653*4882a593Smuzhiyun		MSG_SIGN="signed"
654*4882a593Smuzhiyun	fi
655*4882a593Smuzhiyun
656*4882a593Smuzhiyun	VERSION=`fdtget -ti ${ITB_BOOT} / version`
657*4882a593Smuzhiyun	if [ "${VERSION}" != "" ]; then
658*4882a593Smuzhiyun		MSG_VER=", version=${VERSION}"
659*4882a593Smuzhiyun	fi
660*4882a593Smuzhiyun
661*4882a593Smuzhiyun	if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then
662*4882a593Smuzhiyun		echo "Image(${MSG_SIGN}${MSG_VER}, rollback-index=${ARG_ROLLBACK_IDX_BOOT}): ${IMG_BOOT} is ready"
663*4882a593Smuzhiyun	else
664*4882a593Smuzhiyun		echo "Image(${MSG_SIGN}${MSG_VER}): ${IMG_BOOT} (FIT with kernel, fdt, resource...) is ready"
665*4882a593Smuzhiyun	fi
666*4882a593Smuzhiyun}
667*4882a593Smuzhiyun
668*4882a593Smuzhiyunfunction fit_msg_recovery()
669*4882a593Smuzhiyun{
670*4882a593Smuzhiyun	if [ -z "${ARG_RECOVERY_IMG}" ]; then
671*4882a593Smuzhiyun		return;
672*4882a593Smuzhiyun	fi
673*4882a593Smuzhiyun
674*4882a593Smuzhiyun	if [ "${ARG_SIGN}" != "y" ]; then
675*4882a593Smuzhiyun		MSG_SIGN="no-signed"
676*4882a593Smuzhiyun	else
677*4882a593Smuzhiyun		MSG_SIGN="signed"
678*4882a593Smuzhiyun	fi
679*4882a593Smuzhiyun
680*4882a593Smuzhiyun	VERSION=`fdtget -ti ${ITB_RECOVERY} / version`
681*4882a593Smuzhiyun	if [ "${VERSION}" != "" ]; then
682*4882a593Smuzhiyun		MSG_VER=", version=${VERSION}"
683*4882a593Smuzhiyun	fi
684*4882a593Smuzhiyun
685*4882a593Smuzhiyun	if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then
686*4882a593Smuzhiyun		echo "Image(${MSG_SIGN}${MSG_VER}, rollback-index=${ARG_ROLLBACK_IDX_RECOVERY}): ${IMG_RECOVERY} is ready"
687*4882a593Smuzhiyun	else
688*4882a593Smuzhiyun		echo "Image(${MSG_SIGN}${MSG_VER}): ${IMG_RECOVERY} (FIT with kernel, fdt, resource...) is ready"
689*4882a593Smuzhiyun	fi
690*4882a593Smuzhiyun}
691*4882a593Smuzhiyun
692*4882a593Smuzhiyunfunction fit_msg_loader()
693*4882a593Smuzhiyun{
694*4882a593Smuzhiyun	if ls *loader*.bin >/dev/null 2>&1 ; then
695*4882a593Smuzhiyun		LOADER=`ls *loader*.bin`
696*4882a593Smuzhiyun	fi
697*4882a593Smuzhiyun
698*4882a593Smuzhiyun	if ls *idblock*.img >/dev/null 2>&1 ; then
699*4882a593Smuzhiyun		LOADER=`ls *idblock*.img`
700*4882a593Smuzhiyun	fi
701*4882a593Smuzhiyun
702*4882a593Smuzhiyun	if grep -q '^CONFIG_FIT_SIGNATURE=y' .config ; then
703*4882a593Smuzhiyun		echo "Image(signed): ${LOADER} (with spl, ddr...) is ready"
704*4882a593Smuzhiyun	else
705*4882a593Smuzhiyun		echo "Image(no-signed): ${LOADER} (with spl, ddr...) is ready"
706*4882a593Smuzhiyun	fi
707*4882a593Smuzhiyun}
708*4882a593Smuzhiyun
709*4882a593Smuzhiyunfunction fit_msg_u_boot_loader()
710*4882a593Smuzhiyun{
711*4882a593Smuzhiyun	if ls *loader*.bin >/dev/null 2>&1 ; then
712*4882a593Smuzhiyun		LOADER=`ls *loader*.bin`
713*4882a593Smuzhiyun	fi
714*4882a593Smuzhiyun
715*4882a593Smuzhiyun	if ls *idblock*.img >/dev/null 2>&1 ; then
716*4882a593Smuzhiyun		LOADER=`ls *idblock*.img`
717*4882a593Smuzhiyun	fi
718*4882a593Smuzhiyun
719*4882a593Smuzhiyun	if grep -q '^CONFIG_FIT_SIGNATURE=y' .config ; then
720*4882a593Smuzhiyun		echo "Image(signed): ${LOADER} (with u-boot, ddr...) is ready"
721*4882a593Smuzhiyun	else
722*4882a593Smuzhiyun		echo "Image(no-signed): ${LOADER} (with u-boot, ddr...) is ready"
723*4882a593Smuzhiyun	fi
724*4882a593Smuzhiyun}
725