ARM: DRA7: Add secure emif setup calls
authorDaniel Allred <d-allred@ti.com>
Fri, 2 Sep 2016 05:40:22 +0000 (00:40 -0500)
committerTom Rini <trini@konsulko.com>
Sun, 2 Oct 2016 12:09:56 +0000 (08:09 -0400)
After EMIF DRAM is configured, but before it is used,
calls are made on secure devices to reserve any configured
memory region needed by the secure world and then to lock the
EMIF firewall configuration. If any other firewall
configuration needs to be applied, it must happen before the
lock call.

Signed-off-by: Daniel Allred <d-allred@ti.com>
arch/arm/cpu/armv7/omap-common/emif-common.c

index 2b790105b0bb51036a6e38d849121342b0e65e63..b26984e26c5e8648598a36380d991fb34d1dd3df 100644 (file)
@@ -14,6 +14,7 @@
 #include <asm/arch/clock.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/omap_common.h>
+#include <asm/omap_sec_common.h>
 #include <asm/utils.h>
 #include <linux/compiler.h>
 
@@ -1477,6 +1478,20 @@ void sdram_init(void)
                        debug("get_ram_size() successful");
        }
 
+#if defined(CONFIG_TI_SECURE_DEVICE)
+       /*
+        * On HS devices, do static EMIF firewall configuration
+        * but only do it if not already running in SDRAM
+        */
+       if (!in_sdram)
+               if (0 != secure_emif_reserve())
+                       hang();
+
+       /* On HS devices, ensure static EMIF firewall APIs are locked */
+       if (0 != secure_emif_firewall_lock())
+               hang();
+#endif
+
        if (sdram_type == EMIF_SDRAM_TYPE_DDR3 &&
            (!in_sdram && !warm_reset()) && (!is_dra7xx())) {
                if (emif1_enabled)