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 21ac05169aSJoseph 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" 30*2a0b9372SJoseph ChenRK_SIGN_TOOL="../rkbin/tools/rk_sign_tool" 31ae33e311SJoseph ChenFIT_UNPACK="./scripts/fit-unpack.sh" 32ae33e311SJoseph ChenCHECK_SIGN="./tools/fit_check_sign" 33ae33e311SJoseph Chen# key 34ae33e311SJoseph ChenKEY_DIR="keys/" 35ae33e311SJoseph ChenRSA_PRI_KEY="keys/dev.key" 36ae33e311SJoseph ChenRSA_PUB_KEY="keys/dev.crt" 37ae33e311SJoseph ChenSIGNATURE_KEY_NODE="/signature/key-dev" 38ae33e311SJoseph ChenSPL_DTB="spl/u-boot-spl.dtb" 39ae33e311SJoseph ChenUBOOT_DTB="u-boot.dtb" 40ae33e311SJoseph Chen# its 41ae33e311SJoseph ChenITS_UBOOT="u-boot.its" 42ae33e311SJoseph ChenITS_BOOT="boot.its" 434b1cd58cSJoseph ChenITS_RECOVERY="recovery.its" 44ae33e311SJoseph ChenARG_VER_UBOOT="0" 45ae33e311SJoseph ChenARG_VER_BOOT="0" 464b1cd58cSJoseph ChenARG_VER_RECOVERY="0" 47ae33e311SJoseph Chen 48ae33e311SJoseph Chenfunction help() 49ae33e311SJoseph Chen{ 50ae33e311SJoseph Chen echo 51ae33e311SJoseph Chen echo "usage:" 52ae33e311SJoseph Chen echo " $0 [args]" 53ae33e311SJoseph Chen echo 54ae33e311SJoseph Chen echo "args:" 554b1cd58cSJoseph Chen echo " --rollback-index-recovery <decimal integer>" 56ae33e311SJoseph Chen echo " --rollback-index-boot <decimal integer>" 57ae33e311SJoseph Chen echo " --rollback-index-uboot <decimal integer>" 584b1cd58cSJoseph Chen echo " --version-recovery <decimal integer>" 59ae33e311SJoseph Chen echo " --version-boot <decimal integer>" 604b1cd58cSJoseph Chen echo " --version-uboot <decimal integer>" 614b1cd58cSJoseph Chen echo " --boot_img <boot image>" 624b1cd58cSJoseph Chen echo " --recovery_img <recovery image>" 634b1cd58cSJoseph Chen echo " --args <arg>" 644b1cd58cSJoseph Chen echo " --ini-loader <loader ini file>" 654b1cd58cSJoseph Chen echo " --ini-trust <trust ini file>" 66ae33e311SJoseph Chen echo " --no-check" 67ae33e311SJoseph Chen echo " --spl-new" 68ae33e311SJoseph Chen echo 69ae33e311SJoseph Chen} 70ae33e311SJoseph Chen 71ae33e311SJoseph Chenfunction arg_check_decimal() 72ae33e311SJoseph Chen{ 73ae33e311SJoseph Chen if [ -z $1 ]; then 74ae33e311SJoseph Chen help 75ae33e311SJoseph Chen exit 1 76ae33e311SJoseph Chen fi 77ae33e311SJoseph Chen 78ae33e311SJoseph Chen decimal=`echo $1 |sed 's/[0-9]//g'` 79ae33e311SJoseph Chen if [ ! -z ${decimal} ]; then 80ae33e311SJoseph Chen echo "ERROR: $1 is not decimal integer" 81ae33e311SJoseph Chen help 82ae33e311SJoseph Chen exit 1 83ae33e311SJoseph Chen fi 84ae33e311SJoseph Chen} 85ae33e311SJoseph Chen 86ae33e311SJoseph Chenfunction check_its() 87ae33e311SJoseph Chen{ 88ae33e311SJoseph Chen cat $1 | while read line 89ae33e311SJoseph Chen do 90ae33e311SJoseph Chen file=`echo ${line} | sed -n "/incbin/p" | awk -F '"' '{ printf $2 }' | tr -d ' '` 91ae33e311SJoseph Chen if [ ! -f ${file} ]; then 92ae33e311SJoseph Chen echo "ERROR: No ${file}" 93ae33e311SJoseph Chen exit 1 94ae33e311SJoseph Chen fi 95ae33e311SJoseph Chen done 96ae33e311SJoseph Chen} 97ae33e311SJoseph Chen 98ae33e311SJoseph Chenfunction validate_arg() 99ae33e311SJoseph Chen{ 100ae33e311SJoseph Chen case $1 in 10114aa40ffSJoseph Chen --no-check|--spl-new|--burn-key-hash) 102ae33e311SJoseph Chen shift=1 103ae33e311SJoseph Chen ;; 104*2a0b9372SJoseph Chen --ini-trust|--ini-loader|--rollback-index-boot|--rollback-index-recovery|--rollback-index-uboot|--boot_img|--recovery_img|--version-uboot|--version-boot|--version-recovery|--chip) 105ae33e311SJoseph Chen shift=2 106ae33e311SJoseph Chen ;; 107ae33e311SJoseph Chen *) 108ae33e311SJoseph Chen shift=0 109ae33e311SJoseph Chen ;; 110ae33e311SJoseph Chen esac 111ae33e311SJoseph Chen echo ${shift} 112ae33e311SJoseph Chen} 113ae33e311SJoseph Chen 114ae33e311SJoseph Chenfunction fit_process_args() 115ae33e311SJoseph Chen{ 116ae33e311SJoseph Chen if [ $# -eq 0 ]; then 117ae33e311SJoseph Chen help 118ae33e311SJoseph Chen exit 0 119ae33e311SJoseph Chen fi 120ae33e311SJoseph Chen 121ae33e311SJoseph Chen while [ $# -gt 0 ]; do 122ae33e311SJoseph Chen case $1 in 1232d11b868SJoseph Chen --args) 124ae33e311SJoseph Chen ARG_VALIDATE=$2 125ae33e311SJoseph Chen shift 2 126ae33e311SJoseph Chen ;; 1272d11b868SJoseph Chen --boot_img) # boot.img 1282d11b868SJoseph Chen ARG_BOOT_IMG=$2 1292d11b868SJoseph Chen shift 2 130ae33e311SJoseph Chen ;; 131*2a0b9372SJoseph Chen --chip) 132*2a0b9372SJoseph Chen ARG_CHIP=$2 133*2a0b9372SJoseph Chen shift 2 134*2a0b9372SJoseph Chen ;; 1354b1cd58cSJoseph Chen --recovery_img) # recovery.img 1364b1cd58cSJoseph Chen ARG_RECOVERY_IMG=$2 1374b1cd58cSJoseph Chen shift 2 1384b1cd58cSJoseph 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 ;; 1644b1cd58cSJoseph Chen --rollback-index-recovery) 1654b1cd58cSJoseph Chen ARG_ROLLBACK_IDX_RECOVERY=$2 1664b1cd58cSJoseph Chen arg_check_decimal $2 1674b1cd58cSJoseph Chen shift 2 1684b1cd58cSJoseph 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 ;; 1844b1cd58cSJoseph Chen --version-recovery) 1854b1cd58cSJoseph Chen ARG_VER_RECOVERY=$2 1864b1cd58cSJoseph Chen arg_check_decimal $2 1874b1cd58cSJoseph Chen shift 2 1884b1cd58cSJoseph 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 223ac05169aSJoseph Chen ${MKIMAGE} -f ${ITS_UBOOT} -E -p ${OFFS_DATA} ${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 261ac05169aSJoseph Chen ${MKIMAGE} -f ${ITS_UBOOT} -k ${KEY_DIR} -K ${UBOOT_DTB} -E -p ${OFFS_DATA} -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 266ac05169aSJoseph Chen ${MKIMAGE} -f ${ITS_UBOOT} -k ${KEY_DIR} -K ${SPL_DTB} -E -p ${OFFS_DATA} -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 364ac05169aSJoseph Chen ${MKIMAGE} -f ${ITS_BOOT} -E -p ${OFFS_DATA} ${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 404ac05169aSJoseph Chen ${MKIMAGE} -f ${ITS_BOOT} -k ${KEY_DIR} -K ${UBOOT_DTB} -E -p ${OFFS_DATA} -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 4414b1cd58cSJoseph Chenfunction fit_gen_recovery_itb() 4424b1cd58cSJoseph Chen{ 4434b1cd58cSJoseph Chen if [ ! -z ${ARG_RECOVERY_IMG} ]; then 4444b1cd58cSJoseph Chen ${FIT_UNPACK} -f ${ARG_RECOVERY_IMG} -o ${FIT_DIR}/unpack 4454b1cd58cSJoseph Chen ITS_RECOVERY="${FIT_DIR}/unpack/image.its" 4464b1cd58cSJoseph Chen else 4474b1cd58cSJoseph Chen echo "ERROR: No recovery.img" 4484b1cd58cSJoseph Chen exit 1 4494b1cd58cSJoseph Chen fi 4504b1cd58cSJoseph Chen 4514b1cd58cSJoseph Chen if [ "${ARG_SIGN}" != "y" ]; then 452ac05169aSJoseph Chen ${MKIMAGE} -f ${ITS_RECOVERY} -E -p ${OFFS_DATA} ${ITB_RECOVERY} -v ${ARG_VER_RECOVERY} 4534b1cd58cSJoseph Chen else 4544b1cd58cSJoseph Chen if [ ! -f ${RSA_PRI_KEY} ]; then 4554b1cd58cSJoseph Chen echo "ERROR: No ${RSA_PRI_KEY}" 4564b1cd58cSJoseph Chen exit 1 4574b1cd58cSJoseph Chen elif [ ! -f ${RSA_PUB_KEY} ]; then 4584b1cd58cSJoseph Chen echo "ERROR: No ${RSA_PUB_KEY}" 4594b1cd58cSJoseph Chen exit 1 4604b1cd58cSJoseph Chen fi 4614b1cd58cSJoseph Chen 4624b1cd58cSJoseph Chen if ! grep -q '^CONFIG_FIT_SIGNATURE=y' .config ; then 4634b1cd58cSJoseph Chen echo "ERROR: CONFIG_FIT_SIGNATURE is disabled" 4644b1cd58cSJoseph Chen exit 1 4654b1cd58cSJoseph Chen fi 4664b1cd58cSJoseph Chen 4674b1cd58cSJoseph Chen if grep -q '^CONFIG_FIT_ROLLBACK_PROTECT=y' .config ; then 4684b1cd58cSJoseph Chen ARG_ROLLBACK_PROTECT="y" 4694b1cd58cSJoseph Chen if [ -z ${ARG_ROLLBACK_IDX_RECOVERY} ]; then 4704b1cd58cSJoseph Chen echo "ERROR: No arg \"--rollback-index-recovery <n>\"" 4714b1cd58cSJoseph Chen exit 1 4724b1cd58cSJoseph Chen fi 4734b1cd58cSJoseph Chen fi 4744b1cd58cSJoseph Chen 4754b1cd58cSJoseph Chen # fixup 4764b1cd58cSJoseph Chen COMMON_FILE=`sed -n "/_common.h/p" ${CHIP_FILE} | awk '{ print $1 }'` 4774b1cd58cSJoseph Chen FDT_ADDR_R=`awk /fdt_addr_r/ ${COMMON_FILE} | awk -F '=' '{ print $2 }' | awk -F '\\' '{ print $1 }'` 4784b1cd58cSJoseph Chen KERNEL_ADDR_R=`awk /kernel_addr_r/ ${COMMON_FILE} | awk -F '=' '{ print $2 }' | awk -F '\\' '{ print $1 }'` 4794b1cd58cSJoseph Chen RMADISK_ADDR_R=`awk /ramdisk_addr_r/ ${COMMON_FILE} | awk -F '=' '{ print $2 }' | awk -F '\\' '{ print $1 }'` 4804b1cd58cSJoseph Chen sed -i "s/${FDT_ADDR_PLACEHOLDER}/${FDT_ADDR_R}/g" ${ITS_RECOVERY} 4814b1cd58cSJoseph Chen sed -i "s/${KERNEL_ADDR_PLACEHOLDER}/${KERNEL_ADDR_R}/g" ${ITS_RECOVERY} 4824b1cd58cSJoseph Chen sed -i "s/${RAMDISK_ADDR_PLACEHOLDER}/${RMADISK_ADDR_R}/g" ${ITS_RECOVERY} 4834b1cd58cSJoseph Chen if grep -q '^CONFIG_ARM64=y' .config ; then 4844b1cd58cSJoseph Chen sed -i 's/arch = "arm";/arch = "arm64";/g' ${ITS_RECOVERY} 4854b1cd58cSJoseph Chen fi 4864b1cd58cSJoseph Chen 4874b1cd58cSJoseph Chen if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then 4884b1cd58cSJoseph Chen VERSION=`grep 'rollback-index' ${ITS_RECOVERY} | awk -F '=' '{ printf $2 }' | tr -d ' '` 4894b1cd58cSJoseph Chen sed -i "s/rollback-index = ${VERSION}/rollback-index = <${ARG_ROLLBACK_IDX_RECOVERY}>;/g" ${ITS_RECOVERY} 4904b1cd58cSJoseph Chen fi 4914b1cd58cSJoseph Chen 492ac05169aSJoseph Chen ${MKIMAGE} -f ${ITS_RECOVERY} -k ${KEY_DIR} -K ${UBOOT_DTB} -E -p ${OFFS_DATA} -r ${ITB_RECOVERY} -v ${ARG_VER_RECOVERY} 4934b1cd58cSJoseph Chen mv ${SIG_BIN} ${SIG_RECOVERY} 4944b1cd58cSJoseph Chen 4954b1cd58cSJoseph Chen # rollback-index read back check 4964b1cd58cSJoseph Chen if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then 4974b1cd58cSJoseph Chen VERSION=`fdtget -ti ${ITB_RECOVERY} /configurations/conf rollback-index` 4984b1cd58cSJoseph Chen if [ "${VERSION}" != "${ARG_ROLLBACK_IDX_RECOVERY}" ]; then 4994b1cd58cSJoseph Chen echo "ERROR: Failed to set rollback-index for ${ITB_RECOVERY}"; 5004b1cd58cSJoseph Chen exit 1 5014b1cd58cSJoseph Chen fi 5024b1cd58cSJoseph Chen fi 5034b1cd58cSJoseph Chen 5044b1cd58cSJoseph Chen # host check signature 5054b1cd58cSJoseph Chen if [ "${ARG_NO_CHECK}" != "y" ]; then 5064b1cd58cSJoseph Chen ${CHECK_SIGN} -f ${ITB_RECOVERY} -k ${UBOOT_DTB} 5074b1cd58cSJoseph Chen fi 5084b1cd58cSJoseph Chen 5094b1cd58cSJoseph Chen # minimize u-boot.dtb: clearn as 0 but not remove property. 5104b1cd58cSJoseph Chen if grep -q '^CONFIG_FIT_HW_CRYPTO=y' .config ; then 5114b1cd58cSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,r-squared 0x0 5124b1cd58cSJoseph Chen if grep -q '^CONFIG_ROCKCHIP_CRYPTO_V1=y' .config ; then 5134b1cd58cSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,np 0x0 5144b1cd58cSJoseph Chen else 5154b1cd58cSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,c 0x0 5164b1cd58cSJoseph Chen fi 5174b1cd58cSJoseph Chen else 5184b1cd58cSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,c 0x0 5194b1cd58cSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,np 0x0 5204b1cd58cSJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,exponent-BN 0x0 5214b1cd58cSJoseph Chen fi 5224b1cd58cSJoseph Chen fdtput -r ${UBOOT_DTB} ${SIGNATURE_KEY_NODE}/hash@c 5234b1cd58cSJoseph Chen fdtput -r ${UBOOT_DTB} ${SIGNATURE_KEY_NODE}/hash@np 5244b1cd58cSJoseph Chen fi 5254b1cd58cSJoseph Chen 5264b1cd58cSJoseph Chen mv ${ITS_RECOVERY} ${FIT_DIR} 5274b1cd58cSJoseph Chen} 5284b1cd58cSJoseph 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 5684b1cd58cSJoseph Chenfunction fit_gen_recovery_img() 5694b1cd58cSJoseph Chen{ 5704b1cd58cSJoseph Chen ITB=$1 5714b1cd58cSJoseph Chen 5724b1cd58cSJoseph Chen if [ -z ${ITB} ]; then 5734b1cd58cSJoseph Chen ITB=${ITB_RECOVERY} 5744b1cd58cSJoseph Chen fi 5754b1cd58cSJoseph Chen 5764b1cd58cSJoseph Chen if [ "${ITB}" != "${IMG_RECOVERY}" ]; then 5774b1cd58cSJoseph Chen cp ${ITB} ${IMG_RECOVERY} -f 5784b1cd58cSJoseph Chen fi 5794b1cd58cSJoseph Chen} 5804b1cd58cSJoseph Chen 581*2a0b9372SJoseph Chenfunction fit_gen_loader() 582*2a0b9372SJoseph Chen{ 583*2a0b9372SJoseph Chen if grep -Eq '^CONFIG_FIT_SIGNATURE=y' .config ; then 584*2a0b9372SJoseph Chen ${RK_SIGN_TOOL} cc --chip ${ARG_CHIP: 2: 6} 585*2a0b9372SJoseph Chen ${RK_SIGN_TOOL} sl --key ./keys/dev.key --pubkey ./keys/dev.pubkey --loader *_loader_*.bin 586*2a0b9372SJoseph Chen fi 587*2a0b9372SJoseph Chen} 588*2a0b9372SJoseph Chen 589ae33e311SJoseph Chenfunction fit_msg_uboot() 590ae33e311SJoseph Chen{ 5912d11b868SJoseph Chen if [ "${ARG_SIGN}" != "y" ]; then 592ae33e311SJoseph Chen MSG_SIGN="no-signed" 593ae33e311SJoseph Chen else 594ae33e311SJoseph Chen MSG_SIGN="signed" 595ae33e311SJoseph Chen fi 596ae33e311SJoseph Chen 597ae33e311SJoseph Chen VERSION=`fdtget -ti ${ITB_UBOOT} / version` 598ae33e311SJoseph Chen if [ "${VERSION}" != "" ]; then 599ae33e311SJoseph Chen MSG_VER=", version=${VERSION}" 600ae33e311SJoseph Chen fi 601ae33e311SJoseph Chen 602ae33e311SJoseph Chen if [ "${ARG_SPL_ROLLBACK_PROTECT}" == "y" ]; then 603ae33e311SJoseph Chen echo "Image(${MSG_SIGN}${MSG_VER}, rollback-index=${ARG_ROLLBACK_IDX_UBOOT}): ${IMG_UBOOT} (with uboot, trust...) is ready" 604ae33e311SJoseph Chen else 605ae33e311SJoseph Chen echo "Image(${MSG_SIGN}${MSG_VER}): ${IMG_UBOOT} (FIT with uboot, trust...) is ready" 606ae33e311SJoseph Chen fi 607ae33e311SJoseph Chen} 608ae33e311SJoseph Chen 609ae33e311SJoseph Chenfunction fit_msg_boot() 610ae33e311SJoseph Chen{ 6114b1cd58cSJoseph Chen if [ -z "${ARG_BOOT_IMG}" ]; then 6124b1cd58cSJoseph Chen return; 6134b1cd58cSJoseph Chen fi 6144b1cd58cSJoseph Chen 6152d11b868SJoseph Chen if [ "${ARG_SIGN}" != "y" ]; then 616ae33e311SJoseph Chen MSG_SIGN="no-signed" 617ae33e311SJoseph Chen else 618ae33e311SJoseph Chen MSG_SIGN="signed" 619ae33e311SJoseph Chen fi 620ae33e311SJoseph Chen 621ae33e311SJoseph Chen VERSION=`fdtget -ti ${ITB_BOOT} / version` 622ae33e311SJoseph Chen if [ "${VERSION}" != "" ]; then 623ae33e311SJoseph Chen MSG_VER=", version=${VERSION}" 624ae33e311SJoseph Chen fi 625ae33e311SJoseph Chen 626ae33e311SJoseph Chen if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then 627ae33e311SJoseph Chen echo "Image(${MSG_SIGN}${MSG_VER}, rollback-index=${ARG_ROLLBACK_IDX_BOOT}): ${IMG_BOOT} is ready" 628ae33e311SJoseph Chen else 629ae33e311SJoseph Chen echo "Image(${MSG_SIGN}${MSG_VER}): ${IMG_BOOT} (FIT with kernel, fdt, resource...) is ready" 630ae33e311SJoseph Chen fi 631ae33e311SJoseph Chen} 632ae33e311SJoseph Chen 6334b1cd58cSJoseph Chenfunction fit_msg_recovery() 6344b1cd58cSJoseph Chen{ 6354b1cd58cSJoseph Chen if [ -z "${ARG_RECOVERY_IMG}" ]; then 6364b1cd58cSJoseph Chen return; 6374b1cd58cSJoseph Chen fi 6384b1cd58cSJoseph Chen 6394b1cd58cSJoseph Chen if [ "${ARG_SIGN}" != "y" ]; then 6404b1cd58cSJoseph Chen MSG_SIGN="no-signed" 6414b1cd58cSJoseph Chen else 6424b1cd58cSJoseph Chen MSG_SIGN="signed" 6434b1cd58cSJoseph Chen fi 6444b1cd58cSJoseph Chen 6454b1cd58cSJoseph Chen VERSION=`fdtget -ti ${ITB_RECOVERY} / version` 6464b1cd58cSJoseph Chen if [ "${VERSION}" != "" ]; then 6474b1cd58cSJoseph Chen MSG_VER=", version=${VERSION}" 6484b1cd58cSJoseph Chen fi 6494b1cd58cSJoseph Chen 6504b1cd58cSJoseph Chen if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then 6514b1cd58cSJoseph Chen echo "Image(${MSG_SIGN}${MSG_VER}, rollback-index=${ARG_ROLLBACK_IDX_RECOVERY}): ${IMG_RECOVERY} is ready" 6524b1cd58cSJoseph Chen else 6534b1cd58cSJoseph Chen echo "Image(${MSG_SIGN}${MSG_VER}): ${IMG_RECOVERY} (FIT with kernel, fdt, resource...) is ready" 6544b1cd58cSJoseph Chen fi 6554b1cd58cSJoseph Chen} 6564b1cd58cSJoseph Chen 657ae33e311SJoseph Chenfunction fit_msg_loader() 658ae33e311SJoseph Chen{ 659ae33e311SJoseph Chen LOADER=`ls *loader*.bin` 660*2a0b9372SJoseph Chen 661*2a0b9372SJoseph Chen if grep -q '^CONFIG_FIT_SIGNATURE=y' .config ; then 662*2a0b9372SJoseph Chen echo "Image(signed): ${LOADER} (with spl, ddr, usbplug) is ready" 663*2a0b9372SJoseph Chen else 664ae33e311SJoseph Chen echo "Image(no-signed): ${LOADER} (with spl, ddr, usbplug) is ready" 665*2a0b9372SJoseph Chen fi 666ae33e311SJoseph Chen} 667ae33e311SJoseph Chen 668ae33e311SJoseph Chenfit_process_args $* 6694b1cd58cSJoseph Chen 670ae33e311SJoseph Chenif [ ! -z "${ARG_VALIDATE}" ]; then 671ae33e311SJoseph Chen validate_arg ${ARG_VALIDATE} 6722d11b868SJoseph Chenelse 6734b1cd58cSJoseph Chen fit_raw_compile 6744b1cd58cSJoseph Chen if [ ! -z "${ARG_RECOVERY_IMG}" ]; then 6754b1cd58cSJoseph Chen fit_gen_recovery_itb 6764b1cd58cSJoseph Chen fit_gen_recovery_img 677ae33e311SJoseph Chen fi 6784b1cd58cSJoseph Chen # "--boot_img_dir" is for U-Boot debug only 6794b1cd58cSJoseph Chen if [ ! -z "${ARG_BOOT_IMG}" -o ! -z "${ARG_BOOT_IMG_DIR}" ]; then 6804b1cd58cSJoseph Chen fit_gen_boot_itb 6814b1cd58cSJoseph Chen fit_gen_boot_img 6824b1cd58cSJoseph Chen fi 6834b1cd58cSJoseph Chen fit_gen_uboot_itb 6844b1cd58cSJoseph Chen fit_gen_uboot_img 685*2a0b9372SJoseph Chen fit_gen_loader 686ae33e311SJoseph Chen 6874b1cd58cSJoseph Chen echo 6884b1cd58cSJoseph Chen fit_msg_uboot 6894b1cd58cSJoseph Chen fit_msg_recovery 6904b1cd58cSJoseph Chen fit_msg_boot 6914b1cd58cSJoseph Chen fit_msg_loader 6924b1cd58cSJoseph Chenfi 693