11e9dc3b8SJoseph Chen#!/bin/bash 21e9dc3b8SJoseph Chen# 31e9dc3b8SJoseph Chen# Copyright (c) 2022 Rockchip Electronics Co., Ltd 41e9dc3b8SJoseph Chen# 51e9dc3b8SJoseph Chen# SPDX-License-Identifier: GPL-2.0 61e9dc3b8SJoseph Chen# 71e9dc3b8SJoseph Chenset -e 81e9dc3b8SJoseph Chen 91e9dc3b8SJoseph ChenFIT_DIR="fit" 101e9dc3b8SJoseph ChenIMG_UBOOT="uboot.img" 111e9dc3b8SJoseph ChenIMG_BOOT="boot.img" 121e9dc3b8SJoseph ChenIMG_RECOVERY="recovery.img" 131e9dc3b8SJoseph ChenITB_UBOOT="${FIT_DIR}/uboot.itb" 141e9dc3b8SJoseph ChenITB_BOOT="${FIT_DIR}/boot.itb" 151e9dc3b8SJoseph ChenITB_RECOVERY="${FIT_DIR}/recovery.itb" 161e9dc3b8SJoseph ChenSIG_BIN="data2sign.bin" 171e9dc3b8SJoseph ChenSIG_UBOOT="${FIT_DIR}/uboot.data2sign" 181e9dc3b8SJoseph ChenSIG_BOOT="${FIT_DIR}/boot.data2sign" 191e9dc3b8SJoseph ChenSIG_RECOVERY="${FIT_DIR}/recovery.data2sign" 201e9dc3b8SJoseph Chen# offs 211e9dc3b8SJoseph ChenOFFS_DATA="0x1000" 221e9dc3b8SJoseph Chen# file 231e9dc3b8SJoseph ChenCHIP_FILE="arch/arm/lib/.asm-offsets.s.cmd" 241e9dc3b8SJoseph Chen# placeholder address 251e9dc3b8SJoseph ChenFDT_ADDR_PLACEHOLDER="0xffffff00" 261e9dc3b8SJoseph ChenKERNEL_ADDR_PLACEHOLDER="0xffffff01" 271e9dc3b8SJoseph ChenRAMDISK_ADDR_PLACEHOLDER="0xffffff02" 281e9dc3b8SJoseph Chen# tools 291e9dc3b8SJoseph ChenMKIMAGE="./tools/mkimage" 301e9dc3b8SJoseph ChenRK_SIGN_TOOL="../rkbin/tools/rk_sign_tool" 311e9dc3b8SJoseph ChenFIT_UNPACK="./scripts/fit-unpack.sh" 321e9dc3b8SJoseph ChenCHECK_SIGN="./tools/fit_check_sign" 331e9dc3b8SJoseph Chen# key 341e9dc3b8SJoseph ChenKEY_DIR="keys/" 351e9dc3b8SJoseph ChenRSA_PRI_KEY="keys/dev.key" 361e9dc3b8SJoseph ChenRSA_PUB_KEY="keys/dev.pubkey" 371e9dc3b8SJoseph ChenRSA_CRT_KEY="keys/dev.crt" 381e9dc3b8SJoseph ChenSIGNATURE_KEY_NODE="/signature/key-dev" 391e9dc3b8SJoseph ChenSPL_DTB="spl/u-boot-spl.dtb" 401e9dc3b8SJoseph ChenUBOOT_DTB="u-boot.dtb" 411e9dc3b8SJoseph Chen# its 421e9dc3b8SJoseph ChenITS_UBOOT="u-boot.its" 431e9dc3b8SJoseph ChenITS_BOOT="boot.its" 441e9dc3b8SJoseph ChenITS_RECOVERY="recovery.its" 451e9dc3b8SJoseph ChenARG_VER_UBOOT="0" 461e9dc3b8SJoseph ChenARG_VER_BOOT="0" 471e9dc3b8SJoseph ChenARG_VER_RECOVERY="0" 481e9dc3b8SJoseph Chen 491e9dc3b8SJoseph Chenfunction help() 501e9dc3b8SJoseph Chen{ 511e9dc3b8SJoseph Chen echo 521e9dc3b8SJoseph Chen echo "usage:" 531e9dc3b8SJoseph Chen echo " $0 [args]" 541e9dc3b8SJoseph Chen echo 551e9dc3b8SJoseph Chen echo "args:" 561e9dc3b8SJoseph Chen echo " --rollback-index-recovery <decimal integer>" 571e9dc3b8SJoseph Chen echo " --rollback-index-boot <decimal integer>" 581e9dc3b8SJoseph Chen echo " --rollback-index-uboot <decimal integer>" 591e9dc3b8SJoseph Chen echo " --version-recovery <decimal integer>" 601e9dc3b8SJoseph Chen echo " --version-boot <decimal integer>" 611e9dc3b8SJoseph Chen echo " --version-uboot <decimal integer>" 621e9dc3b8SJoseph Chen echo " --boot_img <boot image>" 631e9dc3b8SJoseph Chen echo " --recovery_img <recovery image>" 641e9dc3b8SJoseph Chen echo " --args <arg>" 651e9dc3b8SJoseph Chen echo " --ini-loader <loader ini file>" 661e9dc3b8SJoseph Chen echo " --ini-trust <trust ini file>" 671e9dc3b8SJoseph Chen echo " --no-check" 681e9dc3b8SJoseph Chen echo " --spl-new" 691e9dc3b8SJoseph Chen echo 701e9dc3b8SJoseph Chen} 711e9dc3b8SJoseph Chen 721e9dc3b8SJoseph Chenfunction arg_check_decimal() 731e9dc3b8SJoseph Chen{ 741e9dc3b8SJoseph Chen if [ -z $1 ]; then 751e9dc3b8SJoseph Chen help 761e9dc3b8SJoseph Chen exit 1 771e9dc3b8SJoseph Chen fi 781e9dc3b8SJoseph Chen 791e9dc3b8SJoseph Chen decimal=`echo $1 |sed 's/[0-9]//g'` 801e9dc3b8SJoseph Chen if [ ! -z ${decimal} ]; then 811e9dc3b8SJoseph Chen echo "ERROR: $1 is not decimal integer" 821e9dc3b8SJoseph Chen help 831e9dc3b8SJoseph Chen exit 1 841e9dc3b8SJoseph Chen fi 851e9dc3b8SJoseph Chen} 861e9dc3b8SJoseph Chen 871e9dc3b8SJoseph Chenfunction check_its() 881e9dc3b8SJoseph Chen{ 891e9dc3b8SJoseph Chen cat $1 | while read line 901e9dc3b8SJoseph Chen do 911e9dc3b8SJoseph Chen file=`echo ${line} | sed -n "/incbin/p" | awk -F '"' '{ printf $2 }' | tr -d ' '` 921e9dc3b8SJoseph Chen if [ ! -f ${file} ]; then 931e9dc3b8SJoseph Chen echo "ERROR: No ${file}" 941e9dc3b8SJoseph Chen exit 1 951e9dc3b8SJoseph Chen fi 961e9dc3b8SJoseph Chen done 971e9dc3b8SJoseph Chen} 981e9dc3b8SJoseph Chen 991e9dc3b8SJoseph Chenfunction check_rsa_keys() 1001e9dc3b8SJoseph Chen{ 1011e9dc3b8SJoseph Chen if [ ! -f ${RSA_PRI_KEY} ]; then 1021e9dc3b8SJoseph Chen echo "ERROR: No ${RSA_PRI_KEY} " 1031e9dc3b8SJoseph Chen exit 1 1041e9dc3b8SJoseph Chen elif [ ! -f ${RSA_PUB_KEY} ]; then 1051e9dc3b8SJoseph Chen echo "ERROR: No ${RSA_PUB_KEY} " 1061e9dc3b8SJoseph Chen exit 1 1071e9dc3b8SJoseph Chen elif [ ! -f ${RSA_CRT_KEY} ]; then 1081e9dc3b8SJoseph Chen echo "ERROR: No ${RSA_CRT_KEY} " 1091e9dc3b8SJoseph Chen exit 1 1101e9dc3b8SJoseph Chen fi 1111e9dc3b8SJoseph Chen} 1121e9dc3b8SJoseph Chen 1131e9dc3b8SJoseph Chenfunction validate_arg() 1141e9dc3b8SJoseph Chen{ 1151e9dc3b8SJoseph Chen case $1 in 1161e9dc3b8SJoseph Chen --no-check|--spl-new|--burn-key-hash) 1171e9dc3b8SJoseph Chen shift=1 1181e9dc3b8SJoseph Chen ;; 1191e9dc3b8SJoseph 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) 1201e9dc3b8SJoseph Chen shift=2 1211e9dc3b8SJoseph Chen ;; 1221e9dc3b8SJoseph Chen *) 1231e9dc3b8SJoseph Chen shift=0 1241e9dc3b8SJoseph Chen ;; 1251e9dc3b8SJoseph Chen esac 1261e9dc3b8SJoseph Chen echo ${shift} 1271e9dc3b8SJoseph Chen} 1281e9dc3b8SJoseph Chen 1291e9dc3b8SJoseph Chenfunction fit_process_args() 1301e9dc3b8SJoseph Chen{ 1311e9dc3b8SJoseph Chen if [ $# -eq 0 ]; then 1321e9dc3b8SJoseph Chen help 1331e9dc3b8SJoseph Chen exit 0 1341e9dc3b8SJoseph Chen fi 1351e9dc3b8SJoseph Chen 1361e9dc3b8SJoseph Chen while [ $# -gt 0 ]; do 1371e9dc3b8SJoseph Chen case $1 in 1381e9dc3b8SJoseph Chen --args) 1391e9dc3b8SJoseph Chen ARG_VALIDATE=$2 1401e9dc3b8SJoseph Chen shift 2 1411e9dc3b8SJoseph Chen ;; 1421e9dc3b8SJoseph Chen --boot_img) # boot.img 1431e9dc3b8SJoseph Chen ARG_BOOT_IMG=$2 1441e9dc3b8SJoseph Chen shift 2 1451e9dc3b8SJoseph Chen ;; 1461e9dc3b8SJoseph Chen --chip) 1471e9dc3b8SJoseph Chen ARG_CHIP=$2 1481e9dc3b8SJoseph Chen shift 2 1491e9dc3b8SJoseph Chen ;; 1501e9dc3b8SJoseph Chen --recovery_img) # recovery.img 1511e9dc3b8SJoseph Chen ARG_RECOVERY_IMG=$2 1521e9dc3b8SJoseph Chen shift 2 1531e9dc3b8SJoseph Chen ;; 1541e9dc3b8SJoseph Chen --boot_img_dir) # boot.img components directory 1551e9dc3b8SJoseph Chen ARG_BOOT_IMG_DIR=$2 1561e9dc3b8SJoseph Chen shift 2 1571e9dc3b8SJoseph Chen ;; 1581e9dc3b8SJoseph Chen --no-check) # No hostcc fit signature check 1591e9dc3b8SJoseph Chen ARG_NO_CHECK="y" 1601e9dc3b8SJoseph Chen shift 1 1611e9dc3b8SJoseph Chen ;; 1621e9dc3b8SJoseph Chen --ini-trust) # Assign trust ini file 1631e9dc3b8SJoseph Chen ARG_INI_TRUST=$2 1641e9dc3b8SJoseph Chen shift 2 1651e9dc3b8SJoseph Chen ;; 1661e9dc3b8SJoseph Chen --ini-loader) # Assign loader ini file 1671e9dc3b8SJoseph Chen ARG_INI_LOADER=$2 1681e9dc3b8SJoseph Chen shift 2 1691e9dc3b8SJoseph Chen ;; 1701e9dc3b8SJoseph Chen --spl-new) # Use current build u-boot-spl.bin to pack loader 1711e9dc3b8SJoseph Chen ARG_SPL_NEW="y" 1721e9dc3b8SJoseph Chen shift 1 1731e9dc3b8SJoseph Chen ;; 1741e9dc3b8SJoseph Chen --rollback-index-boot) 1751e9dc3b8SJoseph Chen ARG_ROLLBACK_IDX_BOOT=$2 1761e9dc3b8SJoseph Chen arg_check_decimal $2 1771e9dc3b8SJoseph Chen shift 2 1781e9dc3b8SJoseph Chen ;; 1791e9dc3b8SJoseph Chen --rollback-index-recovery) 1801e9dc3b8SJoseph Chen ARG_ROLLBACK_IDX_RECOVERY=$2 1811e9dc3b8SJoseph Chen arg_check_decimal $2 1821e9dc3b8SJoseph Chen shift 2 1831e9dc3b8SJoseph Chen ;; 1841e9dc3b8SJoseph Chen --rollback-index-uboot) 1851e9dc3b8SJoseph Chen ARG_ROLLBACK_IDX_UBOOT=$2 1861e9dc3b8SJoseph Chen arg_check_decimal $2 1871e9dc3b8SJoseph Chen shift 2 1881e9dc3b8SJoseph Chen ;; 1891e9dc3b8SJoseph Chen --version-uboot) 1901e9dc3b8SJoseph Chen ARG_VER_UBOOT=$2 1911e9dc3b8SJoseph Chen arg_check_decimal $2 1921e9dc3b8SJoseph Chen shift 2 1931e9dc3b8SJoseph Chen ;; 1941e9dc3b8SJoseph Chen --version-boot) 1951e9dc3b8SJoseph Chen ARG_VER_BOOT=$2 1961e9dc3b8SJoseph Chen arg_check_decimal $2 1971e9dc3b8SJoseph Chen shift 2 1981e9dc3b8SJoseph Chen ;; 1991e9dc3b8SJoseph Chen --version-recovery) 2001e9dc3b8SJoseph Chen ARG_VER_RECOVERY=$2 2011e9dc3b8SJoseph Chen arg_check_decimal $2 2021e9dc3b8SJoseph Chen shift 2 2031e9dc3b8SJoseph Chen ;; 2041e9dc3b8SJoseph Chen --burn-key-hash) 2051e9dc3b8SJoseph Chen ARG_BURN_KEY_HASH="y" 2061e9dc3b8SJoseph Chen shift 1 2071e9dc3b8SJoseph Chen ;; 2081e9dc3b8SJoseph Chen *) 2091e9dc3b8SJoseph Chen help 2101e9dc3b8SJoseph Chen exit 1 2111e9dc3b8SJoseph Chen ;; 2121e9dc3b8SJoseph Chen esac 2131e9dc3b8SJoseph Chen done 2141e9dc3b8SJoseph Chen 2151e9dc3b8SJoseph Chen if grep -q '^CONFIG_FIT_SIGNATURE=y' .config ; then 2161e9dc3b8SJoseph Chen ARG_SIGN="y" 2171e9dc3b8SJoseph Chen fi 2181e9dc3b8SJoseph Chen} 2191e9dc3b8SJoseph Chen 2201e9dc3b8SJoseph Chenfunction fit_raw_compile() 2211e9dc3b8SJoseph Chen{ 2221e9dc3b8SJoseph Chen # Verified-boot: should rebuild code but don't need to repack images. 2231e9dc3b8SJoseph Chen if [ "${ARG_SIGN}" == "y" ]; then 2241e9dc3b8SJoseph Chen ./make.sh --raw-compile 2251e9dc3b8SJoseph Chen fi 2261e9dc3b8SJoseph Chen rm ${FIT_DIR} -rf && mkdir -p ${FIT_DIR} 2271e9dc3b8SJoseph Chen} 2281e9dc3b8SJoseph Chen 2291e9dc3b8SJoseph Chenfunction fit_gen_uboot_itb() 2301e9dc3b8SJoseph Chen{ 2311e9dc3b8SJoseph Chen # generate u-boot.its file 2321e9dc3b8SJoseph Chen ./make.sh itb ${ARG_INI_TRUST} 2331e9dc3b8SJoseph Chen 2341e9dc3b8SJoseph Chen # check existance of file in its 2351e9dc3b8SJoseph Chen check_its ${ITS_UBOOT} 2361e9dc3b8SJoseph Chen 2371e9dc3b8SJoseph Chen if [ "${ARG_SIGN}" != "y" ]; then 2381e9dc3b8SJoseph Chen ${MKIMAGE} -f ${ITS_UBOOT} -E -p ${OFFS_DATA} ${ITB_UBOOT} -v ${ARG_VER_UBOOT} 2391e9dc3b8SJoseph Chen if [ "${ARG_SPL_NEW}" == "y" ]; then 2401e9dc3b8SJoseph Chen ./make.sh --spl ${ARG_INI_LOADER} 2411e9dc3b8SJoseph Chen echo "pack loader with new: spl/u-boot-spl.bin" 2421e9dc3b8SJoseph Chen else 2431e9dc3b8SJoseph Chen ./make.sh loader ${ARG_INI_LOADER} 2441e9dc3b8SJoseph Chen fi 2451e9dc3b8SJoseph Chen else 2461e9dc3b8SJoseph Chen check_rsa_keys 2471e9dc3b8SJoseph Chen 2481e9dc3b8SJoseph Chen if ! grep -q '^CONFIG_SPL_FIT_SIGNATURE=y' .config ; then 2491e9dc3b8SJoseph Chen echo "ERROR: CONFIG_SPL_FIT_SIGNATURE is disabled" 2501e9dc3b8SJoseph Chen exit 1 2511e9dc3b8SJoseph Chen fi 2521e9dc3b8SJoseph Chen 2531e9dc3b8SJoseph Chen # rollback-index 2541e9dc3b8SJoseph Chen if grep -q '^CONFIG_SPL_FIT_ROLLBACK_PROTECT=y' .config ; then 2551e9dc3b8SJoseph Chen ARG_SPL_ROLLBACK_PROTECT="y" 2561e9dc3b8SJoseph Chen if [ -z ${ARG_ROLLBACK_IDX_UBOOT} ]; then 2571e9dc3b8SJoseph Chen echo "ERROR: No arg \"--rollback-index-uboot <n>\"" 2581e9dc3b8SJoseph Chen exit 1 2591e9dc3b8SJoseph Chen fi 2601e9dc3b8SJoseph Chen fi 2611e9dc3b8SJoseph Chen 2621e9dc3b8SJoseph Chen if [ "${ARG_SPL_ROLLBACK_PROTECT}" == "y" ]; then 2631e9dc3b8SJoseph Chen VERSION=`grep 'rollback-index' ${ITS_UBOOT} | awk -F '=' '{ printf $2 }' | tr -d ' '` 2641e9dc3b8SJoseph Chen sed -i "s/rollback-index = ${VERSION}/rollback-index = <${ARG_ROLLBACK_IDX_UBOOT}>;/g" ${ITS_UBOOT} 2651e9dc3b8SJoseph Chen fi 2661e9dc3b8SJoseph Chen 2671e9dc3b8SJoseph Chen # Generally, boot.img is signed before uboot.img, so the ras key can be found 2681e9dc3b8SJoseph Chen # in u-boot.dtb. If not found, let's insert rsa key anyway. 2691e9dc3b8SJoseph Chen if ! fdtget -l ${UBOOT_DTB} /signature >/dev/null 2>&1 ; then 2701e9dc3b8SJoseph Chen ${MKIMAGE} -f ${ITS_UBOOT} -k ${KEY_DIR} -K ${UBOOT_DTB} -E -p ${OFFS_DATA} -r ${ITB_UBOOT} -v ${ARG_VER_UBOOT} 2711e9dc3b8SJoseph Chen echo "## Adding RSA public key into ${UBOOT_DTB}" 2721e9dc3b8SJoseph Chen fi 2731e9dc3b8SJoseph Chen 2741e9dc3b8SJoseph Chen # Pack 2751e9dc3b8SJoseph Chen ${MKIMAGE} -f ${ITS_UBOOT} -k ${KEY_DIR} -K ${SPL_DTB} -E -p ${OFFS_DATA} -r ${ITB_UBOOT} -v ${ARG_VER_UBOOT} 2761e9dc3b8SJoseph Chen mv ${SIG_BIN} ${SIG_UBOOT} 2771e9dc3b8SJoseph Chen 2781e9dc3b8SJoseph Chen # burn-key-hash 2791e9dc3b8SJoseph Chen if [ "${ARG_BURN_KEY_HASH}" == "y" ]; then 2801e9dc3b8SJoseph Chen if grep -q '^CONFIG_SPL_FIT_HW_CRYPTO=y' .config ; then 2811e9dc3b8SJoseph Chen fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} burn-key-hash 0x1 2821e9dc3b8SJoseph Chen else 2831e9dc3b8SJoseph Chen echo "ERROR: --burn-key-hash requires CONFIG_SPL_FIT_HW_CRYPTO=y" 2841e9dc3b8SJoseph Chen exit 1 2851e9dc3b8SJoseph Chen fi 2861e9dc3b8SJoseph Chen fi 2871e9dc3b8SJoseph Chen 2881e9dc3b8SJoseph Chen # rollback-index read back check 2891e9dc3b8SJoseph Chen if [ "${ARG_SPL_ROLLBACK_PROTECT}" == "y" ]; then 2901e9dc3b8SJoseph Chen VERSION=`fdtget -ti ${ITB_UBOOT} /configurations/conf rollback-index` 2911e9dc3b8SJoseph Chen if [ "${VERSION}" != "${ARG_ROLLBACK_IDX_UBOOT}" ]; then 2921e9dc3b8SJoseph Chen echo "ERROR: Failed to set rollback-index for ${ITB_UBOOT}"; 2931e9dc3b8SJoseph Chen exit 1 2941e9dc3b8SJoseph Chen fi 2951e9dc3b8SJoseph Chen fi 2961e9dc3b8SJoseph Chen 2971e9dc3b8SJoseph Chen # burn-key-hash read back check 2981e9dc3b8SJoseph Chen if [ "${ARG_BURN_KEY_HASH}" == "y" ]; then 2991e9dc3b8SJoseph Chen if [ "`fdtget -ti ${SPL_DTB} ${SIGNATURE_KEY_NODE} burn-key-hash`" != "1" ]; then 3001e9dc3b8SJoseph Chen echo "ERROR: Failed to set burn-key-hash for ${SPL_DTB}"; 3011e9dc3b8SJoseph Chen exit 1 3021e9dc3b8SJoseph Chen fi 3031e9dc3b8SJoseph Chen fi 3041e9dc3b8SJoseph Chen 3051e9dc3b8SJoseph Chen # host check signature 3061e9dc3b8SJoseph Chen if [ "${ARG_NO_CHECK}" != "y" ]; then 3071e9dc3b8SJoseph Chen if [ "${ARG_SPL_NEW}" == "y" ]; then 3081e9dc3b8SJoseph Chen ${CHECK_SIGN} -f ${ITB_UBOOT} -k ${SPL_DTB} -s 3091e9dc3b8SJoseph Chen else 3101e9dc3b8SJoseph Chen spl_file="../rkbin/"`sed -n "/FlashBoot=/s/FlashBoot=//p" ${ARG_INI_LOADER} |tr -d '\r'` 3111e9dc3b8SJoseph Chen offs=`fdtdump -s ${spl_file} | head -1 | awk -F ":" '{ print $2 }' | sed "s/ found fdt at offset //g" | tr -d " "` 3121e9dc3b8SJoseph Chen if [ -z ${offs} ]; then 3131e9dc3b8SJoseph Chen echo "ERROR: invalid ${spl_file} , unable to find fdt blob" 3141e9dc3b8SJoseph Chen fi 3151e9dc3b8SJoseph Chen offs=`printf %d ${offs} ` # hex -> dec 3161e9dc3b8SJoseph Chen dd if=${spl_file} of=spl/u-boot-spl-old.dtb bs=${offs} skip=1 >/dev/null 2>&1 3171e9dc3b8SJoseph Chen ${CHECK_SIGN} -f ${ITB_UBOOT} -k spl/u-boot-spl-old.dtb -s 3181e9dc3b8SJoseph Chen fi 3191e9dc3b8SJoseph Chen fi 3201e9dc3b8SJoseph Chen 3211e9dc3b8SJoseph Chen # minimize u-boot-spl.dtb: clear as 0 but not remove property. 3221e9dc3b8SJoseph Chen if grep -q '^CONFIG_SPL_FIT_HW_CRYPTO=y' .config ; then 3231e9dc3b8SJoseph Chen fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} rsa,r-squared 0x0 3241e9dc3b8SJoseph Chen if grep -q '^CONFIG_SPL_ROCKCHIP_CRYPTO_V1=y' .config ; then 3251e9dc3b8SJoseph Chen fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} rsa,np 0x0 3261e9dc3b8SJoseph Chen fdtput -r ${SPL_DTB} ${SIGNATURE_KEY_NODE}/hash@np 3271e9dc3b8SJoseph Chen else 3281e9dc3b8SJoseph Chen fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} rsa,c 0x0 3291e9dc3b8SJoseph Chen fdtput -r ${SPL_DTB} ${SIGNATURE_KEY_NODE}/hash@c 3301e9dc3b8SJoseph Chen fi 3311e9dc3b8SJoseph Chen else 3321e9dc3b8SJoseph Chen fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} rsa,c 0x0 3331e9dc3b8SJoseph Chen fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} rsa,np 0x0 3341e9dc3b8SJoseph Chen fdtput -tx ${SPL_DTB} ${SIGNATURE_KEY_NODE} rsa,exponent-BN 0x0 3351e9dc3b8SJoseph Chen fdtput -r ${SPL_DTB} ${SIGNATURE_KEY_NODE}/hash@c 3361e9dc3b8SJoseph Chen fdtput -r ${SPL_DTB} ${SIGNATURE_KEY_NODE}/hash@np 3371e9dc3b8SJoseph Chen fi 3381e9dc3b8SJoseph Chen 3391e9dc3b8SJoseph Chen # repack spl 3401e9dc3b8SJoseph Chen if [ "${ARG_SPL_NEW}" == "y" ]; then 3411e9dc3b8SJoseph Chen cat spl/u-boot-spl-nodtb.bin > spl/u-boot-spl.bin 3421e9dc3b8SJoseph Chen if ! grep -q '^CONFIG_SPL_SEPARATE_BSS=y' .config ; then 3431e9dc3b8SJoseph Chen cat spl/u-boot-spl-pad.bin >> spl/u-boot-spl.bin 3441e9dc3b8SJoseph Chen fi 3451e9dc3b8SJoseph Chen cat ${SPL_DTB} >> spl/u-boot-spl.bin 3461e9dc3b8SJoseph Chen 3471e9dc3b8SJoseph Chen ./make.sh --spl ${ARG_INI_LOADER} 3481e9dc3b8SJoseph Chen echo "## pack loader with new: spl/u-boot-spl.bin" 3491e9dc3b8SJoseph Chen else 3501e9dc3b8SJoseph Chen ./make.sh loader ${ARG_INI_LOADER} 3511e9dc3b8SJoseph Chen fi 3521e9dc3b8SJoseph Chen 3531e9dc3b8SJoseph Chen if [ "${ARG_BURN_KEY_HASH}" == "y" ]; then 3541e9dc3b8SJoseph Chen echo "## ${SPL_DTB}: burn-key-hash=1" 3551e9dc3b8SJoseph Chen fi 3561e9dc3b8SJoseph Chen fi 3571e9dc3b8SJoseph Chen 3581e9dc3b8SJoseph Chen rm -f u-boot.itb u-boot.img u-boot-dtb.img 3591e9dc3b8SJoseph Chen mv ${ITS_UBOOT} ${FIT_DIR} 3601e9dc3b8SJoseph Chen} 3611e9dc3b8SJoseph Chen 3621e9dc3b8SJoseph Chenfunction fit_gen_boot_itb() 3631e9dc3b8SJoseph Chen{ 3641e9dc3b8SJoseph Chen if [ ! -z ${ARG_BOOT_IMG} ]; then 3651e9dc3b8SJoseph Chen ${FIT_UNPACK} -f ${ARG_BOOT_IMG} -o ${FIT_DIR}/unpack 3661e9dc3b8SJoseph Chen ITS_BOOT="${FIT_DIR}/unpack/image.its" 3671e9dc3b8SJoseph Chen else 3681e9dc3b8SJoseph Chen compression=`awk -F"," '/COMPRESSION=/ { printf $1 }' ${ARG_INI_TRUST} | tr -d ' ' | cut -c 13-` 3691e9dc3b8SJoseph Chen if [ -z "${compression}" ]; then 3701e9dc3b8SJoseph Chen compression="none" 3711e9dc3b8SJoseph Chen fi 3721e9dc3b8SJoseph Chen ./arch/arm/mach-rockchip/make_fit_boot.sh -c ${compression} > ${ITS_BOOT} 3731e9dc3b8SJoseph Chen check_its ${ITS_BOOT} 3741e9dc3b8SJoseph Chen fi 3751e9dc3b8SJoseph Chen 3761e9dc3b8SJoseph Chen if [ "${ARG_SIGN}" != "y" ]; then 3771e9dc3b8SJoseph Chen ${MKIMAGE} -f ${ITS_BOOT} -E -p ${OFFS_DATA} ${ITB_BOOT} -v ${ARG_VER_BOOT} 3781e9dc3b8SJoseph Chen else 3791e9dc3b8SJoseph Chen check_rsa_keys 3801e9dc3b8SJoseph Chen 3811e9dc3b8SJoseph Chen if ! grep -q '^CONFIG_FIT_SIGNATURE=y' .config ; then 3821e9dc3b8SJoseph Chen echo "ERROR: CONFIG_FIT_SIGNATURE is disabled" 3831e9dc3b8SJoseph Chen exit 1 3841e9dc3b8SJoseph Chen fi 3851e9dc3b8SJoseph Chen 3861e9dc3b8SJoseph Chen if grep -q '^CONFIG_FIT_ROLLBACK_PROTECT=y' .config ; then 3871e9dc3b8SJoseph Chen ARG_ROLLBACK_PROTECT="y" 3881e9dc3b8SJoseph Chen if [ -z ${ARG_ROLLBACK_IDX_BOOT} ]; then 3891e9dc3b8SJoseph Chen echo "ERROR: No arg \"--rollback-index-boot <n>\"" 3901e9dc3b8SJoseph Chen exit 1 3911e9dc3b8SJoseph Chen fi 3921e9dc3b8SJoseph Chen fi 3931e9dc3b8SJoseph Chen 3941e9dc3b8SJoseph Chen # fixup 3951e9dc3b8SJoseph Chen COMMON_FILE=`sed -n "/_common.h/p" ${CHIP_FILE} | awk '{ print $1 }'` 3961e9dc3b8SJoseph Chen FDT_ADDR_R=`awk /fdt_addr_r/ ${COMMON_FILE} | awk -F '=' '{ print $2 }' | awk -F '\\' '{ print $1 }'` 3971e9dc3b8SJoseph Chen KERNEL_ADDR_R=`awk /kernel_addr_r/ ${COMMON_FILE} | awk -F '=' '{ print $2 }' | awk -F '\\' '{ print $1 }'` 3981e9dc3b8SJoseph Chen RMADISK_ADDR_R=`awk /ramdisk_addr_r/ ${COMMON_FILE} | awk -F '=' '{ print $2 }' | awk -F '\\' '{ print $1 }'` 399*a08b0b01SJoseph Chen sed -i "s/${FDT_ADDR_PLACEHOLDER}/${FDT_ADDR_R}/g" ${ITS_BOOT} 4001e9dc3b8SJoseph Chen sed -i "s/${KERNEL_ADDR_PLACEHOLDER}/${KERNEL_ADDR_R}/g" ${ITS_BOOT} 4011e9dc3b8SJoseph Chen sed -i "s/${RAMDISK_ADDR_PLACEHOLDER}/${RMADISK_ADDR_R}/g" ${ITS_BOOT} 4021e9dc3b8SJoseph Chen if grep -q '^CONFIG_ARM64=y' .config ; then 4031e9dc3b8SJoseph Chen sed -i 's/arch = "arm";/arch = "arm64";/g' ${ITS_BOOT} 4041e9dc3b8SJoseph Chen fi 4051e9dc3b8SJoseph Chen 4061e9dc3b8SJoseph Chen if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then 4071e9dc3b8SJoseph Chen VERSION=`grep 'rollback-index' ${ITS_BOOT} | awk -F '=' '{ printf $2 }' | tr -d ' '` 4081e9dc3b8SJoseph Chen sed -i "s/rollback-index = ${VERSION}/rollback-index = <${ARG_ROLLBACK_IDX_BOOT}>;/g" ${ITS_BOOT} 4091e9dc3b8SJoseph Chen fi 4101e9dc3b8SJoseph Chen 4111e9dc3b8SJoseph Chen ${MKIMAGE} -f ${ITS_BOOT} -k ${KEY_DIR} -K ${UBOOT_DTB} -E -p ${OFFS_DATA} -r ${ITB_BOOT} -v ${ARG_VER_BOOT} 4121e9dc3b8SJoseph Chen mv ${SIG_BIN} ${SIG_BOOT} 4131e9dc3b8SJoseph Chen 4141e9dc3b8SJoseph Chen # rollback-index read back check 4151e9dc3b8SJoseph Chen if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then 4161e9dc3b8SJoseph Chen VERSION=`fdtget -ti ${ITB_BOOT} /configurations/conf rollback-index` 4171e9dc3b8SJoseph Chen if [ "${VERSION}" != "${ARG_ROLLBACK_IDX_BOOT}" ]; then 4181e9dc3b8SJoseph Chen echo "ERROR: Failed to set rollback-index for ${ITB_BOOT}"; 4191e9dc3b8SJoseph Chen exit 1 4201e9dc3b8SJoseph Chen fi 4211e9dc3b8SJoseph Chen fi 4221e9dc3b8SJoseph Chen 4231e9dc3b8SJoseph Chen # host check signature 4241e9dc3b8SJoseph Chen if [ "${ARG_NO_CHECK}" != "y" ]; then 4251e9dc3b8SJoseph Chen ${CHECK_SIGN} -f ${ITB_BOOT} -k ${UBOOT_DTB} 4261e9dc3b8SJoseph Chen fi 4271e9dc3b8SJoseph Chen 4281e9dc3b8SJoseph Chen # minimize u-boot.dtb: clearn as 0 but not remove property. 4291e9dc3b8SJoseph Chen if grep -q '^CONFIG_FIT_HW_CRYPTO=y' .config ; then 4301e9dc3b8SJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,r-squared 0x0 4311e9dc3b8SJoseph Chen if grep -q '^CONFIG_ROCKCHIP_CRYPTO_V1=y' .config ; then 4321e9dc3b8SJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,np 0x0 4331e9dc3b8SJoseph Chen else 4341e9dc3b8SJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,c 0x0 4351e9dc3b8SJoseph Chen fi 4361e9dc3b8SJoseph Chen else 4371e9dc3b8SJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,c 0x0 4381e9dc3b8SJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,np 0x0 4391e9dc3b8SJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,exponent-BN 0x0 4401e9dc3b8SJoseph Chen fi 4411e9dc3b8SJoseph Chen fdtput -r ${UBOOT_DTB} ${SIGNATURE_KEY_NODE}/hash@c 4421e9dc3b8SJoseph Chen fdtput -r ${UBOOT_DTB} ${SIGNATURE_KEY_NODE}/hash@np 4431e9dc3b8SJoseph Chen fi 4441e9dc3b8SJoseph Chen 4451e9dc3b8SJoseph Chen mv ${ITS_BOOT} ${FIT_DIR} 4461e9dc3b8SJoseph Chen} 4471e9dc3b8SJoseph Chen 4481e9dc3b8SJoseph Chenfunction fit_gen_recovery_itb() 4491e9dc3b8SJoseph Chen{ 4501e9dc3b8SJoseph Chen if [ ! -z ${ARG_RECOVERY_IMG} ]; then 4511e9dc3b8SJoseph Chen ${FIT_UNPACK} -f ${ARG_RECOVERY_IMG} -o ${FIT_DIR}/unpack 4521e9dc3b8SJoseph Chen ITS_RECOVERY="${FIT_DIR}/unpack/image.its" 4531e9dc3b8SJoseph Chen else 4541e9dc3b8SJoseph Chen echo "ERROR: No recovery.img" 4551e9dc3b8SJoseph Chen exit 1 4561e9dc3b8SJoseph Chen fi 4571e9dc3b8SJoseph Chen 4581e9dc3b8SJoseph Chen if [ "${ARG_SIGN}" != "y" ]; then 4591e9dc3b8SJoseph Chen ${MKIMAGE} -f ${ITS_RECOVERY} -E -p ${OFFS_DATA} ${ITB_RECOVERY} -v ${ARG_VER_RECOVERY} 4601e9dc3b8SJoseph Chen else 4611e9dc3b8SJoseph Chen check_rsa_keys 4621e9dc3b8SJoseph Chen 4631e9dc3b8SJoseph Chen if ! grep -q '^CONFIG_FIT_SIGNATURE=y' .config ; then 4641e9dc3b8SJoseph Chen echo "ERROR: CONFIG_FIT_SIGNATURE is disabled" 4651e9dc3b8SJoseph Chen exit 1 4661e9dc3b8SJoseph Chen fi 4671e9dc3b8SJoseph Chen 4681e9dc3b8SJoseph Chen if grep -q '^CONFIG_FIT_ROLLBACK_PROTECT=y' .config ; then 4691e9dc3b8SJoseph Chen ARG_ROLLBACK_PROTECT="y" 4701e9dc3b8SJoseph Chen if [ -z ${ARG_ROLLBACK_IDX_RECOVERY} ]; then 4711e9dc3b8SJoseph Chen echo "ERROR: No arg \"--rollback-index-recovery <n>\"" 4721e9dc3b8SJoseph Chen exit 1 4731e9dc3b8SJoseph Chen fi 4741e9dc3b8SJoseph Chen fi 4751e9dc3b8SJoseph Chen 4761e9dc3b8SJoseph Chen # fixup 4771e9dc3b8SJoseph Chen COMMON_FILE=`sed -n "/_common.h/p" ${CHIP_FILE} | awk '{ print $1 }'` 4781e9dc3b8SJoseph Chen FDT_ADDR_R=`awk /fdt_addr_r/ ${COMMON_FILE} | awk -F '=' '{ print $2 }' | awk -F '\\' '{ print $1 }'` 4791e9dc3b8SJoseph Chen KERNEL_ADDR_R=`awk /kernel_addr_r/ ${COMMON_FILE} | awk -F '=' '{ print $2 }' | awk -F '\\' '{ print $1 }'` 4801e9dc3b8SJoseph Chen RMADISK_ADDR_R=`awk /ramdisk_addr_r/ ${COMMON_FILE} | awk -F '=' '{ print $2 }' | awk -F '\\' '{ print $1 }'` 4811e9dc3b8SJoseph Chen sed -i "s/${FDT_ADDR_PLACEHOLDER}/${FDT_ADDR_R}/g" ${ITS_RECOVERY} 4821e9dc3b8SJoseph Chen sed -i "s/${KERNEL_ADDR_PLACEHOLDER}/${KERNEL_ADDR_R}/g" ${ITS_RECOVERY} 4831e9dc3b8SJoseph Chen sed -i "s/${RAMDISK_ADDR_PLACEHOLDER}/${RMADISK_ADDR_R}/g" ${ITS_RECOVERY} 4841e9dc3b8SJoseph Chen if grep -q '^CONFIG_ARM64=y' .config ; then 4851e9dc3b8SJoseph Chen sed -i 's/arch = "arm";/arch = "arm64";/g' ${ITS_RECOVERY} 4861e9dc3b8SJoseph Chen fi 4871e9dc3b8SJoseph Chen 4881e9dc3b8SJoseph Chen if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then 4891e9dc3b8SJoseph Chen VERSION=`grep 'rollback-index' ${ITS_RECOVERY} | awk -F '=' '{ printf $2 }' | tr -d ' '` 4901e9dc3b8SJoseph Chen sed -i "s/rollback-index = ${VERSION}/rollback-index = <${ARG_ROLLBACK_IDX_RECOVERY}>;/g" ${ITS_RECOVERY} 4911e9dc3b8SJoseph Chen fi 4921e9dc3b8SJoseph Chen 4931e9dc3b8SJoseph Chen ${MKIMAGE} -f ${ITS_RECOVERY} -k ${KEY_DIR} -K ${UBOOT_DTB} -E -p ${OFFS_DATA} -r ${ITB_RECOVERY} -v ${ARG_VER_RECOVERY} 4941e9dc3b8SJoseph Chen mv ${SIG_BIN} ${SIG_RECOVERY} 4951e9dc3b8SJoseph Chen 4961e9dc3b8SJoseph Chen # rollback-index read back check 4971e9dc3b8SJoseph Chen if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then 4981e9dc3b8SJoseph Chen VERSION=`fdtget -ti ${ITB_RECOVERY} /configurations/conf rollback-index` 4991e9dc3b8SJoseph Chen if [ "${VERSION}" != "${ARG_ROLLBACK_IDX_RECOVERY}" ]; then 5001e9dc3b8SJoseph Chen echo "ERROR: Failed to set rollback-index for ${ITB_RECOVERY}"; 5011e9dc3b8SJoseph Chen exit 1 5021e9dc3b8SJoseph Chen fi 5031e9dc3b8SJoseph Chen fi 5041e9dc3b8SJoseph Chen 5051e9dc3b8SJoseph Chen # host check signature 5061e9dc3b8SJoseph Chen if [ "${ARG_NO_CHECK}" != "y" ]; then 5071e9dc3b8SJoseph Chen ${CHECK_SIGN} -f ${ITB_RECOVERY} -k ${UBOOT_DTB} 5081e9dc3b8SJoseph Chen fi 5091e9dc3b8SJoseph Chen 5101e9dc3b8SJoseph Chen # minimize u-boot.dtb: clearn as 0 but not remove property. 5111e9dc3b8SJoseph Chen if grep -q '^CONFIG_FIT_HW_CRYPTO=y' .config ; then 5121e9dc3b8SJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,r-squared 0x0 5131e9dc3b8SJoseph Chen if grep -q '^CONFIG_ROCKCHIP_CRYPTO_V1=y' .config ; then 5141e9dc3b8SJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,np 0x0 5151e9dc3b8SJoseph Chen else 5161e9dc3b8SJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,c 0x0 5171e9dc3b8SJoseph Chen fi 5181e9dc3b8SJoseph Chen else 5191e9dc3b8SJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,c 0x0 5201e9dc3b8SJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,np 0x0 5211e9dc3b8SJoseph Chen fdtput -tx ${UBOOT_DTB} ${SIGNATURE_KEY_NODE} rsa,exponent-BN 0x0 5221e9dc3b8SJoseph Chen fi 5231e9dc3b8SJoseph Chen fdtput -r ${UBOOT_DTB} ${SIGNATURE_KEY_NODE}/hash@c 5241e9dc3b8SJoseph Chen fdtput -r ${UBOOT_DTB} ${SIGNATURE_KEY_NODE}/hash@np 5251e9dc3b8SJoseph Chen fi 5261e9dc3b8SJoseph Chen 5271e9dc3b8SJoseph Chen mv ${ITS_RECOVERY} ${FIT_DIR} 5281e9dc3b8SJoseph Chen} 5291e9dc3b8SJoseph Chen 5301e9dc3b8SJoseph Chenfunction fit_gen_uboot_img() 5311e9dc3b8SJoseph Chen{ 5321e9dc3b8SJoseph Chen ITB=$1 5331e9dc3b8SJoseph Chen 5341e9dc3b8SJoseph Chen if [ -z ${ITB} ]; then 5351e9dc3b8SJoseph Chen ITB=${ITB_UBOOT} 5361e9dc3b8SJoseph Chen fi 5371e9dc3b8SJoseph Chen 5381e9dc3b8SJoseph Chen ITB_MAX_NUM=`sed -n "/SPL_FIT_IMAGE_MULTIPLE/p" .config | awk -F "=" '{ print $2 }'` 5391e9dc3b8SJoseph Chen ITB_MAX_KB=`sed -n "/SPL_FIT_IMAGE_KB/p" .config | awk -F "=" '{ print $2 }'` 5401e9dc3b8SJoseph Chen ITB_MAX_BS=$((ITB_MAX_KB*1024)) 5411e9dc3b8SJoseph Chen ITB_BS=`ls -l ${ITB} | awk '{ print $5 }'` 5421e9dc3b8SJoseph Chen 5431e9dc3b8SJoseph Chen if [ ${ITB_BS} -gt ${ITB_MAX_BS} ]; then 5441e9dc3b8SJoseph Chen echo "ERROR: pack ${IMG_UBOOT} failed! ${ITB} actual: ${ITB_BS} bytes, max limit: ${ITB_MAX_BS} bytes" 5451e9dc3b8SJoseph Chen exit 1 5461e9dc3b8SJoseph Chen fi 5471e9dc3b8SJoseph Chen 5481e9dc3b8SJoseph Chen rm -f ${IMG_UBOOT} 5491e9dc3b8SJoseph Chen for ((i = 0; i < ${ITB_MAX_NUM}; i++)); 5501e9dc3b8SJoseph Chen do 5511e9dc3b8SJoseph Chen cat ${ITB} >> ${IMG_UBOOT} 5521e9dc3b8SJoseph Chen truncate -s %${ITB_MAX_KB}K ${IMG_UBOOT} 5531e9dc3b8SJoseph Chen done 5541e9dc3b8SJoseph Chen} 5551e9dc3b8SJoseph Chen 5561e9dc3b8SJoseph Chenfunction fit_gen_boot_img() 5571e9dc3b8SJoseph Chen{ 5581e9dc3b8SJoseph Chen ITB=$1 5591e9dc3b8SJoseph Chen 5601e9dc3b8SJoseph Chen if [ -z ${ITB} ]; then 5611e9dc3b8SJoseph Chen ITB=${ITB_BOOT} 5621e9dc3b8SJoseph Chen fi 5631e9dc3b8SJoseph Chen 5641e9dc3b8SJoseph Chen if [ "${ITB}" != "${IMG_BOOT}" ]; then 5651e9dc3b8SJoseph Chen cp ${ITB} ${IMG_BOOT} -f 5661e9dc3b8SJoseph Chen fi 5671e9dc3b8SJoseph Chen} 5681e9dc3b8SJoseph Chen 5691e9dc3b8SJoseph Chenfunction fit_gen_recovery_img() 5701e9dc3b8SJoseph Chen{ 5711e9dc3b8SJoseph Chen ITB=$1 5721e9dc3b8SJoseph Chen 5731e9dc3b8SJoseph Chen if [ -z ${ITB} ]; then 5741e9dc3b8SJoseph Chen ITB=${ITB_RECOVERY} 5751e9dc3b8SJoseph Chen fi 5761e9dc3b8SJoseph Chen 5771e9dc3b8SJoseph Chen if [ "${ITB}" != "${IMG_RECOVERY}" ]; then 5781e9dc3b8SJoseph Chen cp ${ITB} ${IMG_RECOVERY} -f 5791e9dc3b8SJoseph Chen fi 5801e9dc3b8SJoseph Chen} 5811e9dc3b8SJoseph Chen 5821e9dc3b8SJoseph Chenfunction fit_gen_loader() 5831e9dc3b8SJoseph Chen{ 5841e9dc3b8SJoseph Chen if grep -Eq '^CONFIG_FIT_SIGNATURE=y' .config ; then 5851e9dc3b8SJoseph Chen ${RK_SIGN_TOOL} cc --chip ${ARG_CHIP: 2: 6} 5861e9dc3b8SJoseph Chen ${RK_SIGN_TOOL} lk --key ${RSA_PRI_KEY} --pubkey ${RSA_PUB_KEY} 5871e9dc3b8SJoseph Chen if ls *loader*.bin >/dev/null 2>&1 ; then 5881e9dc3b8SJoseph Chen ${RK_SIGN_TOOL} sl --loader *loader*.bin 5891e9dc3b8SJoseph Chen fi 5901e9dc3b8SJoseph Chen if ls *download*.bin >/dev/null 2>&1 ; then 5911e9dc3b8SJoseph Chen ${RK_SIGN_TOOL} sl --loader *download*.bin 5921e9dc3b8SJoseph Chen fi 5931e9dc3b8SJoseph Chen if ls *idblock*.img >/dev/null 2>&1 ; then 5941e9dc3b8SJoseph Chen ${RK_SIGN_TOOL} sb --idb *idblock*.img 5951e9dc3b8SJoseph Chen fi 5961e9dc3b8SJoseph Chen fi 5971e9dc3b8SJoseph Chen} 5981e9dc3b8SJoseph Chen 5991e9dc3b8SJoseph Chenfunction fit_msg_uboot() 6001e9dc3b8SJoseph Chen{ 6011e9dc3b8SJoseph Chen if [ "${ARG_SIGN}" != "y" ]; then 6021e9dc3b8SJoseph Chen MSG_SIGN="no-signed" 6031e9dc3b8SJoseph Chen else 6041e9dc3b8SJoseph Chen MSG_SIGN="signed" 6051e9dc3b8SJoseph Chen fi 6061e9dc3b8SJoseph Chen 6071e9dc3b8SJoseph Chen VERSION=`fdtget -ti ${ITB_UBOOT} / version` 6081e9dc3b8SJoseph Chen if [ "${VERSION}" != "" ]; then 6091e9dc3b8SJoseph Chen MSG_VER=", version=${VERSION}" 6101e9dc3b8SJoseph Chen fi 6111e9dc3b8SJoseph Chen 6121e9dc3b8SJoseph Chen if [ "${ARG_SPL_ROLLBACK_PROTECT}" == "y" ]; then 6131e9dc3b8SJoseph Chen echo "Image(${MSG_SIGN}${MSG_VER}, rollback-index=${ARG_ROLLBACK_IDX_UBOOT}): ${IMG_UBOOT} (with uboot, trust...) is ready" 6141e9dc3b8SJoseph Chen else 6151e9dc3b8SJoseph Chen echo "Image(${MSG_SIGN}${MSG_VER}): ${IMG_UBOOT} (FIT with uboot, trust...) is ready" 6161e9dc3b8SJoseph Chen fi 6171e9dc3b8SJoseph Chen} 6181e9dc3b8SJoseph Chen 6191e9dc3b8SJoseph Chenfunction fit_msg_boot() 6201e9dc3b8SJoseph Chen{ 6211e9dc3b8SJoseph Chen if [ -z "${ARG_BOOT_IMG}" ]; then 6221e9dc3b8SJoseph Chen return; 6231e9dc3b8SJoseph Chen fi 6241e9dc3b8SJoseph Chen 6251e9dc3b8SJoseph Chen if [ "${ARG_SIGN}" != "y" ]; then 6261e9dc3b8SJoseph Chen MSG_SIGN="no-signed" 6271e9dc3b8SJoseph Chen else 6281e9dc3b8SJoseph Chen MSG_SIGN="signed" 6291e9dc3b8SJoseph Chen fi 6301e9dc3b8SJoseph Chen 6311e9dc3b8SJoseph Chen VERSION=`fdtget -ti ${ITB_BOOT} / version` 6321e9dc3b8SJoseph Chen if [ "${VERSION}" != "" ]; then 6331e9dc3b8SJoseph Chen MSG_VER=", version=${VERSION}" 6341e9dc3b8SJoseph Chen fi 6351e9dc3b8SJoseph Chen 6361e9dc3b8SJoseph Chen if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then 6371e9dc3b8SJoseph Chen echo "Image(${MSG_SIGN}${MSG_VER}, rollback-index=${ARG_ROLLBACK_IDX_BOOT}): ${IMG_BOOT} is ready" 6381e9dc3b8SJoseph Chen else 6391e9dc3b8SJoseph Chen echo "Image(${MSG_SIGN}${MSG_VER}): ${IMG_BOOT} (FIT with kernel, fdt, resource...) is ready" 6401e9dc3b8SJoseph Chen fi 6411e9dc3b8SJoseph Chen} 6421e9dc3b8SJoseph Chen 6431e9dc3b8SJoseph Chenfunction fit_msg_recovery() 6441e9dc3b8SJoseph Chen{ 6451e9dc3b8SJoseph Chen if [ -z "${ARG_RECOVERY_IMG}" ]; then 6461e9dc3b8SJoseph Chen return; 6471e9dc3b8SJoseph Chen fi 6481e9dc3b8SJoseph Chen 6491e9dc3b8SJoseph Chen if [ "${ARG_SIGN}" != "y" ]; then 6501e9dc3b8SJoseph Chen MSG_SIGN="no-signed" 6511e9dc3b8SJoseph Chen else 6521e9dc3b8SJoseph Chen MSG_SIGN="signed" 6531e9dc3b8SJoseph Chen fi 6541e9dc3b8SJoseph Chen 6551e9dc3b8SJoseph Chen VERSION=`fdtget -ti ${ITB_RECOVERY} / version` 6561e9dc3b8SJoseph Chen if [ "${VERSION}" != "" ]; then 6571e9dc3b8SJoseph Chen MSG_VER=", version=${VERSION}" 6581e9dc3b8SJoseph Chen fi 6591e9dc3b8SJoseph Chen 6601e9dc3b8SJoseph Chen if [ "${ARG_ROLLBACK_PROTECT}" == "y" ]; then 6611e9dc3b8SJoseph Chen echo "Image(${MSG_SIGN}${MSG_VER}, rollback-index=${ARG_ROLLBACK_IDX_RECOVERY}): ${IMG_RECOVERY} is ready" 6621e9dc3b8SJoseph Chen else 6631e9dc3b8SJoseph Chen echo "Image(${MSG_SIGN}${MSG_VER}): ${IMG_RECOVERY} (FIT with kernel, fdt, resource...) is ready" 6641e9dc3b8SJoseph Chen fi 6651e9dc3b8SJoseph Chen} 6661e9dc3b8SJoseph Chen 6671e9dc3b8SJoseph Chenfunction fit_msg_loader() 6681e9dc3b8SJoseph Chen{ 6691e9dc3b8SJoseph Chen if ls *loader*.bin >/dev/null 2>&1 ; then 6701e9dc3b8SJoseph Chen LOADER=`ls *loader*.bin` 6711e9dc3b8SJoseph Chen fi 6721e9dc3b8SJoseph Chen 6731e9dc3b8SJoseph Chen if ls *idblock*.img >/dev/null 2>&1 ; then 6741e9dc3b8SJoseph Chen LOADER=`ls *idblock*.img` 6751e9dc3b8SJoseph Chen fi 6761e9dc3b8SJoseph Chen 6771e9dc3b8SJoseph Chen if grep -q '^CONFIG_FIT_SIGNATURE=y' .config ; then 6781e9dc3b8SJoseph Chen echo "Image(signed): ${LOADER} (with spl, ddr...) is ready" 6791e9dc3b8SJoseph Chen else 6801e9dc3b8SJoseph Chen echo "Image(no-signed): ${LOADER} (with spl, ddr...) is ready" 6811e9dc3b8SJoseph Chen fi 6821e9dc3b8SJoseph Chen} 6831e9dc3b8SJoseph Chen 6841e9dc3b8SJoseph Chenfunction fit_msg_u_boot_loader() 6851e9dc3b8SJoseph Chen{ 6861e9dc3b8SJoseph Chen if ls *loader*.bin >/dev/null 2>&1 ; then 6871e9dc3b8SJoseph Chen LOADER=`ls *loader*.bin` 6881e9dc3b8SJoseph Chen fi 6891e9dc3b8SJoseph Chen 6901e9dc3b8SJoseph Chen if ls *idblock*.img >/dev/null 2>&1 ; then 6911e9dc3b8SJoseph Chen LOADER=`ls *idblock*.img` 6921e9dc3b8SJoseph Chen fi 6931e9dc3b8SJoseph Chen 6941e9dc3b8SJoseph Chen if grep -q '^CONFIG_FIT_SIGNATURE=y' .config ; then 6951e9dc3b8SJoseph Chen echo "Image(signed): ${LOADER} (with u-boot, ddr...) is ready" 6961e9dc3b8SJoseph Chen else 6971e9dc3b8SJoseph Chen echo "Image(no-signed): ${LOADER} (with u-boot, ddr...) is ready" 6981e9dc3b8SJoseph Chen fi 6991e9dc3b8SJoseph Chen} 700