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