ARM: S3C24XX: convert s3c2440 and s3c2442 to common clock framework
[firefly-linux-kernel-4.4.55.git] / arch / arm / mach-s3c24xx / mach-osiris.c
index f84f2a4c0c6d0cb4aa3148d31db5806b870db635..3bc2c9bad8b347982c8438022c8c6269d0690579 100644 (file)
@@ -18,6 +18,7 @@
 #include <linux/device.h>
 #include <linux/syscore_ops.h>
 #include <linux/serial_core.h>
+#include <linux/serial_s3c.h>
 #include <linux/clk.h>
 #include <linux/i2c.h>
 #include <linux/io.h>
 #include <linux/mtd/nand_ecc.h>
 #include <linux/mtd/partitions.h>
 
-#include <plat/clock.h>
 #include <plat/cpu.h>
 #include <plat/cpu-freq.h>
 #include <plat/devs.h>
 #include <plat/gpio-cfg.h>
-#include <plat/regs-serial.h>
 #include <plat/samsung-time.h>
 
 #include <mach/hardware.h>
@@ -344,12 +343,14 @@ static struct i2c_board_info osiris_i2c_devs[] __initdata = {
 /* Standard Osiris devices */
 
 static struct platform_device *osiris_devices[] __initdata = {
+       &s3c2410_device_dclk,
        &s3c_device_i2c0,
        &s3c_device_wdt,
        &s3c_device_nand,
        &osiris_pcmcia,
 };
 
+#ifdef CONFIG_SAMSUNG_CLOCK
 static struct clk *osiris_clocks[] __initdata = {
        &s3c24xx_dclk0,
        &s3c24xx_dclk1,
@@ -357,6 +358,7 @@ static struct clk *osiris_clocks[] __initdata = {
        &s3c24xx_clkout1,
        &s3c24xx_uclk,
 };
+#endif
 
 static struct s3c_cpufreq_board __initdata osiris_cpufreq = {
        .refresh        = 7800, /* refresh period is 7.8usec */
@@ -368,6 +370,7 @@ static void __init osiris_map_io(void)
 {
        unsigned long flags;
 
+#ifdef CONFIG_SAMSUNG_CLOCK
        /* initialise the clocks */
 
        s3c24xx_dclk0.parent = &clk_upll;
@@ -382,9 +385,9 @@ static void __init osiris_map_io(void)
        s3c24xx_uclk.parent  = &s3c24xx_clkout1;
 
        s3c24xx_register_clocks(osiris_clocks, ARRAY_SIZE(osiris_clocks));
+#endif
 
        s3c24xx_init_io(osiris_iodesc, ARRAY_SIZE(osiris_iodesc));
-       s3c24xx_init_clocks(0);
        s3c24xx_init_uarts(osiris_uartcfgs, ARRAY_SIZE(osiris_uartcfgs));
        samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
 
@@ -408,6 +411,12 @@ static void __init osiris_map_io(void)
        local_irq_restore(flags);
 }
 
+static void __init osiris_init_time(void)
+{
+       s3c2440_init_clocks(12000000);
+       samsung_timer_init();
+}
+
 static void __init osiris_init(void)
 {
        register_syscore_ops(&osiris_pm_syscore_ops);
@@ -429,6 +438,6 @@ MACHINE_START(OSIRIS, "Simtec-OSIRIS")
        .map_io         = osiris_map_io,
        .init_irq       = s3c2440_init_irq,
        .init_machine   = osiris_init,
-       .init_time      = samsung_timer_init,
+       .init_time      = osiris_init_time,
        .restart        = s3c244x_restart,
 MACHINE_END