diff mbox series

rockchip: sdram: fix DRAM bank declaration around OP-TEE

Message ID 20200331172534.9080-1-justin.swartz@risingedge.co.za
State New
Headers show
Series rockchip: sdram: fix DRAM bank declaration around OP-TEE | expand

Commit Message

Justin Swartz March 31, 2020, 5:25 p.m. UTC
If OP-TEE is configured, it makes sense to use CONFIG_OPTEE_TZDRAM_BASE
and CONFIG_OPTEE_TZDRAM_SIZE to declare the boundaries of the TrustZone
memory reserved for OP-TEE instead of assuming that a 32MB reservation is
always in place.

In this case, the following calculations may be used to determine the
boundaries of DRAM bank 0 and 1 which surround the TrustZone reservation:

    [DRAM bank 0]
        base = CONFIG_SYS_DRAM_BASE
        size = CONFIG_OPTEE_TZDRAM_BASE - CONFIG_SYS_SDRAM_BASE

    [DRAM bank 1]
        base = CONFIG_OPTEE_TZDRAM_BASE + CONFIG_OPTEE_TZDRAM_SIZE
        size = top of memory - base of DRAM bank 1

Signed-off-by: Justin Swartz <justin.swartz at risingedge.co.za>
---
 arch/arm/mach-rockchip/sdram.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)
diff mbox series

Patch

diff --git a/arch/arm/mach-rockchip/sdram.c b/arch/arm/mach-rockchip/sdram.c
index 530644c043..def2c23294 100644
--- a/arch/arm/mach-rockchip/sdram.c
+++ b/arch/arm/mach-rockchip/sdram.c
@@ -55,16 +55,14 @@  int dram_init_banksize(void)
 					- CONFIG_SYS_SDRAM_BASE;
 		gd->bd->bi_dram[1].start = tos_parameter->tee_mem.phy_addr +
 					tos_parameter->tee_mem.size;
-		gd->bd->bi_dram[1].size = gd->bd->bi_dram[0].start
-					+ top - gd->bd->bi_dram[1].start;
+		gd->bd->bi_dram[1].size = top - gd->bd->bi_dram[1].start;
 	} else {
 		gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE;
-		gd->bd->bi_dram[0].size = 0x8400000;
-		/* Reserve 32M for OPTEE with TA */
-		gd->bd->bi_dram[1].start = CONFIG_SYS_SDRAM_BASE
-					+ gd->bd->bi_dram[0].size + 0x2000000;
-		gd->bd->bi_dram[1].size = gd->bd->bi_dram[0].start
-					+ top - gd->bd->bi_dram[1].start;
+		gd->bd->bi_dram[0].size = CONFIG_OPTEE_TZDRAM_BASE
+					- CONFIG_SYS_SDRAM_BASE;
+		gd->bd->bi_dram[1].start = CONFIG_OPTEE_TZDRAM_BASE
+					+ CONFIG_OPTEE_TZDRAM_SIZE;
+		gd->bd->bi_dram[1].size = top - gd->bd->bi_dram[1].start;
 	}
 #else
 	gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE;