omap4: l2x0: Override the default l2x0_disable
authorSantosh Shilimkar <santosh.shilimkar@ti.com>
Sat, 31 Jul 2010 16:10:10 +0000 (21:40 +0530)
committerSantosh Shilimkar <santosh.shilimkar@ti.com>
Tue, 26 Oct 2010 06:10:00 +0000 (11:40 +0530)
The machine_kexec() calls outer_disable which can crash on OMAP4
becasue of trustzone restrictions.

This patch overrides the default l2x0_disable with a OMAP4
specific implementation taking care of trustzone

Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Reviewed-by: Tony Lindgren <tony@atomide.com>
Acked-by: Linus Walleij <linus.walleij@stericsson.com>
arch/arm/mach-omap2/omap4-common.c

index 13dc979..b557cc2 100644 (file)
@@ -44,6 +44,13 @@ void __init gic_init_irq(void)
 }
 
 #ifdef CONFIG_CACHE_L2X0
+
+static void omap4_l2x0_disable(void)
+{
+       /* Disable PL310 L2 Cache controller */
+       omap_smc1(0x102, 0x0);
+}
+
 static int __init omap_l2_cache_init(void)
 {
        /*
@@ -66,6 +73,12 @@ static int __init omap_l2_cache_init(void)
         */
        l2x0_init(l2cache_base, 0x0e050000, 0xc0000fff);
 
+       /*
+        * Override default outer_cache.disable with a OMAP4
+        * specific one
+       */
+       outer_cache.disable = omap4_l2x0_disable;
+
        return 0;
 }
 early_initcall(omap_l2_cache_init);