diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-05-26 16:14:01 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-05-26 16:14:01 -0400 |
commit | f465d145d76803fe6332092775d891c8c509aa44 (patch) | |
tree | 45889e2eee7e8288ef269e9b661111364a71c25f | |
parent | 30b842889eea1bea02dff55b13d2ddf07a46ce78 (diff) | |
parent | 80b9abf973462499c1a0110df47f62cc90361e2c (diff) |
Merge tag 'cleanup-initcall' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull sweeping late_initcall cleanup for arm-soc from Olof Johansson:
"This is a patch series from Shawn Guo that moves from individual
late_initcalls() to using a member in the machine structure to invoke
a platform's late initcalls.
This cleanup is a step in the move towards multiplatform kernels since
it would reduce the need to check for compatible platforms in each and
every initcall."
Fix up trivial conflicts in arch/arm/mach-{exynos/mach-universal_c210.c,
imx/mach-cpuimx51.c, omap2/board-generic.c} due to changes nearby (and,
in the case of cpuimx51.c the board support being deleted)
* tag 'cleanup-initcall' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
ARM: ux500: use machine specific hook for late init
ARM: tegra: use machine specific hook for late init
ARM: shmobile: use machine specific hook for late init
ARM: sa1100: use machine specific hook for late init
ARM: s3c64xx: use machine specific hook for late init
ARM: prima2: use machine specific hook for late init
ARM: pnx4008: use machine specific hook for late init
ARM: omap2: use machine specific hook for late init
ARM: omap1: use machine specific hook for late init
ARM: msm: use machine specific hook for late init
ARM: imx: use machine specific hook for late init
ARM: exynos: use machine specific hook for late init
ARM: ep93xx: use machine specific hook for late init
ARM: davinci: use machine specific hook for late init
ARM: provide a late_initcall hook for platform initialization
178 files changed, 614 insertions, 106 deletions
diff --git a/arch/arm/include/asm/mach/arch.h b/arch/arm/include/asm/mach/arch.h index d7692cafde7f..0b1c94b8c652 100644 --- a/arch/arm/include/asm/mach/arch.h +++ b/arch/arm/include/asm/mach/arch.h | |||
@@ -43,6 +43,7 @@ struct machine_desc { | |||
43 | void (*init_irq)(void); | 43 | void (*init_irq)(void); |
44 | struct sys_timer *timer; /* system tick timer */ | 44 | struct sys_timer *timer; /* system tick timer */ |
45 | void (*init_machine)(void); | 45 | void (*init_machine)(void); |
46 | void (*init_late)(void); | ||
46 | #ifdef CONFIG_MULTI_IRQ_HANDLER | 47 | #ifdef CONFIG_MULTI_IRQ_HANDLER |
47 | void (*handle_irq)(struct pt_regs *); | 48 | void (*handle_irq)(struct pt_regs *); |
48 | #endif | 49 | #endif |
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index 1b3096dfb964..e15d83bb4ea3 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c | |||
@@ -801,6 +801,14 @@ static int __init customize_machine(void) | |||
801 | } | 801 | } |
802 | arch_initcall(customize_machine); | 802 | arch_initcall(customize_machine); |
803 | 803 | ||
804 | static int __init init_machine_late(void) | ||
805 | { | ||
806 | if (machine_desc->init_late) | ||
807 | machine_desc->init_late(); | ||
808 | return 0; | ||
809 | } | ||
810 | late_initcall(init_machine_late); | ||
811 | |||
804 | #ifdef CONFIG_KEXEC | 812 | #ifdef CONFIG_KEXEC |
805 | static inline unsigned long long get_total_mem(void) | 813 | static inline unsigned long long get_total_mem(void) |
806 | { | 814 | { |
diff --git a/arch/arm/mach-davinci/board-da830-evm.c b/arch/arm/mach-davinci/board-da830-evm.c index dc1afe5be20c..0031864e7f11 100644 --- a/arch/arm/mach-davinci/board-da830-evm.c +++ b/arch/arm/mach-davinci/board-da830-evm.c | |||
@@ -681,6 +681,7 @@ MACHINE_START(DAVINCI_DA830_EVM, "DaVinci DA830/OMAP-L137/AM17x EVM") | |||
681 | .init_irq = cp_intc_init, | 681 | .init_irq = cp_intc_init, |
682 | .timer = &davinci_timer, | 682 | .timer = &davinci_timer, |
683 | .init_machine = da830_evm_init, | 683 | .init_machine = da830_evm_init, |
684 | .init_late = davinci_init_late, | ||
684 | .dma_zone_size = SZ_128M, | 685 | .dma_zone_size = SZ_128M, |
685 | .restart = da8xx_restart, | 686 | .restart = da8xx_restart, |
686 | MACHINE_END | 687 | MACHINE_END |
diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c index 09f61073c8d9..0149fb453be3 100644 --- a/arch/arm/mach-davinci/board-da850-evm.c +++ b/arch/arm/mach-davinci/board-da850-evm.c | |||
@@ -1411,6 +1411,7 @@ MACHINE_START(DAVINCI_DA850_EVM, "DaVinci DA850/OMAP-L138/AM18x EVM") | |||
1411 | .init_irq = cp_intc_init, | 1411 | .init_irq = cp_intc_init, |
1412 | .timer = &davinci_timer, | 1412 | .timer = &davinci_timer, |
1413 | .init_machine = da850_evm_init, | 1413 | .init_machine = da850_evm_init, |
1414 | .init_late = davinci_init_late, | ||
1414 | .dma_zone_size = SZ_128M, | 1415 | .dma_zone_size = SZ_128M, |
1415 | .restart = da8xx_restart, | 1416 | .restart = da8xx_restart, |
1416 | MACHINE_END | 1417 | MACHINE_END |
diff --git a/arch/arm/mach-davinci/board-dm355-evm.c b/arch/arm/mach-davinci/board-dm355-evm.c index 82ed753fb360..1c7b1f46a8f3 100644 --- a/arch/arm/mach-davinci/board-dm355-evm.c +++ b/arch/arm/mach-davinci/board-dm355-evm.c | |||
@@ -357,6 +357,7 @@ MACHINE_START(DAVINCI_DM355_EVM, "DaVinci DM355 EVM") | |||
357 | .init_irq = davinci_irq_init, | 357 | .init_irq = davinci_irq_init, |
358 | .timer = &davinci_timer, | 358 | .timer = &davinci_timer, |
359 | .init_machine = dm355_evm_init, | 359 | .init_machine = dm355_evm_init, |
360 | .init_late = davinci_init_late, | ||
360 | .dma_zone_size = SZ_128M, | 361 | .dma_zone_size = SZ_128M, |
361 | .restart = davinci_restart, | 362 | .restart = davinci_restart, |
362 | MACHINE_END | 363 | MACHINE_END |
diff --git a/arch/arm/mach-davinci/board-dm355-leopard.c b/arch/arm/mach-davinci/board-dm355-leopard.c index d74a8b3445fb..8e7703213b08 100644 --- a/arch/arm/mach-davinci/board-dm355-leopard.c +++ b/arch/arm/mach-davinci/board-dm355-leopard.c | |||
@@ -276,6 +276,7 @@ MACHINE_START(DM355_LEOPARD, "DaVinci DM355 leopard") | |||
276 | .init_irq = davinci_irq_init, | 276 | .init_irq = davinci_irq_init, |
277 | .timer = &davinci_timer, | 277 | .timer = &davinci_timer, |
278 | .init_machine = dm355_leopard_init, | 278 | .init_machine = dm355_leopard_init, |
279 | .init_late = davinci_init_late, | ||
279 | .dma_zone_size = SZ_128M, | 280 | .dma_zone_size = SZ_128M, |
280 | .restart = davinci_restart, | 281 | .restart = davinci_restart, |
281 | MACHINE_END | 282 | MACHINE_END |
diff --git a/arch/arm/mach-davinci/board-dm365-evm.c b/arch/arm/mach-davinci/board-dm365-evm.c index 5bce2b83bb4f..688a9c556dc9 100644 --- a/arch/arm/mach-davinci/board-dm365-evm.c +++ b/arch/arm/mach-davinci/board-dm365-evm.c | |||
@@ -618,6 +618,7 @@ MACHINE_START(DAVINCI_DM365_EVM, "DaVinci DM365 EVM") | |||
618 | .init_irq = davinci_irq_init, | 618 | .init_irq = davinci_irq_init, |
619 | .timer = &davinci_timer, | 619 | .timer = &davinci_timer, |
620 | .init_machine = dm365_evm_init, | 620 | .init_machine = dm365_evm_init, |
621 | .init_late = davinci_init_late, | ||
621 | .dma_zone_size = SZ_128M, | 622 | .dma_zone_size = SZ_128M, |
622 | .restart = davinci_restart, | 623 | .restart = davinci_restart, |
623 | MACHINE_END | 624 | MACHINE_END |
diff --git a/arch/arm/mach-davinci/board-dm644x-evm.c b/arch/arm/mach-davinci/board-dm644x-evm.c index 3683306e0245..d34ed55912b2 100644 --- a/arch/arm/mach-davinci/board-dm644x-evm.c +++ b/arch/arm/mach-davinci/board-dm644x-evm.c | |||
@@ -825,6 +825,7 @@ MACHINE_START(DAVINCI_EVM, "DaVinci DM644x EVM") | |||
825 | .init_irq = davinci_irq_init, | 825 | .init_irq = davinci_irq_init, |
826 | .timer = &davinci_timer, | 826 | .timer = &davinci_timer, |
827 | .init_machine = davinci_evm_init, | 827 | .init_machine = davinci_evm_init, |
828 | .init_late = davinci_init_late, | ||
828 | .dma_zone_size = SZ_128M, | 829 | .dma_zone_size = SZ_128M, |
829 | .restart = davinci_restart, | 830 | .restart = davinci_restart, |
830 | MACHINE_END | 831 | MACHINE_END |
diff --git a/arch/arm/mach-davinci/board-dm646x-evm.c b/arch/arm/mach-davinci/board-dm646x-evm.c index d72ab948d630..958679a20e13 100644 --- a/arch/arm/mach-davinci/board-dm646x-evm.c +++ b/arch/arm/mach-davinci/board-dm646x-evm.c | |||
@@ -788,6 +788,7 @@ MACHINE_START(DAVINCI_DM6467_EVM, "DaVinci DM646x EVM") | |||
788 | .init_irq = davinci_irq_init, | 788 | .init_irq = davinci_irq_init, |
789 | .timer = &davinci_timer, | 789 | .timer = &davinci_timer, |
790 | .init_machine = evm_init, | 790 | .init_machine = evm_init, |
791 | .init_late = davinci_init_late, | ||
791 | .dma_zone_size = SZ_128M, | 792 | .dma_zone_size = SZ_128M, |
792 | .restart = davinci_restart, | 793 | .restart = davinci_restart, |
793 | MACHINE_END | 794 | MACHINE_END |
@@ -798,6 +799,7 @@ MACHINE_START(DAVINCI_DM6467TEVM, "DaVinci DM6467T EVM") | |||
798 | .init_irq = davinci_irq_init, | 799 | .init_irq = davinci_irq_init, |
799 | .timer = &davinci_timer, | 800 | .timer = &davinci_timer, |
800 | .init_machine = evm_init, | 801 | .init_machine = evm_init, |
802 | .init_late = davinci_init_late, | ||
801 | .dma_zone_size = SZ_128M, | 803 | .dma_zone_size = SZ_128M, |
802 | .restart = davinci_restart, | 804 | .restart = davinci_restart, |
803 | MACHINE_END | 805 | MACHINE_END |
diff --git a/arch/arm/mach-davinci/board-mityomapl138.c b/arch/arm/mach-davinci/board-mityomapl138.c index 672d820e2aa4..beecde3a1d2f 100644 --- a/arch/arm/mach-davinci/board-mityomapl138.c +++ b/arch/arm/mach-davinci/board-mityomapl138.c | |||
@@ -572,6 +572,7 @@ MACHINE_START(MITYOMAPL138, "MityDSP-L138/MityARM-1808") | |||
572 | .init_irq = cp_intc_init, | 572 | .init_irq = cp_intc_init, |
573 | .timer = &davinci_timer, | 573 | .timer = &davinci_timer, |
574 | .init_machine = mityomapl138_init, | 574 | .init_machine = mityomapl138_init, |
575 | .init_late = davinci_init_late, | ||
575 | .dma_zone_size = SZ_128M, | 576 | .dma_zone_size = SZ_128M, |
576 | .restart = da8xx_restart, | 577 | .restart = da8xx_restart, |
577 | MACHINE_END | 578 | MACHINE_END |
diff --git a/arch/arm/mach-davinci/board-neuros-osd2.c b/arch/arm/mach-davinci/board-neuros-osd2.c index a772bb45570a..5de69f2fcca9 100644 --- a/arch/arm/mach-davinci/board-neuros-osd2.c +++ b/arch/arm/mach-davinci/board-neuros-osd2.c | |||
@@ -278,6 +278,7 @@ MACHINE_START(NEUROS_OSD2, "Neuros OSD2") | |||
278 | .init_irq = davinci_irq_init, | 278 | .init_irq = davinci_irq_init, |
279 | .timer = &davinci_timer, | 279 | .timer = &davinci_timer, |
280 | .init_machine = davinci_ntosd2_init, | 280 | .init_machine = davinci_ntosd2_init, |
281 | .init_late = davinci_init_late, | ||
281 | .dma_zone_size = SZ_128M, | 282 | .dma_zone_size = SZ_128M, |
282 | .restart = davinci_restart, | 283 | .restart = davinci_restart, |
283 | MACHINE_END | 284 | MACHINE_END |
diff --git a/arch/arm/mach-davinci/board-omapl138-hawk.c b/arch/arm/mach-davinci/board-omapl138-hawk.c index 45e815760a27..dc1208e9e664 100644 --- a/arch/arm/mach-davinci/board-omapl138-hawk.c +++ b/arch/arm/mach-davinci/board-omapl138-hawk.c | |||
@@ -343,6 +343,7 @@ MACHINE_START(OMAPL138_HAWKBOARD, "AM18x/OMAP-L138 Hawkboard") | |||
343 | .init_irq = cp_intc_init, | 343 | .init_irq = cp_intc_init, |
344 | .timer = &davinci_timer, | 344 | .timer = &davinci_timer, |
345 | .init_machine = omapl138_hawk_init, | 345 | .init_machine = omapl138_hawk_init, |
346 | .init_late = davinci_init_late, | ||
346 | .dma_zone_size = SZ_128M, | 347 | .dma_zone_size = SZ_128M, |
347 | .restart = da8xx_restart, | 348 | .restart = da8xx_restart, |
348 | MACHINE_END | 349 | MACHINE_END |
diff --git a/arch/arm/mach-davinci/board-sffsdr.c b/arch/arm/mach-davinci/board-sffsdr.c index 76e675096104..9078acf94bac 100644 --- a/arch/arm/mach-davinci/board-sffsdr.c +++ b/arch/arm/mach-davinci/board-sffsdr.c | |||
@@ -157,6 +157,7 @@ MACHINE_START(SFFSDR, "Lyrtech SFFSDR") | |||
157 | .init_irq = davinci_irq_init, | 157 | .init_irq = davinci_irq_init, |
158 | .timer = &davinci_timer, | 158 | .timer = &davinci_timer, |
159 | .init_machine = davinci_sffsdr_init, | 159 | .init_machine = davinci_sffsdr_init, |
160 | .init_late = davinci_init_late, | ||
160 | .dma_zone_size = SZ_128M, | 161 | .dma_zone_size = SZ_128M, |
161 | .restart = davinci_restart, | 162 | .restart = davinci_restart, |
162 | MACHINE_END | 163 | MACHINE_END |
diff --git a/arch/arm/mach-davinci/board-tnetv107x-evm.c b/arch/arm/mach-davinci/board-tnetv107x-evm.c index 5f14e30b00d8..ac4e003ad863 100644 --- a/arch/arm/mach-davinci/board-tnetv107x-evm.c +++ b/arch/arm/mach-davinci/board-tnetv107x-evm.c | |||
@@ -282,6 +282,7 @@ MACHINE_START(TNETV107X, "TNETV107X EVM") | |||
282 | .init_irq = cp_intc_init, | 282 | .init_irq = cp_intc_init, |
283 | .timer = &davinci_timer, | 283 | .timer = &davinci_timer, |
284 | .init_machine = tnetv107x_evm_board_init, | 284 | .init_machine = tnetv107x_evm_board_init, |
285 | .init_late = davinci_init_late, | ||
285 | .dma_zone_size = SZ_128M, | 286 | .dma_zone_size = SZ_128M, |
286 | .restart = tnetv107x_restart, | 287 | .restart = tnetv107x_restart, |
287 | MACHINE_END | 288 | MACHINE_END |
diff --git a/arch/arm/mach-davinci/clock.c b/arch/arm/mach-davinci/clock.c index 008772e3b843..34668ead53c7 100644 --- a/arch/arm/mach-davinci/clock.c +++ b/arch/arm/mach-davinci/clock.c | |||
@@ -213,7 +213,7 @@ EXPORT_SYMBOL(clk_unregister); | |||
213 | /* | 213 | /* |
214 | * Disable any unused clocks left on by the bootloader | 214 | * Disable any unused clocks left on by the bootloader |
215 | */ | 215 | */ |
216 | static int __init clk_disable_unused(void) | 216 | int __init davinci_clk_disable_unused(void) |
217 | { | 217 | { |
218 | struct clk *ck; | 218 | struct clk *ck; |
219 | 219 | ||
@@ -237,7 +237,6 @@ static int __init clk_disable_unused(void) | |||
237 | 237 | ||
238 | return 0; | 238 | return 0; |
239 | } | 239 | } |
240 | late_initcall(clk_disable_unused); | ||
241 | #endif | 240 | #endif |
242 | 241 | ||
243 | static unsigned long clk_sysclk_recalc(struct clk *clk) | 242 | static unsigned long clk_sysclk_recalc(struct clk *clk) |
diff --git a/arch/arm/mach-davinci/common.c b/arch/arm/mach-davinci/common.c index cb9b2e47510c..64b0f65a8639 100644 --- a/arch/arm/mach-davinci/common.c +++ b/arch/arm/mach-davinci/common.c | |||
@@ -117,3 +117,10 @@ void __init davinci_common_init(struct davinci_soc_info *soc_info) | |||
117 | err: | 117 | err: |
118 | panic("davinci_common_init: SoC Initialization failed\n"); | 118 | panic("davinci_common_init: SoC Initialization failed\n"); |
119 | } | 119 | } |
120 | |||
121 | void __init davinci_init_late(void) | ||
122 | { | ||
123 | davinci_cpufreq_init(); | ||
124 | davinci_pm_init(); | ||
125 | davinci_clk_disable_unused(); | ||
126 | } | ||
diff --git a/arch/arm/mach-davinci/cpufreq.c b/arch/arm/mach-davinci/cpufreq.c index 031048fec9f5..4729eaab0f40 100644 --- a/arch/arm/mach-davinci/cpufreq.c +++ b/arch/arm/mach-davinci/cpufreq.c | |||
@@ -240,10 +240,9 @@ static struct platform_driver davinci_cpufreq_driver = { | |||
240 | .remove = __exit_p(davinci_cpufreq_remove), | 240 | .remove = __exit_p(davinci_cpufreq_remove), |
241 | }; | 241 | }; |
242 | 242 | ||
243 | static int __init davinci_cpufreq_init(void) | 243 | int __init davinci_cpufreq_init(void) |
244 | { | 244 | { |
245 | return platform_driver_probe(&davinci_cpufreq_driver, | 245 | return platform_driver_probe(&davinci_cpufreq_driver, |
246 | davinci_cpufreq_probe); | 246 | davinci_cpufreq_probe); |
247 | } | 247 | } |
248 | late_initcall(davinci_cpufreq_init); | ||
249 | 248 | ||
diff --git a/arch/arm/mach-davinci/include/mach/common.h b/arch/arm/mach-davinci/include/mach/common.h index 5cd39a4e0c96..bdc4aa8e672a 100644 --- a/arch/arm/mach-davinci/include/mach/common.h +++ b/arch/arm/mach-davinci/include/mach/common.h | |||
@@ -84,6 +84,25 @@ extern struct davinci_soc_info davinci_soc_info; | |||
84 | extern void davinci_common_init(struct davinci_soc_info *soc_info); | 84 | extern void davinci_common_init(struct davinci_soc_info *soc_info); |
85 | extern void davinci_init_ide(void); | 85 | extern void davinci_init_ide(void); |
86 | void davinci_restart(char mode, const char *cmd); | 86 | void davinci_restart(char mode, const char *cmd); |
87 | void davinci_init_late(void); | ||
88 | |||
89 | #ifdef CONFIG_DAVINCI_RESET_CLOCKS | ||
90 | int davinci_clk_disable_unused(void); | ||
91 | #else | ||
92 | static inline int davinci_clk_disable_unused(void) { return 0; } | ||
93 | #endif | ||
94 | |||
95 | #ifdef CONFIG_CPU_FREQ | ||
96 | int davinci_cpufreq_init(void); | ||
97 | #else | ||
98 | static inline int davinci_cpufreq_init(void) { return 0; } | ||
99 | #endif | ||
100 | |||
101 | #ifdef CONFIG_SUSPEND | ||
102 | int davinci_pm_init(void); | ||
103 | #else | ||
104 | static inline int davinci_pm_init(void) { return 0; } | ||
105 | #endif | ||
87 | 106 | ||
88 | /* standard place to map on-chip SRAMs; they *may* support DMA */ | 107 | /* standard place to map on-chip SRAMs; they *may* support DMA */ |
89 | #define SRAM_VIRT 0xfffe0000 | 108 | #define SRAM_VIRT 0xfffe0000 |
diff --git a/arch/arm/mach-davinci/pm.c b/arch/arm/mach-davinci/pm.c index 04c49f7543ef..eb8360b33aa9 100644 --- a/arch/arm/mach-davinci/pm.c +++ b/arch/arm/mach-davinci/pm.c | |||
@@ -152,8 +152,7 @@ static struct platform_driver davinci_pm_driver = { | |||
152 | .remove = __exit_p(davinci_pm_remove), | 152 | .remove = __exit_p(davinci_pm_remove), |
153 | }; | 153 | }; |
154 | 154 | ||
155 | static int __init davinci_pm_init(void) | 155 | int __init davinci_pm_init(void) |
156 | { | 156 | { |
157 | return platform_driver_probe(&davinci_pm_driver, davinci_pm_probe); | 157 | return platform_driver_probe(&davinci_pm_driver, davinci_pm_probe); |
158 | } | 158 | } |
159 | late_initcall(davinci_pm_init); | ||
diff --git a/arch/arm/mach-ep93xx/adssphere.c b/arch/arm/mach-ep93xx/adssphere.c index 2d45947a3034..a472777e9eba 100644 --- a/arch/arm/mach-ep93xx/adssphere.c +++ b/arch/arm/mach-ep93xx/adssphere.c | |||
@@ -41,5 +41,6 @@ MACHINE_START(ADSSPHERE, "ADS Sphere board") | |||
41 | .handle_irq = vic_handle_irq, | 41 | .handle_irq = vic_handle_irq, |
42 | .timer = &ep93xx_timer, | 42 | .timer = &ep93xx_timer, |
43 | .init_machine = adssphere_init_machine, | 43 | .init_machine = adssphere_init_machine, |
44 | .init_late = ep93xx_init_late, | ||
44 | .restart = ep93xx_restart, | 45 | .restart = ep93xx_restart, |
45 | MACHINE_END | 46 | MACHINE_END |
diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c index ad1a91ab6acd..4dd07a0e3604 100644 --- a/arch/arm/mach-ep93xx/core.c +++ b/arch/arm/mach-ep93xx/core.c | |||
@@ -834,3 +834,8 @@ void ep93xx_restart(char mode, const char *cmd) | |||
834 | while (1) | 834 | while (1) |
835 | ; | 835 | ; |
836 | } | 836 | } |
837 | |||
838 | void __init ep93xx_init_late(void) | ||
839 | { | ||
840 | crunch_init(); | ||
841 | } | ||
diff --git a/arch/arm/mach-ep93xx/crunch.c b/arch/arm/mach-ep93xx/crunch.c index 74753e2df603..a4a2ab9648c9 100644 --- a/arch/arm/mach-ep93xx/crunch.c +++ b/arch/arm/mach-ep93xx/crunch.c | |||
@@ -79,12 +79,10 @@ static struct notifier_block crunch_notifier_block = { | |||
79 | .notifier_call = crunch_do, | 79 | .notifier_call = crunch_do, |
80 | }; | 80 | }; |
81 | 81 | ||
82 | static int __init crunch_init(void) | 82 | int __init crunch_init(void) |
83 | { | 83 | { |
84 | thread_register_notifier(&crunch_notifier_block); | 84 | thread_register_notifier(&crunch_notifier_block); |
85 | elf_hwcap |= HWCAP_CRUNCH; | 85 | elf_hwcap |= HWCAP_CRUNCH; |
86 | 86 | ||
87 | return 0; | 87 | return 0; |
88 | } | 88 | } |
89 | |||
90 | late_initcall(crunch_init); | ||
diff --git a/arch/arm/mach-ep93xx/edb93xx.c b/arch/arm/mach-ep93xx/edb93xx.c index da9047d726f0..d74c5cddb98b 100644 --- a/arch/arm/mach-ep93xx/edb93xx.c +++ b/arch/arm/mach-ep93xx/edb93xx.c | |||
@@ -255,6 +255,7 @@ MACHINE_START(EDB9301, "Cirrus Logic EDB9301 Evaluation Board") | |||
255 | .handle_irq = vic_handle_irq, | 255 | .handle_irq = vic_handle_irq, |
256 | .timer = &ep93xx_timer, | 256 | .timer = &ep93xx_timer, |
257 | .init_machine = edb93xx_init_machine, | 257 | .init_machine = edb93xx_init_machine, |
258 | .init_late = ep93xx_init_late, | ||
258 | .restart = ep93xx_restart, | 259 | .restart = ep93xx_restart, |
259 | MACHINE_END | 260 | MACHINE_END |
260 | #endif | 261 | #endif |
@@ -268,6 +269,7 @@ MACHINE_START(EDB9302, "Cirrus Logic EDB9302 Evaluation Board") | |||
268 | .handle_irq = vic_handle_irq, | 269 | .handle_irq = vic_handle_irq, |
269 | .timer = &ep93xx_timer, | 270 | .timer = &ep93xx_timer, |
270 | .init_machine = edb93xx_init_machine, | 271 | .init_machine = edb93xx_init_machine, |
272 | .init_late = ep93xx_init_late, | ||
271 | .restart = ep93xx_restart, | 273 | .restart = ep93xx_restart, |
272 | MACHINE_END | 274 | MACHINE_END |
273 | #endif | 275 | #endif |
@@ -281,6 +283,7 @@ MACHINE_START(EDB9302A, "Cirrus Logic EDB9302A Evaluation Board") | |||
281 | .handle_irq = vic_handle_irq, | 283 | .handle_irq = vic_handle_irq, |
282 | .timer = &ep93xx_timer, | 284 | .timer = &ep93xx_timer, |
283 | .init_machine = edb93xx_init_machine, | 285 | .init_machine = edb93xx_init_machine, |
286 | .init_late = ep93xx_init_late, | ||
284 | .restart = ep93xx_restart, | 287 | .restart = ep93xx_restart, |
285 | MACHINE_END | 288 | MACHINE_END |
286 | #endif | 289 | #endif |
@@ -294,6 +297,7 @@ MACHINE_START(EDB9307, "Cirrus Logic EDB9307 Evaluation Board") | |||
294 | .handle_irq = vic_handle_irq, | 297 | .handle_irq = vic_handle_irq, |
295 | .timer = &ep93xx_timer, | 298 | .timer = &ep93xx_timer, |
296 | .init_machine = edb93xx_init_machine, | 299 | .init_machine = edb93xx_init_machine, |
300 | .init_late = ep93xx_init_late, | ||
297 | .restart = ep93xx_restart, | 301 | .restart = ep93xx_restart, |
298 | MACHINE_END | 302 | MACHINE_END |
299 | #endif | 303 | #endif |
@@ -307,6 +311,7 @@ MACHINE_START(EDB9307A, "Cirrus Logic EDB9307A Evaluation Board") | |||
307 | .handle_irq = vic_handle_irq, | 311 | .handle_irq = vic_handle_irq, |
308 | .timer = &ep93xx_timer, | 312 | .timer = &ep93xx_timer, |
309 | .init_machine = edb93xx_init_machine, | 313 | .init_machine = edb93xx_init_machine, |
314 | .init_late = ep93xx_init_late, | ||
310 | .restart = ep93xx_restart, | 315 | .restart = ep93xx_restart, |
311 | MACHINE_END | 316 | MACHINE_END |
312 | #endif | 317 | #endif |
@@ -320,6 +325,7 @@ MACHINE_START(EDB9312, "Cirrus Logic EDB9312 Evaluation Board") | |||
320 | .handle_irq = vic_handle_irq, | 325 | .handle_irq = vic_handle_irq, |
321 | .timer = &ep93xx_timer, | 326 | .timer = &ep93xx_timer, |
322 | .init_machine = edb93xx_init_machine, | 327 | .init_machine = edb93xx_init_machine, |
328 | .init_late = ep93xx_init_late, | ||
323 | .restart = ep93xx_restart, | 329 | .restart = ep93xx_restart, |
324 | MACHINE_END | 330 | MACHINE_END |
325 | #endif | 331 | #endif |
@@ -333,6 +339,7 @@ MACHINE_START(EDB9315, "Cirrus Logic EDB9315 Evaluation Board") | |||
333 | .handle_irq = vic_handle_irq, | 339 | .handle_irq = vic_handle_irq, |
334 | .timer = &ep93xx_timer, | 340 | .timer = &ep93xx_timer, |
335 | .init_machine = edb93xx_init_machine, | 341 | .init_machine = edb93xx_init_machine, |
342 | .init_late = ep93xx_init_late, | ||
336 | .restart = ep93xx_restart, | 343 | .restart = ep93xx_restart, |
337 | MACHINE_END | 344 | MACHINE_END |
338 | #endif | 345 | #endif |
@@ -346,6 +353,7 @@ MACHINE_START(EDB9315A, "Cirrus Logic EDB9315A Evaluation Board") | |||
346 | .handle_irq = vic_handle_irq, | 353 | .handle_irq = vic_handle_irq, |
347 | .timer = &ep93xx_timer, | 354 | .timer = &ep93xx_timer, |
348 | .init_machine = edb93xx_init_machine, | 355 | .init_machine = edb93xx_init_machine, |
356 | .init_late = ep93xx_init_late, | ||
349 | .restart = ep93xx_restart, | 357 | .restart = ep93xx_restart, |
350 | MACHINE_END | 358 | MACHINE_END |
351 | #endif | 359 | #endif |
diff --git a/arch/arm/mach-ep93xx/gesbc9312.c b/arch/arm/mach-ep93xx/gesbc9312.c index fcdffbe49dcc..437c34111155 100644 --- a/arch/arm/mach-ep93xx/gesbc9312.c +++ b/arch/arm/mach-ep93xx/gesbc9312.c | |||
@@ -41,5 +41,6 @@ MACHINE_START(GESBC9312, "Glomation GESBC-9312-sx") | |||
41 | .handle_irq = vic_handle_irq, | 41 | .handle_irq = vic_handle_irq, |
42 | .timer = &ep93xx_timer, | 42 | .timer = &ep93xx_timer, |
43 | .init_machine = gesbc9312_init_machine, | 43 | .init_machine = gesbc9312_init_machine, |
44 | .init_late = ep93xx_init_late, | ||
44 | .restart = ep93xx_restart, | 45 | .restart = ep93xx_restart, |
45 | MACHINE_END | 46 | MACHINE_END |
diff --git a/arch/arm/mach-ep93xx/include/mach/platform.h b/arch/arm/mach-ep93xx/include/mach/platform.h index 602bd87fd0ab..1ecb040d98bf 100644 --- a/arch/arm/mach-ep93xx/include/mach/platform.h +++ b/arch/arm/mach-ep93xx/include/mach/platform.h | |||
@@ -53,5 +53,12 @@ void ep93xx_init_devices(void); | |||
53 | extern struct sys_timer ep93xx_timer; | 53 | extern struct sys_timer ep93xx_timer; |
54 | 54 | ||
55 | void ep93xx_restart(char, const char *); | 55 | void ep93xx_restart(char, const char *); |
56 | void ep93xx_init_late(void); | ||
57 | |||
58 | #ifdef CONFIG_CRUNCH | ||
59 | int crunch_init(void); | ||
60 | #else | ||
61 | static inline int crunch_init(void) { return 0; } | ||
62 | #endif | ||
56 | 63 | ||
57 | #endif | 64 | #endif |
diff --git a/arch/arm/mach-ep93xx/micro9.c b/arch/arm/mach-ep93xx/micro9.c index dc431c5f04ce..3d7cdab725b2 100644 --- a/arch/arm/mach-ep93xx/micro9.c +++ b/arch/arm/mach-ep93xx/micro9.c | |||
@@ -85,6 +85,7 @@ MACHINE_START(MICRO9, "Contec Micro9-High") | |||
85 | .handle_irq = vic_handle_irq, | 85 | .handle_irq = vic_handle_irq, |
86 | .timer = &ep93xx_timer, | 86 | .timer = &ep93xx_timer, |
87 | .init_machine = micro9_init_machine, | 87 | .init_machine = micro9_init_machine, |
88 | .init_late = ep93xx_init_late, | ||
88 | .restart = ep93xx_restart, | 89 | .restart = ep93xx_restart, |
89 | MACHINE_END | 90 | MACHINE_END |
90 | #endif | 91 | #endif |
@@ -98,6 +99,7 @@ MACHINE_START(MICRO9M, "Contec Micro9-Mid") | |||
98 | .handle_irq = vic_handle_irq, | 99 | .handle_irq = vic_handle_irq, |
99 | .timer = &ep93xx_timer, | 100 | .timer = &ep93xx_timer, |
100 | .init_machine = micro9_init_machine, | 101 | .init_machine = micro9_init_machine, |
102 | .init_late = ep93xx_init_late, | ||
101 | .restart = ep93xx_restart, | 103 | .restart = ep93xx_restart, |
102 | MACHINE_END | 104 | MACHINE_END |
103 | #endif | 105 | #endif |
@@ -111,6 +113,7 @@ MACHINE_START(MICRO9L, "Contec Micro9-Lite") | |||
111 | .handle_irq = vic_handle_irq, | 113 | .handle_irq = vic_handle_irq, |
112 | .timer = &ep93xx_timer, | 114 | .timer = &ep93xx_timer, |
113 | .init_machine = micro9_init_machine, | 115 | .init_machine = micro9_init_machine, |
116 | .init_late = ep93xx_init_late, | ||
114 | .restart = ep93xx_restart, | 117 | .restart = ep93xx_restart, |
115 | MACHINE_END | 118 | MACHINE_END |
116 | #endif | 119 | #endif |
@@ -124,6 +127,7 @@ MACHINE_START(MICRO9S, "Contec Micro9-Slim") | |||
124 | .handle_irq = vic_handle_irq, | 127 | .handle_irq = vic_handle_irq, |
125 | .timer = &ep93xx_timer, | 128 | .timer = &ep93xx_timer, |
126 | .init_machine = micro9_init_machine, | 129 | .init_machine = micro9_init_machine, |
130 | .init_late = ep93xx_init_late, | ||
127 | .restart = ep93xx_restart, | 131 | .restart = ep93xx_restart, |
128 | MACHINE_END | 132 | MACHINE_END |
129 | #endif | 133 | #endif |
diff --git a/arch/arm/mach-ep93xx/simone.c b/arch/arm/mach-ep93xx/simone.c index f40c2987e545..33dc07917417 100644 --- a/arch/arm/mach-ep93xx/simone.c +++ b/arch/arm/mach-ep93xx/simone.c | |||
@@ -86,5 +86,6 @@ MACHINE_START(SIM_ONE, "Simplemachines Sim.One Board") | |||
86 | .handle_irq = vic_handle_irq, | 86 | .handle_irq = vic_handle_irq, |
87 | .timer = &ep93xx_timer, | 87 | .timer = &ep93xx_timer, |
88 | .init_machine = simone_init_machine, | 88 | .init_machine = simone_init_machine, |
89 | .init_late = ep93xx_init_late, | ||
89 | .restart = ep93xx_restart, | 90 | .restart = ep93xx_restart, |
90 | MACHINE_END | 91 | MACHINE_END |
diff --git a/arch/arm/mach-ep93xx/snappercl15.c b/arch/arm/mach-ep93xx/snappercl15.c index 0c00852ef160..eb282378fa78 100644 --- a/arch/arm/mach-ep93xx/snappercl15.c +++ b/arch/arm/mach-ep93xx/snappercl15.c | |||
@@ -183,5 +183,6 @@ MACHINE_START(SNAPPER_CL15, "Bluewater Systems Snapper CL15") | |||
183 | .handle_irq = vic_handle_irq, | 183 | .handle_irq = vic_handle_irq, |
184 | .timer = &ep93xx_timer, | 184 | .timer = &ep93xx_timer, |
185 | .init_machine = snappercl15_init_machine, | 185 | .init_machine = snappercl15_init_machine, |
186 | .init_late = ep93xx_init_late, | ||
186 | .restart = ep93xx_restart, | 187 | .restart = ep93xx_restart, |
187 | MACHINE_END | 188 | MACHINE_END |
diff --git a/arch/arm/mach-ep93xx/ts72xx.c b/arch/arm/mach-ep93xx/ts72xx.c index 5ea790942e94..d4ef339d961e 100644 --- a/arch/arm/mach-ep93xx/ts72xx.c +++ b/arch/arm/mach-ep93xx/ts72xx.c | |||
@@ -252,5 +252,6 @@ MACHINE_START(TS72XX, "Technologic Systems TS-72xx SBC") | |||
252 | .handle_irq = vic_handle_irq, | 252 | .handle_irq = vic_handle_irq, |
253 | .timer = &ep93xx_timer, | 253 | .timer = &ep93xx_timer, |
254 | .init_machine = ts72xx_init_machine, | 254 | .init_machine = ts72xx_init_machine, |
255 | .init_late = ep93xx_init_late, | ||
255 | .restart = ep93xx_restart, | 256 | .restart = ep93xx_restart, |
256 | MACHINE_END | 257 | MACHINE_END |
diff --git a/arch/arm/mach-ep93xx/vision_ep9307.c b/arch/arm/mach-ep93xx/vision_ep9307.c index ba156eb225e8..2905a4929bdc 100644 --- a/arch/arm/mach-ep93xx/vision_ep9307.c +++ b/arch/arm/mach-ep93xx/vision_ep9307.c | |||
@@ -367,5 +367,6 @@ MACHINE_START(VISION_EP9307, "Vision Engraving Systems EP9307") | |||
367 | .handle_irq = vic_handle_irq, | 367 | .handle_irq = vic_handle_irq, |
368 | .timer = &ep93xx_timer, | 368 | .timer = &ep93xx_timer, |
369 | .init_machine = vision_init_machine, | 369 | .init_machine = vision_init_machine, |
370 | .init_late = ep93xx_init_late, | ||
370 | .restart = ep93xx_restart, | 371 | .restart = ep93xx_restart, |
371 | MACHINE_END | 372 | MACHINE_END |
diff --git a/arch/arm/mach-exynos/common.c b/arch/arm/mach-exynos/common.c index 49134711f4c6..742edd3bbec3 100644 --- a/arch/arm/mach-exynos/common.c +++ b/arch/arm/mach-exynos/common.c | |||
@@ -288,6 +288,11 @@ void exynos5_restart(char mode, const char *cmd) | |||
288 | __raw_writel(0x1, EXYNOS_SWRESET); | 288 | __raw_writel(0x1, EXYNOS_SWRESET); |
289 | } | 289 | } |
290 | 290 | ||
291 | void __init exynos_init_late(void) | ||
292 | { | ||
293 | exynos_pm_late_initcall(); | ||
294 | } | ||
295 | |||
291 | /* | 296 | /* |
292 | * exynos_map_io | 297 | * exynos_map_io |
293 | * | 298 | * |
diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h index 677b5467df18..aed2eeb06517 100644 --- a/arch/arm/mach-exynos/common.h +++ b/arch/arm/mach-exynos/common.h | |||
@@ -19,6 +19,13 @@ void exynos4_init_irq(void); | |||
19 | void exynos5_init_irq(void); | 19 | void exynos5_init_irq(void); |
20 | void exynos4_restart(char mode, const char *cmd); | 20 | void exynos4_restart(char mode, const char *cmd); |
21 | void exynos5_restart(char mode, const char *cmd); | 21 | void exynos5_restart(char mode, const char *cmd); |
22 | void exynos_init_late(void); | ||
23 | |||
24 | #ifdef CONFIG_PM_GENERIC_DOMAINS | ||
25 | int exynos_pm_late_initcall(void); | ||
26 | #else | ||
27 | static int exynos_pm_late_initcall(void) { return 0; } | ||
28 | #endif | ||
22 | 29 | ||
23 | #ifdef CONFIG_ARCH_EXYNOS4 | 30 | #ifdef CONFIG_ARCH_EXYNOS4 |
24 | void exynos4_register_clocks(void); | 31 | void exynos4_register_clocks(void); |
diff --git a/arch/arm/mach-exynos/mach-armlex4210.c b/arch/arm/mach-exynos/mach-armlex4210.c index 372e33196e8a..5a3daa0168d8 100644 --- a/arch/arm/mach-exynos/mach-armlex4210.c +++ b/arch/arm/mach-exynos/mach-armlex4210.c | |||
@@ -203,6 +203,7 @@ MACHINE_START(ARMLEX4210, "ARMLEX4210") | |||
203 | .map_io = armlex4210_map_io, | 203 | .map_io = armlex4210_map_io, |
204 | .handle_irq = gic_handle_irq, | 204 | .handle_irq = gic_handle_irq, |
205 | .init_machine = armlex4210_machine_init, | 205 | .init_machine = armlex4210_machine_init, |
206 | .init_late = exynos_init_late, | ||
206 | .timer = &exynos4_timer, | 207 | .timer = &exynos4_timer, |
207 | .restart = exynos4_restart, | 208 | .restart = exynos4_restart, |
208 | MACHINE_END | 209 | MACHINE_END |
diff --git a/arch/arm/mach-exynos/mach-exynos4-dt.c b/arch/arm/mach-exynos/mach-exynos4-dt.c index 8245f1c761d9..e7e9743543ac 100644 --- a/arch/arm/mach-exynos/mach-exynos4-dt.c +++ b/arch/arm/mach-exynos/mach-exynos4-dt.c | |||
@@ -83,6 +83,7 @@ DT_MACHINE_START(EXYNOS4210_DT, "Samsung Exynos4 (Flattened Device Tree)") | |||
83 | .map_io = exynos4210_dt_map_io, | 83 | .map_io = exynos4210_dt_map_io, |
84 | .handle_irq = gic_handle_irq, | 84 | .handle_irq = gic_handle_irq, |
85 | .init_machine = exynos4210_dt_machine_init, | 85 | .init_machine = exynos4210_dt_machine_init, |
86 | .init_late = exynos_init_late, | ||
86 | .timer = &exynos4_timer, | 87 | .timer = &exynos4_timer, |
87 | .dt_compat = exynos4210_dt_compat, | 88 | .dt_compat = exynos4210_dt_compat, |
88 | .restart = exynos4_restart, | 89 | .restart = exynos4_restart, |
diff --git a/arch/arm/mach-exynos/mach-exynos5-dt.c b/arch/arm/mach-exynos/mach-exynos5-dt.c index cf5d2228e998..7b1e11a228cc 100644 --- a/arch/arm/mach-exynos/mach-exynos5-dt.c +++ b/arch/arm/mach-exynos/mach-exynos5-dt.c | |||
@@ -76,6 +76,7 @@ DT_MACHINE_START(EXYNOS5_DT, "SAMSUNG EXYNOS5 (Flattened Device Tree)") | |||
76 | .map_io = exynos5250_dt_map_io, | 76 | .map_io = exynos5250_dt_map_io, |
77 | .handle_irq = gic_handle_irq, | 77 | .handle_irq = gic_handle_irq, |
78 | .init_machine = exynos5250_dt_machine_init, | 78 | .init_machine = exynos5250_dt_machine_init, |
79 | .init_late = exynos_init_late, | ||
79 | .timer = &exynos4_timer, | 80 | .timer = &exynos4_timer, |
80 | .dt_compat = exynos5250_dt_compat, | 81 | .dt_compat = exynos5250_dt_compat, |
81 | .restart = exynos5_restart, | 82 | .restart = exynos5_restart, |
diff --git a/arch/arm/mach-exynos/mach-nuri.c b/arch/arm/mach-exynos/mach-nuri.c index 6c31f2ad765d..972983e392bc 100644 --- a/arch/arm/mach-exynos/mach-nuri.c +++ b/arch/arm/mach-exynos/mach-nuri.c | |||
@@ -1389,6 +1389,7 @@ MACHINE_START(NURI, "NURI") | |||
1389 | .map_io = nuri_map_io, | 1389 | .map_io = nuri_map_io, |
1390 | .handle_irq = gic_handle_irq, | 1390 | .handle_irq = gic_handle_irq, |
1391 | .init_machine = nuri_machine_init, | 1391 | .init_machine = nuri_machine_init, |
1392 | .init_late = exynos_init_late, | ||
1392 | .timer = &exynos4_timer, | 1393 | .timer = &exynos4_timer, |
1393 | .reserve = &nuri_reserve, | 1394 | .reserve = &nuri_reserve, |
1394 | .restart = exynos4_restart, | 1395 | .restart = exynos4_restart, |
diff --git a/arch/arm/mach-exynos/mach-origen.c b/arch/arm/mach-exynos/mach-origen.c index 26124a38bcbd..a7f7fd567dde 100644 --- a/arch/arm/mach-exynos/mach-origen.c +++ b/arch/arm/mach-exynos/mach-origen.c | |||
@@ -766,6 +766,7 @@ MACHINE_START(ORIGEN, "ORIGEN") | |||
766 | .map_io = origen_map_io, | 766 | .map_io = origen_map_io, |
767 | .handle_irq = gic_handle_irq, | 767 | .handle_irq = gic_handle_irq, |
768 | .init_machine = origen_machine_init, | 768 | .init_machine = origen_machine_init, |
769 | .init_late = exynos_init_late, | ||
769 | .timer = &exynos4_timer, | 770 | .timer = &exynos4_timer, |
770 | .reserve = &origen_reserve, | 771 | .reserve = &origen_reserve, |
771 | .restart = exynos4_restart, | 772 | .restart = exynos4_restart, |
diff --git a/arch/arm/mach-exynos/mach-smdk4x12.c b/arch/arm/mach-exynos/mach-smdk4x12.c index fe772d893cc9..fb09c70e195a 100644 --- a/arch/arm/mach-exynos/mach-smdk4x12.c +++ b/arch/arm/mach-exynos/mach-smdk4x12.c | |||
@@ -316,6 +316,7 @@ MACHINE_START(SMDK4412, "SMDK4412") | |||
316 | .map_io = smdk4x12_map_io, | 316 | .map_io = smdk4x12_map_io, |
317 | .handle_irq = gic_handle_irq, | 317 | .handle_irq = gic_handle_irq, |
318 | .init_machine = smdk4x12_machine_init, | 318 | .init_machine = smdk4x12_machine_init, |
319 | .init_late = exynos_init_late, | ||
319 | .timer = &exynos4_timer, | 320 | .timer = &exynos4_timer, |
320 | .restart = exynos4_restart, | 321 | .restart = exynos4_restart, |
321 | .reserve = &smdk4x12_reserve, | 322 | .reserve = &smdk4x12_reserve, |
diff --git a/arch/arm/mach-exynos/mach-smdkv310.c b/arch/arm/mach-exynos/mach-smdkv310.c index a8c7656b1fce..70df1a0c2118 100644 --- a/arch/arm/mach-exynos/mach-smdkv310.c +++ b/arch/arm/mach-exynos/mach-smdkv310.c | |||
@@ -411,6 +411,7 @@ MACHINE_START(SMDKC210, "SMDKC210") | |||
411 | .map_io = smdkv310_map_io, | 411 | .map_io = smdkv310_map_io, |
412 | .handle_irq = gic_handle_irq, | 412 | .handle_irq = gic_handle_irq, |
413 | .init_machine = smdkv310_machine_init, | 413 | .init_machine = smdkv310_machine_init, |
414 | .init_late = exynos_init_late, | ||
414 | .timer = &exynos4_timer, | 415 | .timer = &exynos4_timer, |
415 | .restart = exynos4_restart, | 416 | .restart = exynos4_restart, |
416 | MACHINE_END | 417 | MACHINE_END |
diff --git a/arch/arm/mach-exynos/mach-universal_c210.c b/arch/arm/mach-exynos/mach-universal_c210.c index 6b731b863275..083b44de9c10 100644 --- a/arch/arm/mach-exynos/mach-universal_c210.c +++ b/arch/arm/mach-exynos/mach-universal_c210.c | |||
@@ -1157,6 +1157,7 @@ MACHINE_START(UNIVERSAL_C210, "UNIVERSAL_C210") | |||
1157 | .map_io = universal_map_io, | 1157 | .map_io = universal_map_io, |
1158 | .handle_irq = gic_handle_irq, | 1158 | .handle_irq = gic_handle_irq, |
1159 | .init_machine = universal_machine_init, | 1159 | .init_machine = universal_machine_init, |
1160 | .init_late = exynos_init_late, | ||
1160 | .timer = &s5p_timer, | 1161 | .timer = &s5p_timer, |
1161 | .reserve = &universal_reserve, | 1162 | .reserve = &universal_reserve, |
1162 | .restart = exynos4_restart, | 1163 | .restart = exynos4_restart, |
diff --git a/arch/arm/mach-exynos/pm_domains.c b/arch/arm/mach-exynos/pm_domains.c index 13b306808b42..e9fafcf163de 100644 --- a/arch/arm/mach-exynos/pm_domains.c +++ b/arch/arm/mach-exynos/pm_domains.c | |||
@@ -193,9 +193,8 @@ static __init int exynos4_pm_init_power_domain(void) | |||
193 | } | 193 | } |
194 | arch_initcall(exynos4_pm_init_power_domain); | 194 | arch_initcall(exynos4_pm_init_power_domain); |
195 | 195 | ||
196 | static __init int exynos_pm_late_initcall(void) | 196 | int __init exynos_pm_late_initcall(void) |
197 | { | 197 | { |
198 | pm_genpd_poweroff_unused(); | 198 | pm_genpd_poweroff_unused(); |
199 | return 0; | 199 | return 0; |
200 | } | 200 | } |
201 | late_initcall(exynos_pm_late_initcall); | ||
diff --git a/arch/arm/mach-imx/cpu-imx5.c b/arch/arm/mach-imx/cpu-imx5.c index aa15c517d06e..8eb15a2fcaf9 100644 --- a/arch/arm/mach-imx/cpu-imx5.c +++ b/arch/arm/mach-imx/cpu-imx5.c | |||
@@ -62,11 +62,8 @@ EXPORT_SYMBOL(mx51_revision); | |||
62 | * Dependent on link order - so the assumption is that vfp_init is called | 62 | * Dependent on link order - so the assumption is that vfp_init is called |
63 | * before us. | 63 | * before us. |
64 | */ | 64 | */ |
65 | static int __init mx51_neon_fixup(void) | 65 | int __init mx51_neon_fixup(void) |
66 | { | 66 | { |
67 | if (!cpu_is_mx51()) | ||
68 | return 0; | ||
69 | |||
70 | if (mx51_revision() < IMX_CHIP_REVISION_3_0 && | 67 | if (mx51_revision() < IMX_CHIP_REVISION_3_0 && |
71 | (elf_hwcap & HWCAP_NEON)) { | 68 | (elf_hwcap & HWCAP_NEON)) { |
72 | elf_hwcap &= ~HWCAP_NEON; | 69 | elf_hwcap &= ~HWCAP_NEON; |
@@ -75,7 +72,6 @@ static int __init mx51_neon_fixup(void) | |||
75 | return 0; | 72 | return 0; |
76 | } | 73 | } |
77 | 74 | ||
78 | late_initcall(mx51_neon_fixup); | ||
79 | #endif | 75 | #endif |
80 | 76 | ||
81 | static int get_mx53_srev(void) | 77 | static int get_mx53_srev(void) |
diff --git a/arch/arm/mach-imx/imx51-dt.c b/arch/arm/mach-imx/imx51-dt.c index 5f577fbda2c8..18e78dba4298 100644 --- a/arch/arm/mach-imx/imx51-dt.c +++ b/arch/arm/mach-imx/imx51-dt.c | |||
@@ -118,6 +118,7 @@ DT_MACHINE_START(IMX51_DT, "Freescale i.MX51 (Device Tree Support)") | |||
118 | .handle_irq = imx51_handle_irq, | 118 | .handle_irq = imx51_handle_irq, |
119 | .timer = &imx51_timer, | 119 | .timer = &imx51_timer, |
120 | .init_machine = imx51_dt_init, | 120 | .init_machine = imx51_dt_init, |
121 | .init_late = imx51_init_late, | ||
121 | .dt_compat = imx51_dt_board_compat, | 122 | .dt_compat = imx51_dt_board_compat, |
122 | .restart = mxc_restart, | 123 | .restart = mxc_restart, |
123 | MACHINE_END | 124 | MACHINE_END |
diff --git a/arch/arm/mach-imx/mach-cpuimx51sd.c b/arch/arm/mach-imx/mach-cpuimx51sd.c index ce341a6874fc..ac50f1671e38 100644 --- a/arch/arm/mach-imx/mach-cpuimx51sd.c +++ b/arch/arm/mach-imx/mach-cpuimx51sd.c | |||
@@ -369,5 +369,6 @@ MACHINE_START(EUKREA_CPUIMX51SD, "Eukrea CPUIMX51SD") | |||
369 | .handle_irq = imx51_handle_irq, | 369 | .handle_irq = imx51_handle_irq, |
370 | .timer = &mxc_timer, | 370 | .timer = &mxc_timer, |
371 | .init_machine = eukrea_cpuimx51sd_init, | 371 | .init_machine = eukrea_cpuimx51sd_init, |
372 | .init_late = imx51_init_late, | ||
372 | .restart = mxc_restart, | 373 | .restart = mxc_restart, |
373 | MACHINE_END | 374 | MACHINE_END |
diff --git a/arch/arm/mach-imx/mach-mx51_3ds.c b/arch/arm/mach-imx/mach-mx51_3ds.c index 83eab4176ca4..3c5b163923f6 100644 --- a/arch/arm/mach-imx/mach-mx51_3ds.c +++ b/arch/arm/mach-imx/mach-mx51_3ds.c | |||
@@ -175,5 +175,6 @@ MACHINE_START(MX51_3DS, "Freescale MX51 3-Stack Board") | |||
175 | .handle_irq = imx51_handle_irq, | 175 | .handle_irq = imx51_handle_irq, |
176 | .timer = &mx51_3ds_timer, | 176 | .timer = &mx51_3ds_timer, |
177 | .init_machine = mx51_3ds_init, | 177 | .init_machine = mx51_3ds_init, |
178 | .init_late = imx51_init_late, | ||
178 | .restart = mxc_restart, | 179 | .restart = mxc_restart, |
179 | MACHINE_END | 180 | MACHINE_END |
diff --git a/arch/arm/mach-imx/mach-mx51_babbage.c b/arch/arm/mach-imx/mach-mx51_babbage.c index 517672ebcbc5..dde397014d4b 100644 --- a/arch/arm/mach-imx/mach-mx51_babbage.c +++ b/arch/arm/mach-imx/mach-mx51_babbage.c | |||
@@ -432,5 +432,6 @@ MACHINE_START(MX51_BABBAGE, "Freescale MX51 Babbage Board") | |||
432 | .handle_irq = imx51_handle_irq, | 432 | .handle_irq = imx51_handle_irq, |
433 | .timer = &mx51_babbage_timer, | 433 | .timer = &mx51_babbage_timer, |
434 | .init_machine = mx51_babbage_init, | 434 | .init_machine = mx51_babbage_init, |
435 | .init_late = imx51_init_late, | ||
435 | .restart = mxc_restart, | 436 | .restart = mxc_restart, |
436 | MACHINE_END | 437 | MACHINE_END |
diff --git a/arch/arm/mach-imx/mach-mx51_efikamx.c b/arch/arm/mach-imx/mach-mx51_efikamx.c index 86e96ef11f9d..8d09c0126cab 100644 --- a/arch/arm/mach-imx/mach-mx51_efikamx.c +++ b/arch/arm/mach-imx/mach-mx51_efikamx.c | |||
@@ -207,29 +207,32 @@ static void mx51_efikamx_power_off(void) | |||
207 | 207 | ||
208 | static int __init mx51_efikamx_power_init(void) | 208 | static int __init mx51_efikamx_power_init(void) |
209 | { | 209 | { |
210 | if (machine_is_mx51_efikamx()) { | 210 | pwgt1 = regulator_get(NULL, "pwgt1"); |
211 | pwgt1 = regulator_get(NULL, "pwgt1"); | 211 | pwgt2 = regulator_get(NULL, "pwgt2"); |
212 | pwgt2 = regulator_get(NULL, "pwgt2"); | 212 | if (!IS_ERR(pwgt1) && !IS_ERR(pwgt2)) { |
213 | if (!IS_ERR(pwgt1) && !IS_ERR(pwgt2)) { | 213 | regulator_enable(pwgt1); |
214 | regulator_enable(pwgt1); | 214 | regulator_enable(pwgt2); |
215 | regulator_enable(pwgt2); | 215 | } |
216 | } | 216 | gpio_request(EFIKAMX_POWEROFF, "poweroff"); |
217 | gpio_request(EFIKAMX_POWEROFF, "poweroff"); | 217 | pm_power_off = mx51_efikamx_power_off; |
218 | pm_power_off = mx51_efikamx_power_off; | 218 | |
219 | 219 | /* enable coincell charger. maybe need a small power driver ? */ | |
220 | /* enable coincell charger. maybe need a small power driver ? */ | 220 | coincell = regulator_get(NULL, "coincell"); |
221 | coincell = regulator_get(NULL, "coincell"); | 221 | if (!IS_ERR(coincell)) { |
222 | if (!IS_ERR(coincell)) { | 222 | regulator_set_voltage(coincell, 3000000, 3000000); |
223 | regulator_set_voltage(coincell, 3000000, 3000000); | 223 | regulator_enable(coincell); |
224 | regulator_enable(coincell); | ||
225 | } | ||
226 | |||
227 | regulator_has_full_constraints(); | ||
228 | } | 224 | } |
229 | 225 | ||
226 | regulator_has_full_constraints(); | ||
227 | |||
230 | return 0; | 228 | return 0; |
231 | } | 229 | } |
232 | late_initcall(mx51_efikamx_power_init); | 230 | |
231 | static void __init mx51_efikamx_init_late(void) | ||
232 | { | ||
233 | imx51_init_late(); | ||
234 | mx51_efikamx_power_init(); | ||
235 | } | ||
233 | 236 | ||
234 | static void __init mx51_efikamx_init(void) | 237 | static void __init mx51_efikamx_init(void) |
235 | { | 238 | { |
@@ -292,5 +295,6 @@ MACHINE_START(MX51_EFIKAMX, "Genesi Efika MX (Smarttop)") | |||
292 | .handle_irq = imx51_handle_irq, | 295 | .handle_irq = imx51_handle_irq, |
293 | .timer = &mx51_efikamx_timer, | 296 | .timer = &mx51_efikamx_timer, |
294 | .init_machine = mx51_efikamx_init, | 297 | .init_machine = mx51_efikamx_init, |
298 | .init_late = mx51_efikamx_init_late, | ||
295 | .restart = mx51_efikamx_restart, | 299 | .restart = mx51_efikamx_restart, |
296 | MACHINE_END | 300 | MACHINE_END |
diff --git a/arch/arm/mach-imx/mach-mx51_efikasb.c b/arch/arm/mach-imx/mach-mx51_efikasb.c index 88f837a6cc76..fdbd181b97ef 100644 --- a/arch/arm/mach-imx/mach-mx51_efikasb.c +++ b/arch/arm/mach-imx/mach-mx51_efikasb.c | |||
@@ -211,22 +211,25 @@ static void mx51_efikasb_power_off(void) | |||
211 | 211 | ||
212 | static int __init mx51_efikasb_power_init(void) | 212 | static int __init mx51_efikasb_power_init(void) |
213 | { | 213 | { |
214 | if (machine_is_mx51_efikasb()) { | 214 | pwgt1 = regulator_get(NULL, "pwgt1"); |
215 | pwgt1 = regulator_get(NULL, "pwgt1"); | 215 | pwgt2 = regulator_get(NULL, "pwgt2"); |
216 | pwgt2 = regulator_get(NULL, "pwgt2"); | 216 | if (!IS_ERR(pwgt1) && !IS_ERR(pwgt2)) { |
217 | if (!IS_ERR(pwgt1) && !IS_ERR(pwgt2)) { | 217 | regulator_enable(pwgt1); |
218 | regulator_enable(pwgt1); | 218 | regulator_enable(pwgt2); |
219 | regulator_enable(pwgt2); | ||
220 | } | ||
221 | gpio_request(EFIKASB_POWEROFF, "poweroff"); | ||
222 | pm_power_off = mx51_efikasb_power_off; | ||
223 | |||
224 | regulator_has_full_constraints(); | ||
225 | } | 219 | } |
220 | gpio_request(EFIKASB_POWEROFF, "poweroff"); | ||
221 | pm_power_off = mx51_efikasb_power_off; | ||
222 | |||
223 | regulator_has_full_constraints(); | ||
226 | 224 | ||
227 | return 0; | 225 | return 0; |
228 | } | 226 | } |
229 | late_initcall(mx51_efikasb_power_init); | 227 | |
228 | static void __init mx51_efikasb_init_late(void) | ||
229 | { | ||
230 | imx51_init_late(); | ||
231 | mx51_efikasb_power_init(); | ||
232 | } | ||
230 | 233 | ||
231 | /* 01 R1.3 board | 234 | /* 01 R1.3 board |
232 | 10 R2.0 board */ | 235 | 10 R2.0 board */ |
@@ -287,6 +290,7 @@ MACHINE_START(MX51_EFIKASB, "Genesi Efika MX (Smartbook)") | |||
287 | .init_irq = mx51_init_irq, | 290 | .init_irq = mx51_init_irq, |
288 | .handle_irq = imx51_handle_irq, | 291 | .handle_irq = imx51_handle_irq, |
289 | .init_machine = efikasb_board_init, | 292 | .init_machine = efikasb_board_init, |
293 | .init_late = mx51_efikasb_init_late, | ||
290 | .timer = &mx51_efikasb_timer, | 294 | .timer = &mx51_efikasb_timer, |
291 | .restart = mxc_restart, | 295 | .restart = mxc_restart, |
292 | MACHINE_END | 296 | MACHINE_END |
diff --git a/arch/arm/mach-imx/mach-pcm037.c b/arch/arm/mach-imx/mach-pcm037.c index 10c9795934a3..0a40004154f2 100644 --- a/arch/arm/mach-imx/mach-pcm037.c +++ b/arch/arm/mach-imx/mach-pcm037.c | |||
@@ -694,6 +694,11 @@ static void __init pcm037_reserve(void) | |||
694 | MX3_CAMERA_BUF_SIZE); | 694 | MX3_CAMERA_BUF_SIZE); |
695 | } | 695 | } |
696 | 696 | ||
697 | static void __init pcm037_init_late(void) | ||
698 | { | ||
699 | pcm037_eet_init_devices(); | ||
700 | } | ||
701 | |||
697 | MACHINE_START(PCM037, "Phytec Phycore pcm037") | 702 | MACHINE_START(PCM037, "Phytec Phycore pcm037") |
698 | /* Maintainer: Pengutronix */ | 703 | /* Maintainer: Pengutronix */ |
699 | .atag_offset = 0x100, | 704 | .atag_offset = 0x100, |
@@ -704,5 +709,6 @@ MACHINE_START(PCM037, "Phytec Phycore pcm037") | |||
704 | .handle_irq = imx31_handle_irq, | 709 | .handle_irq = imx31_handle_irq, |
705 | .timer = &pcm037_timer, | 710 | .timer = &pcm037_timer, |
706 | .init_machine = pcm037_init, | 711 | .init_machine = pcm037_init, |
712 | .init_late = pcm037_init_late, | ||
707 | .restart = mxc_restart, | 713 | .restart = mxc_restart, |
708 | MACHINE_END | 714 | MACHINE_END |
diff --git a/arch/arm/mach-imx/mach-pcm037_eet.c b/arch/arm/mach-imx/mach-pcm037_eet.c index 1b7606bef8f4..11ffa81ad17d 100644 --- a/arch/arm/mach-imx/mach-pcm037_eet.c +++ b/arch/arm/mach-imx/mach-pcm037_eet.c | |||
@@ -160,9 +160,9 @@ static const struct gpio_keys_platform_data | |||
160 | .rep = 0, /* No auto-repeat */ | 160 | .rep = 0, /* No auto-repeat */ |
161 | }; | 161 | }; |
162 | 162 | ||
163 | static int __init eet_init_devices(void) | 163 | int __init pcm037_eet_init_devices(void) |
164 | { | 164 | { |
165 | if (!machine_is_pcm037() || pcm037_variant() != PCM037_EET) | 165 | if (pcm037_variant() != PCM037_EET) |
166 | return 0; | 166 | return 0; |
167 | 167 | ||
168 | mxc_iomux_setup_multiple_pins(pcm037_eet_pins, | 168 | mxc_iomux_setup_multiple_pins(pcm037_eet_pins, |
@@ -176,4 +176,3 @@ static int __init eet_init_devices(void) | |||
176 | 176 | ||
177 | return 0; | 177 | return 0; |
178 | } | 178 | } |
179 | late_initcall(eet_init_devices); | ||
diff --git a/arch/arm/mach-imx/mm-imx5.c b/arch/arm/mach-imx/mm-imx5.c index 8b4dc20c7c53..feeee17da96b 100644 --- a/arch/arm/mach-imx/mm-imx5.c +++ b/arch/arm/mach-imx/mm-imx5.c | |||
@@ -237,3 +237,8 @@ void __init imx53_soc_init(void) | |||
237 | platform_device_register_simple("imx31-audmux", 0, imx53_audmux_res, | 237 | platform_device_register_simple("imx31-audmux", 0, imx53_audmux_res, |
238 | ARRAY_SIZE(imx53_audmux_res)); | 238 | ARRAY_SIZE(imx53_audmux_res)); |
239 | } | 239 | } |
240 | |||
241 | void __init imx51_init_late(void) | ||
242 | { | ||
243 | mx51_neon_fixup(); | ||
244 | } | ||
diff --git a/arch/arm/mach-imx/pcm037.h b/arch/arm/mach-imx/pcm037.h index d6929721a5fd..7d167690e17d 100644 --- a/arch/arm/mach-imx/pcm037.h +++ b/arch/arm/mach-imx/pcm037.h | |||
@@ -8,4 +8,10 @@ enum pcm037_board_variant { | |||
8 | 8 | ||
9 | extern enum pcm037_board_variant pcm037_variant(void); | 9 | extern enum pcm037_board_variant pcm037_variant(void); |
10 | 10 | ||
11 | #ifdef CONFIG_MACH_PCM037_EET | ||
12 | int pcm037_eet_init_devices(void); | ||
13 | #else | ||
14 | static inline int pcm037_eet_init_devices(void) { return 0; } | ||
15 | #endif | ||
16 | |||
11 | #endif | 17 | #endif |
diff --git a/arch/arm/mach-msm/board-halibut.c b/arch/arm/mach-msm/board-halibut.c index 26aac363a064..4fa3e99d9a62 100644 --- a/arch/arm/mach-msm/board-halibut.c +++ b/arch/arm/mach-msm/board-halibut.c | |||
@@ -94,6 +94,11 @@ static void __init halibut_map_io(void) | |||
94 | msm_clock_init(msm_clocks_7x01a, msm_num_clocks_7x01a); | 94 | msm_clock_init(msm_clocks_7x01a, msm_num_clocks_7x01a); |
95 | } | 95 | } |
96 | 96 | ||
97 | static void __init halibut_init_late(void) | ||
98 | { | ||
99 | smd_debugfs_init(); | ||
100 | } | ||
101 | |||
97 | MACHINE_START(HALIBUT, "Halibut Board (QCT SURF7200A)") | 102 | MACHINE_START(HALIBUT, "Halibut Board (QCT SURF7200A)") |
98 | .atag_offset = 0x100, | 103 | .atag_offset = 0x100, |
99 | .fixup = halibut_fixup, | 104 | .fixup = halibut_fixup, |
@@ -101,5 +106,6 @@ MACHINE_START(HALIBUT, "Halibut Board (QCT SURF7200A)") | |||
101 | .init_early = halibut_init_early, | 106 | .init_early = halibut_init_early, |
102 | .init_irq = halibut_init_irq, | 107 | .init_irq = halibut_init_irq, |
103 | .init_machine = halibut_init, | 108 | .init_machine = halibut_init, |
109 | .init_late = halibut_init_late, | ||
104 | .timer = &msm_timer, | 110 | .timer = &msm_timer, |
105 | MACHINE_END | 111 | MACHINE_END |
diff --git a/arch/arm/mach-msm/board-mahimahi.c b/arch/arm/mach-msm/board-mahimahi.c index 5a4882fc6f7a..cf1f89a5dc62 100644 --- a/arch/arm/mach-msm/board-mahimahi.c +++ b/arch/arm/mach-msm/board-mahimahi.c | |||
@@ -71,6 +71,11 @@ static void __init mahimahi_map_io(void) | |||
71 | msm_clock_init(); | 71 | msm_clock_init(); |
72 | } | 72 | } |
73 | 73 | ||
74 | static void __init mahimahi_init_late(void) | ||
75 | { | ||
76 | smd_debugfs_init(); | ||
77 | } | ||
78 | |||
74 | extern struct sys_timer msm_timer; | 79 | extern struct sys_timer msm_timer; |
75 | 80 | ||
76 | MACHINE_START(MAHIMAHI, "mahimahi") | 81 | MACHINE_START(MAHIMAHI, "mahimahi") |
@@ -79,5 +84,6 @@ MACHINE_START(MAHIMAHI, "mahimahi") | |||
79 | .map_io = mahimahi_map_io, | 84 | .map_io = mahimahi_map_io, |
80 | .init_irq = msm_init_irq, | 85 | .init_irq = msm_init_irq, |
81 | .init_machine = mahimahi_init, | 86 | .init_machine = mahimahi_init, |
87 | .init_late = mahimahi_init_late, | ||
82 | .timer = &msm_timer, | 88 | .timer = &msm_timer, |
83 | MACHINE_END | 89 | MACHINE_END |
diff --git a/arch/arm/mach-msm/board-msm7x27.c b/arch/arm/mach-msm/board-msm7x27.c index 6d84ee740df4..451ab1d43c92 100644 --- a/arch/arm/mach-msm/board-msm7x27.c +++ b/arch/arm/mach-msm/board-msm7x27.c | |||
@@ -128,11 +128,17 @@ static void __init msm7x2x_map_io(void) | |||
128 | #endif | 128 | #endif |
129 | } | 129 | } |
130 | 130 | ||
131 | static void __init msm7x2x_init_late(void) | ||
132 | { | ||
133 | smd_debugfs_init(); | ||
134 | } | ||
135 | |||
131 | MACHINE_START(MSM7X27_SURF, "QCT MSM7x27 SURF") | 136 | MACHINE_START(MSM7X27_SURF, "QCT MSM7x27 SURF") |
132 | .atag_offset = 0x100, | 137 | .atag_offset = 0x100, |
133 | .map_io = msm7x2x_map_io, | 138 | .map_io = msm7x2x_map_io, |
134 | .init_irq = msm7x2x_init_irq, | 139 | .init_irq = msm7x2x_init_irq, |
135 | .init_machine = msm7x2x_init, | 140 | .init_machine = msm7x2x_init, |
141 | .init_late = msm7x2x_init_late, | ||
136 | .timer = &msm_timer, | 142 | .timer = &msm_timer, |
137 | MACHINE_END | 143 | MACHINE_END |
138 | 144 | ||
@@ -141,6 +147,7 @@ MACHINE_START(MSM7X27_FFA, "QCT MSM7x27 FFA") | |||
141 | .map_io = msm7x2x_map_io, | 147 | .map_io = msm7x2x_map_io, |
142 | .init_irq = msm7x2x_init_irq, | 148 | .init_irq = msm7x2x_init_irq, |
143 | .init_machine = msm7x2x_init, | 149 | .init_machine = msm7x2x_init, |
150 | .init_late = msm7x2x_init_late, | ||
144 | .timer = &msm_timer, | 151 | .timer = &msm_timer, |
145 | MACHINE_END | 152 | MACHINE_END |
146 | 153 | ||
@@ -149,6 +156,7 @@ MACHINE_START(MSM7X25_SURF, "QCT MSM7x25 SURF") | |||
149 | .map_io = msm7x2x_map_io, | 156 | .map_io = msm7x2x_map_io, |
150 | .init_irq = msm7x2x_init_irq, | 157 | .init_irq = msm7x2x_init_irq, |
151 | .init_machine = msm7x2x_init, | 158 | .init_machine = msm7x2x_init, |
159 | .init_late = msm7x2x_init_late, | ||
152 | .timer = &msm_timer, | 160 | .timer = &msm_timer, |
153 | MACHINE_END | 161 | MACHINE_END |
154 | 162 | ||
@@ -157,5 +165,6 @@ MACHINE_START(MSM7X25_FFA, "QCT MSM7x25 FFA") | |||
157 | .map_io = msm7x2x_map_io, | 165 | .map_io = msm7x2x_map_io, |
158 | .init_irq = msm7x2x_init_irq, | 166 | .init_irq = msm7x2x_init_irq, |
159 | .init_machine = msm7x2x_init, | 167 | .init_machine = msm7x2x_init, |
168 | .init_late = msm7x2x_init_late, | ||
160 | .timer = &msm_timer, | 169 | .timer = &msm_timer, |
161 | MACHINE_END | 170 | MACHINE_END |
diff --git a/arch/arm/mach-msm/board-msm7x30.c b/arch/arm/mach-msm/board-msm7x30.c index 75b3cfcada6d..a5001378135d 100644 --- a/arch/arm/mach-msm/board-msm7x30.c +++ b/arch/arm/mach-msm/board-msm7x30.c | |||
@@ -119,6 +119,11 @@ static void __init msm7x30_map_io(void) | |||
119 | msm_clock_init(msm_clocks_7x30, msm_num_clocks_7x30); | 119 | msm_clock_init(msm_clocks_7x30, msm_num_clocks_7x30); |
120 | } | 120 | } |
121 | 121 | ||
122 | static void __init msm7x30_init_late(void) | ||
123 | { | ||
124 | smd_debugfs_init(); | ||
125 | } | ||
126 | |||
122 | MACHINE_START(MSM7X30_SURF, "QCT MSM7X30 SURF") | 127 | MACHINE_START(MSM7X30_SURF, "QCT MSM7X30 SURF") |
123 | .atag_offset = 0x100, | 128 | .atag_offset = 0x100, |
124 | .fixup = msm7x30_fixup, | 129 | .fixup = msm7x30_fixup, |
@@ -126,6 +131,7 @@ MACHINE_START(MSM7X30_SURF, "QCT MSM7X30 SURF") | |||
126 | .map_io = msm7x30_map_io, | 131 | .map_io = msm7x30_map_io, |
127 | .init_irq = msm7x30_init_irq, | 132 | .init_irq = msm7x30_init_irq, |
128 | .init_machine = msm7x30_init, | 133 | .init_machine = msm7x30_init, |
134 | .init_late = msm7x30_init_late, | ||
129 | .timer = &msm_timer, | 135 | .timer = &msm_timer, |
130 | MACHINE_END | 136 | MACHINE_END |
131 | 137 | ||
@@ -136,6 +142,7 @@ MACHINE_START(MSM7X30_FFA, "QCT MSM7X30 FFA") | |||
136 | .map_io = msm7x30_map_io, | 142 | .map_io = msm7x30_map_io, |
137 | .init_irq = msm7x30_init_irq, | 143 | .init_irq = msm7x30_init_irq, |
138 | .init_machine = msm7x30_init, | 144 | .init_machine = msm7x30_init, |
145 | .init_late = msm7x30_init_late, | ||
139 | .timer = &msm_timer, | 146 | .timer = &msm_timer, |
140 | MACHINE_END | 147 | MACHINE_END |
141 | 148 | ||
@@ -146,5 +153,6 @@ MACHINE_START(MSM7X30_FLUID, "QCT MSM7X30 FLUID") | |||
146 | .map_io = msm7x30_map_io, | 153 | .map_io = msm7x30_map_io, |
147 | .init_irq = msm7x30_init_irq, | 154 | .init_irq = msm7x30_init_irq, |
148 | .init_machine = msm7x30_init, | 155 | .init_machine = msm7x30_init, |
156 | .init_late = msm7x30_init_late, | ||
149 | .timer = &msm_timer, | 157 | .timer = &msm_timer, |
150 | MACHINE_END | 158 | MACHINE_END |
diff --git a/arch/arm/mach-msm/board-msm8960.c b/arch/arm/mach-msm/board-msm8960.c index ed3598128530..65f4a1daa2e5 100644 --- a/arch/arm/mach-msm/board-msm8960.c +++ b/arch/arm/mach-msm/board-msm8960.c | |||
@@ -93,6 +93,11 @@ static void __init msm8960_rumi3_init(void) | |||
93 | platform_add_devices(rumi3_devices, ARRAY_SIZE(rumi3_devices)); | 93 | platform_add_devices(rumi3_devices, ARRAY_SIZE(rumi3_devices)); |
94 | } | 94 | } |
95 | 95 | ||
96 | static void __init msm8960_init_late(void) | ||
97 | { | ||
98 | smd_debugfs_init(); | ||
99 | } | ||
100 | |||
96 | MACHINE_START(MSM8960_SIM, "QCT MSM8960 SIMULATOR") | 101 | MACHINE_START(MSM8960_SIM, "QCT MSM8960 SIMULATOR") |
97 | .fixup = msm8960_fixup, | 102 | .fixup = msm8960_fixup, |
98 | .reserve = msm8960_reserve, | 103 | .reserve = msm8960_reserve, |
@@ -101,6 +106,7 @@ MACHINE_START(MSM8960_SIM, "QCT MSM8960 SIMULATOR") | |||
101 | .timer = &msm_timer, | 106 | .timer = &msm_timer, |
102 | .handle_irq = gic_handle_irq, | 107 | .handle_irq = gic_handle_irq, |
103 | .init_machine = msm8960_sim_init, | 108 | .init_machine = msm8960_sim_init, |
109 | .init_late = msm8960_init_late, | ||
104 | MACHINE_END | 110 | MACHINE_END |
105 | 111 | ||
106 | MACHINE_START(MSM8960_RUMI3, "QCT MSM8960 RUMI3") | 112 | MACHINE_START(MSM8960_RUMI3, "QCT MSM8960 RUMI3") |
@@ -111,5 +117,6 @@ MACHINE_START(MSM8960_RUMI3, "QCT MSM8960 RUMI3") | |||
111 | .timer = &msm_timer, | 117 | .timer = &msm_timer, |
112 | .handle_irq = gic_handle_irq, | 118 | .handle_irq = gic_handle_irq, |
113 | .init_machine = msm8960_rumi3_init, | 119 | .init_machine = msm8960_rumi3_init, |
120 | .init_late = msm8960_init_late, | ||
114 | MACHINE_END | 121 | MACHINE_END |
115 | 122 | ||
diff --git a/arch/arm/mach-msm/board-msm8x60.c b/arch/arm/mach-msm/board-msm8x60.c index fb3496a52ef4..e37a724cd1eb 100644 --- a/arch/arm/mach-msm/board-msm8x60.c +++ b/arch/arm/mach-msm/board-msm8x60.c | |||
@@ -81,6 +81,11 @@ static void __init msm8x60_init(void) | |||
81 | { | 81 | { |
82 | } | 82 | } |
83 | 83 | ||
84 | static void __init msm8x60_init_late(void) | ||
85 | { | ||
86 | smd_debugfs_init(); | ||
87 | } | ||
88 | |||
84 | #ifdef CONFIG_OF | 89 | #ifdef CONFIG_OF |
85 | static struct of_dev_auxdata msm_auxdata_lookup[] __initdata = { | 90 | static struct of_dev_auxdata msm_auxdata_lookup[] __initdata = { |
86 | {} | 91 | {} |
@@ -111,6 +116,7 @@ MACHINE_START(MSM8X60_RUMI3, "QCT MSM8X60 RUMI3") | |||
111 | .init_irq = msm8x60_init_irq, | 116 | .init_irq = msm8x60_init_irq, |
112 | .handle_irq = gic_handle_irq, | 117 | .handle_irq = gic_handle_irq, |
113 | .init_machine = msm8x60_init, | 118 | .init_machine = msm8x60_init, |
119 | .init_late = msm8x60_init_late, | ||
114 | .timer = &msm_timer, | 120 | .timer = &msm_timer, |
115 | MACHINE_END | 121 | MACHINE_END |
116 | 122 | ||
@@ -121,6 +127,7 @@ MACHINE_START(MSM8X60_SURF, "QCT MSM8X60 SURF") | |||
121 | .init_irq = msm8x60_init_irq, | 127 | .init_irq = msm8x60_init_irq, |
122 | .handle_irq = gic_handle_irq, | 128 | .handle_irq = gic_handle_irq, |
123 | .init_machine = msm8x60_init, | 129 | .init_machine = msm8x60_init, |
130 | .init_late = msm8x60_init_late, | ||
124 | .timer = &msm_timer, | 131 | .timer = &msm_timer, |
125 | MACHINE_END | 132 | MACHINE_END |
126 | 133 | ||
@@ -131,6 +138,7 @@ MACHINE_START(MSM8X60_SIM, "QCT MSM8X60 SIMULATOR") | |||
131 | .init_irq = msm8x60_init_irq, | 138 | .init_irq = msm8x60_init_irq, |
132 | .handle_irq = gic_handle_irq, | 139 | .handle_irq = gic_handle_irq, |
133 | .init_machine = msm8x60_init, | 140 | .init_machine = msm8x60_init, |
141 | .init_late = msm8x60_init_late, | ||
134 | .timer = &msm_timer, | 142 | .timer = &msm_timer, |
135 | MACHINE_END | 143 | MACHINE_END |
136 | 144 | ||
@@ -141,6 +149,7 @@ MACHINE_START(MSM8X60_FFA, "QCT MSM8X60 FFA") | |||
141 | .init_irq = msm8x60_init_irq, | 149 | .init_irq = msm8x60_init_irq, |
142 | .handle_irq = gic_handle_irq, | 150 | .handle_irq = gic_handle_irq, |
143 | .init_machine = msm8x60_init, | 151 | .init_machine = msm8x60_init, |
152 | .init_late = msm8x60_init_late, | ||
144 | .timer = &msm_timer, | 153 | .timer = &msm_timer, |
145 | MACHINE_END | 154 | MACHINE_END |
146 | 155 | ||
@@ -150,6 +159,7 @@ DT_MACHINE_START(MSM_DT, "Qualcomm MSM (Flattened Device Tree)") | |||
150 | .map_io = msm8x60_map_io, | 159 | .map_io = msm8x60_map_io, |
151 | .init_irq = msm8x60_init_irq, | 160 | .init_irq = msm8x60_init_irq, |
152 | .init_machine = msm8x60_dt_init, | 161 | .init_machine = msm8x60_dt_init, |
162 | .init_late = msm8x60_init_late, | ||
153 | .timer = &msm_timer, | 163 | .timer = &msm_timer, |
154 | .dt_compat = msm8x60_fluid_match, | 164 | .dt_compat = msm8x60_fluid_match, |
155 | MACHINE_END | 165 | MACHINE_END |
diff --git a/arch/arm/mach-msm/board-qsd8x50.c b/arch/arm/mach-msm/board-qsd8x50.c index fbaa4ed95a3c..c8fe0edb9761 100644 --- a/arch/arm/mach-msm/board-qsd8x50.c +++ b/arch/arm/mach-msm/board-qsd8x50.c | |||
@@ -190,11 +190,17 @@ static void __init qsd8x50_init(void) | |||
190 | qsd8x50_init_mmc(); | 190 | qsd8x50_init_mmc(); |
191 | } | 191 | } |
192 | 192 | ||
193 | static void __init qsd8x50_init_late(void) | ||
194 | { | ||
195 | smd_debugfs_init(); | ||
196 | } | ||
197 | |||
193 | MACHINE_START(QSD8X50_SURF, "QCT QSD8X50 SURF") | 198 | MACHINE_START(QSD8X50_SURF, "QCT QSD8X50 SURF") |
194 | .atag_offset = 0x100, | 199 | .atag_offset = 0x100, |
195 | .map_io = qsd8x50_map_io, | 200 | .map_io = qsd8x50_map_io, |
196 | .init_irq = qsd8x50_init_irq, | 201 | .init_irq = qsd8x50_init_irq, |
197 | .init_machine = qsd8x50_init, | 202 | .init_machine = qsd8x50_init, |
203 | .init_late = qsd8x50_init_late, | ||
198 | .timer = &msm_timer, | 204 | .timer = &msm_timer, |
199 | MACHINE_END | 205 | MACHINE_END |
200 | 206 | ||
@@ -203,5 +209,6 @@ MACHINE_START(QSD8X50A_ST1_5, "QCT QSD8X50A ST1.5") | |||
203 | .map_io = qsd8x50_map_io, | 209 | .map_io = qsd8x50_map_io, |
204 | .init_irq = qsd8x50_init_irq, | 210 | .init_irq = qsd8x50_init_irq, |
205 | .init_machine = qsd8x50_init, | 211 | .init_machine = qsd8x50_init, |
212 | .init_late = qsd8x50_init_late, | ||
206 | .timer = &msm_timer, | 213 | .timer = &msm_timer, |
207 | MACHINE_END | 214 | MACHINE_END |
diff --git a/arch/arm/mach-msm/board-sapphire.c b/arch/arm/mach-msm/board-sapphire.c index 4a8ea0d40b6f..2e569ab10eef 100644 --- a/arch/arm/mach-msm/board-sapphire.c +++ b/arch/arm/mach-msm/board-sapphire.c | |||
@@ -101,6 +101,11 @@ static void __init sapphire_map_io(void) | |||
101 | msm_clock_init(); | 101 | msm_clock_init(); |
102 | } | 102 | } |
103 | 103 | ||
104 | static void __init sapphire_init_late(void) | ||
105 | { | ||
106 | smd_debugfs_init(); | ||
107 | } | ||
108 | |||
104 | MACHINE_START(SAPPHIRE, "sapphire") | 109 | MACHINE_START(SAPPHIRE, "sapphire") |
105 | /* Maintainer: Brian Swetland <swetland@google.com> */ | 110 | /* Maintainer: Brian Swetland <swetland@google.com> */ |
106 | .atag_offset = 0x100, | 111 | .atag_offset = 0x100, |
@@ -108,5 +113,6 @@ MACHINE_START(SAPPHIRE, "sapphire") | |||
108 | .map_io = sapphire_map_io, | 113 | .map_io = sapphire_map_io, |
109 | .init_irq = sapphire_init_irq, | 114 | .init_irq = sapphire_init_irq, |
110 | .init_machine = sapphire_init, | 115 | .init_machine = sapphire_init, |
116 | .init_late = sapphire_init_late, | ||
111 | .timer = &msm_timer, | 117 | .timer = &msm_timer, |
112 | MACHINE_END | 118 | MACHINE_END |
diff --git a/arch/arm/mach-msm/board-trout.c b/arch/arm/mach-msm/board-trout.c index d4060a37e23d..bbe13f12fa01 100644 --- a/arch/arm/mach-msm/board-trout.c +++ b/arch/arm/mach-msm/board-trout.c | |||
@@ -98,6 +98,11 @@ static void __init trout_map_io(void) | |||
98 | msm_clock_init(msm_clocks_7x01a, msm_num_clocks_7x01a); | 98 | msm_clock_init(msm_clocks_7x01a, msm_num_clocks_7x01a); |
99 | } | 99 | } |
100 | 100 | ||
101 | static void __init trout_init_late(void) | ||
102 | { | ||
103 | smd_debugfs_init(); | ||
104 | } | ||
105 | |||
101 | MACHINE_START(TROUT, "HTC Dream") | 106 | MACHINE_START(TROUT, "HTC Dream") |
102 | .atag_offset = 0x100, | 107 | .atag_offset = 0x100, |
103 | .fixup = trout_fixup, | 108 | .fixup = trout_fixup, |
@@ -105,5 +110,6 @@ MACHINE_START(TROUT, "HTC Dream") | |||
105 | .init_early = trout_init_early, | 110 | .init_early = trout_init_early, |
106 | .init_irq = trout_init_irq, | 111 | .init_irq = trout_init_irq, |
107 | .init_machine = trout_init, | 112 | .init_machine = trout_init, |
113 | .init_late = trout_init_late, | ||
108 | .timer = &msm_timer, | 114 | .timer = &msm_timer, |
109 | MACHINE_END | 115 | MACHINE_END |
diff --git a/arch/arm/mach-msm/include/mach/board.h b/arch/arm/mach-msm/include/mach/board.h index 2ce8f1f2fc4d..435f8edfafd1 100644 --- a/arch/arm/mach-msm/include/mach/board.h +++ b/arch/arm/mach-msm/include/mach/board.h | |||
@@ -47,4 +47,10 @@ int __init msm_add_sdcc(unsigned int controller, | |||
47 | struct msm_mmc_platform_data *plat, | 47 | struct msm_mmc_platform_data *plat, |
48 | unsigned int stat_irq, unsigned long stat_irq_flags); | 48 | unsigned int stat_irq, unsigned long stat_irq_flags); |
49 | 49 | ||
50 | #if defined(CONFIG_MSM_SMD) && defined(CONFIG_DEBUG_FS) | ||
51 | int smd_debugfs_init(void); | ||
52 | #else | ||
53 | static inline int smd_debugfs_init(void) { return 0; } | ||
54 | #endif | ||
55 | |||
50 | #endif | 56 | #endif |
diff --git a/arch/arm/mach-msm/smd_debug.c b/arch/arm/mach-msm/smd_debug.c index c56df9e932ae..8056b3e5590f 100644 --- a/arch/arm/mach-msm/smd_debug.c +++ b/arch/arm/mach-msm/smd_debug.c | |||
@@ -216,7 +216,7 @@ static void debug_create(const char *name, umode_t mode, | |||
216 | debugfs_create_file(name, mode, dent, fill, &debug_ops); | 216 | debugfs_create_file(name, mode, dent, fill, &debug_ops); |
217 | } | 217 | } |
218 | 218 | ||
219 | static int smd_debugfs_init(void) | 219 | int __init smd_debugfs_init(void) |
220 | { | 220 | { |
221 | struct dentry *dent; | 221 | struct dentry *dent; |
222 | 222 | ||
@@ -234,7 +234,6 @@ static int smd_debugfs_init(void) | |||
234 | return 0; | 234 | return 0; |
235 | } | 235 | } |
236 | 236 | ||
237 | late_initcall(smd_debugfs_init); | ||
238 | #endif | 237 | #endif |
239 | 238 | ||
240 | 239 | ||
diff --git a/arch/arm/mach-omap1/board-ams-delta.c b/arch/arm/mach-omap1/board-ams-delta.c index c1b681ef4cba..f2f8a5847018 100644 --- a/arch/arm/mach-omap1/board-ams-delta.c +++ b/arch/arm/mach-omap1/board-ams-delta.c | |||
@@ -595,7 +595,12 @@ gpio_free: | |||
595 | gpio_free(AMS_DELTA_GPIO_PIN_MODEM_IRQ); | 595 | gpio_free(AMS_DELTA_GPIO_PIN_MODEM_IRQ); |
596 | return err; | 596 | return err; |
597 | } | 597 | } |
598 | late_initcall(late_init); | 598 | |
599 | static void __init ams_delta_init_late(void) | ||
600 | { | ||
601 | omap1_init_late(); | ||
602 | late_init(); | ||
603 | } | ||
599 | 604 | ||
600 | static void __init ams_delta_map_io(void) | 605 | static void __init ams_delta_map_io(void) |
601 | { | 606 | { |
@@ -611,6 +616,7 @@ MACHINE_START(AMS_DELTA, "Amstrad E3 (Delta)") | |||
611 | .reserve = omap_reserve, | 616 | .reserve = omap_reserve, |
612 | .init_irq = omap1_init_irq, | 617 | .init_irq = omap1_init_irq, |
613 | .init_machine = ams_delta_init, | 618 | .init_machine = ams_delta_init, |
619 | .init_late = ams_delta_init_late, | ||
614 | .timer = &omap1_timer, | 620 | .timer = &omap1_timer, |
615 | .restart = omap1_restart, | 621 | .restart = omap1_restart, |
616 | MACHINE_END | 622 | MACHINE_END |
diff --git a/arch/arm/mach-omap1/board-fsample.c b/arch/arm/mach-omap1/board-fsample.c index 4a4afb371022..c7364fdbda05 100644 --- a/arch/arm/mach-omap1/board-fsample.c +++ b/arch/arm/mach-omap1/board-fsample.c | |||
@@ -369,6 +369,7 @@ MACHINE_START(OMAP_FSAMPLE, "OMAP730 F-Sample") | |||
369 | .reserve = omap_reserve, | 369 | .reserve = omap_reserve, |
370 | .init_irq = omap1_init_irq, | 370 | .init_irq = omap1_init_irq, |
371 | .init_machine = omap_fsample_init, | 371 | .init_machine = omap_fsample_init, |
372 | .init_late = omap1_init_late, | ||
372 | .timer = &omap1_timer, | 373 | .timer = &omap1_timer, |
373 | .restart = omap1_restart, | 374 | .restart = omap1_restart, |
374 | MACHINE_END | 375 | MACHINE_END |
diff --git a/arch/arm/mach-omap1/board-generic.c b/arch/arm/mach-omap1/board-generic.c index 9a5fe581bc1c..e75e2d55a2d7 100644 --- a/arch/arm/mach-omap1/board-generic.c +++ b/arch/arm/mach-omap1/board-generic.c | |||
@@ -88,6 +88,7 @@ MACHINE_START(OMAP_GENERIC, "Generic OMAP1510/1610/1710") | |||
88 | .reserve = omap_reserve, | 88 | .reserve = omap_reserve, |
89 | .init_irq = omap1_init_irq, | 89 | .init_irq = omap1_init_irq, |
90 | .init_machine = omap_generic_init, | 90 | .init_machine = omap_generic_init, |
91 | .init_late = omap1_init_late, | ||
91 | .timer = &omap1_timer, | 92 | .timer = &omap1_timer, |
92 | .restart = omap1_restart, | 93 | .restart = omap1_restart, |
93 | MACHINE_END | 94 | MACHINE_END |
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c index 057ec13f0649..7e503686f7af 100644 --- a/arch/arm/mach-omap1/board-h2.c +++ b/arch/arm/mach-omap1/board-h2.c | |||
@@ -431,6 +431,7 @@ MACHINE_START(OMAP_H2, "TI-H2") | |||
431 | .reserve = omap_reserve, | 431 | .reserve = omap_reserve, |
432 | .init_irq = omap1_init_irq, | 432 | .init_irq = omap1_init_irq, |
433 | .init_machine = h2_init, | 433 | .init_machine = h2_init, |
434 | .init_late = omap1_init_late, | ||
434 | .timer = &omap1_timer, | 435 | .timer = &omap1_timer, |
435 | .restart = omap1_restart, | 436 | .restart = omap1_restart, |
436 | MACHINE_END | 437 | MACHINE_END |
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c index f6ddf8759657..9fb03f189d93 100644 --- a/arch/arm/mach-omap1/board-h3.c +++ b/arch/arm/mach-omap1/board-h3.c | |||
@@ -425,6 +425,7 @@ MACHINE_START(OMAP_H3, "TI OMAP1710 H3 board") | |||
425 | .reserve = omap_reserve, | 425 | .reserve = omap_reserve, |
426 | .init_irq = omap1_init_irq, | 426 | .init_irq = omap1_init_irq, |
427 | .init_machine = h3_init, | 427 | .init_machine = h3_init, |
428 | .init_late = omap1_init_late, | ||
428 | .timer = &omap1_timer, | 429 | .timer = &omap1_timer, |
429 | .restart = omap1_restart, | 430 | .restart = omap1_restart, |
430 | MACHINE_END | 431 | MACHINE_END |
diff --git a/arch/arm/mach-omap1/board-htcherald.c b/arch/arm/mach-omap1/board-htcherald.c index 60c06ee23855..118a9d4a4c54 100644 --- a/arch/arm/mach-omap1/board-htcherald.c +++ b/arch/arm/mach-omap1/board-htcherald.c | |||
@@ -605,6 +605,7 @@ MACHINE_START(HERALD, "HTC Herald") | |||
605 | .reserve = omap_reserve, | 605 | .reserve = omap_reserve, |
606 | .init_irq = omap1_init_irq, | 606 | .init_irq = omap1_init_irq, |
607 | .init_machine = htcherald_init, | 607 | .init_machine = htcherald_init, |
608 | .init_late = omap1_init_late, | ||
608 | .timer = &omap1_timer, | 609 | .timer = &omap1_timer, |
609 | .restart = omap1_restart, | 610 | .restart = omap1_restart, |
610 | MACHINE_END | 611 | MACHINE_END |
diff --git a/arch/arm/mach-omap1/board-innovator.c b/arch/arm/mach-omap1/board-innovator.c index 67d7fd57a692..7970223a559d 100644 --- a/arch/arm/mach-omap1/board-innovator.c +++ b/arch/arm/mach-omap1/board-innovator.c | |||
@@ -457,6 +457,7 @@ MACHINE_START(OMAP_INNOVATOR, "TI-Innovator") | |||
457 | .reserve = omap_reserve, | 457 | .reserve = omap_reserve, |
458 | .init_irq = omap1_init_irq, | 458 | .init_irq = omap1_init_irq, |
459 | .init_machine = innovator_init, | 459 | .init_machine = innovator_init, |
460 | .init_late = omap1_init_late, | ||
460 | .timer = &omap1_timer, | 461 | .timer = &omap1_timer, |
461 | .restart = omap1_restart, | 462 | .restart = omap1_restart, |
462 | MACHINE_END | 463 | MACHINE_END |
diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/board-nokia770.c index d21dcc2fbc5a..7212ae97f44a 100644 --- a/arch/arm/mach-omap1/board-nokia770.c +++ b/arch/arm/mach-omap1/board-nokia770.c | |||
@@ -255,6 +255,7 @@ MACHINE_START(NOKIA770, "Nokia 770") | |||
255 | .reserve = omap_reserve, | 255 | .reserve = omap_reserve, |
256 | .init_irq = omap1_init_irq, | 256 | .init_irq = omap1_init_irq, |
257 | .init_machine = omap_nokia770_init, | 257 | .init_machine = omap_nokia770_init, |
258 | .init_late = omap1_init_late, | ||
258 | .timer = &omap1_timer, | 259 | .timer = &omap1_timer, |
259 | .restart = omap1_restart, | 260 | .restart = omap1_restart, |
260 | MACHINE_END | 261 | MACHINE_END |
diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c index a5f85dda3f69..da8d872d3d1c 100644 --- a/arch/arm/mach-omap1/board-osk.c +++ b/arch/arm/mach-omap1/board-osk.c | |||
@@ -574,6 +574,7 @@ MACHINE_START(OMAP_OSK, "TI-OSK") | |||
574 | .reserve = omap_reserve, | 574 | .reserve = omap_reserve, |
575 | .init_irq = omap1_init_irq, | 575 | .init_irq = omap1_init_irq, |
576 | .init_machine = osk_init, | 576 | .init_machine = osk_init, |
577 | .init_late = omap1_init_late, | ||
577 | .timer = &omap1_timer, | 578 | .timer = &omap1_timer, |
578 | .restart = omap1_restart, | 579 | .restart = omap1_restart, |
579 | MACHINE_END | 580 | MACHINE_END |
diff --git a/arch/arm/mach-omap1/board-palmte.c b/arch/arm/mach-omap1/board-palmte.c index a60e6c22f816..949b62a73693 100644 --- a/arch/arm/mach-omap1/board-palmte.c +++ b/arch/arm/mach-omap1/board-palmte.c | |||
@@ -267,6 +267,7 @@ MACHINE_START(OMAP_PALMTE, "OMAP310 based Palm Tungsten E") | |||
267 | .reserve = omap_reserve, | 267 | .reserve = omap_reserve, |
268 | .init_irq = omap1_init_irq, | 268 | .init_irq = omap1_init_irq, |
269 | .init_machine = omap_palmte_init, | 269 | .init_machine = omap_palmte_init, |
270 | .init_late = omap1_init_late, | ||
270 | .timer = &omap1_timer, | 271 | .timer = &omap1_timer, |
271 | .restart = omap1_restart, | 272 | .restart = omap1_restart, |
272 | MACHINE_END | 273 | MACHINE_END |
diff --git a/arch/arm/mach-omap1/board-palmtt.c b/arch/arm/mach-omap1/board-palmtt.c index 8d854878547b..7f1e1cf2bf46 100644 --- a/arch/arm/mach-omap1/board-palmtt.c +++ b/arch/arm/mach-omap1/board-palmtt.c | |||
@@ -313,6 +313,7 @@ MACHINE_START(OMAP_PALMTT, "OMAP1510 based Palm Tungsten|T") | |||
313 | .reserve = omap_reserve, | 313 | .reserve = omap_reserve, |
314 | .init_irq = omap1_init_irq, | 314 | .init_irq = omap1_init_irq, |
315 | .init_machine = omap_palmtt_init, | 315 | .init_machine = omap_palmtt_init, |
316 | .init_late = omap1_init_late, | ||
316 | .timer = &omap1_timer, | 317 | .timer = &omap1_timer, |
317 | .restart = omap1_restart, | 318 | .restart = omap1_restart, |
318 | MACHINE_END | 319 | MACHINE_END |
diff --git a/arch/arm/mach-omap1/board-palmz71.c b/arch/arm/mach-omap1/board-palmz71.c index 61ed4f0247ce..3c71c6bace2c 100644 --- a/arch/arm/mach-omap1/board-palmz71.c +++ b/arch/arm/mach-omap1/board-palmz71.c | |||
@@ -330,6 +330,7 @@ MACHINE_START(OMAP_PALMZ71, "OMAP310 based Palm Zire71") | |||
330 | .reserve = omap_reserve, | 330 | .reserve = omap_reserve, |
331 | .init_irq = omap1_init_irq, | 331 | .init_irq = omap1_init_irq, |
332 | .init_machine = omap_palmz71_init, | 332 | .init_machine = omap_palmz71_init, |
333 | .init_late = omap1_init_late, | ||
333 | .timer = &omap1_timer, | 334 | .timer = &omap1_timer, |
334 | .restart = omap1_restart, | 335 | .restart = omap1_restart, |
335 | MACHINE_END | 336 | MACHINE_END |
diff --git a/arch/arm/mach-omap1/board-perseus2.c b/arch/arm/mach-omap1/board-perseus2.c index a2c88890e767..f2cb24387c22 100644 --- a/arch/arm/mach-omap1/board-perseus2.c +++ b/arch/arm/mach-omap1/board-perseus2.c | |||
@@ -331,6 +331,7 @@ MACHINE_START(OMAP_PERSEUS2, "OMAP730 Perseus2") | |||
331 | .reserve = omap_reserve, | 331 | .reserve = omap_reserve, |
332 | .init_irq = omap1_init_irq, | 332 | .init_irq = omap1_init_irq, |
333 | .init_machine = omap_perseus2_init, | 333 | .init_machine = omap_perseus2_init, |
334 | .init_late = omap1_init_late, | ||
334 | .timer = &omap1_timer, | 335 | .timer = &omap1_timer, |
335 | .restart = omap1_restart, | 336 | .restart = omap1_restart, |
336 | MACHINE_END | 337 | MACHINE_END |
diff --git a/arch/arm/mach-omap1/board-sx1.c b/arch/arm/mach-omap1/board-sx1.c index f34cb74a9f41..3b7b82b13684 100644 --- a/arch/arm/mach-omap1/board-sx1.c +++ b/arch/arm/mach-omap1/board-sx1.c | |||
@@ -407,6 +407,7 @@ MACHINE_START(SX1, "OMAP310 based Siemens SX1") | |||
407 | .reserve = omap_reserve, | 407 | .reserve = omap_reserve, |
408 | .init_irq = omap1_init_irq, | 408 | .init_irq = omap1_init_irq, |
409 | .init_machine = omap_sx1_init, | 409 | .init_machine = omap_sx1_init, |
410 | .init_late = omap1_init_late, | ||
410 | .timer = &omap1_timer, | 411 | .timer = &omap1_timer, |
411 | .restart = omap1_restart, | 412 | .restart = omap1_restart, |
412 | MACHINE_END | 413 | MACHINE_END |
diff --git a/arch/arm/mach-omap1/board-voiceblue.c b/arch/arm/mach-omap1/board-voiceblue.c index 37232d04233f..afd67f0ec495 100644 --- a/arch/arm/mach-omap1/board-voiceblue.c +++ b/arch/arm/mach-omap1/board-voiceblue.c | |||
@@ -294,6 +294,7 @@ MACHINE_START(VOICEBLUE, "VoiceBlue OMAP5910") | |||
294 | .reserve = omap_reserve, | 294 | .reserve = omap_reserve, |
295 | .init_irq = omap1_init_irq, | 295 | .init_irq = omap1_init_irq, |
296 | .init_machine = voiceblue_init, | 296 | .init_machine = voiceblue_init, |
297 | .init_late = omap1_init_late, | ||
297 | .timer = &omap1_timer, | 298 | .timer = &omap1_timer, |
298 | .restart = voiceblue_restart, | 299 | .restart = voiceblue_restart, |
299 | MACHINE_END | 300 | MACHINE_END |
diff --git a/arch/arm/mach-omap1/common.h b/arch/arm/mach-omap1/common.h index 64ce3bbe22b5..c2552b24f9f2 100644 --- a/arch/arm/mach-omap1/common.h +++ b/arch/arm/mach-omap1/common.h | |||
@@ -53,8 +53,18 @@ static inline void omap16xx_map_io(void) | |||
53 | } | 53 | } |
54 | #endif | 54 | #endif |
55 | 55 | ||
56 | #ifdef CONFIG_OMAP_SERIAL_WAKE | ||
57 | int omap_serial_wakeup_init(void); | ||
58 | #else | ||
59 | static inline int omap_serial_wakeup_init(void) | ||
60 | { | ||
61 | return 0; | ||
62 | } | ||
63 | #endif | ||
64 | |||
56 | void omap1_init_early(void); | 65 | void omap1_init_early(void); |
57 | void omap1_init_irq(void); | 66 | void omap1_init_irq(void); |
67 | void omap1_init_late(void); | ||
58 | void omap1_restart(char, const char *); | 68 | void omap1_restart(char, const char *); |
59 | 69 | ||
60 | extern void __init omap_check_revision(void); | 70 | extern void __init omap_check_revision(void); |
diff --git a/arch/arm/mach-omap1/io.c b/arch/arm/mach-omap1/io.c index 71ce017bf5d8..6c95a59f0f16 100644 --- a/arch/arm/mach-omap1/io.c +++ b/arch/arm/mach-omap1/io.c | |||
@@ -137,6 +137,11 @@ void __init omap1_init_early(void) | |||
137 | omap_init_consistent_dma_size(); | 137 | omap_init_consistent_dma_size(); |
138 | } | 138 | } |
139 | 139 | ||
140 | void __init omap1_init_late(void) | ||
141 | { | ||
142 | omap_serial_wakeup_init(); | ||
143 | } | ||
144 | |||
140 | /* | 145 | /* |
141 | * NOTE: Please use ioremap + __raw_read/write where possible instead of these | 146 | * NOTE: Please use ioremap + __raw_read/write where possible instead of these |
142 | */ | 147 | */ |
diff --git a/arch/arm/mach-omap1/serial.c b/arch/arm/mach-omap1/serial.c index 93ae8f29727e..6809c9e56c93 100644 --- a/arch/arm/mach-omap1/serial.c +++ b/arch/arm/mach-omap1/serial.c | |||
@@ -237,7 +237,7 @@ static void __init omap_serial_set_port_wakeup(int gpio_nr) | |||
237 | enable_irq_wake(gpio_to_irq(gpio_nr)); | 237 | enable_irq_wake(gpio_to_irq(gpio_nr)); |
238 | } | 238 | } |
239 | 239 | ||
240 | static int __init omap_serial_wakeup_init(void) | 240 | int __init omap_serial_wakeup_init(void) |
241 | { | 241 | { |
242 | if (!cpu_is_omap16xx()) | 242 | if (!cpu_is_omap16xx()) |
243 | return 0; | 243 | return 0; |
@@ -251,7 +251,6 @@ static int __init omap_serial_wakeup_init(void) | |||
251 | 251 | ||
252 | return 0; | 252 | return 0; |
253 | } | 253 | } |
254 | late_initcall(omap_serial_wakeup_init); | ||
255 | 254 | ||
256 | #endif /* CONFIG_OMAP_SERIAL_WAKE */ | 255 | #endif /* CONFIG_OMAP_SERIAL_WAKE */ |
257 | 256 | ||
diff --git a/arch/arm/mach-omap2/board-2430sdp.c b/arch/arm/mach-omap2/board-2430sdp.c index e658f835d0de..99ca6bad5c30 100644 --- a/arch/arm/mach-omap2/board-2430sdp.c +++ b/arch/arm/mach-omap2/board-2430sdp.c | |||
@@ -303,6 +303,7 @@ MACHINE_START(OMAP_2430SDP, "OMAP2430 sdp2430 board") | |||
303 | .init_irq = omap2_init_irq, | 303 | .init_irq = omap2_init_irq, |
304 | .handle_irq = omap2_intc_handle_irq, | 304 | .handle_irq = omap2_intc_handle_irq, |
305 | .init_machine = omap_2430sdp_init, | 305 | .init_machine = omap_2430sdp_init, |
306 | .init_late = omap2430_init_late, | ||
306 | .timer = &omap2_timer, | 307 | .timer = &omap2_timer, |
307 | .restart = omap_prcm_restart, | 308 | .restart = omap_prcm_restart, |
308 | MACHINE_END | 309 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c index 37abb0d49b51..a98c688058a9 100644 --- a/arch/arm/mach-omap2/board-3430sdp.c +++ b/arch/arm/mach-omap2/board-3430sdp.c | |||
@@ -605,6 +605,7 @@ MACHINE_START(OMAP_3430SDP, "OMAP3430 3430SDP board") | |||
605 | .init_irq = omap3_init_irq, | 605 | .init_irq = omap3_init_irq, |
606 | .handle_irq = omap3_intc_handle_irq, | 606 | .handle_irq = omap3_intc_handle_irq, |
607 | .init_machine = omap_3430sdp_init, | 607 | .init_machine = omap_3430sdp_init, |
608 | .init_late = omap3430_init_late, | ||
608 | .timer = &omap3_timer, | 609 | .timer = &omap3_timer, |
609 | .restart = omap_prcm_restart, | 610 | .restart = omap_prcm_restart, |
610 | MACHINE_END | 611 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-3630sdp.c b/arch/arm/mach-omap2/board-3630sdp.c index 6ef350d1ae4f..2dc9ba523c7a 100644 --- a/arch/arm/mach-omap2/board-3630sdp.c +++ b/arch/arm/mach-omap2/board-3630sdp.c | |||
@@ -217,6 +217,7 @@ MACHINE_START(OMAP_3630SDP, "OMAP 3630SDP board") | |||
217 | .init_irq = omap3_init_irq, | 217 | .init_irq = omap3_init_irq, |
218 | .handle_irq = omap3_intc_handle_irq, | 218 | .handle_irq = omap3_intc_handle_irq, |
219 | .init_machine = omap_sdp_init, | 219 | .init_machine = omap_sdp_init, |
220 | .init_late = omap3630_init_late, | ||
220 | .timer = &omap3_timer, | 221 | .timer = &omap3_timer, |
221 | .restart = omap_prcm_restart, | 222 | .restart = omap_prcm_restart, |
222 | MACHINE_END | 223 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c index 94af6cde2e36..8e17284a803f 100644 --- a/arch/arm/mach-omap2/board-4430sdp.c +++ b/arch/arm/mach-omap2/board-4430sdp.c | |||
@@ -912,6 +912,7 @@ MACHINE_START(OMAP_4430SDP, "OMAP4430 4430SDP board") | |||
912 | .init_irq = gic_init_irq, | 912 | .init_irq = gic_init_irq, |
913 | .handle_irq = gic_handle_irq, | 913 | .handle_irq = gic_handle_irq, |
914 | .init_machine = omap_4430sdp_init, | 914 | .init_machine = omap_4430sdp_init, |
915 | .init_late = omap4430_init_late, | ||
915 | .timer = &omap4_timer, | 916 | .timer = &omap4_timer, |
916 | .restart = omap_prcm_restart, | 917 | .restart = omap_prcm_restart, |
917 | MACHINE_END | 918 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-am3517crane.c b/arch/arm/mach-omap2/board-am3517crane.c index 3b8a53c1f2a8..92432c28673d 100644 --- a/arch/arm/mach-omap2/board-am3517crane.c +++ b/arch/arm/mach-omap2/board-am3517crane.c | |||
@@ -102,6 +102,7 @@ MACHINE_START(CRANEBOARD, "AM3517/05 CRANEBOARD") | |||
102 | .init_irq = omap3_init_irq, | 102 | .init_irq = omap3_init_irq, |
103 | .handle_irq = omap3_intc_handle_irq, | 103 | .handle_irq = omap3_intc_handle_irq, |
104 | .init_machine = am3517_crane_init, | 104 | .init_machine = am3517_crane_init, |
105 | .init_late = am35xx_init_late, | ||
105 | .timer = &omap3_timer, | 106 | .timer = &omap3_timer, |
106 | .restart = omap_prcm_restart, | 107 | .restart = omap_prcm_restart, |
107 | MACHINE_END | 108 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-am3517evm.c b/arch/arm/mach-omap2/board-am3517evm.c index 99790eb646e8..18f601096ce1 100644 --- a/arch/arm/mach-omap2/board-am3517evm.c +++ b/arch/arm/mach-omap2/board-am3517evm.c | |||
@@ -385,6 +385,7 @@ MACHINE_START(OMAP3517EVM, "OMAP3517/AM3517 EVM") | |||
385 | .init_irq = omap3_init_irq, | 385 | .init_irq = omap3_init_irq, |
386 | .handle_irq = omap3_intc_handle_irq, | 386 | .handle_irq = omap3_intc_handle_irq, |
387 | .init_machine = am3517_evm_init, | 387 | .init_machine = am3517_evm_init, |
388 | .init_late = am35xx_init_late, | ||
388 | .timer = &omap3_timer, | 389 | .timer = &omap3_timer, |
389 | .restart = omap_prcm_restart, | 390 | .restart = omap_prcm_restart, |
390 | MACHINE_END | 391 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-apollon.c b/arch/arm/mach-omap2/board-apollon.c index 768ece2e9c3b..502c31e123be 100644 --- a/arch/arm/mach-omap2/board-apollon.c +++ b/arch/arm/mach-omap2/board-apollon.c | |||
@@ -356,6 +356,7 @@ MACHINE_START(OMAP_APOLLON, "OMAP24xx Apollon") | |||
356 | .init_irq = omap2_init_irq, | 356 | .init_irq = omap2_init_irq, |
357 | .handle_irq = omap2_intc_handle_irq, | 357 | .handle_irq = omap2_intc_handle_irq, |
358 | .init_machine = omap_apollon_init, | 358 | .init_machine = omap_apollon_init, |
359 | .init_late = omap2420_init_late, | ||
359 | .timer = &omap2_timer, | 360 | .timer = &omap2_timer, |
360 | .restart = omap_prcm_restart, | 361 | .restart = omap_prcm_restart, |
361 | MACHINE_END | 362 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-cm-t35.c b/arch/arm/mach-omap2/board-cm-t35.c index c03df142ea67..ded100c80a91 100644 --- a/arch/arm/mach-omap2/board-cm-t35.c +++ b/arch/arm/mach-omap2/board-cm-t35.c | |||
@@ -669,6 +669,7 @@ MACHINE_START(CM_T35, "Compulab CM-T35") | |||
669 | .init_irq = omap3_init_irq, | 669 | .init_irq = omap3_init_irq, |
670 | .handle_irq = omap3_intc_handle_irq, | 670 | .handle_irq = omap3_intc_handle_irq, |
671 | .init_machine = cm_t35_init, | 671 | .init_machine = cm_t35_init, |
672 | .init_late = omap35xx_init_late, | ||
672 | .timer = &omap3_timer, | 673 | .timer = &omap3_timer, |
673 | .restart = omap_prcm_restart, | 674 | .restart = omap_prcm_restart, |
674 | MACHINE_END | 675 | MACHINE_END |
@@ -681,6 +682,7 @@ MACHINE_START(CM_T3730, "Compulab CM-T3730") | |||
681 | .init_irq = omap3_init_irq, | 682 | .init_irq = omap3_init_irq, |
682 | .handle_irq = omap3_intc_handle_irq, | 683 | .handle_irq = omap3_intc_handle_irq, |
683 | .init_machine = cm_t3730_init, | 684 | .init_machine = cm_t3730_init, |
685 | .init_late = omap3630_init_late, | ||
684 | .timer = &omap3_timer, | 686 | .timer = &omap3_timer, |
685 | .restart = omap_prcm_restart, | 687 | .restart = omap_prcm_restart, |
686 | MACHINE_END | 688 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-cm-t3517.c b/arch/arm/mach-omap2/board-cm-t3517.c index 9e66e167e4f3..a33ad4641d9a 100644 --- a/arch/arm/mach-omap2/board-cm-t3517.c +++ b/arch/arm/mach-omap2/board-cm-t3517.c | |||
@@ -303,6 +303,7 @@ MACHINE_START(CM_T3517, "Compulab CM-T3517") | |||
303 | .init_irq = omap3_init_irq, | 303 | .init_irq = omap3_init_irq, |
304 | .handle_irq = omap3_intc_handle_irq, | 304 | .handle_irq = omap3_intc_handle_irq, |
305 | .init_machine = cm_t3517_init, | 305 | .init_machine = cm_t3517_init, |
306 | .init_late = am35xx_init_late, | ||
306 | .timer = &omap3_timer, | 307 | .timer = &omap3_timer, |
307 | .restart = omap_prcm_restart, | 308 | .restart = omap_prcm_restart, |
308 | MACHINE_END | 309 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-devkit8000.c b/arch/arm/mach-omap2/board-devkit8000.c index b063f0d2faa6..6567c1cd5572 100644 --- a/arch/arm/mach-omap2/board-devkit8000.c +++ b/arch/arm/mach-omap2/board-devkit8000.c | |||
@@ -644,6 +644,7 @@ MACHINE_START(DEVKIT8000, "OMAP3 Devkit8000") | |||
644 | .init_irq = omap3_init_irq, | 644 | .init_irq = omap3_init_irq, |
645 | .handle_irq = omap3_intc_handle_irq, | 645 | .handle_irq = omap3_intc_handle_irq, |
646 | .init_machine = devkit8000_init, | 646 | .init_machine = devkit8000_init, |
647 | .init_late = omap35xx_init_late, | ||
647 | .timer = &omap3_secure_timer, | 648 | .timer = &omap3_secure_timer, |
648 | .restart = omap_prcm_restart, | 649 | .restart = omap_prcm_restart, |
649 | MACHINE_END | 650 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c index 7302ba7ff1b9..202934657867 100644 --- a/arch/arm/mach-omap2/board-generic.c +++ b/arch/arm/mach-omap2/board-generic.c | |||
@@ -125,6 +125,7 @@ DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)") | |||
125 | .init_irq = omap_init_irq, | 125 | .init_irq = omap_init_irq, |
126 | .handle_irq = gic_handle_irq, | 126 | .handle_irq = gic_handle_irq, |
127 | .init_machine = omap_generic_init, | 127 | .init_machine = omap_generic_init, |
128 | .init_late = omap4430_init_late, | ||
128 | .timer = &omap4_timer, | 129 | .timer = &omap4_timer, |
129 | .dt_compat = omap4_boards_compat, | 130 | .dt_compat = omap4_boards_compat, |
130 | .restart = omap_prcm_restart, | 131 | .restart = omap_prcm_restart, |
diff --git a/arch/arm/mach-omap2/board-h4.c b/arch/arm/mach-omap2/board-h4.c index 0bbbabe28fcc..876becf8205a 100644 --- a/arch/arm/mach-omap2/board-h4.c +++ b/arch/arm/mach-omap2/board-h4.c | |||
@@ -398,6 +398,7 @@ MACHINE_START(OMAP_H4, "OMAP2420 H4 board") | |||
398 | .init_irq = omap2_init_irq, | 398 | .init_irq = omap2_init_irq, |
399 | .handle_irq = omap2_intc_handle_irq, | 399 | .handle_irq = omap2_intc_handle_irq, |
400 | .init_machine = omap_h4_init, | 400 | .init_machine = omap_h4_init, |
401 | .init_late = omap2420_init_late, | ||
401 | .timer = &omap2_timer, | 402 | .timer = &omap2_timer, |
402 | .restart = omap_prcm_restart, | 403 | .restart = omap_prcm_restart, |
403 | MACHINE_END | 404 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c index 7a274098f67b..74915295482e 100644 --- a/arch/arm/mach-omap2/board-igep0020.c +++ b/arch/arm/mach-omap2/board-igep0020.c | |||
@@ -650,6 +650,7 @@ MACHINE_START(IGEP0020, "IGEP v2 board") | |||
650 | .init_irq = omap3_init_irq, | 650 | .init_irq = omap3_init_irq, |
651 | .handle_irq = omap3_intc_handle_irq, | 651 | .handle_irq = omap3_intc_handle_irq, |
652 | .init_machine = igep_init, | 652 | .init_machine = igep_init, |
653 | .init_late = omap35xx_init_late, | ||
653 | .timer = &omap3_timer, | 654 | .timer = &omap3_timer, |
654 | .restart = omap_prcm_restart, | 655 | .restart = omap_prcm_restart, |
655 | MACHINE_END | 656 | MACHINE_END |
@@ -662,6 +663,7 @@ MACHINE_START(IGEP0030, "IGEP OMAP3 module") | |||
662 | .init_irq = omap3_init_irq, | 663 | .init_irq = omap3_init_irq, |
663 | .handle_irq = omap3_intc_handle_irq, | 664 | .handle_irq = omap3_intc_handle_irq, |
664 | .init_machine = igep_init, | 665 | .init_machine = igep_init, |
666 | .init_late = omap35xx_init_late, | ||
665 | .timer = &omap3_timer, | 667 | .timer = &omap3_timer, |
666 | .restart = omap_prcm_restart, | 668 | .restart = omap_prcm_restart, |
667 | MACHINE_END | 669 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c index 1b6049567ab4..ef9e82977499 100644 --- a/arch/arm/mach-omap2/board-ldp.c +++ b/arch/arm/mach-omap2/board-ldp.c | |||
@@ -442,6 +442,7 @@ MACHINE_START(OMAP_LDP, "OMAP LDP board") | |||
442 | .init_irq = omap3_init_irq, | 442 | .init_irq = omap3_init_irq, |
443 | .handle_irq = omap3_intc_handle_irq, | 443 | .handle_irq = omap3_intc_handle_irq, |
444 | .init_machine = omap_ldp_init, | 444 | .init_machine = omap_ldp_init, |
445 | .init_late = omap3430_init_late, | ||
445 | .timer = &omap3_timer, | 446 | .timer = &omap3_timer, |
446 | .restart = omap_prcm_restart, | 447 | .restart = omap_prcm_restart, |
447 | MACHINE_END | 448 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c index 518091c5f77c..8ca14e88a31a 100644 --- a/arch/arm/mach-omap2/board-n8x0.c +++ b/arch/arm/mach-omap2/board-n8x0.c | |||
@@ -694,6 +694,7 @@ MACHINE_START(NOKIA_N800, "Nokia N800") | |||
694 | .init_irq = omap2_init_irq, | 694 | .init_irq = omap2_init_irq, |
695 | .handle_irq = omap2_intc_handle_irq, | 695 | .handle_irq = omap2_intc_handle_irq, |
696 | .init_machine = n8x0_init_machine, | 696 | .init_machine = n8x0_init_machine, |
697 | .init_late = omap2420_init_late, | ||
697 | .timer = &omap2_timer, | 698 | .timer = &omap2_timer, |
698 | .restart = omap_prcm_restart, | 699 | .restart = omap_prcm_restart, |
699 | MACHINE_END | 700 | MACHINE_END |
@@ -706,6 +707,7 @@ MACHINE_START(NOKIA_N810, "Nokia N810") | |||
706 | .init_irq = omap2_init_irq, | 707 | .init_irq = omap2_init_irq, |
707 | .handle_irq = omap2_intc_handle_irq, | 708 | .handle_irq = omap2_intc_handle_irq, |
708 | .init_machine = n8x0_init_machine, | 709 | .init_machine = n8x0_init_machine, |
710 | .init_late = omap2420_init_late, | ||
709 | .timer = &omap2_timer, | 711 | .timer = &omap2_timer, |
710 | .restart = omap_prcm_restart, | 712 | .restart = omap_prcm_restart, |
711 | MACHINE_END | 713 | MACHINE_END |
@@ -718,6 +720,7 @@ MACHINE_START(NOKIA_N810_WIMAX, "Nokia N810 WiMAX") | |||
718 | .init_irq = omap2_init_irq, | 720 | .init_irq = omap2_init_irq, |
719 | .handle_irq = omap2_intc_handle_irq, | 721 | .handle_irq = omap2_intc_handle_irq, |
720 | .init_machine = n8x0_init_machine, | 722 | .init_machine = n8x0_init_machine, |
723 | .init_late = omap2420_init_late, | ||
721 | .timer = &omap2_timer, | 724 | .timer = &omap2_timer, |
722 | .restart = omap_prcm_restart, | 725 | .restart = omap_prcm_restart, |
723 | MACHINE_END | 726 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c index 2a7b9a9da1db..79c6909eeb78 100644 --- a/arch/arm/mach-omap2/board-omap3beagle.c +++ b/arch/arm/mach-omap2/board-omap3beagle.c | |||
@@ -543,6 +543,7 @@ MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board") | |||
543 | .init_irq = omap3_init_irq, | 543 | .init_irq = omap3_init_irq, |
544 | .handle_irq = omap3_intc_handle_irq, | 544 | .handle_irq = omap3_intc_handle_irq, |
545 | .init_machine = omap3_beagle_init, | 545 | .init_machine = omap3_beagle_init, |
546 | .init_late = omap3_init_late, | ||
546 | .timer = &omap3_secure_timer, | 547 | .timer = &omap3_secure_timer, |
547 | .restart = omap_prcm_restart, | 548 | .restart = omap_prcm_restart, |
548 | MACHINE_END | 549 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c index ace3c675e9c2..639bd07ea38a 100644 --- a/arch/arm/mach-omap2/board-omap3evm.c +++ b/arch/arm/mach-omap2/board-omap3evm.c | |||
@@ -671,6 +671,7 @@ MACHINE_START(OMAP3EVM, "OMAP3 EVM") | |||
671 | .init_irq = omap3_init_irq, | 671 | .init_irq = omap3_init_irq, |
672 | .handle_irq = omap3_intc_handle_irq, | 672 | .handle_irq = omap3_intc_handle_irq, |
673 | .init_machine = omap3_evm_init, | 673 | .init_machine = omap3_evm_init, |
674 | .init_late = omap35xx_init_late, | ||
674 | .timer = &omap3_timer, | 675 | .timer = &omap3_timer, |
675 | .restart = omap_prcm_restart, | 676 | .restart = omap_prcm_restart, |
676 | MACHINE_END | 677 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-omap3logic.c b/arch/arm/mach-omap2/board-omap3logic.c index c008bf8e1c36..932e1778aff9 100644 --- a/arch/arm/mach-omap2/board-omap3logic.c +++ b/arch/arm/mach-omap2/board-omap3logic.c | |||
@@ -242,6 +242,7 @@ MACHINE_START(OMAP3_TORPEDO, "Logic OMAP3 Torpedo board") | |||
242 | .init_irq = omap3_init_irq, | 242 | .init_irq = omap3_init_irq, |
243 | .handle_irq = omap3_intc_handle_irq, | 243 | .handle_irq = omap3_intc_handle_irq, |
244 | .init_machine = omap3logic_init, | 244 | .init_machine = omap3logic_init, |
245 | .init_late = omap35xx_init_late, | ||
245 | .timer = &omap3_timer, | 246 | .timer = &omap3_timer, |
246 | .restart = omap_prcm_restart, | 247 | .restart = omap_prcm_restart, |
247 | MACHINE_END | 248 | MACHINE_END |
@@ -254,6 +255,7 @@ MACHINE_START(OMAP3530_LV_SOM, "OMAP Logic 3530 LV SOM board") | |||
254 | .init_irq = omap3_init_irq, | 255 | .init_irq = omap3_init_irq, |
255 | .handle_irq = omap3_intc_handle_irq, | 256 | .handle_irq = omap3_intc_handle_irq, |
256 | .init_machine = omap3logic_init, | 257 | .init_machine = omap3logic_init, |
258 | .init_late = omap35xx_init_late, | ||
257 | .timer = &omap3_timer, | 259 | .timer = &omap3_timer, |
258 | .restart = omap_prcm_restart, | 260 | .restart = omap_prcm_restart, |
259 | MACHINE_END | 261 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-omap3pandora.c b/arch/arm/mach-omap2/board-omap3pandora.c index 33d995d0f075..57aebee44fd0 100644 --- a/arch/arm/mach-omap2/board-omap3pandora.c +++ b/arch/arm/mach-omap2/board-omap3pandora.c | |||
@@ -622,6 +622,7 @@ MACHINE_START(OMAP3_PANDORA, "Pandora Handheld Console") | |||
622 | .init_irq = omap3_init_irq, | 622 | .init_irq = omap3_init_irq, |
623 | .handle_irq = omap3_intc_handle_irq, | 623 | .handle_irq = omap3_intc_handle_irq, |
624 | .init_machine = omap3pandora_init, | 624 | .init_machine = omap3pandora_init, |
625 | .init_late = omap35xx_init_late, | ||
625 | .timer = &omap3_timer, | 626 | .timer = &omap3_timer, |
626 | .restart = omap_prcm_restart, | 627 | .restart = omap_prcm_restart, |
627 | MACHINE_END | 628 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-omap3stalker.c b/arch/arm/mach-omap2/board-omap3stalker.c index 4396bae91677..b318f5602e36 100644 --- a/arch/arm/mach-omap2/board-omap3stalker.c +++ b/arch/arm/mach-omap2/board-omap3stalker.c | |||
@@ -436,6 +436,7 @@ MACHINE_START(SBC3530, "OMAP3 STALKER") | |||
436 | .init_irq = omap3_init_irq, | 436 | .init_irq = omap3_init_irq, |
437 | .handle_irq = omap3_intc_handle_irq, | 437 | .handle_irq = omap3_intc_handle_irq, |
438 | .init_machine = omap3_stalker_init, | 438 | .init_machine = omap3_stalker_init, |
439 | .init_late = omap35xx_init_late, | ||
439 | .timer = &omap3_secure_timer, | 440 | .timer = &omap3_secure_timer, |
440 | .restart = omap_prcm_restart, | 441 | .restart = omap_prcm_restart, |
441 | MACHINE_END | 442 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-omap3touchbook.c b/arch/arm/mach-omap2/board-omap3touchbook.c index ae2251fa4a69..485d14d6a8cd 100644 --- a/arch/arm/mach-omap2/board-omap3touchbook.c +++ b/arch/arm/mach-omap2/board-omap3touchbook.c | |||
@@ -387,6 +387,7 @@ MACHINE_START(TOUCHBOOK, "OMAP3 touchbook Board") | |||
387 | .init_irq = omap3_init_irq, | 387 | .init_irq = omap3_init_irq, |
388 | .handle_irq = omap3_intc_handle_irq, | 388 | .handle_irq = omap3_intc_handle_irq, |
389 | .init_machine = omap3_touchbook_init, | 389 | .init_machine = omap3_touchbook_init, |
390 | .init_late = omap3430_init_late, | ||
390 | .timer = &omap3_secure_timer, | 391 | .timer = &omap3_secure_timer, |
391 | .restart = omap_prcm_restart, | 392 | .restart = omap_prcm_restart, |
392 | MACHINE_END | 393 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c index 68b8fc9ff010..982fb2622ab8 100644 --- a/arch/arm/mach-omap2/board-omap4panda.c +++ b/arch/arm/mach-omap2/board-omap4panda.c | |||
@@ -521,6 +521,7 @@ MACHINE_START(OMAP4_PANDA, "OMAP4 Panda board") | |||
521 | .init_irq = gic_init_irq, | 521 | .init_irq = gic_init_irq, |
522 | .handle_irq = gic_handle_irq, | 522 | .handle_irq = gic_handle_irq, |
523 | .init_machine = omap4_panda_init, | 523 | .init_machine = omap4_panda_init, |
524 | .init_late = omap4430_init_late, | ||
524 | .timer = &omap4_timer, | 525 | .timer = &omap4_timer, |
525 | .restart = omap_prcm_restart, | 526 | .restart = omap_prcm_restart, |
526 | MACHINE_END | 527 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c index 5527c1979a16..8fa2fc3a4c3c 100644 --- a/arch/arm/mach-omap2/board-overo.c +++ b/arch/arm/mach-omap2/board-overo.c | |||
@@ -554,6 +554,7 @@ MACHINE_START(OVERO, "Gumstix Overo") | |||
554 | .init_irq = omap3_init_irq, | 554 | .init_irq = omap3_init_irq, |
555 | .handle_irq = omap3_intc_handle_irq, | 555 | .handle_irq = omap3_intc_handle_irq, |
556 | .init_machine = overo_init, | 556 | .init_machine = overo_init, |
557 | .init_late = omap35xx_init_late, | ||
557 | .timer = &omap3_timer, | 558 | .timer = &omap3_timer, |
558 | .restart = omap_prcm_restart, | 559 | .restart = omap_prcm_restart, |
559 | MACHINE_END | 560 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-rm680.c b/arch/arm/mach-omap2/board-rm680.c index ae53d71f0ce0..0ad1bb3bdb98 100644 --- a/arch/arm/mach-omap2/board-rm680.c +++ b/arch/arm/mach-omap2/board-rm680.c | |||
@@ -151,6 +151,7 @@ MACHINE_START(NOKIA_RM680, "Nokia RM-680 board") | |||
151 | .init_irq = omap3_init_irq, | 151 | .init_irq = omap3_init_irq, |
152 | .handle_irq = omap3_intc_handle_irq, | 152 | .handle_irq = omap3_intc_handle_irq, |
153 | .init_machine = rm680_init, | 153 | .init_machine = rm680_init, |
154 | .init_late = omap3630_init_late, | ||
154 | .timer = &omap3_timer, | 155 | .timer = &omap3_timer, |
155 | .restart = omap_prcm_restart, | 156 | .restart = omap_prcm_restart, |
156 | MACHINE_END | 157 | MACHINE_END |
@@ -163,6 +164,7 @@ MACHINE_START(NOKIA_RM696, "Nokia RM-696 board") | |||
163 | .init_irq = omap3_init_irq, | 164 | .init_irq = omap3_init_irq, |
164 | .handle_irq = omap3_intc_handle_irq, | 165 | .handle_irq = omap3_intc_handle_irq, |
165 | .init_machine = rm680_init, | 166 | .init_machine = rm680_init, |
167 | .init_late = omap3630_init_late, | ||
166 | .timer = &omap3_timer, | 168 | .timer = &omap3_timer, |
167 | .restart = omap_prcm_restart, | 169 | .restart = omap_prcm_restart, |
168 | MACHINE_END | 170 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-rx51.c b/arch/arm/mach-omap2/board-rx51.c index 2da92a6ba40a..345dd931f76f 100644 --- a/arch/arm/mach-omap2/board-rx51.c +++ b/arch/arm/mach-omap2/board-rx51.c | |||
@@ -127,6 +127,7 @@ MACHINE_START(NOKIA_RX51, "Nokia RX-51 board") | |||
127 | .init_irq = omap3_init_irq, | 127 | .init_irq = omap3_init_irq, |
128 | .handle_irq = omap3_intc_handle_irq, | 128 | .handle_irq = omap3_intc_handle_irq, |
129 | .init_machine = rx51_init, | 129 | .init_machine = rx51_init, |
130 | .init_late = omap3430_init_late, | ||
130 | .timer = &omap3_timer, | 131 | .timer = &omap3_timer, |
131 | .restart = omap_prcm_restart, | 132 | .restart = omap_prcm_restart, |
132 | MACHINE_END | 133 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-ti8168evm.c b/arch/arm/mach-omap2/board-ti8168evm.c index ab9a7a9e9d64..d4c8392cadb6 100644 --- a/arch/arm/mach-omap2/board-ti8168evm.c +++ b/arch/arm/mach-omap2/board-ti8168evm.c | |||
@@ -52,6 +52,7 @@ MACHINE_START(TI8168EVM, "ti8168evm") | |||
52 | .init_irq = ti81xx_init_irq, | 52 | .init_irq = ti81xx_init_irq, |
53 | .timer = &omap3_timer, | 53 | .timer = &omap3_timer, |
54 | .init_machine = ti81xx_evm_init, | 54 | .init_machine = ti81xx_evm_init, |
55 | .init_late = ti81xx_init_late, | ||
55 | .restart = omap_prcm_restart, | 56 | .restart = omap_prcm_restart, |
56 | MACHINE_END | 57 | MACHINE_END |
57 | 58 | ||
@@ -63,5 +64,6 @@ MACHINE_START(TI8148EVM, "ti8148evm") | |||
63 | .init_irq = ti81xx_init_irq, | 64 | .init_irq = ti81xx_init_irq, |
64 | .timer = &omap3_timer, | 65 | .timer = &omap3_timer, |
65 | .init_machine = ti81xx_evm_init, | 66 | .init_machine = ti81xx_evm_init, |
67 | .init_late = ti81xx_init_late, | ||
66 | .restart = omap_prcm_restart, | 68 | .restart = omap_prcm_restart, |
67 | MACHINE_END | 69 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-zoom.c b/arch/arm/mach-omap2/board-zoom.c index 5c20bcc57f2b..4e7e56142e6f 100644 --- a/arch/arm/mach-omap2/board-zoom.c +++ b/arch/arm/mach-omap2/board-zoom.c | |||
@@ -137,6 +137,7 @@ MACHINE_START(OMAP_ZOOM2, "OMAP Zoom2 board") | |||
137 | .init_irq = omap3_init_irq, | 137 | .init_irq = omap3_init_irq, |
138 | .handle_irq = omap3_intc_handle_irq, | 138 | .handle_irq = omap3_intc_handle_irq, |
139 | .init_machine = omap_zoom_init, | 139 | .init_machine = omap_zoom_init, |
140 | .init_late = omap3430_init_late, | ||
140 | .timer = &omap3_timer, | 141 | .timer = &omap3_timer, |
141 | .restart = omap_prcm_restart, | 142 | .restart = omap_prcm_restart, |
142 | MACHINE_END | 143 | MACHINE_END |
@@ -149,6 +150,7 @@ MACHINE_START(OMAP_ZOOM3, "OMAP Zoom3 board") | |||
149 | .init_irq = omap3_init_irq, | 150 | .init_irq = omap3_init_irq, |
150 | .handle_irq = omap3_intc_handle_irq, | 151 | .handle_irq = omap3_intc_handle_irq, |
151 | .init_machine = omap_zoom_init, | 152 | .init_machine = omap_zoom_init, |
153 | .init_late = omap3630_init_late, | ||
152 | .timer = &omap3_timer, | 154 | .timer = &omap3_timer, |
153 | .restart = omap_prcm_restart, | 155 | .restart = omap_prcm_restart, |
154 | MACHINE_END | 156 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h index 4cb1fe666311..be9dfd1abe60 100644 --- a/arch/arm/mach-omap2/common.h +++ b/arch/arm/mach-omap2/common.h | |||
@@ -79,6 +79,42 @@ static inline void omap44xx_map_common_io(void) | |||
79 | } | 79 | } |
80 | #endif | 80 | #endif |
81 | 81 | ||
82 | #if defined(CONFIG_PM) && defined(CONFIG_ARCH_OMAP2) | ||
83 | int omap2_pm_init(void); | ||
84 | #else | ||
85 | static inline int omap2_pm_init(void) | ||
86 | { | ||
87 | return 0; | ||
88 | } | ||
89 | #endif | ||
90 | |||
91 | #if defined(CONFIG_PM) && defined(CONFIG_ARCH_OMAP3) | ||
92 | int omap3_pm_init(void); | ||
93 | #else | ||
94 | static inline int omap3_pm_init(void) | ||
95 | { | ||
96 | return 0; | ||
97 | } | ||
98 | #endif | ||
99 | |||
100 | #if defined(CONFIG_PM) && defined(CONFIG_ARCH_OMAP4) | ||
101 | int omap4_pm_init(void); | ||
102 | #else | ||
103 | static inline int omap4_pm_init(void) | ||
104 | { | ||
105 | return 0; | ||
106 | } | ||
107 | #endif | ||
108 | |||
109 | #ifdef CONFIG_OMAP_MUX | ||
110 | int omap_mux_late_init(void); | ||
111 | #else | ||
112 | static inline int omap_mux_late_init(void) | ||
113 | { | ||
114 | return 0; | ||
115 | } | ||
116 | #endif | ||
117 | |||
82 | extern void omap2_init_common_infrastructure(void); | 118 | extern void omap2_init_common_infrastructure(void); |
83 | 119 | ||
84 | extern struct sys_timer omap2_timer; | 120 | extern struct sys_timer omap2_timer; |
@@ -95,6 +131,17 @@ void omap3_init_early(void); /* Do not use this one */ | |||
95 | void am35xx_init_early(void); | 131 | void am35xx_init_early(void); |
96 | void ti81xx_init_early(void); | 132 | void ti81xx_init_early(void); |
97 | void omap4430_init_early(void); | 133 | void omap4430_init_early(void); |
134 | void omap3_init_late(void); /* Do not use this one */ | ||
135 | void omap4430_init_late(void); | ||
136 | void omap2420_init_late(void); | ||
137 | void omap2430_init_late(void); | ||
138 | void omap3430_init_late(void); | ||
139 | void omap35xx_init_late(void); | ||
140 | void omap3630_init_late(void); | ||
141 | void am35xx_init_late(void); | ||
142 | void ti81xx_init_late(void); | ||
143 | void omap4430_init_late(void); | ||
144 | int omap2_common_pm_late_init(void); | ||
98 | void omap_prcm_restart(char, const char *); | 145 | void omap_prcm_restart(char, const char *); |
99 | 146 | ||
100 | /* | 147 | /* |
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c index e1f9c6fc0414..8d014ba04abc 100644 --- a/arch/arm/mach-omap2/io.c +++ b/arch/arm/mach-omap2/io.c | |||
@@ -350,6 +350,13 @@ void __init omap2420_init_early(void) | |||
350 | omap_hwmod_init_postsetup(); | 350 | omap_hwmod_init_postsetup(); |
351 | omap2420_clk_init(); | 351 | omap2420_clk_init(); |
352 | } | 352 | } |
353 | |||
354 | void __init omap2420_init_late(void) | ||
355 | { | ||
356 | omap_mux_late_init(); | ||
357 | omap2_common_pm_late_init(); | ||
358 | omap2_pm_init(); | ||
359 | } | ||
353 | #endif | 360 | #endif |
354 | 361 | ||
355 | #ifdef CONFIG_SOC_OMAP2430 | 362 | #ifdef CONFIG_SOC_OMAP2430 |
@@ -365,6 +372,13 @@ void __init omap2430_init_early(void) | |||
365 | omap_hwmod_init_postsetup(); | 372 | omap_hwmod_init_postsetup(); |
366 | omap2430_clk_init(); | 373 | omap2430_clk_init(); |
367 | } | 374 | } |
375 | |||
376 | void __init omap2430_init_late(void) | ||
377 | { | ||
378 | omap_mux_late_init(); | ||
379 | omap2_common_pm_late_init(); | ||
380 | omap2_pm_init(); | ||
381 | } | ||
368 | #endif | 382 | #endif |
369 | 383 | ||
370 | /* | 384 | /* |
@@ -419,6 +433,48 @@ void __init ti81xx_init_early(void) | |||
419 | omap_hwmod_init_postsetup(); | 433 | omap_hwmod_init_postsetup(); |
420 | omap3xxx_clk_init(); | 434 | omap3xxx_clk_init(); |
421 | } | 435 | } |
436 | |||
437 | void __init omap3_init_late(void) | ||
438 | { | ||
439 | omap_mux_late_init(); | ||
440 | omap2_common_pm_late_init(); | ||
441 | omap3_pm_init(); | ||
442 | } | ||
443 | |||
444 | void __init omap3430_init_late(void) | ||
445 | { | ||
446 | omap_mux_late_init(); | ||
447 | omap2_common_pm_late_init(); | ||
448 | omap3_pm_init(); | ||
449 | } | ||
450 | |||
451 | void __init omap35xx_init_late(void) | ||
452 | { | ||
453 | omap_mux_late_init(); | ||
454 | omap2_common_pm_late_init(); | ||
455 | omap3_pm_init(); | ||
456 | } | ||
457 | |||
458 | void __init omap3630_init_late(void) | ||
459 | { | ||
460 | omap_mux_late_init(); | ||
461 | omap2_common_pm_late_init(); | ||
462 | omap3_pm_init(); | ||
463 | } | ||
464 | |||
465 | void __init am35xx_init_late(void) | ||
466 | { | ||
467 | omap_mux_late_init(); | ||
468 | omap2_common_pm_late_init(); | ||
469 | omap3_pm_init(); | ||
470 | } | ||
471 | |||
472 | void __init ti81xx_init_late(void) | ||
473 | { | ||
474 | omap_mux_late_init(); | ||
475 | omap2_common_pm_late_init(); | ||
476 | omap3_pm_init(); | ||
477 | } | ||
422 | #endif | 478 | #endif |
423 | 479 | ||
424 | #ifdef CONFIG_ARCH_OMAP4 | 480 | #ifdef CONFIG_ARCH_OMAP4 |
@@ -435,6 +491,13 @@ void __init omap4430_init_early(void) | |||
435 | omap_hwmod_init_postsetup(); | 491 | omap_hwmod_init_postsetup(); |
436 | omap4xxx_clk_init(); | 492 | omap4xxx_clk_init(); |
437 | } | 493 | } |
494 | |||
495 | void __init omap4430_init_late(void) | ||
496 | { | ||
497 | omap_mux_late_init(); | ||
498 | omap2_common_pm_late_init(); | ||
499 | omap4_pm_init(); | ||
500 | } | ||
438 | #endif | 501 | #endif |
439 | 502 | ||
440 | void __init omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0, | 503 | void __init omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0, |
diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c index 3268ee24eada..80e55c5c9998 100644 --- a/arch/arm/mach-omap2/mux.c +++ b/arch/arm/mach-omap2/mux.c | |||
@@ -788,7 +788,7 @@ static void __init omap_mux_free_names(struct omap_mux *m) | |||
788 | } | 788 | } |
789 | 789 | ||
790 | /* Free all data except for GPIO pins unless CONFIG_DEBUG_FS is set */ | 790 | /* Free all data except for GPIO pins unless CONFIG_DEBUG_FS is set */ |
791 | static int __init omap_mux_late_init(void) | 791 | int __init omap_mux_late_init(void) |
792 | { | 792 | { |
793 | struct omap_mux_partition *partition; | 793 | struct omap_mux_partition *partition; |
794 | int ret; | 794 | int ret; |
@@ -823,7 +823,6 @@ static int __init omap_mux_late_init(void) | |||
823 | 823 | ||
824 | return 0; | 824 | return 0; |
825 | } | 825 | } |
826 | late_initcall(omap_mux_late_init); | ||
827 | 826 | ||
828 | static void __init omap_mux_package_fixup(struct omap_mux *p, | 827 | static void __init omap_mux_package_fixup(struct omap_mux *p, |
829 | struct omap_mux *superset) | 828 | struct omap_mux *superset) |
diff --git a/arch/arm/mach-omap2/pm.c b/arch/arm/mach-omap2/pm.c index d0c1c9695996..9cb5cede0f50 100644 --- a/arch/arm/mach-omap2/pm.c +++ b/arch/arm/mach-omap2/pm.c | |||
@@ -295,7 +295,7 @@ static int __init omap2_common_pm_init(void) | |||
295 | } | 295 | } |
296 | postcore_initcall(omap2_common_pm_init); | 296 | postcore_initcall(omap2_common_pm_init); |
297 | 297 | ||
298 | static int __init omap2_common_pm_late_init(void) | 298 | int __init omap2_common_pm_late_init(void) |
299 | { | 299 | { |
300 | /* | 300 | /* |
301 | * In the case of DT, the PMIC and SR initialization will be done using | 301 | * In the case of DT, the PMIC and SR initialization will be done using |
@@ -322,4 +322,3 @@ static int __init omap2_common_pm_late_init(void) | |||
322 | 322 | ||
323 | return 0; | 323 | return 0; |
324 | } | 324 | } |
325 | late_initcall(omap2_common_pm_late_init); | ||
diff --git a/arch/arm/mach-omap2/pm24xx.c b/arch/arm/mach-omap2/pm24xx.c index facfffca9eac..2edeffc923a6 100644 --- a/arch/arm/mach-omap2/pm24xx.c +++ b/arch/arm/mach-omap2/pm24xx.c | |||
@@ -298,13 +298,10 @@ static void __init prcm_setup_regs(void) | |||
298 | WKUP_MOD, PM_WKEN); | 298 | WKUP_MOD, PM_WKEN); |
299 | } | 299 | } |
300 | 300 | ||
301 | static int __init omap2_pm_init(void) | 301 | int __init omap2_pm_init(void) |
302 | { | 302 | { |
303 | u32 l; | 303 | u32 l; |
304 | 304 | ||
305 | if (!cpu_is_omap24xx()) | ||
306 | return -ENODEV; | ||
307 | |||
308 | printk(KERN_INFO "Power Management for OMAP2 initializing\n"); | 305 | printk(KERN_INFO "Power Management for OMAP2 initializing\n"); |
309 | l = omap2_prm_read_mod_reg(OCP_MOD, OMAP2_PRCM_REVISION_OFFSET); | 306 | l = omap2_prm_read_mod_reg(OCP_MOD, OMAP2_PRCM_REVISION_OFFSET); |
310 | printk(KERN_INFO "PRCM revision %d.%d\n", (l >> 4) & 0x0f, l & 0x0f); | 307 | printk(KERN_INFO "PRCM revision %d.%d\n", (l >> 4) & 0x0f, l & 0x0f); |
@@ -370,17 +367,13 @@ static int __init omap2_pm_init(void) | |||
370 | * These routines need to be in SRAM as that's the only | 367 | * These routines need to be in SRAM as that's the only |
371 | * memory the MPU can see when it wakes up. | 368 | * memory the MPU can see when it wakes up. |
372 | */ | 369 | */ |
373 | if (cpu_is_omap24xx()) { | 370 | omap2_sram_idle = omap_sram_push(omap24xx_idle_loop_suspend, |
374 | omap2_sram_idle = omap_sram_push(omap24xx_idle_loop_suspend, | 371 | omap24xx_idle_loop_suspend_sz); |
375 | omap24xx_idle_loop_suspend_sz); | ||
376 | 372 | ||
377 | omap2_sram_suspend = omap_sram_push(omap24xx_cpu_suspend, | 373 | omap2_sram_suspend = omap_sram_push(omap24xx_cpu_suspend, |
378 | omap24xx_cpu_suspend_sz); | 374 | omap24xx_cpu_suspend_sz); |
379 | } | ||
380 | 375 | ||
381 | arm_pm_idle = omap2_pm_idle; | 376 | arm_pm_idle = omap2_pm_idle; |
382 | 377 | ||
383 | return 0; | 378 | return 0; |
384 | } | 379 | } |
385 | |||
386 | late_initcall(omap2_pm_init); | ||
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c index 8b43aefba0ea..a34023d0ca7c 100644 --- a/arch/arm/mach-omap2/pm34xx.c +++ b/arch/arm/mach-omap2/pm34xx.c | |||
@@ -697,15 +697,12 @@ static void __init pm_errata_configure(void) | |||
697 | } | 697 | } |
698 | } | 698 | } |
699 | 699 | ||
700 | static int __init omap3_pm_init(void) | 700 | int __init omap3_pm_init(void) |
701 | { | 701 | { |
702 | struct power_state *pwrst, *tmp; | 702 | struct power_state *pwrst, *tmp; |
703 | struct clockdomain *neon_clkdm, *mpu_clkdm; | 703 | struct clockdomain *neon_clkdm, *mpu_clkdm; |
704 | int ret; | 704 | int ret; |
705 | 705 | ||
706 | if (!cpu_is_omap34xx()) | ||
707 | return -ENODEV; | ||
708 | |||
709 | if (!omap3_has_io_chain_ctrl()) | 706 | if (!omap3_has_io_chain_ctrl()) |
710 | pr_warning("PM: no software I/O chain control; some wakeups may be lost\n"); | 707 | pr_warning("PM: no software I/O chain control; some wakeups may be lost\n"); |
711 | 708 | ||
@@ -804,5 +801,3 @@ err2: | |||
804 | err1: | 801 | err1: |
805 | return ret; | 802 | return ret; |
806 | } | 803 | } |
807 | |||
808 | late_initcall(omap3_pm_init); | ||
diff --git a/arch/arm/mach-omap2/pm44xx.c b/arch/arm/mach-omap2/pm44xx.c index 885625352429..ea24174f5707 100644 --- a/arch/arm/mach-omap2/pm44xx.c +++ b/arch/arm/mach-omap2/pm44xx.c | |||
@@ -141,15 +141,12 @@ static void omap_default_idle(void) | |||
141 | * Initializes all powerdomain and clockdomain target states | 141 | * Initializes all powerdomain and clockdomain target states |
142 | * and all PRCM settings. | 142 | * and all PRCM settings. |
143 | */ | 143 | */ |
144 | static int __init omap4_pm_init(void) | 144 | int __init omap4_pm_init(void) |
145 | { | 145 | { |
146 | int ret; | 146 | int ret; |
147 | struct clockdomain *emif_clkdm, *mpuss_clkdm, *l3_1_clkdm, *l4wkup; | 147 | struct clockdomain *emif_clkdm, *mpuss_clkdm, *l3_1_clkdm, *l4wkup; |
148 | struct clockdomain *ducati_clkdm, *l3_2_clkdm, *l4_per_clkdm; | 148 | struct clockdomain *ducati_clkdm, *l3_2_clkdm, *l4_per_clkdm; |
149 | 149 | ||
150 | if (!cpu_is_omap44xx()) | ||
151 | return -ENODEV; | ||
152 | |||
153 | if (omap_rev() == OMAP4430_REV_ES1_0) { | 150 | if (omap_rev() == OMAP4430_REV_ES1_0) { |
154 | WARN(1, "Power Management not supported on OMAP4430 ES1.0\n"); | 151 | WARN(1, "Power Management not supported on OMAP4430 ES1.0\n"); |
155 | return -ENODEV; | 152 | return -ENODEV; |
@@ -217,4 +214,3 @@ static int __init omap4_pm_init(void) | |||
217 | err2: | 214 | err2: |
218 | return ret; | 215 | return ret; |
219 | } | 216 | } |
220 | late_initcall(omap4_pm_init); | ||
diff --git a/arch/arm/mach-pnx4008/core.c b/arch/arm/mach-pnx4008/core.c index be4c92858509..a00d2f1254ed 100644 --- a/arch/arm/mach-pnx4008/core.c +++ b/arch/arm/mach-pnx4008/core.c | |||
@@ -265,6 +265,17 @@ static void pnx4008_restart(char mode, const char *cmd) | |||
265 | soft_restart(0); | 265 | soft_restart(0); |
266 | } | 266 | } |
267 | 267 | ||
268 | #ifdef CONFIG_PM | ||
269 | extern int pnx4008_pm_init(void); | ||
270 | #else | ||
271 | static inline int pnx4008_pm_init(void) { return 0; } | ||
272 | #endif | ||
273 | |||
274 | void __init pnx4008_init_late(void) | ||
275 | { | ||
276 | pnx4008_pm_init(); | ||
277 | } | ||
278 | |||
268 | extern struct sys_timer pnx4008_timer; | 279 | extern struct sys_timer pnx4008_timer; |
269 | 280 | ||
270 | MACHINE_START(PNX4008, "Philips PNX4008") | 281 | MACHINE_START(PNX4008, "Philips PNX4008") |
@@ -273,6 +284,7 @@ MACHINE_START(PNX4008, "Philips PNX4008") | |||
273 | .map_io = pnx4008_map_io, | 284 | .map_io = pnx4008_map_io, |
274 | .init_irq = pnx4008_init_irq, | 285 | .init_irq = pnx4008_init_irq, |
275 | .init_machine = pnx4008_init, | 286 | .init_machine = pnx4008_init, |
287 | .init_late = pnx4008_init_late, | ||
276 | .timer = &pnx4008_timer, | 288 | .timer = &pnx4008_timer, |
277 | .restart = pnx4008_restart, | 289 | .restart = pnx4008_restart, |
278 | MACHINE_END | 290 | MACHINE_END |
diff --git a/arch/arm/mach-pnx4008/pm.c b/arch/arm/mach-pnx4008/pm.c index f3e60a049f98..26f8d06b142a 100644 --- a/arch/arm/mach-pnx4008/pm.c +++ b/arch/arm/mach-pnx4008/pm.c | |||
@@ -124,7 +124,7 @@ static const struct platform_suspend_ops pnx4008_pm_ops = { | |||
124 | .valid = pnx4008_pm_valid, | 124 | .valid = pnx4008_pm_valid, |
125 | }; | 125 | }; |
126 | 126 | ||
127 | static int __init pnx4008_pm_init(void) | 127 | int __init pnx4008_pm_init(void) |
128 | { | 128 | { |
129 | u32 sram_size_to_allocate; | 129 | u32 sram_size_to_allocate; |
130 | 130 | ||
@@ -151,5 +151,3 @@ static int __init pnx4008_pm_init(void) | |||
151 | suspend_set_ops(&pnx4008_pm_ops); | 151 | suspend_set_ops(&pnx4008_pm_ops); |
152 | return 0; | 152 | return 0; |
153 | } | 153 | } |
154 | |||
155 | late_initcall(pnx4008_pm_init); | ||
diff --git a/arch/arm/mach-prima2/common.h b/arch/arm/mach-prima2/common.h index b28a930d4f8a..60d826fc2185 100644 --- a/arch/arm/mach-prima2/common.h +++ b/arch/arm/mach-prima2/common.h | |||
@@ -24,4 +24,10 @@ static inline void sirfsoc_map_lluart(void) {} | |||
24 | extern void __init sirfsoc_map_lluart(void); | 24 | extern void __init sirfsoc_map_lluart(void); |
25 | #endif | 25 | #endif |
26 | 26 | ||
27 | #ifdef CONFIG_SUSPEND | ||
28 | extern int sirfsoc_pm_init(void); | ||
29 | #else | ||
30 | static inline int sirfsoc_pm_init(void) { return 0; } | ||
31 | #endif | ||
32 | |||
27 | #endif | 33 | #endif |
diff --git a/arch/arm/mach-prima2/pm.c b/arch/arm/mach-prima2/pm.c index 26ebb57719df..fb5a7910af35 100644 --- a/arch/arm/mach-prima2/pm.c +++ b/arch/arm/mach-prima2/pm.c | |||
@@ -85,12 +85,11 @@ static const struct platform_suspend_ops sirfsoc_pm_ops = { | |||
85 | .valid = suspend_valid_only_mem, | 85 | .valid = suspend_valid_only_mem, |
86 | }; | 86 | }; |
87 | 87 | ||
88 | static int __init sirfsoc_pm_init(void) | 88 | int __init sirfsoc_pm_init(void) |
89 | { | 89 | { |
90 | suspend_set_ops(&sirfsoc_pm_ops); | 90 | suspend_set_ops(&sirfsoc_pm_ops); |
91 | return 0; | 91 | return 0; |
92 | } | 92 | } |
93 | late_initcall(sirfsoc_pm_init); | ||
94 | 93 | ||
95 | static const struct of_device_id pwrc_ids[] = { | 94 | static const struct of_device_id pwrc_ids[] = { |
96 | { .compatible = "sirf,prima2-pwrc" }, | 95 | { .compatible = "sirf,prima2-pwrc" }, |
diff --git a/arch/arm/mach-prima2/prima2.c b/arch/arm/mach-prima2/prima2.c index 02b9c05ff990..8f0429d4b79f 100644 --- a/arch/arm/mach-prima2/prima2.c +++ b/arch/arm/mach-prima2/prima2.c | |||
@@ -25,6 +25,11 @@ void __init sirfsoc_mach_init(void) | |||
25 | of_platform_bus_probe(NULL, sirfsoc_of_bus_ids, NULL); | 25 | of_platform_bus_probe(NULL, sirfsoc_of_bus_ids, NULL); |
26 | } | 26 | } |
27 | 27 | ||
28 | void __init sirfsoc_init_late(void) | ||
29 | { | ||
30 | sirfsoc_pm_init(); | ||
31 | } | ||
32 | |||
28 | static const char *prima2cb_dt_match[] __initdata = { | 33 | static const char *prima2cb_dt_match[] __initdata = { |
29 | "sirf,prima2-cb", | 34 | "sirf,prima2-cb", |
30 | NULL | 35 | NULL |
@@ -39,6 +44,7 @@ MACHINE_START(PRIMA2_EVB, "prima2cb") | |||
39 | .timer = &sirfsoc_timer, | 44 | .timer = &sirfsoc_timer, |
40 | .dma_zone_size = SZ_256M, | 45 | .dma_zone_size = SZ_256M, |
41 | .init_machine = sirfsoc_mach_init, | 46 | .init_machine = sirfsoc_mach_init, |
47 | .init_late = sirfsoc_init_late, | ||
42 | .dt_compat = prima2cb_dt_match, | 48 | .dt_compat = prima2cb_dt_match, |
43 | .restart = sirfsoc_restart, | 49 | .restart = sirfsoc_restart, |
44 | MACHINE_END | 50 | MACHINE_END |
diff --git a/arch/arm/mach-s3c64xx/common.c b/arch/arm/mach-s3c64xx/common.c index b313380342a5..be746e33e86c 100644 --- a/arch/arm/mach-s3c64xx/common.c +++ b/arch/arm/mach-s3c64xx/common.c | |||
@@ -384,3 +384,8 @@ void s3c64xx_restart(char mode, const char *cmd) | |||
384 | /* if all else fails, or mode was for soft, jump to 0 */ | 384 | /* if all else fails, or mode was for soft, jump to 0 */ |
385 | soft_restart(0); | 385 | soft_restart(0); |
386 | } | 386 | } |
387 | |||
388 | void __init s3c64xx_init_late(void) | ||
389 | { | ||
390 | s3c64xx_pm_late_initcall(); | ||
391 | } | ||
diff --git a/arch/arm/mach-s3c64xx/common.h b/arch/arm/mach-s3c64xx/common.h index 7a10be629aba..6cfc99bdfb37 100644 --- a/arch/arm/mach-s3c64xx/common.h +++ b/arch/arm/mach-s3c64xx/common.h | |||
@@ -24,6 +24,7 @@ void s3c64xx_register_clocks(unsigned long xtal, unsigned armclk_limit); | |||
24 | void s3c64xx_setup_clocks(void); | 24 | void s3c64xx_setup_clocks(void); |
25 | 25 | ||
26 | void s3c64xx_restart(char mode, const char *cmd); | 26 | void s3c64xx_restart(char mode, const char *cmd); |
27 | void s3c64xx_init_late(void); | ||
27 | 28 | ||
28 | #ifdef CONFIG_CPU_S3C6400 | 29 | #ifdef CONFIG_CPU_S3C6400 |
29 | 30 | ||
@@ -51,4 +52,10 @@ extern void s3c6410_init_clocks(int xtal); | |||
51 | #define s3c6410_init NULL | 52 | #define s3c6410_init NULL |
52 | #endif | 53 | #endif |
53 | 54 | ||
55 | #ifdef CONFIG_PM | ||
56 | int __init s3c64xx_pm_late_initcall(void); | ||
57 | #else | ||
58 | static inline int s3c64xx_pm_late_initcall(void) { return 0; } | ||
59 | #endif | ||
60 | |||
54 | #endif /* __ARCH_ARM_MACH_S3C64XX_COMMON_H */ | 61 | #endif /* __ARCH_ARM_MACH_S3C64XX_COMMON_H */ |
diff --git a/arch/arm/mach-s3c64xx/mach-anw6410.c b/arch/arm/mach-s3c64xx/mach-anw6410.c index f252691fb209..314df0518afd 100644 --- a/arch/arm/mach-s3c64xx/mach-anw6410.c +++ b/arch/arm/mach-s3c64xx/mach-anw6410.c | |||
@@ -230,6 +230,7 @@ MACHINE_START(ANW6410, "A&W6410") | |||
230 | .handle_irq = vic_handle_irq, | 230 | .handle_irq = vic_handle_irq, |
231 | .map_io = anw6410_map_io, | 231 | .map_io = anw6410_map_io, |
232 | .init_machine = anw6410_machine_init, | 232 | .init_machine = anw6410_machine_init, |
233 | .init_late = s3c64xx_init_late, | ||
233 | .timer = &s3c24xx_timer, | 234 | .timer = &s3c24xx_timer, |
234 | .restart = s3c64xx_restart, | 235 | .restart = s3c64xx_restart, |
235 | MACHINE_END | 236 | MACHINE_END |
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c b/arch/arm/mach-s3c64xx/mach-crag6410.c index aa1137fb47e6..eda5e027b109 100644 --- a/arch/arm/mach-s3c64xx/mach-crag6410.c +++ b/arch/arm/mach-s3c64xx/mach-crag6410.c | |||
@@ -813,6 +813,7 @@ MACHINE_START(WLF_CRAGG_6410, "Wolfson Cragganmore 6410") | |||
813 | .handle_irq = vic_handle_irq, | 813 | .handle_irq = vic_handle_irq, |
814 | .map_io = crag6410_map_io, | 814 | .map_io = crag6410_map_io, |
815 | .init_machine = crag6410_machine_init, | 815 | .init_machine = crag6410_machine_init, |
816 | .init_late = s3c64xx_init_late, | ||
816 | .timer = &s3c24xx_timer, | 817 | .timer = &s3c24xx_timer, |
817 | .restart = s3c64xx_restart, | 818 | .restart = s3c64xx_restart, |
818 | MACHINE_END | 819 | MACHINE_END |
diff --git a/arch/arm/mach-s3c64xx/mach-hmt.c b/arch/arm/mach-s3c64xx/mach-hmt.c index 521e07b8501b..1bf6b9da20fc 100644 --- a/arch/arm/mach-s3c64xx/mach-hmt.c +++ b/arch/arm/mach-s3c64xx/mach-hmt.c | |||
@@ -272,6 +272,7 @@ MACHINE_START(HMT, "Airgoo-HMT") | |||
272 | .handle_irq = vic_handle_irq, | 272 | .handle_irq = vic_handle_irq, |
273 | .map_io = hmt_map_io, | 273 | .map_io = hmt_map_io, |
274 | .init_machine = hmt_machine_init, | 274 | .init_machine = hmt_machine_init, |
275 | .init_late = s3c64xx_init_late, | ||
275 | .timer = &s3c24xx_timer, | 276 | .timer = &s3c24xx_timer, |
276 | .restart = s3c64xx_restart, | 277 | .restart = s3c64xx_restart, |
277 | MACHINE_END | 278 | MACHINE_END |
diff --git a/arch/arm/mach-s3c64xx/mach-mini6410.c b/arch/arm/mach-s3c64xx/mach-mini6410.c index b2166d4a5538..f8ea61ea3b33 100644 --- a/arch/arm/mach-s3c64xx/mach-mini6410.c +++ b/arch/arm/mach-s3c64xx/mach-mini6410.c | |||
@@ -339,6 +339,7 @@ MACHINE_START(MINI6410, "MINI6410") | |||
339 | .handle_irq = vic_handle_irq, | 339 | .handle_irq = vic_handle_irq, |
340 | .map_io = mini6410_map_io, | 340 | .map_io = mini6410_map_io, |
341 | .init_machine = mini6410_machine_init, | 341 | .init_machine = mini6410_machine_init, |
342 | .init_late = s3c64xx_init_late, | ||
342 | .timer = &s3c24xx_timer, | 343 | .timer = &s3c24xx_timer, |
343 | .restart = s3c64xx_restart, | 344 | .restart = s3c64xx_restart, |
344 | MACHINE_END | 345 | MACHINE_END |
diff --git a/arch/arm/mach-s3c64xx/mach-ncp.c b/arch/arm/mach-s3c64xx/mach-ncp.c index 0efa2ba783b2..cad2e05eddf7 100644 --- a/arch/arm/mach-s3c64xx/mach-ncp.c +++ b/arch/arm/mach-s3c64xx/mach-ncp.c | |||
@@ -104,6 +104,7 @@ MACHINE_START(NCP, "NCP") | |||
104 | .handle_irq = vic_handle_irq, | 104 | .handle_irq = vic_handle_irq, |
105 | .map_io = ncp_map_io, | 105 | .map_io = ncp_map_io, |
106 | .init_machine = ncp_machine_init, | 106 | .init_machine = ncp_machine_init, |
107 | .init_late = s3c64xx_init_late, | ||
107 | .timer = &s3c24xx_timer, | 108 | .timer = &s3c24xx_timer, |
108 | .restart = s3c64xx_restart, | 109 | .restart = s3c64xx_restart, |
109 | MACHINE_END | 110 | MACHINE_END |
diff --git a/arch/arm/mach-s3c64xx/mach-real6410.c b/arch/arm/mach-s3c64xx/mach-real6410.c index 5c08266cea21..b92d8e17d502 100644 --- a/arch/arm/mach-s3c64xx/mach-real6410.c +++ b/arch/arm/mach-s3c64xx/mach-real6410.c | |||
@@ -320,6 +320,7 @@ MACHINE_START(REAL6410, "REAL6410") | |||
320 | .handle_irq = vic_handle_irq, | 320 | .handle_irq = vic_handle_irq, |
321 | .map_io = real6410_map_io, | 321 | .map_io = real6410_map_io, |
322 | .init_machine = real6410_machine_init, | 322 | .init_machine = real6410_machine_init, |
323 | .init_late = s3c64xx_init_late, | ||
323 | .timer = &s3c24xx_timer, | 324 | .timer = &s3c24xx_timer, |
324 | .restart = s3c64xx_restart, | 325 | .restart = s3c64xx_restart, |
325 | MACHINE_END | 326 | MACHINE_END |
diff --git a/arch/arm/mach-s3c64xx/mach-smartq5.c b/arch/arm/mach-s3c64xx/mach-smartq5.c index 3f42431d4dda..c5021d0335c6 100644 --- a/arch/arm/mach-s3c64xx/mach-smartq5.c +++ b/arch/arm/mach-s3c64xx/mach-smartq5.c | |||
@@ -152,6 +152,7 @@ MACHINE_START(SMARTQ5, "SmartQ 5") | |||
152 | .handle_irq = vic_handle_irq, | 152 | .handle_irq = vic_handle_irq, |
153 | .map_io = smartq_map_io, | 153 | .map_io = smartq_map_io, |
154 | .init_machine = smartq5_machine_init, | 154 | .init_machine = smartq5_machine_init, |
155 | .init_late = s3c64xx_init_late, | ||
155 | .timer = &s3c24xx_timer, | 156 | .timer = &s3c24xx_timer, |
156 | .restart = s3c64xx_restart, | 157 | .restart = s3c64xx_restart, |
157 | MACHINE_END | 158 | MACHINE_END |
diff --git a/arch/arm/mach-s3c64xx/mach-smartq7.c b/arch/arm/mach-s3c64xx/mach-smartq7.c index e5c09b6db967..aa9072a4cbef 100644 --- a/arch/arm/mach-s3c64xx/mach-smartq7.c +++ b/arch/arm/mach-s3c64xx/mach-smartq7.c | |||
@@ -168,6 +168,7 @@ MACHINE_START(SMARTQ7, "SmartQ 7") | |||
168 | .handle_irq = vic_handle_irq, | 168 | .handle_irq = vic_handle_irq, |
169 | .map_io = smartq_map_io, | 169 | .map_io = smartq_map_io, |
170 | .init_machine = smartq7_machine_init, | 170 | .init_machine = smartq7_machine_init, |
171 | .init_late = s3c64xx_init_late, | ||
171 | .timer = &s3c24xx_timer, | 172 | .timer = &s3c24xx_timer, |
172 | .restart = s3c64xx_restart, | 173 | .restart = s3c64xx_restart, |
173 | MACHINE_END | 174 | MACHINE_END |
diff --git a/arch/arm/mach-s3c64xx/mach-smdk6400.c b/arch/arm/mach-s3c64xx/mach-smdk6400.c index 5f096534f4c4..b0f4525c66bd 100644 --- a/arch/arm/mach-s3c64xx/mach-smdk6400.c +++ b/arch/arm/mach-s3c64xx/mach-smdk6400.c | |||
@@ -93,6 +93,7 @@ MACHINE_START(SMDK6400, "SMDK6400") | |||
93 | .handle_irq = vic_handle_irq, | 93 | .handle_irq = vic_handle_irq, |
94 | .map_io = smdk6400_map_io, | 94 | .map_io = smdk6400_map_io, |
95 | .init_machine = smdk6400_machine_init, | 95 | .init_machine = smdk6400_machine_init, |
96 | .init_late = s3c64xx_init_late, | ||
96 | .timer = &s3c24xx_timer, | 97 | .timer = &s3c24xx_timer, |
97 | .restart = s3c64xx_restart, | 98 | .restart = s3c64xx_restart, |
98 | MACHINE_END | 99 | MACHINE_END |
diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c b/arch/arm/mach-s3c64xx/mach-smdk6410.c index 7da044f738ac..d44319b09412 100644 --- a/arch/arm/mach-s3c64xx/mach-smdk6410.c +++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c | |||
@@ -702,6 +702,7 @@ MACHINE_START(SMDK6410, "SMDK6410") | |||
702 | .handle_irq = vic_handle_irq, | 702 | .handle_irq = vic_handle_irq, |
703 | .map_io = smdk6410_map_io, | 703 | .map_io = smdk6410_map_io, |
704 | .init_machine = smdk6410_machine_init, | 704 | .init_machine = smdk6410_machine_init, |
705 | .init_late = s3c64xx_init_late, | ||
705 | .timer = &s3c24xx_timer, | 706 | .timer = &s3c24xx_timer, |
706 | .restart = s3c64xx_restart, | 707 | .restart = s3c64xx_restart, |
707 | MACHINE_END | 708 | MACHINE_END |
diff --git a/arch/arm/mach-s3c64xx/pm.c b/arch/arm/mach-s3c64xx/pm.c index 7d3e81b9dd06..7feb426fc202 100644 --- a/arch/arm/mach-s3c64xx/pm.c +++ b/arch/arm/mach-s3c64xx/pm.c | |||
@@ -365,10 +365,9 @@ static __init int s3c64xx_pm_initcall(void) | |||
365 | } | 365 | } |
366 | arch_initcall(s3c64xx_pm_initcall); | 366 | arch_initcall(s3c64xx_pm_initcall); |
367 | 367 | ||
368 | static __init int s3c64xx_pm_late_initcall(void) | 368 | int __init s3c64xx_pm_late_initcall(void) |
369 | { | 369 | { |
370 | pm_genpd_poweroff_unused(); | 370 | pm_genpd_poweroff_unused(); |
371 | 371 | ||
372 | return 0; | 372 | return 0; |
373 | } | 373 | } |
374 | late_initcall(s3c64xx_pm_late_initcall); | ||
diff --git a/arch/arm/mach-sa1100/assabet.c b/arch/arm/mach-sa1100/assabet.c index 375d3f779a88..d1dc7f1a239c 100644 --- a/arch/arm/mach-sa1100/assabet.c +++ b/arch/arm/mach-sa1100/assabet.c | |||
@@ -538,6 +538,7 @@ MACHINE_START(ASSABET, "Intel-Assabet") | |||
538 | .init_irq = sa1100_init_irq, | 538 | .init_irq = sa1100_init_irq, |
539 | .timer = &sa1100_timer, | 539 | .timer = &sa1100_timer, |
540 | .init_machine = assabet_init, | 540 | .init_machine = assabet_init, |
541 | .init_late = sa11x0_init_late, | ||
541 | #ifdef CONFIG_SA1111 | 542 | #ifdef CONFIG_SA1111 |
542 | .dma_zone_size = SZ_1M, | 543 | .dma_zone_size = SZ_1M, |
543 | #endif | 544 | #endif |
diff --git a/arch/arm/mach-sa1100/badge4.c b/arch/arm/mach-sa1100/badge4.c index e0f0c030258c..b30fb99b587c 100644 --- a/arch/arm/mach-sa1100/badge4.c +++ b/arch/arm/mach-sa1100/badge4.c | |||
@@ -305,6 +305,7 @@ MACHINE_START(BADGE4, "Hewlett-Packard Laboratories BadgePAD 4") | |||
305 | .map_io = badge4_map_io, | 305 | .map_io = badge4_map_io, |
306 | .nr_irqs = SA1100_NR_IRQS, | 306 | .nr_irqs = SA1100_NR_IRQS, |
307 | .init_irq = sa1100_init_irq, | 307 | .init_irq = sa1100_init_irq, |
308 | .init_late = sa11x0_init_late, | ||
308 | .timer = &sa1100_timer, | 309 | .timer = &sa1100_timer, |
309 | #ifdef CONFIG_SA1111 | 310 | #ifdef CONFIG_SA1111 |
310 | .dma_zone_size = SZ_1M, | 311 | .dma_zone_size = SZ_1M, |
diff --git a/arch/arm/mach-sa1100/cerf.c b/arch/arm/mach-sa1100/cerf.c index 4a61f60e0502..09d7f4b4b354 100644 --- a/arch/arm/mach-sa1100/cerf.c +++ b/arch/arm/mach-sa1100/cerf.c | |||
@@ -134,5 +134,6 @@ MACHINE_START(CERF, "Intrinsyc CerfBoard/CerfCube") | |||
134 | .init_irq = cerf_init_irq, | 134 | .init_irq = cerf_init_irq, |
135 | .timer = &sa1100_timer, | 135 | .timer = &sa1100_timer, |
136 | .init_machine = cerf_init, | 136 | .init_machine = cerf_init, |
137 | .init_late = sa11x0_init_late, | ||
137 | .restart = sa11x0_restart, | 138 | .restart = sa11x0_restart, |
138 | MACHINE_END | 139 | MACHINE_END |
diff --git a/arch/arm/mach-sa1100/collie.c b/arch/arm/mach-sa1100/collie.c index c7f418b0cde9..ea5cff38745c 100644 --- a/arch/arm/mach-sa1100/collie.c +++ b/arch/arm/mach-sa1100/collie.c | |||
@@ -401,5 +401,6 @@ MACHINE_START(COLLIE, "Sharp-Collie") | |||
401 | .init_irq = sa1100_init_irq, | 401 | .init_irq = sa1100_init_irq, |
402 | .timer = &sa1100_timer, | 402 | .timer = &sa1100_timer, |
403 | .init_machine = collie_init, | 403 | .init_machine = collie_init, |
404 | .init_late = sa11x0_init_late, | ||
404 | .restart = sa11x0_restart, | 405 | .restart = sa11x0_restart, |
405 | MACHINE_END | 406 | MACHINE_END |
diff --git a/arch/arm/mach-sa1100/generic.c b/arch/arm/mach-sa1100/generic.c index 16be4c56abe3..9db3e98e8b85 100644 --- a/arch/arm/mach-sa1100/generic.c +++ b/arch/arm/mach-sa1100/generic.c | |||
@@ -359,6 +359,10 @@ static int __init sa1100_init(void) | |||
359 | 359 | ||
360 | arch_initcall(sa1100_init); | 360 | arch_initcall(sa1100_init); |
361 | 361 | ||
362 | void __init sa11x0_init_late(void) | ||
363 | { | ||
364 | sa11x0_pm_init(); | ||
365 | } | ||
362 | 366 | ||
363 | /* | 367 | /* |
364 | * Common I/O mapping: | 368 | * Common I/O mapping: |
diff --git a/arch/arm/mach-sa1100/generic.h b/arch/arm/mach-sa1100/generic.h index 9eb3b3cd5a63..a5b7c13da3e3 100644 --- a/arch/arm/mach-sa1100/generic.h +++ b/arch/arm/mach-sa1100/generic.h | |||
@@ -11,6 +11,7 @@ extern void __init sa1100_map_io(void); | |||
11 | extern void __init sa1100_init_irq(void); | 11 | extern void __init sa1100_init_irq(void); |
12 | extern void __init sa1100_init_gpio(void); | 12 | extern void __init sa1100_init_gpio(void); |
13 | extern void sa11x0_restart(char, const char *); | 13 | extern void sa11x0_restart(char, const char *); |
14 | extern void sa11x0_init_late(void); | ||
14 | 15 | ||
15 | #define SET_BANK(__nr,__start,__size) \ | 16 | #define SET_BANK(__nr,__start,__size) \ |
16 | mi->bank[__nr].start = (__start), \ | 17 | mi->bank[__nr].start = (__start), \ |
@@ -41,3 +42,9 @@ void sa11x0_register_mcp(struct mcp_plat_data *data); | |||
41 | 42 | ||
42 | struct sa1100fb_mach_info; | 43 | struct sa1100fb_mach_info; |
43 | void sa11x0_register_lcd(struct sa1100fb_mach_info *inf); | 44 | void sa11x0_register_lcd(struct sa1100fb_mach_info *inf); |
45 | |||
46 | #ifdef CONFIG_PM | ||
47 | int sa11x0_pm_init(void); | ||
48 | #else | ||
49 | static inline int sa11x0_pm_init(void) { return 0; } | ||
50 | #endif | ||
diff --git a/arch/arm/mach-sa1100/h3100.c b/arch/arm/mach-sa1100/h3100.c index b2e8d0f418e0..e1571eab08ae 100644 --- a/arch/arm/mach-sa1100/h3100.c +++ b/arch/arm/mach-sa1100/h3100.c | |||
@@ -110,6 +110,7 @@ MACHINE_START(H3100, "Compaq iPAQ H3100") | |||
110 | .init_irq = sa1100_init_irq, | 110 | .init_irq = sa1100_init_irq, |
111 | .timer = &sa1100_timer, | 111 | .timer = &sa1100_timer, |
112 | .init_machine = h3100_mach_init, | 112 | .init_machine = h3100_mach_init, |
113 | .init_late = sa11x0_init_late, | ||
113 | .restart = sa11x0_restart, | 114 | .restart = sa11x0_restart, |
114 | MACHINE_END | 115 | MACHINE_END |
115 | 116 | ||
diff --git a/arch/arm/mach-sa1100/h3600.c b/arch/arm/mach-sa1100/h3600.c index cb6659f294fe..ba7a2901ab88 100644 --- a/arch/arm/mach-sa1100/h3600.c +++ b/arch/arm/mach-sa1100/h3600.c | |||
@@ -160,6 +160,7 @@ MACHINE_START(H3600, "Compaq iPAQ H3600") | |||
160 | .init_irq = sa1100_init_irq, | 160 | .init_irq = sa1100_init_irq, |
161 | .timer = &sa1100_timer, | 161 | .timer = &sa1100_timer, |
162 | .init_machine = h3600_mach_init, | 162 | .init_machine = h3600_mach_init, |
163 | .init_late = sa11x0_init_late, | ||
163 | .restart = sa11x0_restart, | 164 | .restart = sa11x0_restart, |
164 | MACHINE_END | 165 | MACHINE_END |
165 | 166 | ||
diff --git a/arch/arm/mach-sa1100/hackkit.c b/arch/arm/mach-sa1100/hackkit.c index 5535475bf583..7f86bd911826 100644 --- a/arch/arm/mach-sa1100/hackkit.c +++ b/arch/arm/mach-sa1100/hackkit.c | |||
@@ -199,5 +199,6 @@ MACHINE_START(HACKKIT, "HackKit Cpu Board") | |||
199 | .init_irq = sa1100_init_irq, | 199 | .init_irq = sa1100_init_irq, |
200 | .timer = &sa1100_timer, | 200 | .timer = &sa1100_timer, |
201 | .init_machine = hackkit_init, | 201 | .init_machine = hackkit_init, |
202 | .init_late = sa11x0_init_late, | ||
202 | .restart = sa11x0_restart, | 203 | .restart = sa11x0_restart, |
203 | MACHINE_END | 204 | MACHINE_END |
diff --git a/arch/arm/mach-sa1100/jornada720.c b/arch/arm/mach-sa1100/jornada720.c index ca7a7e834720..e3084f47027d 100644 --- a/arch/arm/mach-sa1100/jornada720.c +++ b/arch/arm/mach-sa1100/jornada720.c | |||
@@ -348,6 +348,7 @@ MACHINE_START(JORNADA720, "HP Jornada 720") | |||
348 | .init_irq = sa1100_init_irq, | 348 | .init_irq = sa1100_init_irq, |
349 | .timer = &sa1100_timer, | 349 | .timer = &sa1100_timer, |
350 | .init_machine = jornada720_mach_init, | 350 | .init_machine = jornada720_mach_init, |
351 | .init_late = sa11x0_init_late, | ||
351 | #ifdef CONFIG_SA1111 | 352 | #ifdef CONFIG_SA1111 |
352 | .dma_zone_size = SZ_1M, | 353 | .dma_zone_size = SZ_1M, |
353 | #endif | 354 | #endif |
diff --git a/arch/arm/mach-sa1100/lart.c b/arch/arm/mach-sa1100/lart.c index eb6534e0b0d0..b775a0abec0a 100644 --- a/arch/arm/mach-sa1100/lart.c +++ b/arch/arm/mach-sa1100/lart.c | |||
@@ -147,6 +147,7 @@ MACHINE_START(LART, "LART") | |||
147 | .nr_irqs = SA1100_NR_IRQS, | 147 | .nr_irqs = SA1100_NR_IRQS, |
148 | .init_irq = sa1100_init_irq, | 148 | .init_irq = sa1100_init_irq, |
149 | .init_machine = lart_init, | 149 | .init_machine = lart_init, |
150 | .init_late = sa11x0_init_late, | ||
150 | .timer = &sa1100_timer, | 151 | .timer = &sa1100_timer, |
151 | .restart = sa11x0_restart, | 152 | .restart = sa11x0_restart, |
152 | MACHINE_END | 153 | MACHINE_END |
diff --git a/arch/arm/mach-sa1100/nanoengine.c b/arch/arm/mach-sa1100/nanoengine.c index 8f6446b9f025..41f69d97066f 100644 --- a/arch/arm/mach-sa1100/nanoengine.c +++ b/arch/arm/mach-sa1100/nanoengine.c | |||
@@ -112,5 +112,6 @@ MACHINE_START(NANOENGINE, "BSE nanoEngine") | |||
112 | .init_irq = sa1100_init_irq, | 112 | .init_irq = sa1100_init_irq, |
113 | .timer = &sa1100_timer, | 113 | .timer = &sa1100_timer, |
114 | .init_machine = nanoengine_init, | 114 | .init_machine = nanoengine_init, |
115 | .init_late = sa11x0_init_late, | ||
115 | .restart = sa11x0_restart, | 116 | .restart = sa11x0_restart, |
116 | MACHINE_END | 117 | MACHINE_END |
diff --git a/arch/arm/mach-sa1100/pleb.c b/arch/arm/mach-sa1100/pleb.c index 1602575a0d5c..37fe0a0a5369 100644 --- a/arch/arm/mach-sa1100/pleb.c +++ b/arch/arm/mach-sa1100/pleb.c | |||
@@ -135,5 +135,6 @@ MACHINE_START(PLEB, "PLEB") | |||
135 | .init_irq = sa1100_init_irq, | 135 | .init_irq = sa1100_init_irq, |
136 | .timer = &sa1100_timer, | 136 | .timer = &sa1100_timer, |
137 | .init_machine = pleb_init, | 137 | .init_machine = pleb_init, |
138 | .init_late = sa11x0_init_late, | ||
138 | .restart = sa11x0_restart, | 139 | .restart = sa11x0_restart, |
139 | MACHINE_END | 140 | MACHINE_END |
diff --git a/arch/arm/mach-sa1100/pm.c b/arch/arm/mach-sa1100/pm.c index 2fa499ec6afe..690cf0ce5c0c 100644 --- a/arch/arm/mach-sa1100/pm.c +++ b/arch/arm/mach-sa1100/pm.c | |||
@@ -117,10 +117,8 @@ static const struct platform_suspend_ops sa11x0_pm_ops = { | |||
117 | .valid = suspend_valid_only_mem, | 117 | .valid = suspend_valid_only_mem, |
118 | }; | 118 | }; |
119 | 119 | ||
120 | static int __init sa11x0_pm_init(void) | 120 | int __init sa11x0_pm_init(void) |
121 | { | 121 | { |
122 | suspend_set_ops(&sa11x0_pm_ops); | 122 | suspend_set_ops(&sa11x0_pm_ops); |
123 | return 0; | 123 | return 0; |
124 | } | 124 | } |
125 | |||
126 | late_initcall(sa11x0_pm_init); | ||
diff --git a/arch/arm/mach-sa1100/shannon.c b/arch/arm/mach-sa1100/shannon.c index ca8bf59b9047..5d33fc3108ef 100644 --- a/arch/arm/mach-sa1100/shannon.c +++ b/arch/arm/mach-sa1100/shannon.c | |||
@@ -104,5 +104,6 @@ MACHINE_START(SHANNON, "Shannon (AKA: Tuxscreen)") | |||
104 | .init_irq = sa1100_init_irq, | 104 | .init_irq = sa1100_init_irq, |
105 | .timer = &sa1100_timer, | 105 | .timer = &sa1100_timer, |
106 | .init_machine = shannon_init, | 106 | .init_machine = shannon_init, |
107 | .init_late = sa11x0_init_late, | ||
107 | .restart = sa11x0_restart, | 108 | .restart = sa11x0_restart, |
108 | MACHINE_END | 109 | MACHINE_END |
diff --git a/arch/arm/mach-sa1100/simpad.c b/arch/arm/mach-sa1100/simpad.c index 3efae03cb3d7..fbd53593be54 100644 --- a/arch/arm/mach-sa1100/simpad.c +++ b/arch/arm/mach-sa1100/simpad.c | |||
@@ -395,6 +395,7 @@ MACHINE_START(SIMPAD, "Simpad") | |||
395 | .map_io = simpad_map_io, | 395 | .map_io = simpad_map_io, |
396 | .nr_irqs = SA1100_NR_IRQS, | 396 | .nr_irqs = SA1100_NR_IRQS, |
397 | .init_irq = sa1100_init_irq, | 397 | .init_irq = sa1100_init_irq, |
398 | .init_late = sa11x0_init_late, | ||
398 | .timer = &sa1100_timer, | 399 | .timer = &sa1100_timer, |
399 | .restart = sa11x0_restart, | 400 | .restart = sa11x0_restart, |
400 | MACHINE_END | 401 | MACHINE_END |
diff --git a/arch/arm/mach-shmobile/Makefile b/arch/arm/mach-shmobile/Makefile index e6b177bc9410..8aa1962c22a2 100644 --- a/arch/arm/mach-shmobile/Makefile +++ b/arch/arm/mach-shmobile/Makefile | |||
@@ -3,7 +3,7 @@ | |||
3 | # | 3 | # |
4 | 4 | ||
5 | # Common objects | 5 | # Common objects |
6 | obj-y := timer.o console.o clock.o | 6 | obj-y := timer.o console.o clock.o common.o |
7 | 7 | ||
8 | # CPU objects | 8 | # CPU objects |
9 | obj-$(CONFIG_ARCH_SH7367) += setup-sh7367.o clock-sh7367.o intc-sh7367.o | 9 | obj-$(CONFIG_ARCH_SH7367) += setup-sh7367.o clock-sh7367.o intc-sh7367.o |
diff --git a/arch/arm/mach-shmobile/board-ag5evm.c b/arch/arm/mach-shmobile/board-ag5evm.c index 0891ec6e27f5..5a6f22f05e99 100644 --- a/arch/arm/mach-shmobile/board-ag5evm.c +++ b/arch/arm/mach-shmobile/board-ag5evm.c | |||
@@ -580,5 +580,6 @@ MACHINE_START(AG5EVM, "ag5evm") | |||
580 | .init_irq = sh73a0_init_irq, | 580 | .init_irq = sh73a0_init_irq, |
581 | .handle_irq = gic_handle_irq, | 581 | .handle_irq = gic_handle_irq, |
582 | .init_machine = ag5evm_init, | 582 | .init_machine = ag5evm_init, |
583 | .init_late = shmobile_init_late, | ||
583 | .timer = &shmobile_timer, | 584 | .timer = &shmobile_timer, |
584 | MACHINE_END | 585 | MACHINE_END |
diff --git a/arch/arm/mach-shmobile/board-ap4evb.c b/arch/arm/mach-shmobile/board-ap4evb.c index b540b8eb20ca..ace60246a5df 100644 --- a/arch/arm/mach-shmobile/board-ap4evb.c +++ b/arch/arm/mach-shmobile/board-ap4evb.c | |||
@@ -1469,5 +1469,6 @@ MACHINE_START(AP4EVB, "ap4evb") | |||
1469 | .init_irq = sh7372_init_irq, | 1469 | .init_irq = sh7372_init_irq, |
1470 | .handle_irq = shmobile_handle_irq_intc, | 1470 | .handle_irq = shmobile_handle_irq_intc, |
1471 | .init_machine = ap4evb_init, | 1471 | .init_machine = ap4evb_init, |
1472 | .init_late = shmobile_init_late, | ||
1472 | .timer = &shmobile_timer, | 1473 | .timer = &shmobile_timer, |
1473 | MACHINE_END | 1474 | MACHINE_END |
diff --git a/arch/arm/mach-shmobile/board-bonito.c b/arch/arm/mach-shmobile/board-bonito.c index 63ab7062bee3..e9b32cfbf741 100644 --- a/arch/arm/mach-shmobile/board-bonito.c +++ b/arch/arm/mach-shmobile/board-bonito.c | |||
@@ -500,5 +500,6 @@ MACHINE_START(BONITO, "bonito") | |||
500 | .init_irq = r8a7740_init_irq, | 500 | .init_irq = r8a7740_init_irq, |
501 | .handle_irq = shmobile_handle_irq_intc, | 501 | .handle_irq = shmobile_handle_irq_intc, |
502 | .init_machine = bonito_init, | 502 | .init_machine = bonito_init, |
503 | .init_late = shmobile_init_late, | ||
503 | .timer = &shmobile_timer, | 504 | .timer = &shmobile_timer, |
504 | MACHINE_END | 505 | MACHINE_END |
diff --git a/arch/arm/mach-shmobile/board-g3evm.c b/arch/arm/mach-shmobile/board-g3evm.c index 39b6cf85ced6..796fa00ad3c4 100644 --- a/arch/arm/mach-shmobile/board-g3evm.c +++ b/arch/arm/mach-shmobile/board-g3evm.c | |||
@@ -338,5 +338,6 @@ MACHINE_START(G3EVM, "g3evm") | |||
338 | .init_irq = sh7367_init_irq, | 338 | .init_irq = sh7367_init_irq, |
339 | .handle_irq = shmobile_handle_irq_intc, | 339 | .handle_irq = shmobile_handle_irq_intc, |
340 | .init_machine = g3evm_init, | 340 | .init_machine = g3evm_init, |
341 | .init_late = shmobile_init_late, | ||
341 | .timer = &shmobile_timer, | 342 | .timer = &shmobile_timer, |
342 | MACHINE_END | 343 | MACHINE_END |
diff --git a/arch/arm/mach-shmobile/board-g4evm.c b/arch/arm/mach-shmobile/board-g4evm.c index 0e5a39c670bc..f1257321999a 100644 --- a/arch/arm/mach-shmobile/board-g4evm.c +++ b/arch/arm/mach-shmobile/board-g4evm.c | |||
@@ -381,5 +381,6 @@ MACHINE_START(G4EVM, "g4evm") | |||
381 | .init_irq = sh7377_init_irq, | 381 | .init_irq = sh7377_init_irq, |
382 | .handle_irq = shmobile_handle_irq_intc, | 382 | .handle_irq = shmobile_handle_irq_intc, |
383 | .init_machine = g4evm_init, | 383 | .init_machine = g4evm_init, |
384 | .init_late = shmobile_init_late, | ||
384 | .timer = &shmobile_timer, | 385 | .timer = &shmobile_timer, |
385 | MACHINE_END | 386 | MACHINE_END |
diff --git a/arch/arm/mach-shmobile/board-kota2.c b/arch/arm/mach-shmobile/board-kota2.c index 200dcd42a3a0..f60f1b281cc4 100644 --- a/arch/arm/mach-shmobile/board-kota2.c +++ b/arch/arm/mach-shmobile/board-kota2.c | |||
@@ -521,5 +521,6 @@ MACHINE_START(KOTA2, "kota2") | |||
521 | .init_irq = sh73a0_init_irq, | 521 | .init_irq = sh73a0_init_irq, |
522 | .handle_irq = gic_handle_irq, | 522 | .handle_irq = gic_handle_irq, |
523 | .init_machine = kota2_init, | 523 | .init_machine = kota2_init, |
524 | .init_late = shmobile_init_late, | ||
524 | .timer = &shmobile_timer, | 525 | .timer = &shmobile_timer, |
525 | MACHINE_END | 526 | MACHINE_END |
diff --git a/arch/arm/mach-shmobile/board-mackerel.c b/arch/arm/mach-shmobile/board-mackerel.c index 50c67b22d087..b577f7c44678 100644 --- a/arch/arm/mach-shmobile/board-mackerel.c +++ b/arch/arm/mach-shmobile/board-mackerel.c | |||
@@ -1638,5 +1638,6 @@ MACHINE_START(MACKEREL, "mackerel") | |||
1638 | .init_irq = sh7372_init_irq, | 1638 | .init_irq = sh7372_init_irq, |
1639 | .handle_irq = shmobile_handle_irq_intc, | 1639 | .handle_irq = shmobile_handle_irq_intc, |
1640 | .init_machine = mackerel_init, | 1640 | .init_machine = mackerel_init, |
1641 | .init_late = shmobile_init_late, | ||
1641 | .timer = &shmobile_timer, | 1642 | .timer = &shmobile_timer, |
1642 | MACHINE_END | 1643 | MACHINE_END |
diff --git a/arch/arm/mach-shmobile/board-marzen.c b/arch/arm/mach-shmobile/board-marzen.c index ef0e13bf0b3a..14de3787cafc 100644 --- a/arch/arm/mach-shmobile/board-marzen.c +++ b/arch/arm/mach-shmobile/board-marzen.c | |||
@@ -98,5 +98,6 @@ MACHINE_START(MARZEN, "marzen") | |||
98 | .init_irq = r8a7779_init_irq, | 98 | .init_irq = r8a7779_init_irq, |
99 | .handle_irq = gic_handle_irq, | 99 | .handle_irq = gic_handle_irq, |
100 | .init_machine = marzen_init, | 100 | .init_machine = marzen_init, |
101 | .init_late = shmobile_init_late, | ||
101 | .timer = &shmobile_timer, | 102 | .timer = &shmobile_timer, |
102 | MACHINE_END | 103 | MACHINE_END |
diff --git a/arch/arm/mach-shmobile/common.c b/arch/arm/mach-shmobile/common.c new file mode 100644 index 000000000000..608aba9d60d7 --- /dev/null +++ b/arch/arm/mach-shmobile/common.c | |||
@@ -0,0 +1,24 @@ | |||
1 | /* | ||
2 | * This program is free software; you can redistribute it and/or modify | ||
3 | * it under the terms of the GNU General Public License as published by | ||
4 | * the Free Software Foundation; version 2 of the License. | ||
5 | * | ||
6 | * This program is distributed in the hope that it will be useful, | ||
7 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
8 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
9 | * GNU General Public License for more details. | ||
10 | * | ||
11 | * You should have received a copy of the GNU General Public License | ||
12 | * along with this program; if not, write to the Free Software | ||
13 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
14 | * | ||
15 | */ | ||
16 | #include <linux/kernel.h> | ||
17 | #include <linux/init.h> | ||
18 | #include <mach/common.h> | ||
19 | |||
20 | void __init shmobile_init_late(void) | ||
21 | { | ||
22 | shmobile_suspend_init(); | ||
23 | shmobile_cpuidle_init(); | ||
24 | } | ||
diff --git a/arch/arm/mach-shmobile/cpuidle.c b/arch/arm/mach-shmobile/cpuidle.c index 7e6559105d40..7b541e911ab4 100644 --- a/arch/arm/mach-shmobile/cpuidle.c +++ b/arch/arm/mach-shmobile/cpuidle.c | |||
@@ -46,7 +46,7 @@ static struct cpuidle_driver shmobile_cpuidle_driver = { | |||
46 | 46 | ||
47 | void (*shmobile_cpuidle_setup)(struct cpuidle_driver *drv); | 47 | void (*shmobile_cpuidle_setup)(struct cpuidle_driver *drv); |
48 | 48 | ||
49 | static int shmobile_cpuidle_init(void) | 49 | int shmobile_cpuidle_init(void) |
50 | { | 50 | { |
51 | struct cpuidle_device *dev = &shmobile_cpuidle_dev; | 51 | struct cpuidle_device *dev = &shmobile_cpuidle_dev; |
52 | struct cpuidle_driver *drv = &shmobile_cpuidle_driver; | 52 | struct cpuidle_driver *drv = &shmobile_cpuidle_driver; |
@@ -65,4 +65,3 @@ static int shmobile_cpuidle_init(void) | |||
65 | 65 | ||
66 | return 0; | 66 | return 0; |
67 | } | 67 | } |
68 | late_initcall(shmobile_cpuidle_init); | ||
diff --git a/arch/arm/mach-shmobile/include/mach/common.h b/arch/arm/mach-shmobile/include/mach/common.h index ff5f12fd742f..01e2bc014f15 100644 --- a/arch/arm/mach-shmobile/include/mach/common.h +++ b/arch/arm/mach-shmobile/include/mach/common.h | |||
@@ -85,4 +85,18 @@ extern int r8a7779_boot_secondary(unsigned int cpu); | |||
85 | extern void r8a7779_smp_prepare_cpus(void); | 85 | extern void r8a7779_smp_prepare_cpus(void); |
86 | extern void r8a7779_register_twd(void); | 86 | extern void r8a7779_register_twd(void); |
87 | 87 | ||
88 | extern void shmobile_init_late(void); | ||
89 | |||
90 | #ifdef CONFIG_SUSPEND | ||
91 | int shmobile_suspend_init(void); | ||
92 | #else | ||
93 | static inline int shmobile_suspend_init(void) { return 0; } | ||
94 | #endif | ||
95 | |||
96 | #ifdef CONFIG_CPU_IDLE | ||
97 | int shmobile_cpuidle_init(void); | ||
98 | #else | ||
99 | static inline int shmobile_cpuidle_init(void) { return 0; } | ||
100 | #endif | ||
101 | |||
88 | #endif /* __ARCH_MACH_COMMON_H */ | 102 | #endif /* __ARCH_MACH_COMMON_H */ |
diff --git a/arch/arm/mach-shmobile/suspend.c b/arch/arm/mach-shmobile/suspend.c index 4d1b86a49923..47d83f7a70b6 100644 --- a/arch/arm/mach-shmobile/suspend.c +++ b/arch/arm/mach-shmobile/suspend.c | |||
@@ -39,9 +39,8 @@ struct platform_suspend_ops shmobile_suspend_ops = { | |||
39 | .valid = suspend_valid_only_mem, | 39 | .valid = suspend_valid_only_mem, |
40 | }; | 40 | }; |
41 | 41 | ||
42 | static int __init shmobile_suspend_init(void) | 42 | int __init shmobile_suspend_init(void) |
43 | { | 43 | { |
44 | suspend_set_ops(&shmobile_suspend_ops); | 44 | suspend_set_ops(&shmobile_suspend_ops); |
45 | return 0; | 45 | return 0; |
46 | } | 46 | } |
47 | late_initcall(shmobile_suspend_init); | ||
diff --git a/arch/arm/mach-tegra/board-dt-tegra20.c b/arch/arm/mach-tegra/board-dt-tegra20.c index fac3eb1af17e..eb7249db50a5 100644 --- a/arch/arm/mach-tegra/board-dt-tegra20.c +++ b/arch/arm/mach-tegra/board-dt-tegra20.c | |||
@@ -110,6 +110,7 @@ DT_MACHINE_START(TEGRA_DT, "nVidia Tegra20 (Flattened Device Tree)") | |||
110 | .handle_irq = gic_handle_irq, | 110 | .handle_irq = gic_handle_irq, |
111 | .timer = &tegra_timer, | 111 | .timer = &tegra_timer, |
112 | .init_machine = tegra_dt_init, | 112 | .init_machine = tegra_dt_init, |
113 | .init_late = tegra_init_late, | ||
113 | .restart = tegra_assert_system_reset, | 114 | .restart = tegra_assert_system_reset, |
114 | .dt_compat = tegra20_dt_board_compat, | 115 | .dt_compat = tegra20_dt_board_compat, |
115 | MACHINE_END | 116 | MACHINE_END |
diff --git a/arch/arm/mach-tegra/board-dt-tegra30.c b/arch/arm/mach-tegra/board-dt-tegra30.c index d96dae0b4aa7..4f76fa7a5da3 100644 --- a/arch/arm/mach-tegra/board-dt-tegra30.c +++ b/arch/arm/mach-tegra/board-dt-tegra30.c | |||
@@ -90,6 +90,7 @@ DT_MACHINE_START(TEGRA30_DT, "NVIDIA Tegra30 (Flattened Device Tree)") | |||
90 | .handle_irq = gic_handle_irq, | 90 | .handle_irq = gic_handle_irq, |
91 | .timer = &tegra_timer, | 91 | .timer = &tegra_timer, |
92 | .init_machine = tegra30_dt_init, | 92 | .init_machine = tegra30_dt_init, |
93 | .init_late = tegra_init_late, | ||
93 | .restart = tegra_assert_system_reset, | 94 | .restart = tegra_assert_system_reset, |
94 | .dt_compat = tegra30_dt_board_compat, | 95 | .dt_compat = tegra30_dt_board_compat, |
95 | MACHINE_END | 96 | MACHINE_END |
diff --git a/arch/arm/mach-tegra/board-harmony.c b/arch/arm/mach-tegra/board-harmony.c index b906b3b6077b..e65e837f4013 100644 --- a/arch/arm/mach-tegra/board-harmony.c +++ b/arch/arm/mach-tegra/board-harmony.c | |||
@@ -192,5 +192,6 @@ MACHINE_START(HARMONY, "harmony") | |||
192 | .handle_irq = gic_handle_irq, | 192 | .handle_irq = gic_handle_irq, |
193 | .timer = &tegra_timer, | 193 | .timer = &tegra_timer, |
194 | .init_machine = tegra_harmony_init, | 194 | .init_machine = tegra_harmony_init, |
195 | .init_late = tegra_init_late, | ||
195 | .restart = tegra_assert_system_reset, | 196 | .restart = tegra_assert_system_reset, |
196 | MACHINE_END | 197 | MACHINE_END |
diff --git a/arch/arm/mach-tegra/board-paz00.c b/arch/arm/mach-tegra/board-paz00.c index 55a1e6ccf4a2..bbc1907e98a6 100644 --- a/arch/arm/mach-tegra/board-paz00.c +++ b/arch/arm/mach-tegra/board-paz00.c | |||
@@ -225,5 +225,6 @@ MACHINE_START(PAZ00, "Toshiba AC100 / Dynabook AZ") | |||
225 | .handle_irq = gic_handle_irq, | 225 | .handle_irq = gic_handle_irq, |
226 | .timer = &tegra_timer, | 226 | .timer = &tegra_timer, |
227 | .init_machine = tegra_paz00_init, | 227 | .init_machine = tegra_paz00_init, |
228 | .init_late = tegra_init_late, | ||
228 | .restart = tegra_assert_system_reset, | 229 | .restart = tegra_assert_system_reset, |
229 | MACHINE_END | 230 | MACHINE_END |
diff --git a/arch/arm/mach-tegra/board-seaboard.c b/arch/arm/mach-tegra/board-seaboard.c index 79064c7a7907..71e9f3fc7fba 100644 --- a/arch/arm/mach-tegra/board-seaboard.c +++ b/arch/arm/mach-tegra/board-seaboard.c | |||
@@ -277,6 +277,7 @@ MACHINE_START(SEABOARD, "seaboard") | |||
277 | .handle_irq = gic_handle_irq, | 277 | .handle_irq = gic_handle_irq, |
278 | .timer = &tegra_timer, | 278 | .timer = &tegra_timer, |
279 | .init_machine = tegra_seaboard_init, | 279 | .init_machine = tegra_seaboard_init, |
280 | .init_late = tegra_init_late, | ||
280 | .restart = tegra_assert_system_reset, | 281 | .restart = tegra_assert_system_reset, |
281 | MACHINE_END | 282 | MACHINE_END |
282 | 283 | ||
@@ -288,6 +289,7 @@ MACHINE_START(KAEN, "kaen") | |||
288 | .handle_irq = gic_handle_irq, | 289 | .handle_irq = gic_handle_irq, |
289 | .timer = &tegra_timer, | 290 | .timer = &tegra_timer, |
290 | .init_machine = tegra_kaen_init, | 291 | .init_machine = tegra_kaen_init, |
292 | .init_late = tegra_init_late, | ||
291 | .restart = tegra_assert_system_reset, | 293 | .restart = tegra_assert_system_reset, |
292 | MACHINE_END | 294 | MACHINE_END |
293 | 295 | ||
@@ -299,5 +301,6 @@ MACHINE_START(WARIO, "wario") | |||
299 | .handle_irq = gic_handle_irq, | 301 | .handle_irq = gic_handle_irq, |
300 | .timer = &tegra_timer, | 302 | .timer = &tegra_timer, |
301 | .init_machine = tegra_wario_init, | 303 | .init_machine = tegra_wario_init, |
304 | .init_late = tegra_init_late, | ||
302 | .restart = tegra_assert_system_reset, | 305 | .restart = tegra_assert_system_reset, |
303 | MACHINE_END | 306 | MACHINE_END |
diff --git a/arch/arm/mach-tegra/board-trimslice.c b/arch/arm/mach-tegra/board-trimslice.c index 832fa931c710..776aa9564d5d 100644 --- a/arch/arm/mach-tegra/board-trimslice.c +++ b/arch/arm/mach-tegra/board-trimslice.c | |||
@@ -178,5 +178,6 @@ MACHINE_START(TRIMSLICE, "trimslice") | |||
178 | .handle_irq = gic_handle_irq, | 178 | .handle_irq = gic_handle_irq, |
179 | .timer = &tegra_timer, | 179 | .timer = &tegra_timer, |
180 | .init_machine = tegra_trimslice_init, | 180 | .init_machine = tegra_trimslice_init, |
181 | .init_late = tegra_init_late, | ||
181 | .restart = tegra_assert_system_reset, | 182 | .restart = tegra_assert_system_reset, |
182 | MACHINE_END | 183 | MACHINE_END |
diff --git a/arch/arm/mach-tegra/board.h b/arch/arm/mach-tegra/board.h index 75d1543d77c0..65014968fc6c 100644 --- a/arch/arm/mach-tegra/board.h +++ b/arch/arm/mach-tegra/board.h | |||
@@ -32,5 +32,19 @@ void __init tegra_init_irq(void); | |||
32 | void __init tegra_dt_init_irq(void); | 32 | void __init tegra_dt_init_irq(void); |
33 | int __init tegra_pcie_init(bool init_port0, bool init_port1); | 33 | int __init tegra_pcie_init(bool init_port0, bool init_port1); |
34 | 34 | ||
35 | void tegra_init_late(void); | ||
36 | |||
37 | #ifdef CONFIG_DEBUG_FS | ||
38 | int tegra_clk_debugfs_init(void); | ||
39 | #else | ||
40 | static inline int tegra_clk_debugfs_init(void) { return 0; } | ||
41 | #endif | ||
42 | |||
43 | #if defined(CONFIG_ARCH_TEGRA_2x_SOC) && defined(CONFIG_DEBUG_FS) | ||
44 | int __init tegra_powergate_debugfs_init(void); | ||
45 | #else | ||
46 | static inline int tegra_powergate_debugfs_init(void) { return 0; } | ||
47 | #endif | ||
48 | |||
35 | extern struct sys_timer tegra_timer; | 49 | extern struct sys_timer tegra_timer; |
36 | #endif | 50 | #endif |
diff --git a/arch/arm/mach-tegra/clock.c b/arch/arm/mach-tegra/clock.c index 8dad8d18cb49..58f981c0819c 100644 --- a/arch/arm/mach-tegra/clock.c +++ b/arch/arm/mach-tegra/clock.c | |||
@@ -642,7 +642,7 @@ static int clk_debugfs_register(struct clk *c) | |||
642 | return 0; | 642 | return 0; |
643 | } | 643 | } |
644 | 644 | ||
645 | static int __init clk_debugfs_init(void) | 645 | int __init tegra_clk_debugfs_init(void) |
646 | { | 646 | { |
647 | struct clk *c; | 647 | struct clk *c; |
648 | struct dentry *d; | 648 | struct dentry *d; |
@@ -669,5 +669,4 @@ err_out: | |||
669 | return err; | 669 | return err; |
670 | } | 670 | } |
671 | 671 | ||
672 | late_initcall(clk_debugfs_init); | ||
673 | #endif | 672 | #endif |
diff --git a/arch/arm/mach-tegra/common.c b/arch/arm/mach-tegra/common.c index 2d80566b5383..204a5c8b0b57 100644 --- a/arch/arm/mach-tegra/common.c +++ b/arch/arm/mach-tegra/common.c | |||
@@ -146,3 +146,9 @@ void __init tegra30_init_early(void) | |||
146 | tegra_powergate_init(); | 146 | tegra_powergate_init(); |
147 | } | 147 | } |
148 | #endif | 148 | #endif |
149 | |||
150 | void __init tegra_init_late(void) | ||
151 | { | ||
152 | tegra_clk_debugfs_init(); | ||
153 | tegra_powergate_debugfs_init(); | ||
154 | } | ||
diff --git a/arch/arm/mach-tegra/powergate.c b/arch/arm/mach-tegra/powergate.c index c238699ae86f..f5b12fb4ff12 100644 --- a/arch/arm/mach-tegra/powergate.c +++ b/arch/arm/mach-tegra/powergate.c | |||
@@ -234,7 +234,7 @@ static const struct file_operations powergate_fops = { | |||
234 | .release = single_release, | 234 | .release = single_release, |
235 | }; | 235 | }; |
236 | 236 | ||
237 | static int __init powergate_debugfs_init(void) | 237 | int __init tegra_powergate_debugfs_init(void) |
238 | { | 238 | { |
239 | struct dentry *d; | 239 | struct dentry *d; |
240 | int err = -ENOMEM; | 240 | int err = -ENOMEM; |
@@ -247,6 +247,4 @@ static int __init powergate_debugfs_init(void) | |||
247 | return err; | 247 | return err; |
248 | } | 248 | } |
249 | 249 | ||
250 | late_initcall(powergate_debugfs_init); | ||
251 | |||
252 | #endif | 250 | #endif |
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c index f943687acaf0..b23a643f03f4 100644 --- a/arch/arm/mach-ux500/board-mop500.c +++ b/arch/arm/mach-ux500/board-mop500.c | |||
@@ -785,6 +785,7 @@ MACHINE_START(U8500, "ST-Ericsson MOP500 platform") | |||
785 | .timer = &ux500_timer, | 785 | .timer = &ux500_timer, |
786 | .handle_irq = gic_handle_irq, | 786 | .handle_irq = gic_handle_irq, |
787 | .init_machine = mop500_init_machine, | 787 | .init_machine = mop500_init_machine, |
788 | .init_late = ux500_init_late, | ||
788 | MACHINE_END | 789 | MACHINE_END |
789 | 790 | ||
790 | MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+") | 791 | MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+") |
@@ -794,6 +795,7 @@ MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+") | |||
794 | .timer = &ux500_timer, | 795 | .timer = &ux500_timer, |
795 | .handle_irq = gic_handle_irq, | 796 | .handle_irq = gic_handle_irq, |
796 | .init_machine = hrefv60_init_machine, | 797 | .init_machine = hrefv60_init_machine, |
798 | .init_late = ux500_init_late, | ||
797 | MACHINE_END | 799 | MACHINE_END |
798 | 800 | ||
799 | MACHINE_START(SNOWBALL, "Calao Systems Snowball platform") | 801 | MACHINE_START(SNOWBALL, "Calao Systems Snowball platform") |
@@ -804,6 +806,7 @@ MACHINE_START(SNOWBALL, "Calao Systems Snowball platform") | |||
804 | .timer = &ux500_timer, | 806 | .timer = &ux500_timer, |
805 | .handle_irq = gic_handle_irq, | 807 | .handle_irq = gic_handle_irq, |
806 | .init_machine = snowball_init_machine, | 808 | .init_machine = snowball_init_machine, |
809 | .init_late = ux500_init_late, | ||
807 | MACHINE_END | 810 | MACHINE_END |
808 | 811 | ||
809 | #ifdef CONFIG_MACH_UX500_DT | 812 | #ifdef CONFIG_MACH_UX500_DT |
@@ -918,6 +921,7 @@ DT_MACHINE_START(U8500_DT, "ST-Ericsson U8500 platform (Device Tree Support)") | |||
918 | .timer = &ux500_timer, | 921 | .timer = &ux500_timer, |
919 | .handle_irq = gic_handle_irq, | 922 | .handle_irq = gic_handle_irq, |
920 | .init_machine = u8500_init_machine, | 923 | .init_machine = u8500_init_machine, |
924 | .init_late = ux500_init_late, | ||
921 | .dt_compat = u8500_dt_board_compat, | 925 | .dt_compat = u8500_dt_board_compat, |
922 | MACHINE_END | 926 | MACHINE_END |
923 | #endif | 927 | #endif |
diff --git a/arch/arm/mach-ux500/clock.c b/arch/arm/mach-ux500/clock.c index 1762c4728f1e..8d73b066a18d 100644 --- a/arch/arm/mach-ux500/clock.c +++ b/arch/arm/mach-ux500/clock.c | |||
@@ -635,7 +635,7 @@ static int clk_debugfs_register(struct clk *c) | |||
635 | return 0; | 635 | return 0; |
636 | } | 636 | } |
637 | 637 | ||
638 | static int __init clk_debugfs_init(void) | 638 | int __init clk_debugfs_init(void) |
639 | { | 639 | { |
640 | struct clk *c; | 640 | struct clk *c; |
641 | struct dentry *d; | 641 | struct dentry *d; |
@@ -657,7 +657,6 @@ err_out: | |||
657 | return err; | 657 | return err; |
658 | } | 658 | } |
659 | 659 | ||
660 | late_initcall(clk_debugfs_init); | ||
661 | #endif /* defined(CONFIG_DEBUG_FS) */ | 660 | #endif /* defined(CONFIG_DEBUG_FS) */ |
662 | 661 | ||
663 | unsigned long clk_smp_twd_rate = 500000000; | 662 | unsigned long clk_smp_twd_rate = 500000000; |
@@ -696,12 +695,11 @@ static struct notifier_block clk_twd_cpufreq_nb = { | |||
696 | .notifier_call = clk_twd_cpufreq_transition, | 695 | .notifier_call = clk_twd_cpufreq_transition, |
697 | }; | 696 | }; |
698 | 697 | ||
699 | static int clk_init_smp_twd_cpufreq(void) | 698 | int clk_init_smp_twd_cpufreq(void) |
700 | { | 699 | { |
701 | return cpufreq_register_notifier(&clk_twd_cpufreq_nb, | 700 | return cpufreq_register_notifier(&clk_twd_cpufreq_nb, |
702 | CPUFREQ_TRANSITION_NOTIFIER); | 701 | CPUFREQ_TRANSITION_NOTIFIER); |
703 | } | 702 | } |
704 | late_initcall(clk_init_smp_twd_cpufreq); | ||
705 | 703 | ||
706 | #endif | 704 | #endif |
707 | 705 | ||
diff --git a/arch/arm/mach-ux500/clock.h b/arch/arm/mach-ux500/clock.h index d776ada08dbf..65d27a13f46d 100644 --- a/arch/arm/mach-ux500/clock.h +++ b/arch/arm/mach-ux500/clock.h | |||
@@ -150,3 +150,15 @@ struct clk clk_##_name = { \ | |||
150 | 150 | ||
151 | int __init clk_db8500_ed_fixup(void); | 151 | int __init clk_db8500_ed_fixup(void); |
152 | int __init clk_init(void); | 152 | int __init clk_init(void); |
153 | |||
154 | #ifdef CONFIG_DEBUG_FS | ||
155 | int clk_debugfs_init(void); | ||
156 | #else | ||
157 | static inline int clk_debugfs_init(void) { return 0; } | ||
158 | #endif | ||
159 | |||
160 | #ifdef CONFIG_CPU_FREQ | ||
161 | int clk_init_smp_twd_cpufreq(void); | ||
162 | #else | ||
163 | static inline int clk_init_smp_twd_cpufreq(void) { return 0; } | ||
164 | #endif | ||
diff --git a/arch/arm/mach-ux500/cpu.c b/arch/arm/mach-ux500/cpu.c index a29a0e3adcf9..e2360e7c770d 100644 --- a/arch/arm/mach-ux500/cpu.c +++ b/arch/arm/mach-ux500/cpu.c | |||
@@ -73,6 +73,12 @@ void __init ux500_init_irq(void) | |||
73 | clk_init(); | 73 | clk_init(); |
74 | } | 74 | } |
75 | 75 | ||
76 | void __init ux500_init_late(void) | ||
77 | { | ||
78 | clk_debugfs_init(); | ||
79 | clk_init_smp_twd_cpufreq(); | ||
80 | } | ||
81 | |||
76 | static const char * __init ux500_get_machine(void) | 82 | static const char * __init ux500_get_machine(void) |
77 | { | 83 | { |
78 | return kasprintf(GFP_KERNEL, "DB%4x", dbx500_partnumber()); | 84 | return kasprintf(GFP_KERNEL, "DB%4x", dbx500_partnumber()); |
diff --git a/arch/arm/mach-ux500/include/mach/setup.h b/arch/arm/mach-ux500/include/mach/setup.h index 4e369f1645ec..8b7ed82a2866 100644 --- a/arch/arm/mach-ux500/include/mach/setup.h +++ b/arch/arm/mach-ux500/include/mach/setup.h | |||
@@ -20,6 +20,7 @@ extern void __init u8500_map_io(void); | |||
20 | extern struct device * __init u8500_init_devices(void); | 20 | extern struct device * __init u8500_init_devices(void); |
21 | 21 | ||
22 | extern void __init ux500_init_irq(void); | 22 | extern void __init ux500_init_irq(void); |
23 | extern void __init ux500_init_late(void); | ||
23 | 24 | ||
24 | extern struct device *ux500_soc_device_init(const char *soc_id); | 25 | extern struct device *ux500_soc_device_init(const char *soc_id); |
25 | 26 | ||
diff --git a/arch/arm/plat-mxc/include/mach/common.h b/arch/arm/plat-mxc/include/mach/common.h index 0319c4a0cafa..cf663d84e7c1 100644 --- a/arch/arm/plat-mxc/include/mach/common.h +++ b/arch/arm/plat-mxc/include/mach/common.h | |||
@@ -53,6 +53,7 @@ extern void imx35_soc_init(void); | |||
53 | extern void imx50_soc_init(void); | 53 | extern void imx50_soc_init(void); |
54 | extern void imx51_soc_init(void); | 54 | extern void imx51_soc_init(void); |
55 | extern void imx53_soc_init(void); | 55 | extern void imx53_soc_init(void); |
56 | extern void imx51_init_late(void); | ||
56 | extern void epit_timer_init(struct clk *timer_clk, void __iomem *base, int irq); | 57 | extern void epit_timer_init(struct clk *timer_clk, void __iomem *base, int irq); |
57 | extern void mxc_timer_init(struct clk *timer_clk, void __iomem *, int); | 58 | extern void mxc_timer_init(struct clk *timer_clk, void __iomem *, int); |
58 | extern int mx1_clocks_init(unsigned long fref); | 59 | extern int mx1_clocks_init(unsigned long fref); |
@@ -149,4 +150,10 @@ extern void imx6q_pm_init(void); | |||
149 | static inline void imx6q_pm_init(void) {} | 150 | static inline void imx6q_pm_init(void) {} |
150 | #endif | 151 | #endif |
151 | 152 | ||
153 | #ifdef CONFIG_NEON | ||
154 | extern int mx51_neon_fixup(void); | ||
155 | #else | ||
156 | static inline int mx51_neon_fixup(void) { return 0; } | ||
157 | #endif | ||
158 | |||
152 | #endif | 159 | #endif |