diff mbox series

[v2,06/13] verdin-imx8mm: adjust dram size in case bl32 is used

Message ID 20200327102825.10230-7-igor.opaniuk@gmail.com
State Accepted
Commit f8ae0bc7c279e48a4bf6602d8a8a7e71d96377db
Delegated to: Stefano Babic
Headers show
Series bugfix/improvements for IMX-based modules | expand

Commit Message

Igor Opaniuk March 27, 2020, 10:28 a.m. UTC
From: Igor Opaniuk <igor.opaniuk@toradex.com>

Adjust DRAM size in case BL32 secure payload is loaded (OP-TEE/Trusty),
so during MMU initialization U-Boot won't touch this mem area.

BL32 is loaded to the end of DRAM, bl32 payload size is read from
rom_pointer[1]. This relates to the issue described in
59efa6b52b("imx8m: Fix MMU table issue for OPTEE memory").

Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com>
---

 board/toradex/verdin-imx8mm/verdin-imx8mm.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Comments

Stefano Babic April 18, 2020, 10:50 a.m. UTC | #1
> From: Igor Opaniuk <igor.opaniuk@toradex.com>
> Adjust DRAM size in case BL32 secure payload is loaded (OP-TEE/Trusty),
> so during MMU initialization U-Boot won't touch this mem area.
> BL32 is loaded to the end of DRAM, bl32 payload size is read from
> rom_pointer[1]. This relates to the issue described in
> 59efa6b52b("imx8m: Fix MMU table issue for OPTEE memory").
> Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com>
Applied to u-boot-imx, master, thanks !

Best regards,
Stefano Babic
diff mbox series

Patch

diff --git a/board/toradex/verdin-imx8mm/verdin-imx8mm.c b/board/toradex/verdin-imx8mm/verdin-imx8mm.c
index 16b9fa1ec1..cb9b4e3b0a 100644
--- a/board/toradex/verdin-imx8mm/verdin-imx8mm.c
+++ b/board/toradex/verdin-imx8mm/verdin-imx8mm.c
@@ -5,6 +5,7 @@ 
 
 #include <common.h>
 #include <asm/arch/clock.h>
+#include <asm/arch/sys_proto.h>
 #include <asm/io.h>
 #include <miiphy.h>
 #include <netdev.h>
@@ -13,7 +14,11 @@  DECLARE_GLOBAL_DATA_PTR;
 
 int dram_init(void)
 {
-	gd->ram_size = get_ram_size((void *)PHYS_SDRAM, PHYS_SDRAM_SIZE);
+	/* rom_pointer[1] contains the size of TEE occupies */
+	if (rom_pointer[1])
+		gd->ram_size = PHYS_SDRAM_SIZE - rom_pointer[1];
+	else
+		gd->ram_size = PHYS_SDRAM_SIZE;
 
 	return 0;
 }