ARM: tegra: Setup L2 cache using Trusted Foundations firmware
authorDmitry Osipenko <digetx@gmail.com>
Sat, 19 May 2018 20:12:54 +0000 (23:12 +0300)
committerDmitry Osipenko <digetx@gmail.com>
Sat, 9 Feb 2019 19:15:31 +0000 (22:15 +0300)
On Tegra30 L2 cache should be initialized using firmware call if CPU is
running in insecure mode. Initialize L2 cache and setup the outer-cache
callbacks in early boot using the firmware API.

Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
arch/arm/mach-tegra/tegra.c

index f9587be..67d8ae6 100644 (file)
@@ -38,6 +38,7 @@
 #include <soc/tegra/fuse.h>
 #include <soc/tegra/pmc.h>
 
+#include <asm/firmware.h>
 #include <asm/hardware/cache-l2x0.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/time.h>
@@ -70,9 +71,18 @@ u32 tegra_uart_config[3] = {
        0,
 };
 
+static void __init tegra_trusted_foundations_l2x0_cache_init(void)
+{
+       if (IS_ENABLED(CONFIG_CACHE_L2X0) &&
+           IS_ENABLED(CONFIG_ARCH_TEGRA_3x_SOC) &&
+           of_machine_is_compatible("nvidia,tegra30"))
+               call_firmware_op(l2x0_init);
+}
+
 static void __init tegra_init_early(void)
 {
        of_register_trusted_foundations();
+       tegra_trusted_foundations_l2x0_cache_init();
        tegra_cpu_reset_handler_init();
 }