Merge remote-tracking branch 'lsk/v3.10/topic/big.LITTLE' into linux-linaro-lsk
[firefly-linux-kernel-4.4.55.git] / arch / arm / mach-highbank / highbank.c
index e7df2dd43a40f5d8c956aef5721fd504a90f8b5b..c37d31e15a06126a9d01c8abb53262a0f906fba0 100644 (file)
@@ -21,6 +21,7 @@
 #include <linux/irq.h>
 #include <linux/irqchip.h>
 #include <linux/irqdomain.h>
+#include <linux/pl320-ipc.h>
 #include <linux/of.h>
 #include <linux/of_irq.h>
 #include <linux/of_platform.h>
@@ -65,13 +66,12 @@ void highbank_set_cpu_jump(int cpu, void *jump_addr)
                          HB_JUMP_TABLE_PHYS(cpu) + 15);
 }
 
-#ifdef CONFIG_CACHE_L2X0
 static void highbank_l2x0_disable(void)
 {
+       outer_flush_all();
        /* Disable PL310 L2 Cache controller */
        highbank_smc1(0x102, 0x0);
 }
-#endif
 
 static void __init highbank_init_irq(void)
 {
@@ -80,12 +80,13 @@ static void __init highbank_init_irq(void)
        if (of_find_compatible_node(NULL, NULL, "arm,cortex-a9"))
                highbank_scu_map_io();
 
-#ifdef CONFIG_CACHE_L2X0
        /* Enable PL310 L2 Cache controller */
-       highbank_smc1(0x102, 0x1);
-       l2x0_of_init(0, ~0UL);
-       outer_cache.disable = highbank_l2x0_disable;
-#endif
+       if (IS_ENABLED(CONFIG_CACHE_L2X0) &&
+           of_find_compatible_node(NULL, NULL, "arm,pl310-cache")) {
+               highbank_smc1(0x102, 0x1);
+               l2x0_of_init(0, ~0UL);
+               outer_cache.disable = highbank_l2x0_disable;
+       }
 }
 
 static void __init highbank_timer_init(void)