rockchip: fit_spl_optee: get text and optee base from build
authorKever Yang <kever.yang@rock-chips.com>
Thu, 5 Dec 2019 10:11:52 +0000 (18:11 +0800)
committerKever Yang <kever.yang@rock-chips.com>
Thu, 26 Dec 2019 12:34:28 +0000 (20:34 +0800)
Instead of hardcode the base address, we can get them from the build
output, eg. get the SYS_TEXT_BASE from .config and get optee base from
DRAM_BASE.
We can use this script for SoCs with DRAM base not from 0x60000000(rk3229
and many other 32bit Rockchip SoCs), eg. rk3288 DRAM base is 0.

Signed-off-by: Kever Yang <kever.yang@rock-chips.com>
arch/arm/mach-rockchip/fit_spl_optee.sh

index 89ef04312cf01d706ddd947b00715a729d74d721..4118472d9f22d13a2d4e874179368753b158d7da 100755 (executable)
@@ -17,6 +17,12 @@ if [ ! -f $TEE ]; then
 fi
 
 dtname=$1
+text_base=`sed -n "/SYS_TEXT_BASE=/s/CONFIG_SYS_TEXT_BASE=//p" .config \
+          |tr -d '\r'`
+dram_base=`sed -n "/SYS_SDRAM_BASE=/s/CONFIG_SYS_SDRAM_BASE=//p" \
+          include/autoconf.mk|tr -d '\r'`
+tee_base=`echo "obase=16;$(($dram_base+0x8400000))"|bc`
+tee_base='0x'$tee_base
 
 cat << __HEADER_EOF
 /*
@@ -39,7 +45,7 @@ cat << __HEADER_EOF
                        os = "U-Boot";
                        arch = "arm";
                        compression = "none";
-                       load = <0x61000000>;
+                       load = <$text_base>;
                };
                optee {
                        description = "OP-TEE";
@@ -48,8 +54,8 @@ cat << __HEADER_EOF
                        arch = "arm";
                        os = "tee";
                        compression = "none";
-                       load = <0x68400000>;
-                       entry = <0x68400000>;
+                       load = <$tee_base>;
+                       entry = <$tee_base>;
                };
                fdt {
                        description = "$(basename $dtname .dtb)";