Merge tag 'cleanup-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git...
[firefly-linux-kernel-4.4.55.git] / arch / arm / mach-ux500 / cpu.c
index 537870d3fea87a5df90eb733969ce81dcac8a538..b6145ea5164105dd80a2abafffb569acbd746410 100644 (file)
@@ -8,7 +8,7 @@
 
 #include <linux/platform_device.h>
 #include <linux/io.h>
-#include <linux/mfd/db8500-prcmu.h>
+#include <linux/mfd/dbx500-prcmu.h>
 #include <linux/clksrc-dbx500-prcmu.h>
 #include <linux/sys_soc.h>
 #include <linux/err.h>
 #include <linux/irqchip.h>
 #include <linux/irqchip/arm-gic.h>
 #include <linux/platform_data/clk-ux500.h>
+#include <linux/platform_data/arm-ux500-pm.h>
 
 #include <asm/mach/map.h>
 
-#include <mach/hardware.h>
-#include <mach/setup.h>
-#include <mach/devices.h>
+#include "setup.h"
+#include "devices.h"
 
 #include "board-mop500.h"
+#include "db8500-regs.h"
 #include "id.h"
 
-void __iomem *_PRCMU_BASE;
-
 /*
  * FIXME: Should we set up the GPIO domain here?
  *
@@ -68,13 +67,23 @@ void __init ux500_init_irq(void)
         * Init clocks here so that they are available for system timer
         * initialization.
         */
-       if (cpu_is_u8500_family() || cpu_is_u9540())
-               db8500_prcmu_early_init();
-
-       if (cpu_is_u8500_family() || cpu_is_u9540())
-               u8500_clk_init();
-       else if (cpu_is_u8540())
+       if (cpu_is_u8500_family()) {
+               prcmu_early_init(U8500_PRCMU_BASE, SZ_8K - 1);
+               ux500_pm_init(U8500_PRCMU_BASE, SZ_8K - 1);
+               u8500_clk_init(U8500_CLKRST1_BASE, U8500_CLKRST2_BASE,
+                              U8500_CLKRST3_BASE, U8500_CLKRST5_BASE,
+                              U8500_CLKRST6_BASE);
+       } else if (cpu_is_u9540()) {
+               prcmu_early_init(U8500_PRCMU_BASE, SZ_8K - 1);
+               ux500_pm_init(U8500_PRCMU_BASE, SZ_8K - 1);
+               u8500_clk_init(U8500_CLKRST1_BASE, U8500_CLKRST2_BASE,
+                              U8500_CLKRST3_BASE, U8500_CLKRST5_BASE,
+                              U8500_CLKRST6_BASE);
+       } else if (cpu_is_u8540()) {
+               prcmu_early_init(U8500_PRCMU_BASE, SZ_8K + SZ_4K - 1);
+               ux500_pm_init(U8500_PRCMU_BASE, SZ_8K + SZ_4K - 1);
                u8540_clk_init();
+       }
 }
 
 void __init ux500_init_late(void)
@@ -140,14 +149,13 @@ struct device * __init ux500_soc_device_init(const char *soc_id)
        soc_info_populate(soc_dev_attr, soc_id);
 
        soc_dev = soc_device_register(soc_dev_attr);
-       if (IS_ERR_OR_NULL(soc_dev)) {
+       if (IS_ERR(soc_dev)) {
                kfree(soc_dev_attr);
                return NULL;
        }
 
        parent = soc_device_to_device(soc_dev);
-       if (!IS_ERR_OR_NULL(parent))
-               device_create_file(parent, &ux500_soc_attr);
+       device_create_file(parent, &ux500_soc_attr);
 
        return parent;
 }