1bc77fafeSJoseph Chen#!/bin/bash 2bc77fafeSJoseph Chen# 3bc77fafeSJoseph Chen# Copyright (c) 2020 Rockchip Electronics Co., Ltd 4bc77fafeSJoseph Chen# 5bc77fafeSJoseph Chen# SPDX-License-Identifier: GPL-2.0 6bc77fafeSJoseph Chen# 7bc77fafeSJoseph Chen 8bc77fafeSJoseph Chensrctree=$PWD 9bc77fafeSJoseph Chen 10bc77fafeSJoseph Chenfunction help() 11bc77fafeSJoseph Chen{ 12bc77fafeSJoseph Chen echo 13bc77fafeSJoseph Chen echo "Description:" 14bc77fafeSJoseph Chen echo " Process args for all rockchip fit generator script, and providing variables for it's caller" 15bc77fafeSJoseph Chen echo 16bc77fafeSJoseph Chen echo "Usage:" 17bc77fafeSJoseph Chen echo " $0 [args]" 18bc77fafeSJoseph Chen echo 19bc77fafeSJoseph Chen echo "[args]:" 20bc77fafeSJoseph Chen echo "--------------------------------------------------------------------------------------------" 21bc77fafeSJoseph Chen echo " arg type output variable description" 22bc77fafeSJoseph Chen echo "--------------------------------------------------------------------------------------------" 23bc77fafeSJoseph Chen echo " -c [comp] ==> <string> COMPRESSION set compression: \"none\", \"gzip\"" 24bc77fafeSJoseph Chen echo " -m0 [offset] ==> <hex> MCU0_LOAD_ADDR set mcu0.bin load address" 25bc77fafeSJoseph Chen echo " -m1 [offset] ==> <hex> MCU1_LOAD_ADDR set mcu1.bin load address" 26bc77fafeSJoseph Chen echo " -m2 [offset] ==> <hex> MCU2_LOAD_ADDR set mcu2.bin load address" 27bc77fafeSJoseph Chen echo " -m3 [offset] ==> <hex> MCU3_LOAD_ADDR set mcu3.bin load address" 28bc77fafeSJoseph Chen echo " -m4 [offset] ==> <hex> MCU4_LOAD_ADDR set mcu4.bin load address" 29bc77fafeSJoseph Chen echo " -l0 [offset] ==> <hex> LOAD0_LOAD_ADDR set load0.bin load address" 30bc77fafeSJoseph Chen echo " -l1 [offset] ==> <hex> LOAD1_LOAD_ADDR set load1.bin load address" 31bc77fafeSJoseph Chen echo " -l2 [offset] ==> <hex> LOAD2_LOAD_ADDR set load2.bin load address" 32bc77fafeSJoseph Chen echo " -l3 [offset] ==> <hex> LOAD3_LOAD_ADDR set load3.bin load address" 33bc77fafeSJoseph Chen echo " -l4 [offset] ==> <hex> LOAD4_LOAD_ADDR set load4.bin load address" 34bc77fafeSJoseph Chen echo " -t [offset] ==> <hex> TEE_LOAD_ADDR set tee.bin load address" 35bc77fafeSJoseph Chen echo " (none) ==> <hex> UBOOT_LOAD_ADDR set U-Boot load address" 36bc77fafeSJoseph Chen echo " (none) ==> <string> ARCH set arch: \"arm\", \"arm64\"" 37bc77fafeSJoseph Chen echo 38bc77fafeSJoseph Chen} 39bc77fafeSJoseph Chen 40e034a1b9SJoseph ChenDRAM_BASE=`sed -n "/CONFIG_SYS_SDRAM_BASE=/s/CONFIG_SYS_SDRAM_BASE=//p" ${srctree}/include/autoconf.mk|tr -d '\r'` 41e034a1b9SJoseph Chen 42bc77fafeSJoseph Chenif [ $# -eq 1 ]; then 43bc77fafeSJoseph Chen # default 44bc77fafeSJoseph Chen TEE_OFFSET=0x08400000 45*e2c3dedbSJoseph Chen TEE_LOAD_ADDR="0x"$(echo "obase=16;$((DRAM_BASE+TEE_OFFSET))"|bc) 46bc77fafeSJoseph Chenelse 47bc77fafeSJoseph Chen # args 48bc77fafeSJoseph Chen while [ $# -gt 0 ]; do 49bc77fafeSJoseph Chen case $1 in 50bc77fafeSJoseph Chen --help|-help|help|--h|-h) 51bc77fafeSJoseph Chen help 52bc77fafeSJoseph Chen exit 53bc77fafeSJoseph Chen ;; 54bc77fafeSJoseph Chen -c) 55bc77fafeSJoseph Chen COMPRESSION=$2 56bc77fafeSJoseph Chen shift 2 57bc77fafeSJoseph Chen ;; 5824ea65e6SJoseph Chen -i0) 59e034a1b9SJoseph Chen INIT0_LOAD_ADDR=$2 6024ea65e6SJoseph Chen shift 2 6124ea65e6SJoseph Chen ;; 62bc77fafeSJoseph Chen -m0) 63e034a1b9SJoseph Chen MCU0_LOAD_ADDR=$2 64bc77fafeSJoseph Chen shift 2 65bc77fafeSJoseph Chen ;; 66bc77fafeSJoseph Chen -m1) 67e034a1b9SJoseph Chen MCU1_LOAD_ADDR=$2 68bc77fafeSJoseph Chen shift 2 69bc77fafeSJoseph Chen ;; 70bc77fafeSJoseph Chen -m2) 71e034a1b9SJoseph Chen MCU2_LOAD_ADDR=$2 72bc77fafeSJoseph Chen shift 2 73bc77fafeSJoseph Chen ;; 74bc77fafeSJoseph Chen -m3) 75e034a1b9SJoseph Chen MCU3_LOAD_ADDR=$2 76bc77fafeSJoseph Chen shift 2 77bc77fafeSJoseph Chen ;; 78bc77fafeSJoseph Chen -m4) 79e034a1b9SJoseph Chen MCU4_LOAD_ADDR=$2 80bc77fafeSJoseph Chen shift 2 81bc77fafeSJoseph Chen ;; 82bc77fafeSJoseph Chen -l0) 83e034a1b9SJoseph Chen LOAD0_LOAD_ADDR=$2 84bc77fafeSJoseph Chen shift 2 85bc77fafeSJoseph Chen ;; 86bc77fafeSJoseph Chen -l1) 87e034a1b9SJoseph Chen LOAD1_LOAD_ADDR=$2 88bc77fafeSJoseph Chen shift 2 89bc77fafeSJoseph Chen ;; 90bc77fafeSJoseph Chen -l2) 91e034a1b9SJoseph Chen LOAD2_LOAD_ADDR=$2 92bc77fafeSJoseph Chen shift 2 93bc77fafeSJoseph Chen ;; 94bc77fafeSJoseph Chen -l3) 95e034a1b9SJoseph Chen LOAD3_LOAD_ADDR=$2 96bc77fafeSJoseph Chen shift 2 97bc77fafeSJoseph Chen ;; 98bc77fafeSJoseph Chen -l4) 99e034a1b9SJoseph Chen LOAD4_LOAD_ADDR=$2 100bc77fafeSJoseph Chen shift 2 101bc77fafeSJoseph Chen ;; 102bc77fafeSJoseph Chen -t) 103*e2c3dedbSJoseph Chen TEE_LOAD_ADDR=$2 104*e2c3dedbSJoseph Chen # Compatible leagcy: Offset 105*e2c3dedbSJoseph Chen if ((TEE_LOAD_ADDR < DRAM_BASE)); then 106*e2c3dedbSJoseph Chen TEE_LOAD_ADDR="0x"$(echo "obase=16;$((DRAM_BASE+$2))"|bc) 107*e2c3dedbSJoseph Chen fi 108bc77fafeSJoseph Chen shift 2 109bc77fafeSJoseph Chen ;; 110bc77fafeSJoseph Chen *) 111bc77fafeSJoseph Chen echo "Invalid arg: $1" 112bc77fafeSJoseph Chen help 113bc77fafeSJoseph Chen exit 1 114bc77fafeSJoseph Chen ;; 115bc77fafeSJoseph Chen esac 116bc77fafeSJoseph Chen done 117bc77fafeSJoseph Chenfi 118bc77fafeSJoseph Chen 119999755ecSJoseph Chenif ! grep -q '^CONFIG_FIT_OMIT_UBOOT=y' .config ; then 120bc77fafeSJoseph Chen UBOOT_LOAD_ADDR=`sed -n "/CONFIG_SYS_TEXT_BASE=/s/CONFIG_SYS_TEXT_BASE=//p" ${srctree}/include/autoconf.mk|tr -d '\r'` 121999755ecSJoseph Chenfi 122990e82c1SJoseph Chen 123990e82c1SJoseph Chen# ARCH 124990e82c1SJoseph ChenU_ARCH="arm" 125bc77fafeSJoseph Chenif grep -q '^CONFIG_ARM64=y' .config ; then 126bc77fafeSJoseph Chen ARCH="arm64" 127990e82c1SJoseph Chen U_ARCH="arm64" 128990e82c1SJoseph Chenelif grep -q '^CONFIG_ARM64_BOOT_AARCH32=y' .config ; then 129990e82c1SJoseph Chen ARCH="arm64" 130bc77fafeSJoseph Chenelse 131bc77fafeSJoseph Chen ARCH="arm" 132bc77fafeSJoseph Chenfi 133