1 From 765e7a067eebf372687048ba0242e27f43cf0d71 Mon Sep 17 00:00:00 2001
2 From: Nishanth Menon <nm@ti.com>
3 Date: Wed, 16 Oct 2013 15:39:02 +0000
4 Subject: ARM: OMAP2+: add missing lateinit hook for calling pm late init
6 AM335x, AM43xx, OMAP5 and DRA7 have missing late init hook. Introduce
7 SoC specific hook with a call to OMAP2+ generic lateinit hook. This
8 allows the generic late initializations such as cpufreq hooks to be
11 Based on out-of-tree patches that need to be introduced in
12 mainline, this introduction allows us to provide the foundation for
13 further SoC specific features as they are developed.
15 Cc: Benoit Cousson <bcousson@baylibre.com>
16 Cc: Kevin Hilman <khilman@deeprootsystems.com>
17 Cc: Paul Walmsley <paul@pwsan.com>
18 Cc: Tony Lindgren <tony@atomide.com>
19 Signed-off-by: Nishanth Menon <nm@ti.com>
20 Signed-off-by: Tony Lindgren <tony@atomide.com>
22 diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c
23 index 3896b12..19f1652 100644
24 --- a/arch/arm/mach-omap2/board-generic.c
25 +++ b/arch/arm/mach-omap2/board-generic.c
26 @@ -146,6 +146,7 @@ DT_MACHINE_START(AM33XX_DT, "Generic AM33XX (Flattened Device Tree)")
27 .init_irq = omap_intc_of_init,
28 .handle_irq = omap3_intc_handle_irq,
29 .init_machine = omap_generic_init,
30 + .init_late = am33xx_init_late,
31 .init_time = omap3_gptimer_timer_init,
32 .dt_compat = am33xx_boards_compat,
33 .restart = am33xx_restart,
34 @@ -185,6 +186,7 @@ DT_MACHINE_START(OMAP5_DT, "Generic OMAP5 (Flattened Device Tree)")
35 .init_early = omap5_init_early,
36 .init_irq = omap_gic_of_init,
37 .init_machine = omap_generic_init,
38 + .init_late = omap5_init_late,
39 .init_time = omap5_realtime_timer_init,
40 .dt_compat = omap5_boards_compat,
41 .restart = omap44xx_restart,
42 @@ -200,6 +202,7 @@ static const char *am43_boards_compat[] __initdata = {
43 DT_MACHINE_START(AM43_DT, "Generic AM43 (Flattened Device Tree)")
44 .map_io = am33xx_map_io,
45 .init_early = am43xx_init_early,
46 + .init_late = am43xx_init_late,
47 .init_irq = omap_gic_of_init,
48 .init_machine = omap_generic_init,
49 .init_time = omap3_sync32k_timer_init,
50 @@ -218,6 +221,7 @@ DT_MACHINE_START(DRA7XX_DT, "Generic DRA7XX (Flattened Device Tree)")
51 .smp = smp_ops(omap4_smp_ops),
52 .map_io = omap5_map_io,
53 .init_early = dra7xx_init_early,
54 + .init_late = dra7xx_init_late,
55 .init_irq = omap_gic_of_init,
56 .init_machine = omap_generic_init,
57 .init_time = omap5_realtime_timer_init,
58 diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h
59 index c6aebf0..f7644fe 100644
60 --- a/arch/arm/mach-omap2/common.h
61 +++ b/arch/arm/mach-omap2/common.h
62 @@ -98,6 +98,7 @@ void am35xx_init_early(void);
63 void ti81xx_init_early(void);
64 void am33xx_init_early(void);
65 void am43xx_init_early(void);
66 +void am43xx_init_late(void);
67 void omap4430_init_early(void);
68 void omap5_init_early(void);
69 void omap3_init_late(void); /* Do not use this one */
70 @@ -109,8 +110,11 @@ void omap35xx_init_late(void);
71 void omap3630_init_late(void);
72 void am35xx_init_late(void);
73 void ti81xx_init_late(void);
74 +void am33xx_init_late(void);
75 +void omap5_init_late(void);
76 int omap2_common_pm_late_init(void);
77 void dra7xx_init_early(void);
78 +void dra7xx_init_late(void);
81 void omap_soc_device_init(void);
82 diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
83 index ff2113c..a2cbb44 100644
84 --- a/arch/arm/mach-omap2/io.c
85 +++ b/arch/arm/mach-omap2/io.c
86 @@ -583,6 +583,11 @@ void __init am33xx_init_early(void)
87 omap_hwmod_init_postsetup();
88 omap_clk_init = am33xx_clk_init;
91 +void __init am33xx_init_late(void)
93 + omap_common_late_init();
97 #ifdef CONFIG_SOC_AM43XX
98 @@ -596,6 +601,11 @@ void __init am43xx_init_early(void)
99 omap2_set_globals_cm(AM33XX_L4_WK_IO_ADDRESS(AM43XX_PRCM_BASE), NULL);
100 omap3xxx_check_revision();
103 +void __init am43xx_init_late(void)
105 + omap_common_late_init();
109 #ifdef CONFIG_ARCH_OMAP4
110 @@ -651,6 +661,11 @@ void __init omap5_init_early(void)
111 omap54xx_hwmod_init();
112 omap_hwmod_init_postsetup();
115 +void __init omap5_init_late(void)
117 + omap_common_late_init();
121 #ifdef CONFIG_SOC_DRA7XX
122 @@ -671,6 +686,11 @@ void __init dra7xx_init_early(void)
124 omap_hwmod_init_postsetup();
127 +void __init dra7xx_init_late(void)
129 + omap_common_late_init();