diff --git a/plat/st/stm32mp1/stm32mp1_def.h b/plat/st/stm32mp1/stm32mp1_def.h index 81ac744af..d6e178834 100644 --- a/plat/st/stm32mp1/stm32mp1_def.h +++ b/plat/st/stm32mp1/stm32mp1_def.h @@ -103,6 +103,8 @@ #define SRAM2_SIZE U(0x00002000) #define SRAM3_BASE U(0x30006000) #define SRAM3_SIZE U(0x00002000) +#define SRAMS_BASE SRAM1_BASE +#define SRAMS_SIZE_2MB_ALIGNED U(0x00200000) #endif /* STM32MP13 */ #if STM32MP15 #define STM32MP_SYSRAM_BASE U(0x2FFC0000) @@ -135,6 +137,15 @@ enum ddr_type { #endif /* Section used inside TF binaries */ +#if STM32MP13 +/* 512 Octets reserved for header */ +#define STM32MP_HEADER_RESERVED_SIZE U(0x200) + +#define STM32MP_BINARY_BASE STM32MP_SEC_SYSRAM_BASE + +#define STM32MP_BINARY_SIZE STM32MP_SEC_SYSRAM_SIZE +#endif +#if STM32MP15 #define STM32MP_PARAM_LOAD_SIZE U(0x00002400) /* 9 KB for param */ /* 256 Octets reserved for header */ #define STM32MP_HEADER_SIZE U(0x00000100) @@ -148,6 +159,7 @@ enum ddr_type { #define STM32MP_BINARY_SIZE (STM32MP_SEC_SYSRAM_SIZE - \ (STM32MP_PARAM_LOAD_SIZE + \ STM32MP_HEADER_SIZE)) +#endif /* BL2 and BL32/sp_min require finer granularity tables */ #if defined(IMAGE_BL2) diff --git a/plat/st/stm32mp1/stm32mp1_private.c b/plat/st/stm32mp1/stm32mp1_private.c index 62db2e6da..917b8db82 100644 --- a/plat/st/stm32mp1/stm32mp1_private.c +++ b/plat/st/stm32mp1/stm32mp1_private.c @@ -72,6 +72,15 @@ MT_EXECUTE_NEVER) #endif +#if STM32MP13 +#define MAP_SRAM_ALL MAP_REGION_FLAT(SRAMS_BASE, \ + SRAMS_SIZE_2MB_ALIGNED, \ + MT_MEMORY | \ + MT_RW | \ + MT_SECURE | \ + MT_EXECUTE_NEVER) +#endif + #define MAP_DEVICE1 MAP_REGION_FLAT(STM32MP1_DEVICE1_BASE, \ STM32MP1_DEVICE1_SIZE, \ MT_DEVICE | \ @@ -89,6 +98,9 @@ #if defined(IMAGE_BL2) static const mmap_region_t stm32mp1_mmap[] = { MAP_SEC_SYSRAM, +#if STM32MP13 + MAP_SRAM_ALL, +#endif MAP_DEVICE1, #if STM32MP_RAW_NAND MAP_DEVICE2,