dbc4a9b
From: Kyle McMartin <kmcmartin@redhat.com>
dbc4a9b
Date: Tue, 30 Sep 2014 16:19:47 -0400
dbc4a9b
Subject: [PATCH] arm: highbank l2 reverts
dbc4a9b
dbc4a9b
Revert some v3.16 changes to mach-highbank which broke L2 cache enablement.
dbc4a9b
Will debug upstream separately, but we need F22/21 running there. (#1139762)
dbc4a9b
---
dbc4a9b
 arch/arm/mach-highbank/highbank.c | 21 ++++++++++++---------
dbc4a9b
 1 file changed, 12 insertions(+), 9 deletions(-)
dbc4a9b
dbc4a9b
diff --git a/arch/arm/mach-highbank/highbank.c b/arch/arm/mach-highbank/highbank.c
f046ab9
index 07a09570175d..5db6d14fcd67 100644
dbc4a9b
--- a/arch/arm/mach-highbank/highbank.c
dbc4a9b
+++ b/arch/arm/mach-highbank/highbank.c
dbc4a9b
@@ -51,13 +51,11 @@ static void __init highbank_scu_map_io(void)
dbc4a9b
 }
dbc4a9b
 
dbc4a9b
 
dbc4a9b
-static void highbank_l2c310_write_sec(unsigned long val, unsigned reg)
dbc4a9b
+static void highbank_l2x0_disable(void)
dbc4a9b
 {
dbc4a9b
-	if (reg == L2X0_CTRL)
dbc4a9b
-		highbank_smc1(0x102, val);
dbc4a9b
-	else
dbc4a9b
-		WARN_ONCE(1, "Highbank L2C310: ignoring write to reg 0x%x\n",
dbc4a9b
-			  reg);
dbc4a9b
+	outer_flush_all();
dbc4a9b
+	/* Disable PL310 L2 Cache controller */
dbc4a9b
+	highbank_smc1(0x102, 0x0);
dbc4a9b
 }
dbc4a9b
 
dbc4a9b
 static void __init highbank_init_irq(void)
dbc4a9b
@@ -66,6 +64,14 @@ static void __init highbank_init_irq(void)
dbc4a9b
 
dbc4a9b
 	if (of_find_compatible_node(NULL, NULL, "arm,cortex-a9"))
dbc4a9b
 		highbank_scu_map_io();
dbc4a9b
+
dbc4a9b
+	/* Enable PL310 L2 Cache controller */
dbc4a9b
+	if (IS_ENABLED(CONFIG_CACHE_L2X0) &&
dbc4a9b
+	    of_find_compatible_node(NULL, NULL, "arm,pl310-cache")) {
dbc4a9b
+		highbank_smc1(0x102, 0x1);
dbc4a9b
+		l2x0_of_init(0, ~0);
dbc4a9b
+		outer_cache.disable = highbank_l2x0_disable;
dbc4a9b
+	}
dbc4a9b
 }
dbc4a9b
 
dbc4a9b
 static void highbank_power_off(void)
dbc4a9b
@@ -179,9 +185,6 @@ DT_MACHINE_START(HIGHBANK, "Highbank")
dbc4a9b
 #if defined(CONFIG_ZONE_DMA) && defined(CONFIG_ARM_LPAE)
dbc4a9b
 	.dma_zone_size	= (4ULL * SZ_1G),
dbc4a9b
 #endif
dbc4a9b
-	.l2c_aux_val	= 0,
dbc4a9b
-	.l2c_aux_mask	= ~0,
dbc4a9b
-	.l2c_write_sec	= highbank_l2c310_write_sec,
dbc4a9b
 	.init_irq	= highbank_init_irq,
dbc4a9b
 	.init_machine	= highbank_init,
dbc4a9b
 	.dt_compat	= highbank_match,
dbc4a9b
-- 
c47527a
2.1.0
dbc4a9b