Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
[firefly-linux-kernel-4.4.55.git] / arch / arm / mach-zynq / slcr.c
index d4cb50cf97c027dd5aed93b7900ae9bc96a7eed8..c3c24fd8b3062ce32921275bb0434a549b8749d1 100644 (file)
@@ -47,11 +47,6 @@ static struct regmap *zynq_slcr_regmap;
  */
 static int zynq_slcr_write(u32 val, u32 offset)
 {
-       if (!zynq_slcr_regmap) {
-               writel(val, zynq_slcr_base + offset);
-               return 0;
-       }
-
        return regmap_write(zynq_slcr_regmap, offset, val);
 }
 
@@ -65,12 +60,7 @@ static int zynq_slcr_write(u32 val, u32 offset)
  */
 static int zynq_slcr_read(u32 *val, u32 offset)
 {
-       if (zynq_slcr_regmap)
-               return regmap_read(zynq_slcr_regmap, offset, val);
-
-       *val = readl(zynq_slcr_base + offset);
-
-       return 0;
+       return regmap_read(zynq_slcr_regmap, offset, val);
 }
 
 /**
@@ -195,23 +185,6 @@ void zynq_slcr_cpu_state_write(int cpu, bool die)
        writel(state, zynq_slcr_base + SLCR_REBOOT_STATUS_OFFSET);
 }
 
-/**
- * zynq_slcr_init - Regular slcr driver init
- * Return:     0 on success, negative errno otherwise.
- *
- * Called early during boot from platform code to remap SLCR area.
- */
-int __init zynq_slcr_init(void)
-{
-       zynq_slcr_regmap = syscon_regmap_lookup_by_compatible("xlnx,zynq-slcr");
-       if (IS_ERR(zynq_slcr_regmap)) {
-               pr_err("%s: failed to find zynq-slcr\n", __func__);
-               return -ENODEV;
-       }
-
-       return 0;
-}
-
 /**
  * zynq_early_slcr_init - Early slcr init function
  *
@@ -237,6 +210,12 @@ int __init zynq_early_slcr_init(void)
 
        np->data = (__force void *)zynq_slcr_base;
 
+       zynq_slcr_regmap = syscon_regmap_lookup_by_compatible("xlnx,zynq-slcr");
+       if (IS_ERR(zynq_slcr_regmap)) {
+               pr_err("%s: failed to find zynq-slcr\n", __func__);
+               return -ENODEV;
+       }
+
        /* unlock the SLCR so that registers can be changed */
        zynq_slcr_unlock();