Commit 6923ae4b authored by Thomas Abraham's avatar Thomas Abraham Committed by Kukjin Kim

ARM: EXYNOS: Initialize the clocks prior to timer initialization

Since the clock initialization should be completed prior to the mct
timer initialization, create a new function 'exynos_init_time' that
first sets up the clock and then invokes the timer initialization
function. The 'init_time' callback in the board files are updated to
invoke this new wrapper function.
Signed-off-by: default avatarThomas Abraham <thomas.abraham@linaro.org>
Signed-off-by: default avatarKukjin Kim <kgene.kim@samsung.com>
parent 6e6aac75
...@@ -25,6 +25,8 @@ ...@@ -25,6 +25,8 @@
#include <linux/irqdomain.h> #include <linux/irqdomain.h>
#include <linux/irqchip.h> #include <linux/irqchip.h>
#include <linux/of_address.h> #include <linux/of_address.h>
#include <linux/clocksource.h>
#include <linux/clk-provider.h>
#include <linux/irqchip/arm-gic.h> #include <linux/irqchip/arm-gic.h>
#include <asm/proc-fns.h> #include <asm/proc-fns.h>
...@@ -395,6 +397,20 @@ static void __init exynos5440_map_io(void) ...@@ -395,6 +397,20 @@ static void __init exynos5440_map_io(void)
iotable_init(exynos5440_iodesc0, ARRAY_SIZE(exynos5440_iodesc0)); iotable_init(exynos5440_iodesc0, ARRAY_SIZE(exynos5440_iodesc0));
} }
void __init exynos_init_time(void)
{
if (of_have_populated_dt()) {
#ifdef CONFIG_OF
of_clk_init(NULL);
clocksource_of_init();
#endif
} else {
/* todo: remove after migrating legacy E4 platforms to dt */
exynos4_clk_init(NULL);
mct_init();
}
}
void __init exynos4_init_irq(void) void __init exynos4_init_irq(void)
{ {
unsigned int gic_bank_offset; unsigned int gic_bank_offset;
......
...@@ -201,6 +201,6 @@ MACHINE_START(ARMLEX4210, "ARMLEX4210") ...@@ -201,6 +201,6 @@ MACHINE_START(ARMLEX4210, "ARMLEX4210")
.map_io = armlex4210_map_io, .map_io = armlex4210_map_io,
.init_machine = armlex4210_machine_init, .init_machine = armlex4210_machine_init,
.init_late = exynos_init_late, .init_late = exynos_init_late,
.init_time = mct_init, .init_time = exynos_init_time,
.restart = exynos4_restart, .restart = exynos4_restart,
MACHINE_END MACHINE_END
...@@ -158,7 +158,7 @@ DT_MACHINE_START(EXYNOS4210_DT, "Samsung Exynos4 (Flattened Device Tree)") ...@@ -158,7 +158,7 @@ DT_MACHINE_START(EXYNOS4210_DT, "Samsung Exynos4 (Flattened Device Tree)")
.map_io = exynos4_dt_map_io, .map_io = exynos4_dt_map_io,
.init_machine = exynos4_dt_machine_init, .init_machine = exynos4_dt_machine_init,
.init_late = exynos_init_late, .init_late = exynos_init_late,
.init_time = clocksource_of_init, .init_time = exynos_init_time,
.dt_compat = exynos4_dt_compat, .dt_compat = exynos4_dt_compat,
.restart = exynos4_restart, .restart = exynos4_restart,
.reserve = exynos4_reserve, .reserve = exynos4_reserve,
......
...@@ -213,7 +213,7 @@ DT_MACHINE_START(EXYNOS5_DT, "SAMSUNG EXYNOS5 (Flattened Device Tree)") ...@@ -213,7 +213,7 @@ DT_MACHINE_START(EXYNOS5_DT, "SAMSUNG EXYNOS5 (Flattened Device Tree)")
.map_io = exynos5_dt_map_io, .map_io = exynos5_dt_map_io,
.init_machine = exynos5_dt_machine_init, .init_machine = exynos5_dt_machine_init,
.init_late = exynos_init_late, .init_late = exynos_init_late,
.init_time = clocksource_of_init, .init_time = exynos_init_time,
.dt_compat = exynos5_dt_compat, .dt_compat = exynos5_dt_compat,
.restart = exynos5_restart, .restart = exynos5_restart,
.reserve = exynos5_reserve, .reserve = exynos5_reserve,
......
...@@ -1379,7 +1379,7 @@ MACHINE_START(NURI, "NURI") ...@@ -1379,7 +1379,7 @@ MACHINE_START(NURI, "NURI")
.map_io = nuri_map_io, .map_io = nuri_map_io,
.init_machine = nuri_machine_init, .init_machine = nuri_machine_init,
.init_late = exynos_init_late, .init_late = exynos_init_late,
.init_time = mct_init, .init_time = exynos_init_time,
.reserve = &nuri_reserve, .reserve = &nuri_reserve,
.restart = exynos4_restart, .restart = exynos4_restart,
MACHINE_END MACHINE_END
...@@ -814,7 +814,7 @@ MACHINE_START(ORIGEN, "ORIGEN") ...@@ -814,7 +814,7 @@ MACHINE_START(ORIGEN, "ORIGEN")
.map_io = origen_map_io, .map_io = origen_map_io,
.init_machine = origen_machine_init, .init_machine = origen_machine_init,
.init_late = exynos_init_late, .init_late = exynos_init_late,
.init_time = mct_init, .init_time = exynos_init_time,
.reserve = &origen_reserve, .reserve = &origen_reserve,
.restart = exynos4_restart, .restart = exynos4_restart,
MACHINE_END MACHINE_END
...@@ -375,7 +375,7 @@ MACHINE_START(SMDK4212, "SMDK4212") ...@@ -375,7 +375,7 @@ MACHINE_START(SMDK4212, "SMDK4212")
.init_irq = exynos4_init_irq, .init_irq = exynos4_init_irq,
.map_io = smdk4x12_map_io, .map_io = smdk4x12_map_io,
.init_machine = smdk4x12_machine_init, .init_machine = smdk4x12_machine_init,
.init_time = mct_init, .init_time = exynos_init_time,
.restart = exynos4_restart, .restart = exynos4_restart,
.reserve = &smdk4x12_reserve, .reserve = &smdk4x12_reserve,
MACHINE_END MACHINE_END
...@@ -389,7 +389,7 @@ MACHINE_START(SMDK4412, "SMDK4412") ...@@ -389,7 +389,7 @@ MACHINE_START(SMDK4412, "SMDK4412")
.map_io = smdk4x12_map_io, .map_io = smdk4x12_map_io,
.init_machine = smdk4x12_machine_init, .init_machine = smdk4x12_machine_init,
.init_late = exynos_init_late, .init_late = exynos_init_late,
.init_time = mct_init, .init_time = exynos_init_time,
.restart = exynos4_restart, .restart = exynos4_restart,
.reserve = &smdk4x12_reserve, .reserve = &smdk4x12_reserve,
MACHINE_END MACHINE_END
...@@ -422,7 +422,7 @@ MACHINE_START(SMDKV310, "SMDKV310") ...@@ -422,7 +422,7 @@ MACHINE_START(SMDKV310, "SMDKV310")
.init_irq = exynos4_init_irq, .init_irq = exynos4_init_irq,
.map_io = smdkv310_map_io, .map_io = smdkv310_map_io,
.init_machine = smdkv310_machine_init, .init_machine = smdkv310_machine_init,
.init_time = mct_init, .init_time = exynos_init_time,
.reserve = &smdkv310_reserve, .reserve = &smdkv310_reserve,
.restart = exynos4_restart, .restart = exynos4_restart,
MACHINE_END MACHINE_END
...@@ -435,7 +435,7 @@ MACHINE_START(SMDKC210, "SMDKC210") ...@@ -435,7 +435,7 @@ MACHINE_START(SMDKC210, "SMDKC210")
.map_io = smdkv310_map_io, .map_io = smdkv310_map_io,
.init_machine = smdkv310_machine_init, .init_machine = smdkv310_machine_init,
.init_late = exynos_init_late, .init_late = exynos_init_late,
.init_time = mct_init, .init_time = exynos_init_time,
.reserve = &smdkv310_reserve, .reserve = &smdkv310_reserve,
.restart = exynos4_restart, .restart = exynos4_restart,
MACHINE_END MACHINE_END
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment