blob: bb4874294e97bebe416e4d5990f4c9e553569aee [file] [log] [blame]
xiaobo gue6c46862018-01-10 18:58:09 +08001#!/bin/bash
2
3
4# these soc use old bl31 code, others use new one
5declare -a BL31_OLD_VER_SOC_LIST=("gxb" "gxtvbb" "gxl" "txl")
benlong.zhou8ecb5ca2023-01-28 19:32:15 +08006declare -a BL31_VER2_7_SOC_LIST=("t3x" "a4")
Meng yub8b0ebb2023-05-16 15:59:18 +08007declare BL31_V2_7_SRC_FOLDER="bl31/bl31_2.7/src"
8declare BL31_V1_3_SRC_FOLDER="bl31/bl31_1.3/src"
9declare BL31_V1_0_SRC_FOLDER="bl31/bl31_1.0/src"
10declare BL31_V2_7_BIN_FOLDER="bl31/bl31_2.7/bin"
11declare BL31_V1_3_BIN_FOLDER="bl31/bl31_1.3/bin"
12declare BL31_V1_0_BIN_FOLDER="bl31/bl31_1.0/bin"
xiaobo gue6c46862018-01-10 18:58:09 +080013
xiaobo gue6c46862018-01-10 18:58:09 +080014function build_bl31() {
15 echo -n "Build bl31...Please wait... "
16 # $1: src_folder, $2: bin_folder, $3: soc
xiaobo gu3ce64072018-03-06 17:20:44 +080017 local target="$1/bl31.bin"
18 local target2="$1/bl31.img"
xiaobo gue6c46862018-01-10 18:58:09 +080019 cd $1
20 export CROSS_COMPILE=${AARCH64_TOOL_CHAIN}
21 CONFIG_SPD="opteed"
22 #CONFIG_SPD="none"
23 local soc=$3
changqing.gao190a6832019-02-14 12:49:27 +080024 local bl2z_plat
xiaobo gu3ce64072018-03-06 17:20:44 +080025 if [ "$soc" == "gxtvbb" ] || [ "$soc" == "gxb" ]; then
xiaobo gue6c46862018-01-10 18:58:09 +080026 soc="gxbb"
changqing.gao190a6832019-02-14 12:49:27 +080027 bl2z_plat="txl"
xiaobo gu3ce64072018-03-06 17:20:44 +080028 elif [ "$soc" == "txl" ]; then
xiaobo gue6c46862018-01-10 18:58:09 +080029 soc="gxl"
changqing.gao190a6832019-02-14 12:49:27 +080030 bl2z_plat="txl"
31 elif [ "$soc" == "gxl" ]; then
32 soc="gxl"
33 bl2z_plat="gxl"
xiaobo gue6c46862018-01-10 18:58:09 +080034 fi
35 #make PLAT=${soc} SPD=${CONFIG_SPD} realclean &> /dev/null
36 #make PLAT=${soc} SPD=${CONFIG_SPD} V=1 all &> /dev/null
changqing.gao190a6832019-02-14 12:49:27 +080037 /bin/bash mk $soc $bl2z_plat
xiaobo gue6c46862018-01-10 18:58:09 +080038 if [ $? != 0 ]; then
39 cd ${MAIN_FOLDER}
40 echo "Error: Build bl31 failed... abort"
41 exit -1
42 fi
43 cd ${MAIN_FOLDER}
xiaobo gue6c46862018-01-10 18:58:09 +080044 cp ${target} $2 -f
45 cp ${target2} $2 -f
46 echo "done"
47 return
48}
49
50function build_bl31_v1_3() {
51 echo -n "Build bl31 v1.3...Please wait... "
52 # $1: src_folder, $2: bin_folder, $3: soc
xiaobo gu3ce64072018-03-06 17:20:44 +080053 local target="$1/bl31.bin"
54 local target2="$1/bl31.img"
xiaobo gue6c46862018-01-10 18:58:09 +080055 cd $1
56 export CROSS_COMPILE=${AARCH64_TOOL_CHAIN}
57 #sh mk $3 &> /dev/null
xiaobo gu3ce64072018-03-06 17:20:44 +080058 local soc=$3
59 if [ "$soc" == "txhd" ]; then
60 soc="axg"
61 fi
Bo Lv25cb1972020-11-01 08:55:44 -050062 if [ "$soc" == "t5d" ]; then
63 soc="t5"
64 fi
xiaobo gue6c46862018-01-10 18:58:09 +080065 /bin/bash mk $soc
66 if [ $? != 0 ]; then
67 cd ${MAIN_FOLDER}
68 echo "Error: Build bl31 failed... abort"
69 exit -1
70 fi
71 cd ${MAIN_FOLDER}
xiaobo gue6c46862018-01-10 18:58:09 +080072 cp ${target} $2 -f
73 cp ${target2} $2 -f
74 echo "done"
75 return
76}
77
Meng yue91d80d2023-03-08 10:26:21 +080078function build_bl31_v2_7() {
79 echo -n "Build bl31 v2.7...Please wait... "
80 # $1: src_folder, $2: bin_folder, $3: soc
81 local target="$1/bl31.bin"
82 local target2="$1/bl31.img"
83 cd $1
84 export CROSS_COMPILE=${AARCH64_TOOL_CHAIN}
85 #sh mk $3 &> /dev/null
86 local soc=$3
Meng yue91d80d2023-03-08 10:26:21 +080087 /bin/bash mk $soc
88 if [ $? != 0 ]; then
89 cd ${MAIN_FOLDER}
90 echo "Error: Build bl31 failed... abort"
91 exit -1
92 fi
93 cd ${MAIN_FOLDER}
94 cp ${target} $2 -f
95 cp ${target2} $2 -f
96 echo "done"
97 return
98}
99
xiaobo gue6c46862018-01-10 18:58:09 +0800100# check use which bl31 build script
101function check_bl31_ver() {
102 # $1: soc
wenbo.wang8aa6cc52023-04-20 17:27:59 +0800103 # return 1: use bl31 v1.3
Wenbo Wang74779f82023-04-20 19:20:14 -0700104 # return 0: use bl31 v1.0
Meng yue91d80d2023-03-08 10:26:21 +0800105 # return 2: use bl31 v2.7
Wenbo Wang74779f82023-04-20 19:20:14 -0700106 local -i ver=1
xiaobo gue6c46862018-01-10 18:58:09 +0800107 for soc_list in ${!BL31_OLD_VER_SOC_LIST[@]}; do
Wenbo Wang74779f82023-04-20 19:20:14 -0700108 if [ "$1" == "${BL31_OLD_VER_SOC_LIST[${soc_list}]}" ]; then
109 ver=0
110 fi
xiaobo gue6c46862018-01-10 18:58:09 +0800111 done
benlong.zhou8ecb5ca2023-01-28 19:32:15 +0800112 for soc_list in ${!BL31_VER2_7_SOC_LIST[@]}; do
113 if [ "$1" == "${BL31_VER2_7_SOC_LIST[${soc_list}]}" ]; then
Wenbo Wang74779f82023-04-20 19:20:14 -0700114 ver=2
115 fi
Meng yue91d80d2023-03-08 10:26:21 +0800116 done
benlong.zhou8ecb5ca2023-01-28 19:32:15 +0800117 echo "check_bl31_ver soc=$1"
118 echo "check_bl31_ver ver=$ver"
xiaobo gue6c46862018-01-10 18:58:09 +0800119 return ${ver}
120}
121
122# some soc need use bl31_v1.3
123function switch_bl31() {
124 # $1: soc
xiaobo gu8a3907e2019-05-22 11:46:49 +0800125 local bl31_index=0;
126 for loop in ${!BLX_NAME[@]}; do
127 if [ ${BLX_NAME[$loop]} == ${BLX_NAME_GLB[2]} ]; then
128 bl31_index=$loop
129 fi
130 done
benlong.zhou8ecb5ca2023-01-28 19:32:15 +0800131 local version
xiaobo gue6c46862018-01-10 18:58:09 +0800132 check_bl31_ver $1
benlong.zhou8ecb5ca2023-01-28 19:32:15 +0800133 version=$?
134
135 if [ ${version} == 2 ]; then
Meng yue91d80d2023-03-08 10:26:21 +0800136 echo "check bl31 ver: use v2.7"
137 BLX_SRC_FOLDER[$bl31_index]=${BL31_V2_7_SRC_FOLDER}
138 BLX_BIN_FOLDER[$bl31_index]=${BL31_V2_7_BIN_FOLDER}
benlong.zhou8ecb5ca2023-01-28 19:32:15 +0800139 elif [ ${version} == 1 ]; then
140 echo "check bl31 ver: use v1.3"
141 BLX_SRC_FOLDER[$bl31_index]=${BL31_V1_3_SRC_FOLDER}
142 BLX_BIN_FOLDER[$bl31_index]=${BL31_V1_3_BIN_FOLDER}
143 else
144 echo "check bl31 ver: use v1.0"
145 BLX_SRC_FOLDER[$bl31_index]=${BL31_V1_0_SRC_FOLDER}
146 BLX_BIN_FOLDER[$bl31_index]=${BL31_V1_0_BIN_FOLDER}
xiaobo gue6c46862018-01-10 18:58:09 +0800147 fi
changqing.gao190a6832019-02-14 12:49:27 +0800148}