Merge tag '3.9-rc3-smp-6-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/sstabe...
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / arch / arm / mach-vexpress / v2m.c
index c43ec789661da4a9a18b63fabf4dd847f0c7f799..8802030df98d0fbac53f4cd1f01df30f598f1773 100644 (file)
@@ -1,10 +1,12 @@
 /*
  * Versatile Express V2M Motherboard Support
  */
+#include <linux/clocksource.h>
 #include <linux/device.h>
 #include <linux/amba/bus.h>
 #include <linux/amba/mmci.h>
 #include <linux/io.h>
+#include <linux/clocksource.h>
 #include <linux/smp.h>
 #include <linux/init.h>
 #include <linux/irqchip.h>
 #include <linux/regulator/fixed.h>
 #include <linux/regulator/machine.h>
 #include <linux/vexpress.h>
+#include <linux/clk-provider.h>
+#include <linux/clkdev.h>
 
-#include <asm/arch_timer.h>
 #include <asm/mach-types.h>
 #include <asm/sizes.h>
-#include <asm/smp_twd.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/map.h>
 #include <asm/mach/time.h>
@@ -61,9 +63,6 @@ static void __init v2m_sp804_init(void __iomem *base, unsigned int irq)
        if (WARN_ON(!base || irq == NO_IRQ))
                return;
 
-       writel(0, base + TIMER_1_BASE + TIMER_CTRL);
-       writel(0, base + TIMER_2_BASE + TIMER_CTRL);
-
        sp804_clocksource_init(base + TIMER_2_BASE, "v2m-timer1");
        sp804_clockevents_init(base + TIMER_1_BASE, irq, "v2m-timer0");
 }
@@ -361,8 +360,6 @@ static void __init v2m_init(void)
        for (i = 0; i < ARRAY_SIZE(v2m_amba_devs); i++)
                amba_device_register(v2m_amba_devs[i], &iomem_resource);
 
-       pm_power_off = vexpress_power_off;
-
        ct_desc->init_tile();
 }
 
@@ -374,7 +371,6 @@ MACHINE_START(VEXPRESS, "ARM-Versatile Express")
        .init_irq       = v2m_init_irq,
        .init_time      = v2m_timer_init,
        .init_machine   = v2m_init,
-       .restart        = vexpress_restart,
 MACHINE_END
 
 static struct map_desc v2m_rs1_io_desc __initdata = {
@@ -431,25 +427,11 @@ void __init v2m_dt_init_early(void)
 
 static void __init v2m_dt_timer_init(void)
 {
-       struct device_node *node = NULL;
-
-       vexpress_clk_of_init();
-
-       do {
-               node = of_find_compatible_node(node, NULL, "arm,sp804");
-       } while (node && vexpress_get_site_by_node(node) != VEXPRESS_SITE_MB);
-       if (node) {
-               pr_info("Using SP804 '%s' as a clock & events source\n",
-                               node->full_name);
-               v2m_sp804_init(of_iomap(node, 0),
-                               irq_of_parse_and_map(node, 0));
-       }
+       of_clk_init(NULL);
 
-       if (arch_timer_of_register() != 0)
-               twd_local_timer_of_register();
+       clocksource_of_init();
 
-       if (arch_timer_sched_clock_init() != 0)
-               versatile_sched_clock_init(vexpress_get_24mhz_clock_base(),
+       versatile_sched_clock_init(vexpress_get_24mhz_clock_base(),
                                24000000);
 }
 
@@ -464,7 +446,6 @@ static void __init v2m_dt_init(void)
 {
        l2x0_of_init(0x00400000, 0xfe0fffff);
        of_platform_populate(NULL, v2m_dt_bus_match, NULL, NULL);
-       pm_power_off = vexpress_power_off;
 }
 
 static const char * const v2m_dt_match[] __initconst = {
@@ -480,5 +461,4 @@ DT_MACHINE_START(VEXPRESS_DT, "ARM-Versatile Express")
        .init_irq       = irqchip_init,
        .init_time      = v2m_dt_timer_init,
        .init_machine   = v2m_dt_init,
-       .restart        = vexpress_restart,
 MACHINE_END