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" 12*4b1cd58cSJoseph ChenIMG_RECOVERY="recovery.img" 13ae33e311SJoseph ChenITB_UBOOT="${FIT_DIR}/uboot.itb" 14ae33e311SJoseph ChenITB_BOOT="${FIT_DIR}/boot.itb" 15*4b1cd58cSJoseph 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" 19*4b1cd58cSJoseph ChenSIG_RECOVERY="${FIT_DIR}/recovery.data2sign" 20ae33e311SJoseph Chen# offs 2133e46123SJoseph ChenOFFS_NS_UBOOT="0xc00" 22ae33e311SJoseph ChenOFFS_S_UBOOT="0xc00" 23ae33e311SJoseph ChenOFFS_NS_BOOT="0x800" 24ae33e311SJoseph ChenOFFS_S_BOOT="0xc00" 25*4b1cd58cSJoseph ChenOFFS_NS_RECOVERY="0x800" 26*4b1cd58cSJoseph ChenOFFS_S_RECOVERY="0xc00" 27ae33e311SJoseph Chen# file 28ae33e311SJoseph ChenCHIP_FILE="arch/arm/lib/.asm-offsets.s.cmd" 29ae33e311SJoseph Chen# placeholder address 30ae33e311SJoseph ChenFDT_ADDR_PLACEHOLDER="0xffffff00" 31ae33e311SJoseph ChenKERNEL_ADDR_PLACEHOLDER="0xffffff01" 32ae33e311SJoseph ChenRAMDISK_ADDR_PLACEHOLDER="0xffffff02" 33ae33e311SJoseph Chen# tools 34ae33e311SJoseph ChenMKIMAGE="./tools/mkimage" 35ae33e311SJoseph ChenFIT_UNPACK="./scripts/fit-unpack.sh" 36ae33e311SJoseph ChenCHECK_SIGN="./tools/fit_check_sign" 37ae33e311SJoseph Chen# key 38ae33e311SJoseph ChenKEY_DIR="keys/" 39ae33e311SJoseph ChenRSA_PRI_KEY="keys/dev.key" 40ae33e311SJoseph ChenRSA_PUB_KEY="keys/dev.crt" 41ae33e311SJoseph ChenSIGNATURE_KEY_NODE="/signature/key-dev" 42ae33e311SJoseph ChenSPL_DTB="spl/u-boot-spl.dtb" 43ae33e311SJoseph ChenUBOOT_DTB="u-boot.dtb" 44ae33e311SJoseph Chen# its 45ae33e311SJoseph ChenITS_UBOOT="u-boot.its" 46ae33e311SJoseph ChenITS_BOOT="boot.its" 47*4b1cd58cSJoseph ChenITS_RECOVERY="recovery.its" 48ae33e311SJoseph ChenARG_VER_UBOOT="0" 49ae33e311SJoseph ChenARG_VER_BOOT="0" 50*4b1cd58cSJoseph ChenARG_VER_RECOVERY="0" 51ae33e311SJoseph Chen 52ae33e311SJoseph Chenfunction help() 53ae33e311SJoseph Chen{ 54ae33e311SJoseph Chen echo 55ae33e311SJoseph Chen echo "usage:" 56ae33e311SJoseph Chen echo " $0 [args]" 57ae33e311SJoseph Chen echo 58ae33e311SJoseph Chen echo "args:" 59*4b1cd58cSJoseph Chen echo " --rollback-index-recovery <decimal integer>" 60ae33e311SJoseph Chen echo " --rollback-index-boot <decimal integer>" 61ae33e311SJoseph Chen echo " --rollback-index-uboot <decimal integer>" 62*4b1cd58cSJoseph Chen echo " --version-recovery <decimal integer>" 63ae33e311SJoseph Chen echo " --version-boot <decimal integer>" 64*4b1cd58cSJoseph Chen echo " --version-uboot <decimal integer>" 65*4b1cd58cSJoseph Chen echo " --boot_img <boot image>" 66*4b1cd58cSJoseph Chen echo " --recovery_img <recovery image>" 67*4b1cd58cSJoseph Chen echo " --args <arg>" 68*4b1cd58cSJoseph Chen echo " --ini-loader <loader ini file>" 69*4b1cd58cSJoseph Chen echo " --ini-trust <trust ini file>" 70ae33e311SJoseph Chen echo " --no-check" 71ae33e311SJoseph Chen echo " --spl-new" 72ae33e311SJoseph Chen echo 73ae33e311SJoseph Chen} 74ae33e311SJoseph Chen 75ae33e311SJoseph Chenfunction arg_check_decimal() 76ae33e311SJoseph Chen{ 77ae33e311SJoseph Chen if [ -z $1 ]; then 78ae33e311SJoseph Chen help 79ae33e311SJoseph Chen exit 1 80ae33e311SJoseph Chen fi 81ae33e311SJoseph Chen 82ae33e311SJoseph Chen decimal=`echo $1 |sed 's/[0-9]//g'` 83ae33e311SJoseph Chen if [ ! -z ${decimal} ]; then 84ae33e311SJoseph Chen echo "ERROR: $1 is not decimal integer" 85ae33e311SJoseph Chen help 86ae33e311SJoseph Chen exit 1 87ae33e311SJoseph Chen fi 88ae33e311SJoseph Chen} 89ae33e311SJoseph Chen 90ae33e311SJoseph Chenfunction check_its() 91ae33e311SJoseph Chen{ 92ae33e311SJoseph Chen cat $1 | while read line 93ae33e311SJoseph Chen do 94ae33e311SJoseph Chen file=`echo ${line} | sed -n "/incbin/p" | awk -F '"' '{ printf $2 }' | tr -d ' '` 95ae33e311SJoseph Chen if [ ! -f ${file} ]; then 96ae33e311SJoseph Chen echo "ERROR: No ${file}" 97ae33e311SJoseph Chen exit 1 98ae33e311SJoseph Chen fi 99ae33e311SJoseph Chen done 100ae33e311SJoseph Chen} 101ae33e311SJoseph Chen 102ae33e311SJoseph Chenfunction validate_arg() 103ae33e311SJoseph Chen{ 104ae33e311SJoseph Chen case $1 in 10514aa40ffSJoseph Chen --no-check|--spl-new|--burn-key-hash) 106ae33e311SJoseph Chen shift=1 107ae33e311SJoseph Chen ;; 108*4b1cd58cSJoseph Chen --ini-trust|--ini-loader|--rollback-index-boot|--rollback-index-recovery|--rollback-index-uboot|--boot_img|--recovery_img|--version-uboot|--version-boot|--version-recovery) 109ae33e311SJoseph Chen shift=2 110ae33e311SJoseph Chen ;; 111ae33e311SJoseph Chen *) 112ae33e311SJoseph Chen shift=0 113ae33e311SJoseph Chen ;; 114ae33e311SJoseph Chen esac 115ae33e311SJoseph Chen echo ${shift} 116ae33e311SJoseph Chen} 117ae33e311SJoseph Chen 118ae33e311SJoseph Chenfunction fit_process_args() 119ae33e311SJoseph Chen{ 120ae33e311SJoseph Chen if [ $# -eq 0 ]; then 121ae33e311SJoseph Chen help 122ae33e311SJoseph Chen exit 0 123ae33e311SJoseph Chen fi 124ae33e311SJoseph Chen 125ae33e311SJoseph Chen while [ $# -gt 0 ]; do 126ae33e311SJoseph Chen case $1 in 1272d11b868SJoseph Chen --args) 128ae33e311SJoseph Chen ARG_VALIDATE=$2 129ae33e311SJoseph Chen shift 2 130ae33e311SJoseph Chen ;; 1312d11b868SJoseph Chen --boot_img) # boot.img 1322d11b868SJoseph Chen ARG_BOOT_IMG=$2 1332d11b868SJoseph Chen shift 2 134ae33e311SJoseph Chen ;; 135*4b1cd58cSJoseph Chen --recovery_img) # recovery.img 136*4b1cd58cSJoseph Chen ARG_RECOVERY_IMG=$2 137*4b1cd58cSJoseph Chen shift 2 138*4b1cd58cSJoseph Chen ;; 1392d11b868SJoseph Chen --boot_img_dir) # boot.img components directory 1402d11b868SJoseph Chen ARG_BOOT_IMG_DIR=$2 1412d11b868SJoseph Chen shift 2 142ae33e311SJoseph Chen ;; 143ae33e311SJoseph Chen --no-check) # No hostcc fit signature check 144ae33e311SJoseph Chen ARG_NO_CHECK="y" 145ae33e311SJoseph Chen shift 1 146ae33e311SJoseph Chen ;; 147ae33e311SJoseph Chen --ini-trust) # Assign trust ini file 148ae33e311SJoseph Chen ARG_INI_TRUST=$2 149ae33e311SJoseph Chen shift 2 150ae33e311SJoseph Chen ;; 151ae33e311SJoseph Chen --ini-loader) # Assign loader ini file 152ae33e311SJoseph Chen ARG_INI_LOADER=$2 153ae33e311SJoseph Chen shift 2 154ae33e311SJoseph Chen ;; 155ae33e311SJoseph Chen --spl-new) # Use current build u-boot-spl.bin to pack loader 156ae33e311SJoseph Chen ARG_SPL_NEW="y" 157ae33e311SJoseph Chen shift 1 158ae33e311SJoseph Chen ;; 159ae33e311SJoseph Chen --rollback-index-boot) 160ae33e311SJoseph Chen ARG_ROLLBACK_IDX_BOOT=$2 161ae33e311SJoseph Chen arg_check_decimal $2 162ae33e311SJoseph Chen shift 2 163ae33e311SJoseph Chen ;; 164*4b1cd58cSJoseph Chen --rollback-index-recovery) 165*4b1cd58cSJoseph Chen ARG_ROLLBACK_IDX_RECOVERY=$2 166*4b1cd58cSJoseph Chen arg_check_decimal $2 167*4b1cd58cSJoseph Chen shift 2 168*4b1cd58cSJoseph Chen ;; 169ae33e311SJoseph Chen --rollback-index-uboot) 170ae33e311SJoseph Chen ARG_ROLLBACK_IDX_UBOOT=$2 171ae33e311SJoseph Chen arg_check_decimal $2 172ae33e311SJoseph Chen shift 2 173ae33e311SJoseph Chen ;; 174ae33e311SJoseph Chen --version-uboot) 175ae33e311SJoseph Chen ARG_VER_UBOOT=$2 176ae33e311SJoseph Chen arg_check_decimal $2 177ae33e311SJoseph Chen shift 2 178ae33e311SJoseph Chen ;; 179ae33e311SJoseph Chen --version-boot) 180ae33e311SJoseph Chen ARG_VER_BOOT=$2 181ae33e311SJoseph Chen arg_check_decimal $2 182ae33e311SJoseph Chen shift 2 183ae33e311SJoseph Chen ;; 184*4b1cd58cSJoseph Chen --version-recovery) 185*4b1cd58cSJoseph Chen ARG_VER_RECOVERY=$2 186*4b1cd58cSJoseph Chen arg_check_decimal $2 187*4b1cd58cSJoseph Chen shift 2 188*4b1cd58cSJoseph Chen ;; 18914aa40ffSJoseph Chen --burn-key-hash) 19014aa40ffSJoseph Chen ARG_BURN_KEY_HASH="y" 19114aa40ffSJoseph Chen shift 1 19214aa40ffSJoseph Chen ;; 193ae33e311SJoseph Chen *) 194ae33e311SJoseph Chen help 195ae33e311SJoseph Chen exit 1 196ae33e311SJoseph Chen ;; 197ae33e311SJoseph Chen esac 198ae33e311SJoseph Chen done 1992d11b868SJoseph Chen 2002d11b868SJoseph Chen if grep -q '^CONFIG_FIT_SIGNATURE=y' .config ; then 2012d11b868SJoseph Chen ARG_SIGN="y" 2022d11b868SJoseph Chen fi 203ae33e311SJoseph Chen} 204ae33e311SJoseph Chen 2052d11b868SJoseph Chenfunction fit_raw_compile() 206ae33e311SJoseph Chen{ 207ae33e311SJoseph Chen # Verified-boot: should rebuild code but don't need to repack images. 2082d11b868SJoseph Chen if [ "${ARG_SIGN}" == "y" ]; then 2092d11b868SJoseph Chen ./make.sh --raw-compile 210ae33e311SJoseph Chen fi 2112d11b868SJoseph Chen rm ${FIT_DIR} -rf && mkdir -p ${FIT_DIR} 212ae33e311SJoseph Chen} 213ae33e311SJoseph Chen 214ae33e311SJoseph Chenfunction fit_gen_uboot_itb() 215ae33e311SJoseph Chen{ 216374d2596SJoseph Chen # generate u-boot.its file 217173a9307SJoseph Chen ./make.sh itb ${ARG_INI_TRUST} 218374d2596SJoseph Chen 219374d2596SJoseph Chen # check existance of file in its 220ae33e311SJoseph Chen check_its ${ITS_UBOOT} 221ae33e311SJoseph Chen 2222d11b868SJoseph Chen if [ "${ARG_SIGN}" != "y" ]; then 223ae33e311SJoseph Chen ${MKIMAGE} -f ${ITS_UBOOT} -E -p ${OFFS_NS_UBOOT} ${ITB_UBOOT} -v ${ARG_VER_UBOOT} 224ae33e311SJoseph Chen if [ "${ARG_SPL_NEW}" == "y" ]; then 225ae33e311SJoseph Chen ./make.sh --spl ${ARG_INI_LOADER} 226ae33e311SJoseph Chen echo "pack loader with new: spl/u-boot-spl.bin" 227ae33e311SJoseph Chen else 228ae33e311SJoseph Chen ./make.sh loader ${ARG_INI_LOADER} 229ae33e311SJoseph Chen fi 230ae33e311SJoseph Chen else 231ae33e311SJoseph Chen if [ ! -f ${RSA_PRI_KEY} ]; then 232ae33e311SJoseph Chen echo "ERROR: No ${RSA_PRI_KEY} " 233ae33e311SJoseph Chen exit 1 234ae33e311SJoseph Chen elif [ ! -f ${RSA_PUB_KEY} ]; then 235ae33e311SJoseph Chen echo "ERROR: No ${RSA_PUB_KEY} " 236ae33e311SJoseph Chen exit 1 237ae33e311SJoseph Chen fi 238ae33e311SJoseph Chen 239ae33e311SJoseph Chen if ! grep -q '^CONFIG_SPL_FIT_SIGNATURE=y' .config ; then 240ae33e311SJoseph Chen echo "ERROR: CONFIG_SPL_FIT_SIGNATURE is disabled" 241ae33e311SJoseph Chen exit 1 242ae33e311SJoseph Chen fi 243ae33e311SJoseph Chen 24441290645SJoseph Chen # rollback-index 245ae33e311SJoseph Chen if grep -q '^CONFIG_SPL_FIT_ROLLBACK_PROTECT=y' .config ; then 246ae33e311SJoseph Chen ARG_SPL_ROLLBACK_PROTECT="y" 247ae33e311SJoseph Chen if [ -z ${ARG_ROLLBACK_IDX_UBOOT} ]; then 248ae33e311SJoseph Chen echo "ERROR: No arg \"--rollback-index-uboot <n>\"" 249ae33e311SJoseph Chen exit 1 250ae33e311SJoseph Chen fi 251ae33e311SJoseph Chen fi 252ae33e311SJoseph Chen 253ae33e311SJoseph Chen if [ "${ARG_SPL_ROLLBACK_PROTECT}" == "y" ]; then 25441290645SJoseph Chen VERSION=`grep 'rollback-index' ${ITS_UBOOT} | awk -F '=' '{ printf $2 }' | tr -d ' '` 25541290645SJoseph Chen sed -i "s/rollback-index = ${VERSION}/rollback-index = <${ARG_ROLLBACK_IDX_UBOOT}>;/g" ${ITS_UBOOT} 256ae33e311SJoseph Chen fi 257ae33e311SJoseph Chen 258374d2596SJoseph Chen # Generally, boot.img is signed before uboot.img, so the ras key can be found 259374d2596SJoseph Chen # in u-boot.dtb. If not found, let's insert rsa key anyway. 260ae33e311SJoseph Chen if ! fdtget -l ${UBOOT_DTB} /signature >/dev/null 2>&1 ; then 261ae33e311SJoseph Chen ${MKIMAGE} -f ${ITS_UBOOT} -k ${KEY_DIR} -K ${UBOOT_DTB} -E -p ${OFFS_S_UBOOT} -r ${ITB_UBOOT} -v ${ARG_VER_UBOOT} 2622d11b868SJoseph Chen echo "## Adding RSA public key into ${UBOOT_DTB}" 263ae33e311SJoseph Chen fi 264ae33e311SJoseph Chen 265ae33e311SJoseph Chen # Pack 266ae33e311SJoseph Chen ${MKIMAGE} -f ${ITS_UBOOT} -k ${KEY_DIR} -K ${SPL_DTB} -E -p ${OFFS_S_UBOOT} -r ${ITB_UBOOT} -v ${ARG_VER_UBOOT} 267ae33e311SJoseph Chen mv ${SIG_BIN} ${SIG_UBOOT} 268ae33e311SJoseph Chen 2698d853b06SJoseph Chen # burn-key-hash 2708d853b06SJoseph Chen if [ "${ARG_BURN_KEY_HASH}" == "y" ]; then 2718d853b06SJoseph Chen fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} burn-key-hash 0x1 2728d853b06SJoseph Chen fi 273374d2596SJoseph Chen 274ae33e311SJoseph Chen # rollback-index read back check 275ae33e311SJoseph Chen if [ "${ARG_SPL_ROLLBACK_PROTECT}" == "y" ]; then 276ae33e311SJoseph Chen VERSION=`fdtget -ti ${ITB_UBOOT} /configurations/conf rollback-index` 277ae33e311SJoseph Chen if [ "${VERSION}" != "${ARG_ROLLBACK_IDX_UBOOT}" ]; then 278ae33e311SJoseph Chen echo "ERROR: Failed to set rollback-index for ${ITB_UBOOT}"; 279ae33e311SJoseph Chen exit 1 280ae33e311SJoseph Chen fi 281ae33e311SJoseph Chen fi 282ae33e311SJoseph Chen 28314aa40ffSJoseph Chen # burn-key-hash read back check 28414aa40ffSJoseph Chen if [ "${ARG_BURN_KEY_HASH}" == "y" ]; then 2858d853b06SJoseph Chen if [ "`fdtget -ti ${SPL_DTB} ${SIGNATURE_KEY_NODE} burn-key-hash`" != "1" ]; then 2868d853b06SJoseph Chen echo "ERROR: Failed to set burn-key-hash for ${SPL_DTB}"; 28714aa40ffSJoseph Chen exit 1 28814aa40ffSJoseph Chen fi 28914aa40ffSJoseph Chen fi 29014aa40ffSJoseph Chen 291ae33e311SJoseph Chen # host check signature 292ae33e311SJoseph Chen if [ "${ARG_NO_CHECK}" != "y" ]; then 293ae33e311SJoseph Chen if [ "${ARG_SPL_NEW}" == "y" ]; then 294ae33e311SJoseph Chen ${CHECK_SIGN} -f ${ITB_UBOOT} -k ${SPL_DTB} -s 295ae33e311SJoseph Chen else 296ae33e311SJoseph Chen spl_file="../rkbin/"`sed -n "/FlashBoot=/s/FlashBoot=//p" ${ARG_INI_LOADER} |tr -d '\r'` 297ae33e311SJoseph Chen offs=`fdtdump -s ${spl_file} | head -1 | awk -F ":" '{ print $2 }' | sed "s/ found fdt at offset //g" | tr -d " "` 298ae33e311SJoseph Chen if [ -z ${offs} ]; then 299ae33e311SJoseph Chen echo "ERROR: invalid ${spl_file} , unable to find fdt blob" 300ae33e311SJoseph Chen fi 301ae33e311SJoseph Chen offs=`printf %d ${offs} ` # hex -> dec 302ae33e311SJoseph Chen dd if=${spl_file} of=spl/u-boot-spl-old.dtb bs=${offs} skip=1 >/dev/null 2>&1 303ae33e311SJoseph Chen ${CHECK_SIGN} -f ${ITB_UBOOT} -k spl/u-boot-spl-old.dtb -s 304ae33e311SJoseph Chen fi 305ae33e311SJoseph Chen fi 306ae33e311SJoseph Chen 307374d2596SJoseph Chen # minimize u-boot-spl.dtb: clear as 0 but not remove property. 308ae33e311SJoseph Chen if grep -q '^CONFIG_SPL_FIT_HW_CRYPTO=y' .config ; then 309ae33e311SJoseph Chen fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} rsa,r-squared 0x0 310ae33e311SJoseph Chen if grep -q '^CONFIG_SPL_ROCKCHIP_CRYPTO_V1=y' .config ; then 311b800cd5aSJoseph Chen fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} rsa,np 0x0 312134814e5SJoseph Chen fdtput -r ${SPL_DTB} ${SIGNATURE_KEY_NODE}/hash@np 313ae33e311SJoseph Chen else 314b800cd5aSJoseph Chen fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} rsa,c 0x0 315134814e5SJoseph Chen fdtput -r ${SPL_DTB} ${SIGNATURE_KEY_NODE}/hash@c 316ae33e311SJoseph Chen fi 317ae33e311SJoseph Chen else 318b800cd5aSJoseph Chen fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} rsa,c 0x0 319b800cd5aSJoseph Chen fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} rsa,np 0x0 320b800cd5aSJoseph Chen fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} rsa,exponent-BN 0x0 321134814e5SJoseph Chen fdtput -r ${SPL_DTB} ${SIGNATURE_KEY_NODE}/hash@c 322134814e5SJoseph Chen fdtput -r ${SPL_DTB} ${SIGNATURE_KEY_NODE}/hash@np 323ae33e311SJoseph Chen fi 324ae33e311SJoseph Chen 325ae33e311SJoseph Chen # repack spl 326ae33e311SJoseph Chen rm -f *_loader_*.bin 327ae33e311SJoseph Chen if [ "${ARG_SPL_NEW}" == "y" ]; then 328ae33e311SJoseph Chen cat spl/u-boot-spl-nodtb.bin > spl/u-boot-spl.bin 329ae33e311SJoseph Chen if ! grep -q '^CONFIG_SPL_SEPARATE_BSS=y' .config ; then 330ae33e311SJoseph Chen cat spl/u-boot-spl-pad.bin >> spl/u-boot-spl.bin 331ae33e311SJoseph Chen fi 332ae33e311SJoseph Chen cat ${SPL_DTB} >> spl/u-boot-spl.bin 333ae33e311SJoseph Chen 334ae33e311SJoseph Chen ./make.sh --spl ${ARG_INI_LOADER} 3358d853b06SJoseph Chen echo "## pack loader with new: spl/u-boot-spl.bin" 336ae33e311SJoseph Chen else 337ae33e311SJoseph Chen ./make.sh loader ${ARG_INI_LOADER} 338ae33e311SJoseph Chen fi 3398d853b06SJoseph Chen 3408d853b06SJoseph Chen if [ "${ARG_BURN_KEY_HASH}" == "y" ]; then 3418d853b06SJoseph Chen echo "## ${SPL_DTB}: burn-key-hash=1" 3428d853b06SJoseph Chen fi 343ae33e311SJoseph Chen fi 344ae33e311SJoseph Chen 345ae33e311SJoseph Chen rm -f u-boot.itb u-boot.img u-boot-dtb.img 346ae33e311SJoseph Chen mv ${ITS_UBOOT} ${FIT_DIR} 347ae33e311SJoseph Chen} 348ae33e311SJoseph Chen 349ae33e311SJoseph Chenfunction fit_gen_boot_itb() 350ae33e311SJoseph Chen{ 3512d11b868SJoseph Chen if [ ! -z ${ARG_BOOT_IMG} ]; then 3522d11b868SJoseph Chen ${FIT_UNPACK} -f ${ARG_BOOT_IMG} -o ${FIT_DIR}/unpack 353ae33e311SJoseph Chen ITS_BOOT="${FIT_DIR}/unpack/image.its" 354ae33e311SJoseph Chen else 355ae33e311SJoseph Chen compression=`awk -F"," '/COMPRESSION=/ { printf $1 }' ${ARG_INI_TRUST} | tr -d ' ' | cut -c 13-` 356ae33e311SJoseph Chen if [ -z "${compression}" ]; then 357ae33e311SJoseph Chen compression="none" 358ae33e311SJoseph Chen fi 359ae33e311SJoseph Chen ./arch/arm/mach-rockchip/make_fit_boot.sh -c ${compression} > ${ITS_BOOT} 360ae33e311SJoseph Chen check_its ${ITS_BOOT} 361ae33e311SJoseph Chen fi 362ae33e311SJoseph Chen 3632d11b868SJoseph Chen if [ "${ARG_SIGN}" != "y" ]; then 364ae33e311SJoseph Chen ${MKIMAGE} -f ${ITS_BOOT} -E -p ${OFFS_NS_BOOT} ${ITB_BOOT} -v ${ARG_VER_BOOT} 365ae33e311SJoseph Chen else 366ae33e311SJoseph Chen if [ ! -f ${RSA_PRI_KEY} ]; then 367ae33e311SJoseph Chen echo "ERROR: No ${RSA_PRI_KEY}" 368ae33e311SJoseph Chen exit 1 369ae33e311SJoseph Chen elif [ ! -f ${RSA_PUB_KEY} ]; then 370ae33e311SJoseph Chen echo "ERROR: No ${RSA_PUB_KEY}" 371ae33e311SJoseph Chen exit 1 372ae33e311SJoseph Chen fi 373ae33e311SJoseph Chen 374ae33e311SJoseph Chen if ! grep -q '^CONFIG_FIT_SIGNATURE=y' .config ; then 375ae33e311SJoseph Chen echo "ERROR: CONFIG_FIT_SIGNATURE is disabled" 376ae33e311SJoseph Chen exit 1 377ae33e311SJoseph Chen fi 378ae33e311SJoseph Chen 379ae33e311SJoseph Chen if grep -q '^CONFIG_FIT_ROLLBACK_PROTECT=y' .config ; then 380ae33e311SJoseph Chen ARG_ROLLBACK_PROTECT="y" 381ae33e311SJoseph Chen if [ -z ${ARG_ROLLBACK_IDX_BOOT} ]; then 382ae33e311SJoseph Chen echo "ERROR: No arg \"--rollback-index-boot <n>\"" 383ae33e311SJoseph Chen exit 1 384ae33e311SJoseph Chen fi 385ae33e311SJoseph Chen fi 386ae33e311SJoseph Chen 387ae33e311SJoseph Chen # fixup 388ae33e311SJoseph Chen COMMON_FILE=`sed -n "/_common.h/p" ${CHIP_FILE} | awk '{ print $1 }'` 389ae33e311SJoseph Chen FDT_ADDR_R=`awk /fdt_addr_r/ ${COMMON_FILE} | awk -F '=' '{ print $2 }' | awk -F '\\' '{ print $1 }'` 390ae33e311SJoseph Chen KERNEL_ADDR_R=`awk /kernel_addr_r/ ${COMMON_FILE} | awk -F '=' '{ print $2 }' | awk -F '\\' '{ print $1 }'` 391ae33e311SJoseph Chen RMADISK_ADDR_R=`awk /ramdisk_addr_r/ ${COMMON_FILE} | awk -F '=' '{ print $2 }' | awk -F '\\' '{ print $1 }'` 392ae33e311SJoseph Chen sed -i "s/${FDT_ADDR_PLACEHOLDER}/${FDT_ADDR_R}/g" ${ITS_BOOT} 393ae33e311SJoseph Chen sed -i "s/${KERNEL_ADDR_PLACEHOLDER}/${KERNEL_ADDR_R}/g" ${ITS_BOOT} 394ae33e311SJoseph Chen sed -i "s/${RAMDISK_ADDR_PLACEHOLDER}/${RMADISK_ADDR_R}/g" ${ITS_BOOT} 395ae33e311SJoseph Chen if grep -q '^CONFIG_ARM64=y' .config ; then 396ae33e311SJoseph Chen sed -i 's/arch = "arm";/arch = "arm64";/g' ${ITS_BOOT} 397ae33e311SJoseph Chen fi 398ae33e311SJoseph Chen 399ae33e311SJoseph Chen if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then 40041290645SJoseph Chen VERSION=`grep 'rollback-index' ${ITS_BOOT} | awk -F '=' '{ printf $2 }' | tr -d ' '` 40141290645SJoseph Chen sed -i "s/rollback-index = ${VERSION}/rollback-index = <${ARG_ROLLBACK_IDX_BOOT}>;/g" ${ITS_BOOT} 402ae33e311SJoseph Chen fi 403ae33e311SJoseph Chen 404ae33e311SJoseph Chen ${MKIMAGE} -f ${ITS_BOOT} -k ${KEY_DIR} -K ${UBOOT_DTB} -E -p ${OFFS_S_BOOT} -r ${ITB_BOOT} -v ${ARG_VER_BOOT} 405ae33e311SJoseph Chen mv ${SIG_BIN} ${SIG_BOOT} 406ae33e311SJoseph Chen 407ae33e311SJoseph Chen # rollback-index read back check 408ae33e311SJoseph Chen if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then 409ae33e311SJoseph Chen VERSION=`fdtget -ti ${ITB_BOOT} /configurations/conf rollback-index` 410ae33e311SJoseph Chen if [ "${VERSION}" != "${ARG_ROLLBACK_IDX_BOOT}" ]; then 411ae33e311SJoseph Chen echo "ERROR: Failed to set rollback-index for ${ITB_BOOT}"; 412ae33e311SJoseph Chen exit 1 413ae33e311SJoseph Chen fi 414ae33e311SJoseph Chen fi 415ae33e311SJoseph Chen 416374d2596SJoseph Chen # host check signature 417ae33e311SJoseph Chen if [ "${ARG_NO_CHECK}" != "y" ]; then 418ae33e311SJoseph Chen ${CHECK_SIGN} -f ${ITB_BOOT} -k ${UBOOT_DTB} 419ae33e311SJoseph Chen fi 420ae33e311SJoseph Chen 421374d2596SJoseph Chen # minimize u-boot.dtb: clearn as 0 but not remove property. 422ae33e311SJoseph Chen if grep -q '^CONFIG_FIT_HW_CRYPTO=y' .config ; then 423ae33e311SJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,r-squared 0x0 424ae33e311SJoseph Chen if grep -q '^CONFIG_ROCKCHIP_CRYPTO_V1=y' .config ; then 425b800cd5aSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,np 0x0 426ae33e311SJoseph Chen else 427b800cd5aSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,c 0x0 428ae33e311SJoseph Chen fi 429ae33e311SJoseph Chen else 430b800cd5aSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,c 0x0 431b800cd5aSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,np 0x0 432b800cd5aSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,exponent-BN 0x0 433ae33e311SJoseph Chen fi 434134814e5SJoseph Chen fdtput -r ${UBOOT_DTB} ${SIGNATURE_KEY_NODE}/hash@c 435134814e5SJoseph Chen fdtput -r ${UBOOT_DTB} ${SIGNATURE_KEY_NODE}/hash@np 436ae33e311SJoseph Chen fi 437ae33e311SJoseph Chen 438ae33e311SJoseph Chen mv ${ITS_BOOT} ${FIT_DIR} 439ae33e311SJoseph Chen} 440ae33e311SJoseph Chen 441*4b1cd58cSJoseph Chenfunction fit_gen_recovery_itb() 442*4b1cd58cSJoseph Chen{ 443*4b1cd58cSJoseph Chen if [ ! -z ${ARG_RECOVERY_IMG} ]; then 444*4b1cd58cSJoseph Chen ${FIT_UNPACK} -f ${ARG_RECOVERY_IMG} -o ${FIT_DIR}/unpack 445*4b1cd58cSJoseph Chen ITS_RECOVERY="${FIT_DIR}/unpack/image.its" 446*4b1cd58cSJoseph Chen else 447*4b1cd58cSJoseph Chen echo "ERROR: No recovery.img" 448*4b1cd58cSJoseph Chen exit 1 449*4b1cd58cSJoseph Chen fi 450*4b1cd58cSJoseph Chen 451*4b1cd58cSJoseph Chen if [ "${ARG_SIGN}" != "y" ]; then 452*4b1cd58cSJoseph Chen ${MKIMAGE} -f ${ITS_RECOVERY} -E -p ${OFFS_NS_RECOVERY} ${ITB_RECOVERY} -v ${ARG_VER_RECOVERY} 453*4b1cd58cSJoseph Chen else 454*4b1cd58cSJoseph Chen if [ ! -f ${RSA_PRI_KEY} ]; then 455*4b1cd58cSJoseph Chen echo "ERROR: No ${RSA_PRI_KEY}" 456*4b1cd58cSJoseph Chen exit 1 457*4b1cd58cSJoseph Chen elif [ ! -f ${RSA_PUB_KEY} ]; then 458*4b1cd58cSJoseph Chen echo "ERROR: No ${RSA_PUB_KEY}" 459*4b1cd58cSJoseph Chen exit 1 460*4b1cd58cSJoseph Chen fi 461*4b1cd58cSJoseph Chen 462*4b1cd58cSJoseph Chen if ! grep -q '^CONFIG_FIT_SIGNATURE=y' .config ; then 463*4b1cd58cSJoseph Chen echo "ERROR: CONFIG_FIT_SIGNATURE is disabled" 464*4b1cd58cSJoseph Chen exit 1 465*4b1cd58cSJoseph Chen fi 466*4b1cd58cSJoseph Chen 467*4b1cd58cSJoseph Chen if grep -q '^CONFIG_FIT_ROLLBACK_PROTECT=y' .config ; then 468*4b1cd58cSJoseph Chen ARG_ROLLBACK_PROTECT="y" 469*4b1cd58cSJoseph Chen if [ -z ${ARG_ROLLBACK_IDX_RECOVERY} ]; then 470*4b1cd58cSJoseph Chen echo "ERROR: No arg \"--rollback-index-recovery <n>\"" 471*4b1cd58cSJoseph Chen exit 1 472*4b1cd58cSJoseph Chen fi 473*4b1cd58cSJoseph Chen fi 474*4b1cd58cSJoseph Chen 475*4b1cd58cSJoseph Chen # fixup 476*4b1cd58cSJoseph Chen COMMON_FILE=`sed -n "/_common.h/p" ${CHIP_FILE} | awk '{ print $1 }'` 477*4b1cd58cSJoseph Chen FDT_ADDR_R=`awk /fdt_addr_r/ ${COMMON_FILE} | awk -F '=' '{ print $2 }' | awk -F '\\' '{ print $1 }'` 478*4b1cd58cSJoseph Chen KERNEL_ADDR_R=`awk /kernel_addr_r/ ${COMMON_FILE} | awk -F '=' '{ print $2 }' | awk -F '\\' '{ print $1 }'` 479*4b1cd58cSJoseph Chen RMADISK_ADDR_R=`awk /ramdisk_addr_r/ ${COMMON_FILE} | awk -F '=' '{ print $2 }' | awk -F '\\' '{ print $1 }'` 480*4b1cd58cSJoseph Chen sed -i "s/${FDT_ADDR_PLACEHOLDER}/${FDT_ADDR_R}/g" ${ITS_RECOVERY} 481*4b1cd58cSJoseph Chen sed -i "s/${KERNEL_ADDR_PLACEHOLDER}/${KERNEL_ADDR_R}/g" ${ITS_RECOVERY} 482*4b1cd58cSJoseph Chen sed -i "s/${RAMDISK_ADDR_PLACEHOLDER}/${RMADISK_ADDR_R}/g" ${ITS_RECOVERY} 483*4b1cd58cSJoseph Chen if grep -q '^CONFIG_ARM64=y' .config ; then 484*4b1cd58cSJoseph Chen sed -i 's/arch = "arm";/arch = "arm64";/g' ${ITS_RECOVERY} 485*4b1cd58cSJoseph Chen fi 486*4b1cd58cSJoseph Chen 487*4b1cd58cSJoseph Chen if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then 488*4b1cd58cSJoseph Chen VERSION=`grep 'rollback-index' ${ITS_RECOVERY} | awk -F '=' '{ printf $2 }' | tr -d ' '` 489*4b1cd58cSJoseph Chen sed -i "s/rollback-index = ${VERSION}/rollback-index = <${ARG_ROLLBACK_IDX_RECOVERY}>;/g" ${ITS_RECOVERY} 490*4b1cd58cSJoseph Chen fi 491*4b1cd58cSJoseph Chen 492*4b1cd58cSJoseph Chen ${MKIMAGE} -f ${ITS_RECOVERY} -k ${KEY_DIR} -K ${UBOOT_DTB} -E -p ${OFFS_S_RECOVERY} -r ${ITB_RECOVERY} -v ${ARG_VER_RECOVERY} 493*4b1cd58cSJoseph Chen mv ${SIG_BIN} ${SIG_RECOVERY} 494*4b1cd58cSJoseph Chen 495*4b1cd58cSJoseph Chen # rollback-index read back check 496*4b1cd58cSJoseph Chen if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then 497*4b1cd58cSJoseph Chen VERSION=`fdtget -ti ${ITB_RECOVERY} /configurations/conf rollback-index` 498*4b1cd58cSJoseph Chen if [ "${VERSION}" != "${ARG_ROLLBACK_IDX_RECOVERY}" ]; then 499*4b1cd58cSJoseph Chen echo "ERROR: Failed to set rollback-index for ${ITB_RECOVERY}"; 500*4b1cd58cSJoseph Chen exit 1 501*4b1cd58cSJoseph Chen fi 502*4b1cd58cSJoseph Chen fi 503*4b1cd58cSJoseph Chen 504*4b1cd58cSJoseph Chen # host check signature 505*4b1cd58cSJoseph Chen if [ "${ARG_NO_CHECK}" != "y" ]; then 506*4b1cd58cSJoseph Chen ${CHECK_SIGN} -f ${ITB_RECOVERY} -k ${UBOOT_DTB} 507*4b1cd58cSJoseph Chen fi 508*4b1cd58cSJoseph Chen 509*4b1cd58cSJoseph Chen # minimize u-boot.dtb: clearn as 0 but not remove property. 510*4b1cd58cSJoseph Chen if grep -q '^CONFIG_FIT_HW_CRYPTO=y' .config ; then 511*4b1cd58cSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,r-squared 0x0 512*4b1cd58cSJoseph Chen if grep -q '^CONFIG_ROCKCHIP_CRYPTO_V1=y' .config ; then 513*4b1cd58cSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,np 0x0 514*4b1cd58cSJoseph Chen else 515*4b1cd58cSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,c 0x0 516*4b1cd58cSJoseph Chen fi 517*4b1cd58cSJoseph Chen else 518*4b1cd58cSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,c 0x0 519*4b1cd58cSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,np 0x0 520*4b1cd58cSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,exponent-BN 0x0 521*4b1cd58cSJoseph Chen fi 522*4b1cd58cSJoseph Chen fdtput -r ${UBOOT_DTB} ${SIGNATURE_KEY_NODE}/hash@c 523*4b1cd58cSJoseph Chen fdtput -r ${UBOOT_DTB} ${SIGNATURE_KEY_NODE}/hash@np 524*4b1cd58cSJoseph Chen fi 525*4b1cd58cSJoseph Chen 526*4b1cd58cSJoseph Chen mv ${ITS_RECOVERY} ${FIT_DIR} 527*4b1cd58cSJoseph Chen} 528*4b1cd58cSJoseph Chen 529ae33e311SJoseph Chenfunction fit_gen_uboot_img() 530ae33e311SJoseph Chen{ 531ae33e311SJoseph Chen ITB=$1 532ae33e311SJoseph Chen 533ae33e311SJoseph Chen if [ -z ${ITB} ]; then 534ae33e311SJoseph Chen ITB=${ITB_UBOOT} 535ae33e311SJoseph Chen fi 536ae33e311SJoseph Chen 537ae33e311SJoseph Chen ITB_MAX_NUM=`sed -n "/SPL_FIT_IMAGE_MULTIPLE/p" .config | awk -F "=" '{ print $2 }'` 538ae33e311SJoseph Chen ITB_MAX_KB=`sed -n "/SPL_FIT_IMAGE_KB/p" .config | awk -F "=" '{ print $2 }'` 539ae33e311SJoseph Chen ITB_MAX_BS=$((ITB_MAX_KB*1024)) 540ae33e311SJoseph Chen ITB_BS=`ls -l ${ITB} | awk '{ print $5 }'` 541ae33e311SJoseph Chen 542ae33e311SJoseph Chen if [ ${ITB_BS} -gt ${ITB_MAX_BS} ]; then 543ae33e311SJoseph Chen echo "ERROR: pack ${IMG_UBOOT} failed! ${ITB} actual: ${ITB_BS} bytes, max limit: ${ITB_MAX_BS} bytes" 544ae33e311SJoseph Chen exit 1 545ae33e311SJoseph Chen fi 546ae33e311SJoseph Chen 547ae33e311SJoseph Chen rm -f ${IMG_UBOOT} 548ae33e311SJoseph Chen for ((i = 0; i < ${ITB_MAX_NUM}; i++)); 549ae33e311SJoseph Chen do 550ae33e311SJoseph Chen cat ${ITB} >> ${IMG_UBOOT} 551ae33e311SJoseph Chen truncate -s %${ITB_MAX_KB}K ${IMG_UBOOT} 552ae33e311SJoseph Chen done 553ae33e311SJoseph Chen} 554ae33e311SJoseph Chen 555ae33e311SJoseph Chenfunction fit_gen_boot_img() 556ae33e311SJoseph Chen{ 557ae33e311SJoseph Chen ITB=$1 558ae33e311SJoseph Chen 559ae33e311SJoseph Chen if [ -z ${ITB} ]; then 560ae33e311SJoseph Chen ITB=${ITB_BOOT} 561ae33e311SJoseph Chen fi 562ae33e311SJoseph Chen 563ae33e311SJoseph Chen if [ "${ITB}" != "${IMG_BOOT}" ]; then 564ae33e311SJoseph Chen cp ${ITB} ${IMG_BOOT} -f 565ae33e311SJoseph Chen fi 566ae33e311SJoseph Chen} 567ae33e311SJoseph Chen 568*4b1cd58cSJoseph Chenfunction fit_gen_recovery_img() 569*4b1cd58cSJoseph Chen{ 570*4b1cd58cSJoseph Chen ITB=$1 571*4b1cd58cSJoseph Chen 572*4b1cd58cSJoseph Chen if [ -z ${ITB} ]; then 573*4b1cd58cSJoseph Chen ITB=${ITB_RECOVERY} 574*4b1cd58cSJoseph Chen fi 575*4b1cd58cSJoseph Chen 576*4b1cd58cSJoseph Chen if [ "${ITB}" != "${IMG_RECOVERY}" ]; then 577*4b1cd58cSJoseph Chen cp ${ITB} ${IMG_RECOVERY} -f 578*4b1cd58cSJoseph Chen fi 579*4b1cd58cSJoseph Chen} 580*4b1cd58cSJoseph Chen 581ae33e311SJoseph Chenfunction fit_msg_uboot() 582ae33e311SJoseph Chen{ 5832d11b868SJoseph Chen if [ "${ARG_SIGN}" != "y" ]; then 584ae33e311SJoseph Chen MSG_SIGN="no-signed" 585ae33e311SJoseph Chen else 586ae33e311SJoseph Chen MSG_SIGN="signed" 587ae33e311SJoseph Chen fi 588ae33e311SJoseph Chen 589ae33e311SJoseph Chen VERSION=`fdtget -ti ${ITB_UBOOT} / version` 590ae33e311SJoseph Chen if [ "${VERSION}" != "" ]; then 591ae33e311SJoseph Chen MSG_VER=", version=${VERSION}" 592ae33e311SJoseph Chen fi 593ae33e311SJoseph Chen 594ae33e311SJoseph Chen if [ "${ARG_SPL_ROLLBACK_PROTECT}" == "y" ]; then 595ae33e311SJoseph Chen echo "Image(${MSG_SIGN}${MSG_VER}, rollback-index=${ARG_ROLLBACK_IDX_UBOOT}): ${IMG_UBOOT} (with uboot, trust...) is ready" 596ae33e311SJoseph Chen else 597ae33e311SJoseph Chen echo "Image(${MSG_SIGN}${MSG_VER}): ${IMG_UBOOT} (FIT with uboot, trust...) is ready" 598ae33e311SJoseph Chen fi 599ae33e311SJoseph Chen} 600ae33e311SJoseph Chen 601ae33e311SJoseph Chenfunction fit_msg_boot() 602ae33e311SJoseph Chen{ 603*4b1cd58cSJoseph Chen if [ -z "${ARG_BOOT_IMG}" ]; then 604*4b1cd58cSJoseph Chen return; 605*4b1cd58cSJoseph Chen fi 606*4b1cd58cSJoseph Chen 6072d11b868SJoseph Chen if [ "${ARG_SIGN}" != "y" ]; then 608ae33e311SJoseph Chen MSG_SIGN="no-signed" 609ae33e311SJoseph Chen else 610ae33e311SJoseph Chen MSG_SIGN="signed" 611ae33e311SJoseph Chen fi 612ae33e311SJoseph Chen 613ae33e311SJoseph Chen VERSION=`fdtget -ti ${ITB_BOOT} / version` 614ae33e311SJoseph Chen if [ "${VERSION}" != "" ]; then 615ae33e311SJoseph Chen MSG_VER=", version=${VERSION}" 616ae33e311SJoseph Chen fi 617ae33e311SJoseph Chen 618ae33e311SJoseph Chen if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then 619ae33e311SJoseph Chen echo "Image(${MSG_SIGN}${MSG_VER}, rollback-index=${ARG_ROLLBACK_IDX_BOOT}): ${IMG_BOOT} is ready" 620ae33e311SJoseph Chen else 621ae33e311SJoseph Chen echo "Image(${MSG_SIGN}${MSG_VER}): ${IMG_BOOT} (FIT with kernel, fdt, resource...) is ready" 622ae33e311SJoseph Chen fi 623ae33e311SJoseph Chen} 624ae33e311SJoseph Chen 625*4b1cd58cSJoseph Chenfunction fit_msg_recovery() 626*4b1cd58cSJoseph Chen{ 627*4b1cd58cSJoseph Chen if [ -z "${ARG_RECOVERY_IMG}" ]; then 628*4b1cd58cSJoseph Chen return; 629*4b1cd58cSJoseph Chen fi 630*4b1cd58cSJoseph Chen 631*4b1cd58cSJoseph Chen if [ "${ARG_SIGN}" != "y" ]; then 632*4b1cd58cSJoseph Chen MSG_SIGN="no-signed" 633*4b1cd58cSJoseph Chen else 634*4b1cd58cSJoseph Chen MSG_SIGN="signed" 635*4b1cd58cSJoseph Chen fi 636*4b1cd58cSJoseph Chen 637*4b1cd58cSJoseph Chen VERSION=`fdtget -ti ${ITB_RECOVERY} / version` 638*4b1cd58cSJoseph Chen if [ "${VERSION}" != "" ]; then 639*4b1cd58cSJoseph Chen MSG_VER=", version=${VERSION}" 640*4b1cd58cSJoseph Chen fi 641*4b1cd58cSJoseph Chen 642*4b1cd58cSJoseph Chen if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then 643*4b1cd58cSJoseph Chen echo "Image(${MSG_SIGN}${MSG_VER}, rollback-index=${ARG_ROLLBACK_IDX_RECOVERY}): ${IMG_RECOVERY} is ready" 644*4b1cd58cSJoseph Chen else 645*4b1cd58cSJoseph Chen echo "Image(${MSG_SIGN}${MSG_VER}): ${IMG_RECOVERY} (FIT with kernel, fdt, resource...) is ready" 646*4b1cd58cSJoseph Chen fi 647*4b1cd58cSJoseph Chen} 648*4b1cd58cSJoseph Chen 649ae33e311SJoseph Chenfunction fit_msg_loader() 650ae33e311SJoseph Chen{ 651ae33e311SJoseph Chen LOADER=`ls *loader*.bin` 652ae33e311SJoseph Chen echo "Image(no-signed): ${LOADER} (with spl, ddr, usbplug) is ready" 653ae33e311SJoseph Chen} 654ae33e311SJoseph Chen 655ae33e311SJoseph Chenfit_process_args $* 656*4b1cd58cSJoseph Chen 657ae33e311SJoseph Chenif [ ! -z "${ARG_VALIDATE}" ]; then 658ae33e311SJoseph Chen validate_arg ${ARG_VALIDATE} 6592d11b868SJoseph Chenelse 660*4b1cd58cSJoseph Chen fit_raw_compile 661*4b1cd58cSJoseph Chen if [ ! -z "${ARG_RECOVERY_IMG}" ]; then 662*4b1cd58cSJoseph Chen fit_gen_recovery_itb 663*4b1cd58cSJoseph Chen fit_gen_recovery_img 664ae33e311SJoseph Chen fi 665*4b1cd58cSJoseph Chen # "--boot_img_dir" is for U-Boot debug only 666*4b1cd58cSJoseph Chen if [ ! -z "${ARG_BOOT_IMG}" -o ! -z "${ARG_BOOT_IMG_DIR}" ]; then 667*4b1cd58cSJoseph Chen fit_gen_boot_itb 668*4b1cd58cSJoseph Chen fit_gen_boot_img 669*4b1cd58cSJoseph Chen fi 670*4b1cd58cSJoseph Chen fit_gen_uboot_itb 671*4b1cd58cSJoseph Chen fit_gen_uboot_img 672ae33e311SJoseph Chen 673*4b1cd58cSJoseph Chen echo 674*4b1cd58cSJoseph Chen fit_msg_uboot 675*4b1cd58cSJoseph Chen fit_msg_recovery 676*4b1cd58cSJoseph Chen fit_msg_boot 677*4b1cd58cSJoseph Chen fit_msg_loader 678*4b1cd58cSJoseph Chenfi 679