xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | |
| 3 | |
| 4 | # these soc use old bl31 code, others use new one |
| 5 | declare -a BL31_OLD_VER_SOC_LIST=("gxb" "gxtvbb" "gxl" "txl") |
benlong.zhou | d3148d8 | 2024-03-22 19:45:34 +0800 | [diff] [blame] | 6 | declare -a BL31_VER2_7_SOC_LIST=("t3x" "a4" "s1a" "s7" "s7d" "s6" "t6d") |
Meng yu | b8b0ebb | 2023-05-16 15:59:18 +0800 | [diff] [blame] | 7 | declare BL31_V2_7_SRC_FOLDER="bl31/bl31_2.7/src" |
| 8 | declare BL31_V1_3_SRC_FOLDER="bl31/bl31_1.3/src" |
| 9 | declare BL31_V1_0_SRC_FOLDER="bl31/bl31_1.0/src" |
| 10 | declare BL31_V2_7_BIN_FOLDER="bl31/bl31_2.7/bin" |
| 11 | declare BL31_V1_3_BIN_FOLDER="bl31/bl31_1.3/bin" |
| 12 | declare BL31_V1_0_BIN_FOLDER="bl31/bl31_1.0/bin" |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 13 | |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 14 | function build_bl31() { |
| 15 | echo -n "Build bl31...Please wait... " |
| 16 | # $1: src_folder, $2: bin_folder, $3: soc |
xiaobo gu | 3ce6407 | 2018-03-06 17:20:44 +0800 | [diff] [blame] | 17 | local target="$1/bl31.bin" |
| 18 | local target2="$1/bl31.img" |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 19 | cd $1 |
| 20 | export CROSS_COMPILE=${AARCH64_TOOL_CHAIN} |
| 21 | CONFIG_SPD="opteed" |
| 22 | #CONFIG_SPD="none" |
| 23 | local soc=$3 |
changqing.gao | 190a683 | 2019-02-14 12:49:27 +0800 | [diff] [blame] | 24 | local bl2z_plat |
xiaobo gu | 3ce6407 | 2018-03-06 17:20:44 +0800 | [diff] [blame] | 25 | if [ "$soc" == "gxtvbb" ] || [ "$soc" == "gxb" ]; then |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 26 | soc="gxbb" |
changqing.gao | 190a683 | 2019-02-14 12:49:27 +0800 | [diff] [blame] | 27 | bl2z_plat="txl" |
xiaobo gu | 3ce6407 | 2018-03-06 17:20:44 +0800 | [diff] [blame] | 28 | elif [ "$soc" == "txl" ]; then |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 29 | soc="gxl" |
changqing.gao | 190a683 | 2019-02-14 12:49:27 +0800 | [diff] [blame] | 30 | bl2z_plat="txl" |
| 31 | elif [ "$soc" == "gxl" ]; then |
| 32 | soc="gxl" |
| 33 | bl2z_plat="gxl" |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 34 | fi |
| 35 | #make PLAT=${soc} SPD=${CONFIG_SPD} realclean &> /dev/null |
| 36 | #make PLAT=${soc} SPD=${CONFIG_SPD} V=1 all &> /dev/null |
changqing.gao | 190a683 | 2019-02-14 12:49:27 +0800 | [diff] [blame] | 37 | /bin/bash mk $soc $bl2z_plat |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 38 | if [ $? != 0 ]; then |
| 39 | cd ${MAIN_FOLDER} |
| 40 | echo "Error: Build bl31 failed... abort" |
| 41 | exit -1 |
| 42 | fi |
| 43 | cd ${MAIN_FOLDER} |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 44 | cp ${target} $2 -f |
| 45 | cp ${target2} $2 -f |
| 46 | echo "done" |
| 47 | return |
| 48 | } |
| 49 | |
| 50 | function build_bl31_v1_3() { |
| 51 | echo -n "Build bl31 v1.3...Please wait... " |
| 52 | # $1: src_folder, $2: bin_folder, $3: soc |
xiaobo gu | 3ce6407 | 2018-03-06 17:20:44 +0800 | [diff] [blame] | 53 | local target="$1/bl31.bin" |
| 54 | local target2="$1/bl31.img" |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 55 | cd $1 |
| 56 | export CROSS_COMPILE=${AARCH64_TOOL_CHAIN} |
| 57 | #sh mk $3 &> /dev/null |
xiaobo gu | 3ce6407 | 2018-03-06 17:20:44 +0800 | [diff] [blame] | 58 | local soc=$3 |
| 59 | if [ "$soc" == "txhd" ]; then |
| 60 | soc="axg" |
| 61 | fi |
Bo Lv | 25cb197 | 2020-11-01 08:55:44 -0500 | [diff] [blame] | 62 | if [ "$soc" == "t5d" ]; then |
| 63 | soc="t5" |
| 64 | fi |
Meng yu | ec57d86 | 2024-04-30 11:23:02 +0800 | [diff] [blame] | 65 | if [ "$soc" == "c3" ]; then |
| 66 | check_branch_bl2x_bl31 |
| 67 | fi |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 68 | /bin/bash mk $soc |
| 69 | if [ $? != 0 ]; then |
| 70 | cd ${MAIN_FOLDER} |
| 71 | echo "Error: Build bl31 failed... abort" |
| 72 | exit -1 |
| 73 | fi |
| 74 | cd ${MAIN_FOLDER} |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 75 | cp ${target} $2 -f |
| 76 | cp ${target2} $2 -f |
| 77 | echo "done" |
| 78 | return |
| 79 | } |
| 80 | |
Meng yu | e91d80d | 2023-03-08 10:26:21 +0800 | [diff] [blame] | 81 | function build_bl31_v2_7() { |
| 82 | echo -n "Build bl31 v2.7...Please wait... " |
| 83 | # $1: src_folder, $2: bin_folder, $3: soc |
| 84 | local target="$1/bl31.bin" |
| 85 | local target2="$1/bl31.img" |
| 86 | cd $1 |
| 87 | export CROSS_COMPILE=${AARCH64_TOOL_CHAIN} |
| 88 | #sh mk $3 &> /dev/null |
| 89 | local soc=$3 |
Meng yu | e91d80d | 2023-03-08 10:26:21 +0800 | [diff] [blame] | 90 | /bin/bash mk $soc |
| 91 | if [ $? != 0 ]; then |
| 92 | cd ${MAIN_FOLDER} |
| 93 | echo "Error: Build bl31 failed... abort" |
| 94 | exit -1 |
| 95 | fi |
| 96 | cd ${MAIN_FOLDER} |
| 97 | cp ${target} $2 -f |
| 98 | cp ${target2} $2 -f |
| 99 | echo "done" |
| 100 | return |
| 101 | } |
| 102 | |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 103 | # check use which bl31 build script |
| 104 | function check_bl31_ver() { |
| 105 | # $1: soc |
wenbo.wang | 8aa6cc5 | 2023-04-20 17:27:59 +0800 | [diff] [blame] | 106 | # return 1: use bl31 v1.3 |
Wenbo Wang | 74779f8 | 2023-04-20 19:20:14 -0700 | [diff] [blame] | 107 | # return 0: use bl31 v1.0 |
Meng yu | e91d80d | 2023-03-08 10:26:21 +0800 | [diff] [blame] | 108 | # return 2: use bl31 v2.7 |
Wenbo Wang | 74779f8 | 2023-04-20 19:20:14 -0700 | [diff] [blame] | 109 | local -i ver=1 |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 110 | for soc_list in ${!BL31_OLD_VER_SOC_LIST[@]}; do |
Wenbo Wang | 74779f8 | 2023-04-20 19:20:14 -0700 | [diff] [blame] | 111 | if [ "$1" == "${BL31_OLD_VER_SOC_LIST[${soc_list}]}" ]; then |
| 112 | ver=0 |
| 113 | fi |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 114 | done |
benlong.zhou | 8ecb5ca | 2023-01-28 19:32:15 +0800 | [diff] [blame] | 115 | for soc_list in ${!BL31_VER2_7_SOC_LIST[@]}; do |
| 116 | if [ "$1" == "${BL31_VER2_7_SOC_LIST[${soc_list}]}" ]; then |
Wenbo Wang | 74779f8 | 2023-04-20 19:20:14 -0700 | [diff] [blame] | 117 | ver=2 |
| 118 | fi |
Meng yu | e91d80d | 2023-03-08 10:26:21 +0800 | [diff] [blame] | 119 | done |
benlong.zhou | 8ecb5ca | 2023-01-28 19:32:15 +0800 | [diff] [blame] | 120 | echo "check_bl31_ver soc=$1" |
| 121 | echo "check_bl31_ver ver=$ver" |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 122 | return ${ver} |
| 123 | } |
| 124 | |
| 125 | # some soc need use bl31_v1.3 |
| 126 | function switch_bl31() { |
| 127 | # $1: soc |
xiaobo gu | 8a3907e | 2019-05-22 11:46:49 +0800 | [diff] [blame] | 128 | local bl31_index=0; |
| 129 | for loop in ${!BLX_NAME[@]}; do |
| 130 | if [ ${BLX_NAME[$loop]} == ${BLX_NAME_GLB[2]} ]; then |
| 131 | bl31_index=$loop |
| 132 | fi |
| 133 | done |
benlong.zhou | 8ecb5ca | 2023-01-28 19:32:15 +0800 | [diff] [blame] | 134 | local version |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 135 | check_bl31_ver $1 |
benlong.zhou | 8ecb5ca | 2023-01-28 19:32:15 +0800 | [diff] [blame] | 136 | version=$? |
| 137 | |
| 138 | if [ ${version} == 2 ]; then |
Meng yu | e91d80d | 2023-03-08 10:26:21 +0800 | [diff] [blame] | 139 | echo "check bl31 ver: use v2.7" |
| 140 | BLX_SRC_FOLDER[$bl31_index]=${BL31_V2_7_SRC_FOLDER} |
| 141 | BLX_BIN_FOLDER[$bl31_index]=${BL31_V2_7_BIN_FOLDER} |
benlong.zhou | 8ecb5ca | 2023-01-28 19:32:15 +0800 | [diff] [blame] | 142 | elif [ ${version} == 1 ]; then |
| 143 | echo "check bl31 ver: use v1.3" |
| 144 | BLX_SRC_FOLDER[$bl31_index]=${BL31_V1_3_SRC_FOLDER} |
| 145 | BLX_BIN_FOLDER[$bl31_index]=${BL31_V1_3_BIN_FOLDER} |
| 146 | else |
| 147 | echo "check bl31 ver: use v1.0" |
| 148 | BLX_SRC_FOLDER[$bl31_index]=${BL31_V1_0_SRC_FOLDER} |
| 149 | BLX_BIN_FOLDER[$bl31_index]=${BL31_V1_0_BIN_FOLDER} |
xiaobo gu | e6c4686 | 2018-01-10 18:58:09 +0800 | [diff] [blame] | 150 | fi |
changqing.gao | 190a683 | 2019-02-14 12:49:27 +0800 | [diff] [blame] | 151 | } |