]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
sunxi: A23/A33/H3: Move sun8i secure monitor to SRAM A2
authorSamuel Holland <samuel@sholland.org>
Mon, 19 Apr 2021 03:21:41 +0000 (22:21 -0500)
committerAndre Przywara <andre.przywara@arm.com>
Sat, 31 Jul 2021 23:11:34 +0000 (00:11 +0100)
So far for the H3, A23, and A33 SoCs, we use DRAM to hold the secure
monitor code (providing PSCI runtime services). And while those SoCs do
not have the secure SRAM B like older SoCs, there is enough (secure)
SRAM A2 to put the monitor code and data in there instead.

Follow the design of 64-bit SoCs and use the first part for the monitor,
and the last 16 KiB for the SCP firmware. With this change, the monitor
no longer needs to reserve a region in DRAM.

Signed-off-by: Samuel Holland <samuel@sholland.org>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
[Andre: amend commit message, fix R40 and V3s build]
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
arch/arm/include/asm/arch-sunxi/cpu_sun4i.h
include/configs/sun8i.h

index 02ce73954dbc9bed11af1218e0d9150109f73724..d4c795d89cbbe693a755b151b9961fe889e765e8 100644 (file)
 #define SUNXI_SRAM_A1_BASE             0x00000000
 #define SUNXI_SRAM_A1_SIZE             (16 * 1024)     /* 16 kiB */
 
+#if defined(CONFIG_SUNXI_GEN_SUN6I) && \
+    !defined(CONFIG_MACH_SUN8I_R40) && \
+    !defined(CONFIG_MACH_SUN8I_V3S)
+#define SUNXI_SRAM_A2_BASE             0x00040000
+#ifdef CONFIG_MACH_SUN8I_H3
+#define SUNXI_SRAM_A2_SIZE             (48 * 1024)     /* 16+32 kiB */
+#else
+#define SUNXI_SRAM_A2_SIZE             (80 * 1024)     /* 16+64 kiB */
+#endif
+#else
 #define SUNXI_SRAM_A2_BASE             0x00004000      /* 16 kiB */
+#endif
 #define SUNXI_SRAM_A3_BASE             0x00008000      /* 13 kiB */
 #define SUNXI_SRAM_A4_BASE             0x0000b400      /* 3 kiB */
 #define SUNXI_SRAM_D_BASE              0x00010000      /* 4 kiB */
index 9b4675e4c374bd73682df860a79c757092e8d87f..27c9808a494ae5a04ea4a9d35d832b6520dba50c 100644 (file)
  * A23 specific configuration
  */
 
+#ifdef SUNXI_SRAM_A2_SIZE
+/*
+ * If the SoC has enough SRAM A2, use that for the secure monitor.
+ * Skip the first 16 KiB of SRAM A2, which is not usable, as only certain bytes
+ * are writable. Reserve the last 17 KiB for the resume shim and SCP firmware.
+ */
+#define CONFIG_ARMV7_SECURE_BASE       (SUNXI_SRAM_A2_BASE + 16 * 1024)
+#define CONFIG_ARMV7_SECURE_MAX_SIZE   (SUNXI_SRAM_A2_SIZE - 33 * 1024)
+#endif
+
 /*
  * Include common sunxi configuration where most the settings are
  */