These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / arch / arm / mach-ux500 / cache-l2x0.c
index e97ee55..780bd13 100644 (file)
@@ -6,7 +6,9 @@
 
 #include <linux/io.h>
 #include <linux/of.h>
+#include <linux/of_address.h>
 
+#include <asm/outercache.h>
 #include <asm/hardware/cache-l2x0.h>
 
 #include "db8500-regs.h"
 static int __init ux500_l2x0_unlock(void)
 {
        int i;
-       void __iomem *l2x0_base = __io_address(U8500_L2CC_BASE);
+       struct device_node *np;
+       void __iomem *l2x0_base;
+
+       np = of_find_compatible_node(NULL, NULL, "arm,pl310-cache");
+       l2x0_base = of_iomap(np, 0);
+       of_node_put(np);
+       if (!l2x0_base)
+               return -ENODEV;
 
        /*
         * Unlock Data and Instruction Lock if locked. Ux500 U-Boot versions
@@ -30,6 +39,7 @@ static int __init ux500_l2x0_unlock(void)
                writel_relaxed(0x0, l2x0_base + L2X0_LOCKDOWN_WAY_I_BASE +
                               i * L2X0_LOCKDOWN_STRIDE);
        }
+       iounmap(l2x0_base);
        return 0;
 }