1*4882a593Smuzhiyun#!/bin/bash 2*4882a593Smuzhiyun# 3*4882a593Smuzhiyun# Copyright (c) 2020 Rockchip Electronics Co., Ltd 4*4882a593Smuzhiyun# 5*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0 6*4882a593Smuzhiyun# 7*4882a593Smuzhiyun 8*4882a593Smuzhiyunsrctree=$PWD 9*4882a593Smuzhiyun 10*4882a593Smuzhiyunfunction help() 11*4882a593Smuzhiyun{ 12*4882a593Smuzhiyun echo 13*4882a593Smuzhiyun echo "Description:" 14*4882a593Smuzhiyun echo " Process args for all rockchip fit generator script, and providing variables for it's caller" 15*4882a593Smuzhiyun echo 16*4882a593Smuzhiyun echo "Usage:" 17*4882a593Smuzhiyun echo " $0 [args]" 18*4882a593Smuzhiyun echo 19*4882a593Smuzhiyun echo "[args]:" 20*4882a593Smuzhiyun echo "--------------------------------------------------------------------------------------------" 21*4882a593Smuzhiyun echo " arg type output variable description" 22*4882a593Smuzhiyun echo "--------------------------------------------------------------------------------------------" 23*4882a593Smuzhiyun echo " -c [comp] ==> <string> COMPRESSION set compression: \"none\", \"gzip\"" 24*4882a593Smuzhiyun echo " -m0 [offset] ==> <hex> MCU0_LOAD_ADDR set mcu0.bin load address" 25*4882a593Smuzhiyun echo " -m1 [offset] ==> <hex> MCU1_LOAD_ADDR set mcu1.bin load address" 26*4882a593Smuzhiyun echo " -m2 [offset] ==> <hex> MCU2_LOAD_ADDR set mcu2.bin load address" 27*4882a593Smuzhiyun echo " -m3 [offset] ==> <hex> MCU3_LOAD_ADDR set mcu3.bin load address" 28*4882a593Smuzhiyun echo " -m4 [offset] ==> <hex> MCU4_LOAD_ADDR set mcu4.bin load address" 29*4882a593Smuzhiyun echo " -l0 [offset] ==> <hex> LOAD0_LOAD_ADDR set load0.bin load address" 30*4882a593Smuzhiyun echo " -l1 [offset] ==> <hex> LOAD1_LOAD_ADDR set load1.bin load address" 31*4882a593Smuzhiyun echo " -l2 [offset] ==> <hex> LOAD2_LOAD_ADDR set load2.bin load address" 32*4882a593Smuzhiyun echo " -l3 [offset] ==> <hex> LOAD3_LOAD_ADDR set load3.bin load address" 33*4882a593Smuzhiyun echo " -l4 [offset] ==> <hex> LOAD4_LOAD_ADDR set load4.bin load address" 34*4882a593Smuzhiyun echo " -t [offset] ==> <hex> TEE_LOAD_ADDR set tee.bin load address" 35*4882a593Smuzhiyun echo " (none) ==> <hex> UBOOT_LOAD_ADDR set U-Boot load address" 36*4882a593Smuzhiyun echo " (none) ==> <string> ARCH set arch: \"arm\", \"arm64\"" 37*4882a593Smuzhiyun echo 38*4882a593Smuzhiyun} 39*4882a593Smuzhiyun 40*4882a593Smuzhiyunif [ $# -eq 1 ]; then 41*4882a593Smuzhiyun # default 42*4882a593Smuzhiyun TEE_OFFSET=0x08400000 43*4882a593Smuzhiyunelse 44*4882a593Smuzhiyun # args 45*4882a593Smuzhiyun while [ $# -gt 0 ]; do 46*4882a593Smuzhiyun case $1 in 47*4882a593Smuzhiyun --help|-help|help|--h|-h) 48*4882a593Smuzhiyun help 49*4882a593Smuzhiyun exit 50*4882a593Smuzhiyun ;; 51*4882a593Smuzhiyun -c) 52*4882a593Smuzhiyun COMPRESSION=$2 53*4882a593Smuzhiyun shift 2 54*4882a593Smuzhiyun ;; 55*4882a593Smuzhiyun -m0) 56*4882a593Smuzhiyun MCU0_OFFSET=$2 57*4882a593Smuzhiyun shift 2 58*4882a593Smuzhiyun ;; 59*4882a593Smuzhiyun -m1) 60*4882a593Smuzhiyun MCU1_OFFSET=$2 61*4882a593Smuzhiyun shift 2 62*4882a593Smuzhiyun ;; 63*4882a593Smuzhiyun -m2) 64*4882a593Smuzhiyun MCU2_OFFSET=$2 65*4882a593Smuzhiyun shift 2 66*4882a593Smuzhiyun ;; 67*4882a593Smuzhiyun -m3) 68*4882a593Smuzhiyun MCU3_OFFSET=$2 69*4882a593Smuzhiyun shift 2 70*4882a593Smuzhiyun ;; 71*4882a593Smuzhiyun -m4) 72*4882a593Smuzhiyun MCU4_OFFSET=$2 73*4882a593Smuzhiyun shift 2 74*4882a593Smuzhiyun ;; 75*4882a593Smuzhiyun -l0) 76*4882a593Smuzhiyun LOAD0_OFFSET=$2 77*4882a593Smuzhiyun shift 2 78*4882a593Smuzhiyun ;; 79*4882a593Smuzhiyun -l1) 80*4882a593Smuzhiyun LOAD1_OFFSET=$2 81*4882a593Smuzhiyun shift 2 82*4882a593Smuzhiyun ;; 83*4882a593Smuzhiyun -l2) 84*4882a593Smuzhiyun LOAD2_OFFSET=$2 85*4882a593Smuzhiyun shift 2 86*4882a593Smuzhiyun ;; 87*4882a593Smuzhiyun -l3) 88*4882a593Smuzhiyun LOAD3_OFFSET=$2 89*4882a593Smuzhiyun shift 2 90*4882a593Smuzhiyun ;; 91*4882a593Smuzhiyun -l4) 92*4882a593Smuzhiyun LOAD4_OFFSET=$2 93*4882a593Smuzhiyun shift 2 94*4882a593Smuzhiyun ;; 95*4882a593Smuzhiyun -t) 96*4882a593Smuzhiyun TEE_OFFSET=$2 97*4882a593Smuzhiyun shift 2 98*4882a593Smuzhiyun ;; 99*4882a593Smuzhiyun *) 100*4882a593Smuzhiyun echo "Invalid arg: $1" 101*4882a593Smuzhiyun help 102*4882a593Smuzhiyun exit 1 103*4882a593Smuzhiyun ;; 104*4882a593Smuzhiyun esac 105*4882a593Smuzhiyun done 106*4882a593Smuzhiyunfi 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun# Base 109*4882a593SmuzhiyunDARM_BASE=`sed -n "/CONFIG_SYS_SDRAM_BASE=/s/CONFIG_SYS_SDRAM_BASE=//p" ${srctree}/include/autoconf.mk|tr -d '\r'` 110*4882a593Smuzhiyunif ! grep -q '^CONFIG_FIT_OMIT_UBOOT=y' .config ; then 111*4882a593Smuzhiyun UBOOT_LOAD_ADDR=`sed -n "/CONFIG_SYS_TEXT_BASE=/s/CONFIG_SYS_TEXT_BASE=//p" ${srctree}/include/autoconf.mk|tr -d '\r'` 112*4882a593Smuzhiyunfi 113*4882a593Smuzhiyun 114*4882a593Smuzhiyun# ARCH 115*4882a593SmuzhiyunU_ARCH="arm" 116*4882a593Smuzhiyunif grep -q '^CONFIG_ARM64=y' .config ; then 117*4882a593Smuzhiyun ARCH="arm64" 118*4882a593Smuzhiyun U_ARCH="arm64" 119*4882a593Smuzhiyunelif grep -q '^CONFIG_ARM64_BOOT_AARCH32=y' .config ; then 120*4882a593Smuzhiyun ARCH="arm64" 121*4882a593Smuzhiyunelse 122*4882a593Smuzhiyun ARCH="arm" 123*4882a593Smuzhiyunfi 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun# tee 126*4882a593Smuzhiyunif [ ! -z "${TEE_OFFSET}" ]; then 127*4882a593Smuzhiyun TEE_LOAD_ADDR="0x"$(echo "obase=16;$((DARM_BASE+TEE_OFFSET))"|bc) 128*4882a593Smuzhiyunfi 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun# mcu 131*4882a593Smuzhiyunif [ ! -z "${MCU0_OFFSET}" ]; then 132*4882a593Smuzhiyun MCU0_LOAD_ADDR="0x"$(echo "obase=16;$((DARM_BASE+$MCU0_OFFSET))"|bc) 133*4882a593Smuzhiyunfi 134*4882a593Smuzhiyunif [ ! -z "${MCU1_OFFSET}" ]; then 135*4882a593Smuzhiyun MCU1_LOAD_ADDR="0x"$(echo "obase=16;$((DARM_BASE+$MCU1_OFFSET))"|bc) 136*4882a593Smuzhiyunfi 137*4882a593Smuzhiyunif [ ! -z "${MCU2_OFFSET}" ]; then 138*4882a593Smuzhiyun MCU2_LOAD_ADDR="0x"$(echo "obase=16;$((DARM_BASE+$MCU2_OFFSET))"|bc) 139*4882a593Smuzhiyunfi 140*4882a593Smuzhiyunif [ ! -z "${MCU3_OFFSET}" ]; then 141*4882a593Smuzhiyun MCU3_LOAD_ADDR="0x"$(echo "obase=16;$((DARM_BASE+$MCU3_OFFSET))"|bc) 142*4882a593Smuzhiyunfi 143*4882a593Smuzhiyunif [ ! -z "${MCU4_OFFSET}" ]; then 144*4882a593Smuzhiyun MCU4_LOAD_ADDR="0x"$(echo "obase=16;$$((DARM_BASE+$MCU4_OFFSET))"|bc) 145*4882a593Smuzhiyunfi 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun# loadables 148*4882a593Smuzhiyunif [ ! -z "${LOAD0_OFFSET}" ]; then 149*4882a593Smuzhiyun LOAD0_LOAD_ADDR="0x"$(echo "obase=16;$((DARM_BASE+$LOAD0_OFFSET))"|bc) 150*4882a593Smuzhiyunfi 151*4882a593Smuzhiyunif [ ! -z "${LOAD1_OFFSET}" ]; then 152*4882a593Smuzhiyun LOAD1_LOAD_ADDR="0x"$(echo "obase=16;$((DARM_BASE+$LOAD1_OFFSET))"|bc) 153*4882a593Smuzhiyunfi 154*4882a593Smuzhiyunif [ ! -z "${LOAD2_OFFSET}" ]; then 155*4882a593Smuzhiyun LOAD2_LOAD_ADDR="0x"$(echo "obase=16;$((DARM_BASE+$LOAD2_OFFSET))"|bc) 156*4882a593Smuzhiyunfi 157*4882a593Smuzhiyunif [ ! -z "${LOAD3_OFFSET}" ]; then 158*4882a593Smuzhiyun LOAD3_LOAD_ADDR="0x"$(echo "obase=16;$((DARM_BASE+$LOAD3_OFFSET))"|bc) 159*4882a593Smuzhiyunfi 160*4882a593Smuzhiyunif [ ! -z "${LOAD4_OFFSET}" ]; then 161*4882a593Smuzhiyun LOAD4_LOAD_ADDR="0x"$(echo "obase=16;$((DARM_BASE+$LOAD4_OFFSET))"|bc) 162*4882a593Smuzhiyunfi 163*4882a593Smuzhiyun# echo " ## $DARM_BASE, $UBOOT_LOAD_ADDR, $TEE_LOAD_ADDR, $MCU0_LOAD_ADDR, $MCU1_LOAD_ADDR, $MCU2_LOAD_ADDR, $MCU3_LOAD_ADDR, $MCU4_LOAD_ADDR" 164