aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-imx/mach-imx6q.c36
1 files changed, 35 insertions, 1 deletions
diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-imx/mach-imx6q.c
index 6421e728f4b4..5ab972567ef6 100644
--- a/arch/arm/mach-imx/mach-imx6q.c
+++ b/arch/arm/mach-imx/mach-imx6q.c
@@ -257,10 +257,44 @@ static void __init imx6q_map_io(void)
257 imx_scu_map_io(); 257 imx_scu_map_io();
258} 258}
259 259
260#ifdef CONFIG_CACHE_L2X0
261static void __init imx6q_init_l2cache(void)
262{
263 void __iomem *l2x0_base;
264 struct device_node *np;
265 unsigned int val;
266
267 np = of_find_compatible_node(NULL, NULL, "arm,pl310-cache");
268 if (!np)
269 goto out;
270
271 l2x0_base = of_iomap(np, 0);
272 if (!l2x0_base) {
273 of_node_put(np);
274 goto out;
275 }
276
277 /* Configure the L2 PREFETCH and POWER registers */
278 val = readl_relaxed(l2x0_base + L2X0_PREFETCH_CTRL);
279 val |= 0x70800000;
280 writel_relaxed(val, l2x0_base + L2X0_PREFETCH_CTRL);
281 val = L2X0_DYNAMIC_CLK_GATING_EN | L2X0_STNDBY_MODE_EN;
282 writel_relaxed(val, l2x0_base + L2X0_POWER_CTRL);
283
284 iounmap(l2x0_base);
285 of_node_put(np);
286
287out:
288 l2x0_of_init(0, ~0UL);
289}
290#else
291static inline void imx6q_init_l2cache(void) {}
292#endif
293
260static void __init imx6q_init_irq(void) 294static void __init imx6q_init_irq(void)
261{ 295{
262 imx6q_init_revision(); 296 imx6q_init_revision();
263 l2x0_of_init(0, ~0UL); 297 imx6q_init_l2cache();
264 imx_src_init(); 298 imx_src_init();
265 imx_gpc_init(); 299 imx_gpc_init();
266 irqchip_init(); 300 irqchip_init();