1ae33e311SJoseph Chen#!/bin/bash 2ae33e311SJoseph Chen# 3ae33e311SJoseph Chen# Copyright (c) 2020 Fuzhou Rockchip Electronics Co., Ltd 4ae33e311SJoseph Chen# 5ae33e311SJoseph Chen# SPDX-License-Identifier: GPL-2.0 6ae33e311SJoseph Chen# 7ae33e311SJoseph Chenset -e 8ae33e311SJoseph Chen 9ae33e311SJoseph ChenFIT_DIR="fit" 10ae33e311SJoseph ChenIMG_UBOOT="uboot.img" 11ae33e311SJoseph ChenIMG_BOOT="boot.img" 124b1cd58cSJoseph ChenIMG_RECOVERY="recovery.img" 13ae33e311SJoseph ChenITB_UBOOT="${FIT_DIR}/uboot.itb" 14ae33e311SJoseph ChenITB_BOOT="${FIT_DIR}/boot.itb" 154b1cd58cSJoseph ChenITB_RECOVERY="${FIT_DIR}/recovery.itb" 16ae33e311SJoseph ChenSIG_BIN="data2sign.bin" 17ae33e311SJoseph ChenSIG_UBOOT="${FIT_DIR}/uboot.data2sign" 18ae33e311SJoseph ChenSIG_BOOT="${FIT_DIR}/boot.data2sign" 194b1cd58cSJoseph ChenSIG_RECOVERY="${FIT_DIR}/recovery.data2sign" 20ae33e311SJoseph Chen# offs 21*ac05169aSJoseph ChenOFFS_DATA="0xE00" 22ae33e311SJoseph Chen# file 23ae33e311SJoseph ChenCHIP_FILE="arch/arm/lib/.asm-offsets.s.cmd" 24ae33e311SJoseph Chen# placeholder address 25ae33e311SJoseph ChenFDT_ADDR_PLACEHOLDER="0xffffff00" 26ae33e311SJoseph ChenKERNEL_ADDR_PLACEHOLDER="0xffffff01" 27ae33e311SJoseph ChenRAMDISK_ADDR_PLACEHOLDER="0xffffff02" 28ae33e311SJoseph Chen# tools 29ae33e311SJoseph ChenMKIMAGE="./tools/mkimage" 30ae33e311SJoseph ChenFIT_UNPACK="./scripts/fit-unpack.sh" 31ae33e311SJoseph ChenCHECK_SIGN="./tools/fit_check_sign" 32ae33e311SJoseph Chen# key 33ae33e311SJoseph ChenKEY_DIR="keys/" 34ae33e311SJoseph ChenRSA_PRI_KEY="keys/dev.key" 35ae33e311SJoseph ChenRSA_PUB_KEY="keys/dev.crt" 36ae33e311SJoseph ChenSIGNATURE_KEY_NODE="/signature/key-dev" 37ae33e311SJoseph ChenSPL_DTB="spl/u-boot-spl.dtb" 38ae33e311SJoseph ChenUBOOT_DTB="u-boot.dtb" 39ae33e311SJoseph Chen# its 40ae33e311SJoseph ChenITS_UBOOT="u-boot.its" 41ae33e311SJoseph ChenITS_BOOT="boot.its" 424b1cd58cSJoseph ChenITS_RECOVERY="recovery.its" 43ae33e311SJoseph ChenARG_VER_UBOOT="0" 44ae33e311SJoseph ChenARG_VER_BOOT="0" 454b1cd58cSJoseph ChenARG_VER_RECOVERY="0" 46ae33e311SJoseph Chen 47ae33e311SJoseph Chenfunction help() 48ae33e311SJoseph Chen{ 49ae33e311SJoseph Chen echo 50ae33e311SJoseph Chen echo "usage:" 51ae33e311SJoseph Chen echo " $0 [args]" 52ae33e311SJoseph Chen echo 53ae33e311SJoseph Chen echo "args:" 544b1cd58cSJoseph Chen echo " --rollback-index-recovery <decimal integer>" 55ae33e311SJoseph Chen echo " --rollback-index-boot <decimal integer>" 56ae33e311SJoseph Chen echo " --rollback-index-uboot <decimal integer>" 574b1cd58cSJoseph Chen echo " --version-recovery <decimal integer>" 58ae33e311SJoseph Chen echo " --version-boot <decimal integer>" 594b1cd58cSJoseph Chen echo " --version-uboot <decimal integer>" 604b1cd58cSJoseph Chen echo " --boot_img <boot image>" 614b1cd58cSJoseph Chen echo " --recovery_img <recovery image>" 624b1cd58cSJoseph Chen echo " --args <arg>" 634b1cd58cSJoseph Chen echo " --ini-loader <loader ini file>" 644b1cd58cSJoseph Chen echo " --ini-trust <trust ini file>" 65ae33e311SJoseph Chen echo " --no-check" 66ae33e311SJoseph Chen echo " --spl-new" 67ae33e311SJoseph Chen echo 68ae33e311SJoseph Chen} 69ae33e311SJoseph Chen 70ae33e311SJoseph Chenfunction arg_check_decimal() 71ae33e311SJoseph Chen{ 72ae33e311SJoseph Chen if [ -z $1 ]; then 73ae33e311SJoseph Chen help 74ae33e311SJoseph Chen exit 1 75ae33e311SJoseph Chen fi 76ae33e311SJoseph Chen 77ae33e311SJoseph Chen decimal=`echo $1 |sed 's/[0-9]//g'` 78ae33e311SJoseph Chen if [ ! -z ${decimal} ]; then 79ae33e311SJoseph Chen echo "ERROR: $1 is not decimal integer" 80ae33e311SJoseph Chen help 81ae33e311SJoseph Chen exit 1 82ae33e311SJoseph Chen fi 83ae33e311SJoseph Chen} 84ae33e311SJoseph Chen 85ae33e311SJoseph Chenfunction check_its() 86ae33e311SJoseph Chen{ 87ae33e311SJoseph Chen cat $1 | while read line 88ae33e311SJoseph Chen do 89ae33e311SJoseph Chen file=`echo ${line} | sed -n "/incbin/p" | awk -F '"' '{ printf $2 }' | tr -d ' '` 90ae33e311SJoseph Chen if [ ! -f ${file} ]; then 91ae33e311SJoseph Chen echo "ERROR: No ${file}" 92ae33e311SJoseph Chen exit 1 93ae33e311SJoseph Chen fi 94ae33e311SJoseph Chen done 95ae33e311SJoseph Chen} 96ae33e311SJoseph Chen 97ae33e311SJoseph Chenfunction validate_arg() 98ae33e311SJoseph Chen{ 99ae33e311SJoseph Chen case $1 in 10014aa40ffSJoseph Chen --no-check|--spl-new|--burn-key-hash) 101ae33e311SJoseph Chen shift=1 102ae33e311SJoseph Chen ;; 1034b1cd58cSJoseph Chen --ini-trust|--ini-loader|--rollback-index-boot|--rollback-index-recovery|--rollback-index-uboot|--boot_img|--recovery_img|--version-uboot|--version-boot|--version-recovery) 104ae33e311SJoseph Chen shift=2 105ae33e311SJoseph Chen ;; 106ae33e311SJoseph Chen *) 107ae33e311SJoseph Chen shift=0 108ae33e311SJoseph Chen ;; 109ae33e311SJoseph Chen esac 110ae33e311SJoseph Chen echo ${shift} 111ae33e311SJoseph Chen} 112ae33e311SJoseph Chen 113ae33e311SJoseph Chenfunction fit_process_args() 114ae33e311SJoseph Chen{ 115ae33e311SJoseph Chen if [ $# -eq 0 ]; then 116ae33e311SJoseph Chen help 117ae33e311SJoseph Chen exit 0 118ae33e311SJoseph Chen fi 119ae33e311SJoseph Chen 120ae33e311SJoseph Chen while [ $# -gt 0 ]; do 121ae33e311SJoseph Chen case $1 in 1222d11b868SJoseph Chen --args) 123ae33e311SJoseph Chen ARG_VALIDATE=$2 124ae33e311SJoseph Chen shift 2 125ae33e311SJoseph Chen ;; 1262d11b868SJoseph Chen --boot_img) # boot.img 1272d11b868SJoseph Chen ARG_BOOT_IMG=$2 1282d11b868SJoseph Chen shift 2 129ae33e311SJoseph Chen ;; 1304b1cd58cSJoseph Chen --recovery_img) # recovery.img 1314b1cd58cSJoseph Chen ARG_RECOVERY_IMG=$2 1324b1cd58cSJoseph Chen shift 2 1334b1cd58cSJoseph Chen ;; 1342d11b868SJoseph Chen --boot_img_dir) # boot.img components directory 1352d11b868SJoseph Chen ARG_BOOT_IMG_DIR=$2 1362d11b868SJoseph Chen shift 2 137ae33e311SJoseph Chen ;; 138ae33e311SJoseph Chen --no-check) # No hostcc fit signature check 139ae33e311SJoseph Chen ARG_NO_CHECK="y" 140ae33e311SJoseph Chen shift 1 141ae33e311SJoseph Chen ;; 142ae33e311SJoseph Chen --ini-trust) # Assign trust ini file 143ae33e311SJoseph Chen ARG_INI_TRUST=$2 144ae33e311SJoseph Chen shift 2 145ae33e311SJoseph Chen ;; 146ae33e311SJoseph Chen --ini-loader) # Assign loader ini file 147ae33e311SJoseph Chen ARG_INI_LOADER=$2 148ae33e311SJoseph Chen shift 2 149ae33e311SJoseph Chen ;; 150ae33e311SJoseph Chen --spl-new) # Use current build u-boot-spl.bin to pack loader 151ae33e311SJoseph Chen ARG_SPL_NEW="y" 152ae33e311SJoseph Chen shift 1 153ae33e311SJoseph Chen ;; 154ae33e311SJoseph Chen --rollback-index-boot) 155ae33e311SJoseph Chen ARG_ROLLBACK_IDX_BOOT=$2 156ae33e311SJoseph Chen arg_check_decimal $2 157ae33e311SJoseph Chen shift 2 158ae33e311SJoseph Chen ;; 1594b1cd58cSJoseph Chen --rollback-index-recovery) 1604b1cd58cSJoseph Chen ARG_ROLLBACK_IDX_RECOVERY=$2 1614b1cd58cSJoseph Chen arg_check_decimal $2 1624b1cd58cSJoseph Chen shift 2 1634b1cd58cSJoseph Chen ;; 164ae33e311SJoseph Chen --rollback-index-uboot) 165ae33e311SJoseph Chen ARG_ROLLBACK_IDX_UBOOT=$2 166ae33e311SJoseph Chen arg_check_decimal $2 167ae33e311SJoseph Chen shift 2 168ae33e311SJoseph Chen ;; 169ae33e311SJoseph Chen --version-uboot) 170ae33e311SJoseph Chen ARG_VER_UBOOT=$2 171ae33e311SJoseph Chen arg_check_decimal $2 172ae33e311SJoseph Chen shift 2 173ae33e311SJoseph Chen ;; 174ae33e311SJoseph Chen --version-boot) 175ae33e311SJoseph Chen ARG_VER_BOOT=$2 176ae33e311SJoseph Chen arg_check_decimal $2 177ae33e311SJoseph Chen shift 2 178ae33e311SJoseph Chen ;; 1794b1cd58cSJoseph Chen --version-recovery) 1804b1cd58cSJoseph Chen ARG_VER_RECOVERY=$2 1814b1cd58cSJoseph Chen arg_check_decimal $2 1824b1cd58cSJoseph Chen shift 2 1834b1cd58cSJoseph Chen ;; 18414aa40ffSJoseph Chen --burn-key-hash) 18514aa40ffSJoseph Chen ARG_BURN_KEY_HASH="y" 18614aa40ffSJoseph Chen shift 1 18714aa40ffSJoseph Chen ;; 188ae33e311SJoseph Chen *) 189ae33e311SJoseph Chen help 190ae33e311SJoseph Chen exit 1 191ae33e311SJoseph Chen ;; 192ae33e311SJoseph Chen esac 193ae33e311SJoseph Chen done 1942d11b868SJoseph Chen 1952d11b868SJoseph Chen if grep -q '^CONFIG_FIT_SIGNATURE=y' .config ; then 1962d11b868SJoseph Chen ARG_SIGN="y" 1972d11b868SJoseph Chen fi 198ae33e311SJoseph Chen} 199ae33e311SJoseph Chen 2002d11b868SJoseph Chenfunction fit_raw_compile() 201ae33e311SJoseph Chen{ 202ae33e311SJoseph Chen # Verified-boot: should rebuild code but don't need to repack images. 2032d11b868SJoseph Chen if [ "${ARG_SIGN}" == "y" ]; then 2042d11b868SJoseph Chen ./make.sh --raw-compile 205ae33e311SJoseph Chen fi 2062d11b868SJoseph Chen rm ${FIT_DIR} -rf && mkdir -p ${FIT_DIR} 207ae33e311SJoseph Chen} 208ae33e311SJoseph Chen 209ae33e311SJoseph Chenfunction fit_gen_uboot_itb() 210ae33e311SJoseph Chen{ 211374d2596SJoseph Chen # generate u-boot.its file 212173a9307SJoseph Chen ./make.sh itb ${ARG_INI_TRUST} 213374d2596SJoseph Chen 214374d2596SJoseph Chen # check existance of file in its 215ae33e311SJoseph Chen check_its ${ITS_UBOOT} 216ae33e311SJoseph Chen 2172d11b868SJoseph Chen if [ "${ARG_SIGN}" != "y" ]; then 218*ac05169aSJoseph Chen ${MKIMAGE} -f ${ITS_UBOOT} -E -p ${OFFS_DATA} ${ITB_UBOOT} -v ${ARG_VER_UBOOT} 219ae33e311SJoseph Chen if [ "${ARG_SPL_NEW}" == "y" ]; then 220ae33e311SJoseph Chen ./make.sh --spl ${ARG_INI_LOADER} 221ae33e311SJoseph Chen echo "pack loader with new: spl/u-boot-spl.bin" 222ae33e311SJoseph Chen else 223ae33e311SJoseph Chen ./make.sh loader ${ARG_INI_LOADER} 224ae33e311SJoseph Chen fi 225ae33e311SJoseph Chen else 226ae33e311SJoseph Chen if [ ! -f ${RSA_PRI_KEY} ]; then 227ae33e311SJoseph Chen echo "ERROR: No ${RSA_PRI_KEY} " 228ae33e311SJoseph Chen exit 1 229ae33e311SJoseph Chen elif [ ! -f ${RSA_PUB_KEY} ]; then 230ae33e311SJoseph Chen echo "ERROR: No ${RSA_PUB_KEY} " 231ae33e311SJoseph Chen exit 1 232ae33e311SJoseph Chen fi 233ae33e311SJoseph Chen 234ae33e311SJoseph Chen if ! grep -q '^CONFIG_SPL_FIT_SIGNATURE=y' .config ; then 235ae33e311SJoseph Chen echo "ERROR: CONFIG_SPL_FIT_SIGNATURE is disabled" 236ae33e311SJoseph Chen exit 1 237ae33e311SJoseph Chen fi 238ae33e311SJoseph Chen 23941290645SJoseph Chen # rollback-index 240ae33e311SJoseph Chen if grep -q '^CONFIG_SPL_FIT_ROLLBACK_PROTECT=y' .config ; then 241ae33e311SJoseph Chen ARG_SPL_ROLLBACK_PROTECT="y" 242ae33e311SJoseph Chen if [ -z ${ARG_ROLLBACK_IDX_UBOOT} ]; then 243ae33e311SJoseph Chen echo "ERROR: No arg \"--rollback-index-uboot <n>\"" 244ae33e311SJoseph Chen exit 1 245ae33e311SJoseph Chen fi 246ae33e311SJoseph Chen fi 247ae33e311SJoseph Chen 248ae33e311SJoseph Chen if [ "${ARG_SPL_ROLLBACK_PROTECT}" == "y" ]; then 24941290645SJoseph Chen VERSION=`grep 'rollback-index' ${ITS_UBOOT} | awk -F '=' '{ printf $2 }' | tr -d ' '` 25041290645SJoseph Chen sed -i "s/rollback-index = ${VERSION}/rollback-index = <${ARG_ROLLBACK_IDX_UBOOT}>;/g" ${ITS_UBOOT} 251ae33e311SJoseph Chen fi 252ae33e311SJoseph Chen 253374d2596SJoseph Chen # Generally, boot.img is signed before uboot.img, so the ras key can be found 254374d2596SJoseph Chen # in u-boot.dtb. If not found, let's insert rsa key anyway. 255ae33e311SJoseph Chen if ! fdtget -l ${UBOOT_DTB} /signature >/dev/null 2>&1 ; then 256*ac05169aSJoseph Chen ${MKIMAGE} -f ${ITS_UBOOT} -k ${KEY_DIR} -K ${UBOOT_DTB} -E -p ${OFFS_DATA} -r ${ITB_UBOOT} -v ${ARG_VER_UBOOT} 2572d11b868SJoseph Chen echo "## Adding RSA public key into ${UBOOT_DTB}" 258ae33e311SJoseph Chen fi 259ae33e311SJoseph Chen 260ae33e311SJoseph Chen # Pack 261*ac05169aSJoseph Chen ${MKIMAGE} -f ${ITS_UBOOT} -k ${KEY_DIR} -K ${SPL_DTB} -E -p ${OFFS_DATA} -r ${ITB_UBOOT} -v ${ARG_VER_UBOOT} 262ae33e311SJoseph Chen mv ${SIG_BIN} ${SIG_UBOOT} 263ae33e311SJoseph Chen 2648d853b06SJoseph Chen # burn-key-hash 2658d853b06SJoseph Chen if [ "${ARG_BURN_KEY_HASH}" == "y" ]; then 2668d853b06SJoseph Chen fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} burn-key-hash 0x1 2678d853b06SJoseph Chen fi 268374d2596SJoseph Chen 269ae33e311SJoseph Chen # rollback-index read back check 270ae33e311SJoseph Chen if [ "${ARG_SPL_ROLLBACK_PROTECT}" == "y" ]; then 271ae33e311SJoseph Chen VERSION=`fdtget -ti ${ITB_UBOOT} /configurations/conf rollback-index` 272ae33e311SJoseph Chen if [ "${VERSION}" != "${ARG_ROLLBACK_IDX_UBOOT}" ]; then 273ae33e311SJoseph Chen echo "ERROR: Failed to set rollback-index for ${ITB_UBOOT}"; 274ae33e311SJoseph Chen exit 1 275ae33e311SJoseph Chen fi 276ae33e311SJoseph Chen fi 277ae33e311SJoseph Chen 27814aa40ffSJoseph Chen # burn-key-hash read back check 27914aa40ffSJoseph Chen if [ "${ARG_BURN_KEY_HASH}" == "y" ]; then 2808d853b06SJoseph Chen if [ "`fdtget -ti ${SPL_DTB} ${SIGNATURE_KEY_NODE} burn-key-hash`" != "1" ]; then 2818d853b06SJoseph Chen echo "ERROR: Failed to set burn-key-hash for ${SPL_DTB}"; 28214aa40ffSJoseph Chen exit 1 28314aa40ffSJoseph Chen fi 28414aa40ffSJoseph Chen fi 28514aa40ffSJoseph Chen 286ae33e311SJoseph Chen # host check signature 287ae33e311SJoseph Chen if [ "${ARG_NO_CHECK}" != "y" ]; then 288ae33e311SJoseph Chen if [ "${ARG_SPL_NEW}" == "y" ]; then 289ae33e311SJoseph Chen ${CHECK_SIGN} -f ${ITB_UBOOT} -k ${SPL_DTB} -s 290ae33e311SJoseph Chen else 291ae33e311SJoseph Chen spl_file="../rkbin/"`sed -n "/FlashBoot=/s/FlashBoot=//p" ${ARG_INI_LOADER} |tr -d '\r'` 292ae33e311SJoseph Chen offs=`fdtdump -s ${spl_file} | head -1 | awk -F ":" '{ print $2 }' | sed "s/ found fdt at offset //g" | tr -d " "` 293ae33e311SJoseph Chen if [ -z ${offs} ]; then 294ae33e311SJoseph Chen echo "ERROR: invalid ${spl_file} , unable to find fdt blob" 295ae33e311SJoseph Chen fi 296ae33e311SJoseph Chen offs=`printf %d ${offs} ` # hex -> dec 297ae33e311SJoseph Chen dd if=${spl_file} of=spl/u-boot-spl-old.dtb bs=${offs} skip=1 >/dev/null 2>&1 298ae33e311SJoseph Chen ${CHECK_SIGN} -f ${ITB_UBOOT} -k spl/u-boot-spl-old.dtb -s 299ae33e311SJoseph Chen fi 300ae33e311SJoseph Chen fi 301ae33e311SJoseph Chen 302374d2596SJoseph Chen # minimize u-boot-spl.dtb: clear as 0 but not remove property. 303ae33e311SJoseph Chen if grep -q '^CONFIG_SPL_FIT_HW_CRYPTO=y' .config ; then 304ae33e311SJoseph Chen fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} rsa,r-squared 0x0 305ae33e311SJoseph Chen if grep -q '^CONFIG_SPL_ROCKCHIP_CRYPTO_V1=y' .config ; then 306b800cd5aSJoseph Chen fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} rsa,np 0x0 307134814e5SJoseph Chen fdtput -r ${SPL_DTB} ${SIGNATURE_KEY_NODE}/hash@np 308ae33e311SJoseph Chen else 309b800cd5aSJoseph Chen fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} rsa,c 0x0 310134814e5SJoseph Chen fdtput -r ${SPL_DTB} ${SIGNATURE_KEY_NODE}/hash@c 311ae33e311SJoseph Chen fi 312ae33e311SJoseph Chen else 313b800cd5aSJoseph Chen fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} rsa,c 0x0 314b800cd5aSJoseph Chen fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} rsa,np 0x0 315b800cd5aSJoseph Chen fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} rsa,exponent-BN 0x0 316134814e5SJoseph Chen fdtput -r ${SPL_DTB} ${SIGNATURE_KEY_NODE}/hash@c 317134814e5SJoseph Chen fdtput -r ${SPL_DTB} ${SIGNATURE_KEY_NODE}/hash@np 318ae33e311SJoseph Chen fi 319ae33e311SJoseph Chen 320ae33e311SJoseph Chen # repack spl 321ae33e311SJoseph Chen rm -f *_loader_*.bin 322ae33e311SJoseph Chen if [ "${ARG_SPL_NEW}" == "y" ]; then 323ae33e311SJoseph Chen cat spl/u-boot-spl-nodtb.bin > spl/u-boot-spl.bin 324ae33e311SJoseph Chen if ! grep -q '^CONFIG_SPL_SEPARATE_BSS=y' .config ; then 325ae33e311SJoseph Chen cat spl/u-boot-spl-pad.bin >> spl/u-boot-spl.bin 326ae33e311SJoseph Chen fi 327ae33e311SJoseph Chen cat ${SPL_DTB} >> spl/u-boot-spl.bin 328ae33e311SJoseph Chen 329ae33e311SJoseph Chen ./make.sh --spl ${ARG_INI_LOADER} 3308d853b06SJoseph Chen echo "## pack loader with new: spl/u-boot-spl.bin" 331ae33e311SJoseph Chen else 332ae33e311SJoseph Chen ./make.sh loader ${ARG_INI_LOADER} 333ae33e311SJoseph Chen fi 3348d853b06SJoseph Chen 3358d853b06SJoseph Chen if [ "${ARG_BURN_KEY_HASH}" == "y" ]; then 3368d853b06SJoseph Chen echo "## ${SPL_DTB}: burn-key-hash=1" 3378d853b06SJoseph Chen fi 338ae33e311SJoseph Chen fi 339ae33e311SJoseph Chen 340ae33e311SJoseph Chen rm -f u-boot.itb u-boot.img u-boot-dtb.img 341ae33e311SJoseph Chen mv ${ITS_UBOOT} ${FIT_DIR} 342ae33e311SJoseph Chen} 343ae33e311SJoseph Chen 344ae33e311SJoseph Chenfunction fit_gen_boot_itb() 345ae33e311SJoseph Chen{ 3462d11b868SJoseph Chen if [ ! -z ${ARG_BOOT_IMG} ]; then 3472d11b868SJoseph Chen ${FIT_UNPACK} -f ${ARG_BOOT_IMG} -o ${FIT_DIR}/unpack 348ae33e311SJoseph Chen ITS_BOOT="${FIT_DIR}/unpack/image.its" 349ae33e311SJoseph Chen else 350ae33e311SJoseph Chen compression=`awk -F"," '/COMPRESSION=/ { printf $1 }' ${ARG_INI_TRUST} | tr -d ' ' | cut -c 13-` 351ae33e311SJoseph Chen if [ -z "${compression}" ]; then 352ae33e311SJoseph Chen compression="none" 353ae33e311SJoseph Chen fi 354ae33e311SJoseph Chen ./arch/arm/mach-rockchip/make_fit_boot.sh -c ${compression} > ${ITS_BOOT} 355ae33e311SJoseph Chen check_its ${ITS_BOOT} 356ae33e311SJoseph Chen fi 357ae33e311SJoseph Chen 3582d11b868SJoseph Chen if [ "${ARG_SIGN}" != "y" ]; then 359*ac05169aSJoseph Chen ${MKIMAGE} -f ${ITS_BOOT} -E -p ${OFFS_DATA} ${ITB_BOOT} -v ${ARG_VER_BOOT} 360ae33e311SJoseph Chen else 361ae33e311SJoseph Chen if [ ! -f ${RSA_PRI_KEY} ]; then 362ae33e311SJoseph Chen echo "ERROR: No ${RSA_PRI_KEY}" 363ae33e311SJoseph Chen exit 1 364ae33e311SJoseph Chen elif [ ! -f ${RSA_PUB_KEY} ]; then 365ae33e311SJoseph Chen echo "ERROR: No ${RSA_PUB_KEY}" 366ae33e311SJoseph Chen exit 1 367ae33e311SJoseph Chen fi 368ae33e311SJoseph Chen 369ae33e311SJoseph Chen if ! grep -q '^CONFIG_FIT_SIGNATURE=y' .config ; then 370ae33e311SJoseph Chen echo "ERROR: CONFIG_FIT_SIGNATURE is disabled" 371ae33e311SJoseph Chen exit 1 372ae33e311SJoseph Chen fi 373ae33e311SJoseph Chen 374ae33e311SJoseph Chen if grep -q '^CONFIG_FIT_ROLLBACK_PROTECT=y' .config ; then 375ae33e311SJoseph Chen ARG_ROLLBACK_PROTECT="y" 376ae33e311SJoseph Chen if [ -z ${ARG_ROLLBACK_IDX_BOOT} ]; then 377ae33e311SJoseph Chen echo "ERROR: No arg \"--rollback-index-boot <n>\"" 378ae33e311SJoseph Chen exit 1 379ae33e311SJoseph Chen fi 380ae33e311SJoseph Chen fi 381ae33e311SJoseph Chen 382ae33e311SJoseph Chen # fixup 383ae33e311SJoseph Chen COMMON_FILE=`sed -n "/_common.h/p" ${CHIP_FILE} | awk '{ print $1 }'` 384ae33e311SJoseph Chen FDT_ADDR_R=`awk /fdt_addr_r/ ${COMMON_FILE} | awk -F '=' '{ print $2 }' | awk -F '\\' '{ print $1 }'` 385ae33e311SJoseph Chen KERNEL_ADDR_R=`awk /kernel_addr_r/ ${COMMON_FILE} | awk -F '=' '{ print $2 }' | awk -F '\\' '{ print $1 }'` 386ae33e311SJoseph Chen RMADISK_ADDR_R=`awk /ramdisk_addr_r/ ${COMMON_FILE} | awk -F '=' '{ print $2 }' | awk -F '\\' '{ print $1 }'` 387ae33e311SJoseph Chen sed -i "s/${FDT_ADDR_PLACEHOLDER}/${FDT_ADDR_R}/g" ${ITS_BOOT} 388ae33e311SJoseph Chen sed -i "s/${KERNEL_ADDR_PLACEHOLDER}/${KERNEL_ADDR_R}/g" ${ITS_BOOT} 389ae33e311SJoseph Chen sed -i "s/${RAMDISK_ADDR_PLACEHOLDER}/${RMADISK_ADDR_R}/g" ${ITS_BOOT} 390ae33e311SJoseph Chen if grep -q '^CONFIG_ARM64=y' .config ; then 391ae33e311SJoseph Chen sed -i 's/arch = "arm";/arch = "arm64";/g' ${ITS_BOOT} 392ae33e311SJoseph Chen fi 393ae33e311SJoseph Chen 394ae33e311SJoseph Chen if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then 39541290645SJoseph Chen VERSION=`grep 'rollback-index' ${ITS_BOOT} | awk -F '=' '{ printf $2 }' | tr -d ' '` 39641290645SJoseph Chen sed -i "s/rollback-index = ${VERSION}/rollback-index = <${ARG_ROLLBACK_IDX_BOOT}>;/g" ${ITS_BOOT} 397ae33e311SJoseph Chen fi 398ae33e311SJoseph Chen 399*ac05169aSJoseph Chen ${MKIMAGE} -f ${ITS_BOOT} -k ${KEY_DIR} -K ${UBOOT_DTB} -E -p ${OFFS_DATA} -r ${ITB_BOOT} -v ${ARG_VER_BOOT} 400ae33e311SJoseph Chen mv ${SIG_BIN} ${SIG_BOOT} 401ae33e311SJoseph Chen 402ae33e311SJoseph Chen # rollback-index read back check 403ae33e311SJoseph Chen if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then 404ae33e311SJoseph Chen VERSION=`fdtget -ti ${ITB_BOOT} /configurations/conf rollback-index` 405ae33e311SJoseph Chen if [ "${VERSION}" != "${ARG_ROLLBACK_IDX_BOOT}" ]; then 406ae33e311SJoseph Chen echo "ERROR: Failed to set rollback-index for ${ITB_BOOT}"; 407ae33e311SJoseph Chen exit 1 408ae33e311SJoseph Chen fi 409ae33e311SJoseph Chen fi 410ae33e311SJoseph Chen 411374d2596SJoseph Chen # host check signature 412ae33e311SJoseph Chen if [ "${ARG_NO_CHECK}" != "y" ]; then 413ae33e311SJoseph Chen ${CHECK_SIGN} -f ${ITB_BOOT} -k ${UBOOT_DTB} 414ae33e311SJoseph Chen fi 415ae33e311SJoseph Chen 416374d2596SJoseph Chen # minimize u-boot.dtb: clearn as 0 but not remove property. 417ae33e311SJoseph Chen if grep -q '^CONFIG_FIT_HW_CRYPTO=y' .config ; then 418ae33e311SJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,r-squared 0x0 419ae33e311SJoseph Chen if grep -q '^CONFIG_ROCKCHIP_CRYPTO_V1=y' .config ; then 420b800cd5aSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,np 0x0 421ae33e311SJoseph Chen else 422b800cd5aSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,c 0x0 423ae33e311SJoseph Chen fi 424ae33e311SJoseph Chen else 425b800cd5aSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,c 0x0 426b800cd5aSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,np 0x0 427b800cd5aSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,exponent-BN 0x0 428ae33e311SJoseph Chen fi 429134814e5SJoseph Chen fdtput -r ${UBOOT_DTB} ${SIGNATURE_KEY_NODE}/hash@c 430134814e5SJoseph Chen fdtput -r ${UBOOT_DTB} ${SIGNATURE_KEY_NODE}/hash@np 431ae33e311SJoseph Chen fi 432ae33e311SJoseph Chen 433ae33e311SJoseph Chen mv ${ITS_BOOT} ${FIT_DIR} 434ae33e311SJoseph Chen} 435ae33e311SJoseph Chen 4364b1cd58cSJoseph Chenfunction fit_gen_recovery_itb() 4374b1cd58cSJoseph Chen{ 4384b1cd58cSJoseph Chen if [ ! -z ${ARG_RECOVERY_IMG} ]; then 4394b1cd58cSJoseph Chen ${FIT_UNPACK} -f ${ARG_RECOVERY_IMG} -o ${FIT_DIR}/unpack 4404b1cd58cSJoseph Chen ITS_RECOVERY="${FIT_DIR}/unpack/image.its" 4414b1cd58cSJoseph Chen else 4424b1cd58cSJoseph Chen echo "ERROR: No recovery.img" 4434b1cd58cSJoseph Chen exit 1 4444b1cd58cSJoseph Chen fi 4454b1cd58cSJoseph Chen 4464b1cd58cSJoseph Chen if [ "${ARG_SIGN}" != "y" ]; then 447*ac05169aSJoseph Chen ${MKIMAGE} -f ${ITS_RECOVERY} -E -p ${OFFS_DATA} ${ITB_RECOVERY} -v ${ARG_VER_RECOVERY} 4484b1cd58cSJoseph Chen else 4494b1cd58cSJoseph Chen if [ ! -f ${RSA_PRI_KEY} ]; then 4504b1cd58cSJoseph Chen echo "ERROR: No ${RSA_PRI_KEY}" 4514b1cd58cSJoseph Chen exit 1 4524b1cd58cSJoseph Chen elif [ ! -f ${RSA_PUB_KEY} ]; then 4534b1cd58cSJoseph Chen echo "ERROR: No ${RSA_PUB_KEY}" 4544b1cd58cSJoseph Chen exit 1 4554b1cd58cSJoseph Chen fi 4564b1cd58cSJoseph Chen 4574b1cd58cSJoseph Chen if ! grep -q '^CONFIG_FIT_SIGNATURE=y' .config ; then 4584b1cd58cSJoseph Chen echo "ERROR: CONFIG_FIT_SIGNATURE is disabled" 4594b1cd58cSJoseph Chen exit 1 4604b1cd58cSJoseph Chen fi 4614b1cd58cSJoseph Chen 4624b1cd58cSJoseph Chen if grep -q '^CONFIG_FIT_ROLLBACK_PROTECT=y' .config ; then 4634b1cd58cSJoseph Chen ARG_ROLLBACK_PROTECT="y" 4644b1cd58cSJoseph Chen if [ -z ${ARG_ROLLBACK_IDX_RECOVERY} ]; then 4654b1cd58cSJoseph Chen echo "ERROR: No arg \"--rollback-index-recovery <n>\"" 4664b1cd58cSJoseph Chen exit 1 4674b1cd58cSJoseph Chen fi 4684b1cd58cSJoseph Chen fi 4694b1cd58cSJoseph Chen 4704b1cd58cSJoseph Chen # fixup 4714b1cd58cSJoseph Chen COMMON_FILE=`sed -n "/_common.h/p" ${CHIP_FILE} | awk '{ print $1 }'` 4724b1cd58cSJoseph Chen FDT_ADDR_R=`awk /fdt_addr_r/ ${COMMON_FILE} | awk -F '=' '{ print $2 }' | awk -F '\\' '{ print $1 }'` 4734b1cd58cSJoseph Chen KERNEL_ADDR_R=`awk /kernel_addr_r/ ${COMMON_FILE} | awk -F '=' '{ print $2 }' | awk -F '\\' '{ print $1 }'` 4744b1cd58cSJoseph Chen RMADISK_ADDR_R=`awk /ramdisk_addr_r/ ${COMMON_FILE} | awk -F '=' '{ print $2 }' | awk -F '\\' '{ print $1 }'` 4754b1cd58cSJoseph Chen sed -i "s/${FDT_ADDR_PLACEHOLDER}/${FDT_ADDR_R}/g" ${ITS_RECOVERY} 4764b1cd58cSJoseph Chen sed -i "s/${KERNEL_ADDR_PLACEHOLDER}/${KERNEL_ADDR_R}/g" ${ITS_RECOVERY} 4774b1cd58cSJoseph Chen sed -i "s/${RAMDISK_ADDR_PLACEHOLDER}/${RMADISK_ADDR_R}/g" ${ITS_RECOVERY} 4784b1cd58cSJoseph Chen if grep -q '^CONFIG_ARM64=y' .config ; then 4794b1cd58cSJoseph Chen sed -i 's/arch = "arm";/arch = "arm64";/g' ${ITS_RECOVERY} 4804b1cd58cSJoseph Chen fi 4814b1cd58cSJoseph Chen 4824b1cd58cSJoseph Chen if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then 4834b1cd58cSJoseph Chen VERSION=`grep 'rollback-index' ${ITS_RECOVERY} | awk -F '=' '{ printf $2 }' | tr -d ' '` 4844b1cd58cSJoseph Chen sed -i "s/rollback-index = ${VERSION}/rollback-index = <${ARG_ROLLBACK_IDX_RECOVERY}>;/g" ${ITS_RECOVERY} 4854b1cd58cSJoseph Chen fi 4864b1cd58cSJoseph Chen 487*ac05169aSJoseph Chen ${MKIMAGE} -f ${ITS_RECOVERY} -k ${KEY_DIR} -K ${UBOOT_DTB} -E -p ${OFFS_DATA} -r ${ITB_RECOVERY} -v ${ARG_VER_RECOVERY} 4884b1cd58cSJoseph Chen mv ${SIG_BIN} ${SIG_RECOVERY} 4894b1cd58cSJoseph Chen 4904b1cd58cSJoseph Chen # rollback-index read back check 4914b1cd58cSJoseph Chen if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then 4924b1cd58cSJoseph Chen VERSION=`fdtget -ti ${ITB_RECOVERY} /configurations/conf rollback-index` 4934b1cd58cSJoseph Chen if [ "${VERSION}" != "${ARG_ROLLBACK_IDX_RECOVERY}" ]; then 4944b1cd58cSJoseph Chen echo "ERROR: Failed to set rollback-index for ${ITB_RECOVERY}"; 4954b1cd58cSJoseph Chen exit 1 4964b1cd58cSJoseph Chen fi 4974b1cd58cSJoseph Chen fi 4984b1cd58cSJoseph Chen 4994b1cd58cSJoseph Chen # host check signature 5004b1cd58cSJoseph Chen if [ "${ARG_NO_CHECK}" != "y" ]; then 5014b1cd58cSJoseph Chen ${CHECK_SIGN} -f ${ITB_RECOVERY} -k ${UBOOT_DTB} 5024b1cd58cSJoseph Chen fi 5034b1cd58cSJoseph Chen 5044b1cd58cSJoseph Chen # minimize u-boot.dtb: clearn as 0 but not remove property. 5054b1cd58cSJoseph Chen if grep -q '^CONFIG_FIT_HW_CRYPTO=y' .config ; then 5064b1cd58cSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,r-squared 0x0 5074b1cd58cSJoseph Chen if grep -q '^CONFIG_ROCKCHIP_CRYPTO_V1=y' .config ; then 5084b1cd58cSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,np 0x0 5094b1cd58cSJoseph Chen else 5104b1cd58cSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,c 0x0 5114b1cd58cSJoseph Chen fi 5124b1cd58cSJoseph Chen else 5134b1cd58cSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,c 0x0 5144b1cd58cSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,np 0x0 5154b1cd58cSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,exponent-BN 0x0 5164b1cd58cSJoseph Chen fi 5174b1cd58cSJoseph Chen fdtput -r ${UBOOT_DTB} ${SIGNATURE_KEY_NODE}/hash@c 5184b1cd58cSJoseph Chen fdtput -r ${UBOOT_DTB} ${SIGNATURE_KEY_NODE}/hash@np 5194b1cd58cSJoseph Chen fi 5204b1cd58cSJoseph Chen 5214b1cd58cSJoseph Chen mv ${ITS_RECOVERY} ${FIT_DIR} 5224b1cd58cSJoseph Chen} 5234b1cd58cSJoseph Chen 524ae33e311SJoseph Chenfunction fit_gen_uboot_img() 525ae33e311SJoseph Chen{ 526ae33e311SJoseph Chen ITB=$1 527ae33e311SJoseph Chen 528ae33e311SJoseph Chen if [ -z ${ITB} ]; then 529ae33e311SJoseph Chen ITB=${ITB_UBOOT} 530ae33e311SJoseph Chen fi 531ae33e311SJoseph Chen 532ae33e311SJoseph Chen ITB_MAX_NUM=`sed -n "/SPL_FIT_IMAGE_MULTIPLE/p" .config | awk -F "=" '{ print $2 }'` 533ae33e311SJoseph Chen ITB_MAX_KB=`sed -n "/SPL_FIT_IMAGE_KB/p" .config | awk -F "=" '{ print $2 }'` 534ae33e311SJoseph Chen ITB_MAX_BS=$((ITB_MAX_KB*1024)) 535ae33e311SJoseph Chen ITB_BS=`ls -l ${ITB} | awk '{ print $5 }'` 536ae33e311SJoseph Chen 537ae33e311SJoseph Chen if [ ${ITB_BS} -gt ${ITB_MAX_BS} ]; then 538ae33e311SJoseph Chen echo "ERROR: pack ${IMG_UBOOT} failed! ${ITB} actual: ${ITB_BS} bytes, max limit: ${ITB_MAX_BS} bytes" 539ae33e311SJoseph Chen exit 1 540ae33e311SJoseph Chen fi 541ae33e311SJoseph Chen 542ae33e311SJoseph Chen rm -f ${IMG_UBOOT} 543ae33e311SJoseph Chen for ((i = 0; i < ${ITB_MAX_NUM}; i++)); 544ae33e311SJoseph Chen do 545ae33e311SJoseph Chen cat ${ITB} >> ${IMG_UBOOT} 546ae33e311SJoseph Chen truncate -s %${ITB_MAX_KB}K ${IMG_UBOOT} 547ae33e311SJoseph Chen done 548ae33e311SJoseph Chen} 549ae33e311SJoseph Chen 550ae33e311SJoseph Chenfunction fit_gen_boot_img() 551ae33e311SJoseph Chen{ 552ae33e311SJoseph Chen ITB=$1 553ae33e311SJoseph Chen 554ae33e311SJoseph Chen if [ -z ${ITB} ]; then 555ae33e311SJoseph Chen ITB=${ITB_BOOT} 556ae33e311SJoseph Chen fi 557ae33e311SJoseph Chen 558ae33e311SJoseph Chen if [ "${ITB}" != "${IMG_BOOT}" ]; then 559ae33e311SJoseph Chen cp ${ITB} ${IMG_BOOT} -f 560ae33e311SJoseph Chen fi 561ae33e311SJoseph Chen} 562ae33e311SJoseph Chen 5634b1cd58cSJoseph Chenfunction fit_gen_recovery_img() 5644b1cd58cSJoseph Chen{ 5654b1cd58cSJoseph Chen ITB=$1 5664b1cd58cSJoseph Chen 5674b1cd58cSJoseph Chen if [ -z ${ITB} ]; then 5684b1cd58cSJoseph Chen ITB=${ITB_RECOVERY} 5694b1cd58cSJoseph Chen fi 5704b1cd58cSJoseph Chen 5714b1cd58cSJoseph Chen if [ "${ITB}" != "${IMG_RECOVERY}" ]; then 5724b1cd58cSJoseph Chen cp ${ITB} ${IMG_RECOVERY} -f 5734b1cd58cSJoseph Chen fi 5744b1cd58cSJoseph Chen} 5754b1cd58cSJoseph Chen 576ae33e311SJoseph Chenfunction fit_msg_uboot() 577ae33e311SJoseph Chen{ 5782d11b868SJoseph Chen if [ "${ARG_SIGN}" != "y" ]; then 579ae33e311SJoseph Chen MSG_SIGN="no-signed" 580ae33e311SJoseph Chen else 581ae33e311SJoseph Chen MSG_SIGN="signed" 582ae33e311SJoseph Chen fi 583ae33e311SJoseph Chen 584ae33e311SJoseph Chen VERSION=`fdtget -ti ${ITB_UBOOT} / version` 585ae33e311SJoseph Chen if [ "${VERSION}" != "" ]; then 586ae33e311SJoseph Chen MSG_VER=", version=${VERSION}" 587ae33e311SJoseph Chen fi 588ae33e311SJoseph Chen 589ae33e311SJoseph Chen if [ "${ARG_SPL_ROLLBACK_PROTECT}" == "y" ]; then 590ae33e311SJoseph Chen echo "Image(${MSG_SIGN}${MSG_VER}, rollback-index=${ARG_ROLLBACK_IDX_UBOOT}): ${IMG_UBOOT} (with uboot, trust...) is ready" 591ae33e311SJoseph Chen else 592ae33e311SJoseph Chen echo "Image(${MSG_SIGN}${MSG_VER}): ${IMG_UBOOT} (FIT with uboot, trust...) is ready" 593ae33e311SJoseph Chen fi 594ae33e311SJoseph Chen} 595ae33e311SJoseph Chen 596ae33e311SJoseph Chenfunction fit_msg_boot() 597ae33e311SJoseph Chen{ 5984b1cd58cSJoseph Chen if [ -z "${ARG_BOOT_IMG}" ]; then 5994b1cd58cSJoseph Chen return; 6004b1cd58cSJoseph Chen fi 6014b1cd58cSJoseph Chen 6022d11b868SJoseph Chen if [ "${ARG_SIGN}" != "y" ]; then 603ae33e311SJoseph Chen MSG_SIGN="no-signed" 604ae33e311SJoseph Chen else 605ae33e311SJoseph Chen MSG_SIGN="signed" 606ae33e311SJoseph Chen fi 607ae33e311SJoseph Chen 608ae33e311SJoseph Chen VERSION=`fdtget -ti ${ITB_BOOT} / version` 609ae33e311SJoseph Chen if [ "${VERSION}" != "" ]; then 610ae33e311SJoseph Chen MSG_VER=", version=${VERSION}" 611ae33e311SJoseph Chen fi 612ae33e311SJoseph Chen 613ae33e311SJoseph Chen if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then 614ae33e311SJoseph Chen echo "Image(${MSG_SIGN}${MSG_VER}, rollback-index=${ARG_ROLLBACK_IDX_BOOT}): ${IMG_BOOT} is ready" 615ae33e311SJoseph Chen else 616ae33e311SJoseph Chen echo "Image(${MSG_SIGN}${MSG_VER}): ${IMG_BOOT} (FIT with kernel, fdt, resource...) is ready" 617ae33e311SJoseph Chen fi 618ae33e311SJoseph Chen} 619ae33e311SJoseph Chen 6204b1cd58cSJoseph Chenfunction fit_msg_recovery() 6214b1cd58cSJoseph Chen{ 6224b1cd58cSJoseph Chen if [ -z "${ARG_RECOVERY_IMG}" ]; then 6234b1cd58cSJoseph Chen return; 6244b1cd58cSJoseph Chen fi 6254b1cd58cSJoseph Chen 6264b1cd58cSJoseph Chen if [ "${ARG_SIGN}" != "y" ]; then 6274b1cd58cSJoseph Chen MSG_SIGN="no-signed" 6284b1cd58cSJoseph Chen else 6294b1cd58cSJoseph Chen MSG_SIGN="signed" 6304b1cd58cSJoseph Chen fi 6314b1cd58cSJoseph Chen 6324b1cd58cSJoseph Chen VERSION=`fdtget -ti ${ITB_RECOVERY} / version` 6334b1cd58cSJoseph Chen if [ "${VERSION}" != "" ]; then 6344b1cd58cSJoseph Chen MSG_VER=", version=${VERSION}" 6354b1cd58cSJoseph Chen fi 6364b1cd58cSJoseph Chen 6374b1cd58cSJoseph Chen if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then 6384b1cd58cSJoseph Chen echo "Image(${MSG_SIGN}${MSG_VER}, rollback-index=${ARG_ROLLBACK_IDX_RECOVERY}): ${IMG_RECOVERY} is ready" 6394b1cd58cSJoseph Chen else 6404b1cd58cSJoseph Chen echo "Image(${MSG_SIGN}${MSG_VER}): ${IMG_RECOVERY} (FIT with kernel, fdt, resource...) is ready" 6414b1cd58cSJoseph Chen fi 6424b1cd58cSJoseph Chen} 6434b1cd58cSJoseph Chen 644ae33e311SJoseph Chenfunction fit_msg_loader() 645ae33e311SJoseph Chen{ 646ae33e311SJoseph Chen LOADER=`ls *loader*.bin` 647ae33e311SJoseph Chen echo "Image(no-signed): ${LOADER} (with spl, ddr, usbplug) is ready" 648ae33e311SJoseph Chen} 649ae33e311SJoseph Chen 650ae33e311SJoseph Chenfit_process_args $* 6514b1cd58cSJoseph Chen 652ae33e311SJoseph Chenif [ ! -z "${ARG_VALIDATE}" ]; then 653ae33e311SJoseph Chen validate_arg ${ARG_VALIDATE} 6542d11b868SJoseph Chenelse 6554b1cd58cSJoseph Chen fit_raw_compile 6564b1cd58cSJoseph Chen if [ ! -z "${ARG_RECOVERY_IMG}" ]; then 6574b1cd58cSJoseph Chen fit_gen_recovery_itb 6584b1cd58cSJoseph Chen fit_gen_recovery_img 659ae33e311SJoseph Chen fi 6604b1cd58cSJoseph Chen # "--boot_img_dir" is for U-Boot debug only 6614b1cd58cSJoseph Chen if [ ! -z "${ARG_BOOT_IMG}" -o ! -z "${ARG_BOOT_IMG_DIR}" ]; then 6624b1cd58cSJoseph Chen fit_gen_boot_itb 6634b1cd58cSJoseph Chen fit_gen_boot_img 6644b1cd58cSJoseph Chen fi 6654b1cd58cSJoseph Chen fit_gen_uboot_itb 6664b1cd58cSJoseph Chen fit_gen_uboot_img 667ae33e311SJoseph Chen 6684b1cd58cSJoseph Chen echo 6694b1cd58cSJoseph Chen fit_msg_uboot 6704b1cd58cSJoseph Chen fit_msg_recovery 6714b1cd58cSJoseph Chen fit_msg_boot 6724b1cd58cSJoseph Chen fit_msg_loader 6734b1cd58cSJoseph Chenfi 674