diff options
Diffstat (limited to 'arch')
179 files changed, 615 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 ebfac782593f..549f036a5cf8 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c | |||
@@ -800,6 +800,14 @@ static int __init customize_machine(void) | |||
800 | } | 800 | } |
801 | arch_initcall(customize_machine); | 801 | arch_initcall(customize_machine); |
802 | 802 | ||
803 | static int __init init_machine_late(void) | ||
804 | { | ||
805 | if (machine_desc->init_late) | ||
806 | machine_desc->init_late(); | ||
807 | return 0; | ||
808 | } | ||
809 | late_initcall(init_machine_late); | ||
810 | |||
803 | #ifdef CONFIG_KEXEC | 811 | #ifdef CONFIG_KEXEC |
804 | static inline unsigned long long get_total_mem(void) | 812 | static inline unsigned long long get_total_mem(void) |
805 | { | 813 | { |
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 a70de24d1cbc..280cbeda708c 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 8d2589588713..365a90b5ce3d 100644 --- a/arch/arm/mach-ep93xx/core.c +++ b/arch/arm/mach-ep93xx/core.c | |||
@@ -904,3 +904,8 @@ void ep93xx_restart(char mode, const char *cmd) | |||
904 | while (1) | 904 | while (1) |
905 | ; | 905 | ; |
906 | } | 906 | } |
907 | |||
908 | void __init ep93xx_init_late(void) | ||
909 | { | ||
910 | crunch_init(); | ||
911 | } | ||
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 5ccd6e80a607..e3422f7d8dbf 100644 --- a/arch/arm/mach-exynos/common.c +++ b/arch/arm/mach-exynos/common.c | |||
@@ -285,6 +285,11 @@ void exynos5_restart(char mode, const char *cmd) | |||
285 | __raw_writel(0x1, EXYNOS_SWRESET); | 285 | __raw_writel(0x1, EXYNOS_SWRESET); |
286 | } | 286 | } |
287 | 287 | ||
288 | void __init exynos_init_late(void) | ||
289 | { | ||
290 | exynos_pm_late_initcall(); | ||
291 | } | ||
292 | |||
288 | /* | 293 | /* |
289 | * exynos_map_io | 294 | * exynos_map_io |
290 | * | 295 | * |
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 d726fcd3acf9..40eaa8c5b131 100644 --- a/arch/arm/mach-exynos/mach-armlex4210.c +++ b/arch/arm/mach-exynos/mach-armlex4210.c | |||
@@ -214,6 +214,7 @@ MACHINE_START(ARMLEX4210, "ARMLEX4210") | |||
214 | .map_io = armlex4210_map_io, | 214 | .map_io = armlex4210_map_io, |
215 | .handle_irq = gic_handle_irq, | 215 | .handle_irq = gic_handle_irq, |
216 | .init_machine = armlex4210_machine_init, | 216 | .init_machine = armlex4210_machine_init, |
217 | .init_late = exynos_init_late, | ||
217 | .timer = &exynos4_timer, | 218 | .timer = &exynos4_timer, |
218 | .restart = exynos4_restart, | 219 | .restart = exynos4_restart, |
219 | MACHINE_END | 220 | 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 4711c8920e37..5b1ab975b9e9 100644 --- a/arch/arm/mach-exynos/mach-exynos5-dt.c +++ b/arch/arm/mach-exynos/mach-exynos5-dt.c | |||
@@ -72,6 +72,7 @@ DT_MACHINE_START(EXYNOS5_DT, "SAMSUNG EXYNOS5 (Flattened Device Tree)") | |||
72 | .map_io = exynos5250_dt_map_io, | 72 | .map_io = exynos5250_dt_map_io, |
73 | .handle_irq = gic_handle_irq, | 73 | .handle_irq = gic_handle_irq, |
74 | .init_machine = exynos5250_dt_machine_init, | 74 | .init_machine = exynos5250_dt_machine_init, |
75 | .init_late = exynos_init_late, | ||
75 | .timer = &exynos4_timer, | 76 | .timer = &exynos4_timer, |
76 | .dt_compat = exynos5250_dt_compat, | 77 | .dt_compat = exynos5250_dt_compat, |
77 | .restart = exynos5_restart, | 78 | .restart = exynos5_restart, |
diff --git a/arch/arm/mach-exynos/mach-nuri.c b/arch/arm/mach-exynos/mach-nuri.c index ed90aef404c3..d57eb806f270 100644 --- a/arch/arm/mach-exynos/mach-nuri.c +++ b/arch/arm/mach-exynos/mach-nuri.c | |||
@@ -1351,6 +1351,7 @@ MACHINE_START(NURI, "NURI") | |||
1351 | .map_io = nuri_map_io, | 1351 | .map_io = nuri_map_io, |
1352 | .handle_irq = gic_handle_irq, | 1352 | .handle_irq = gic_handle_irq, |
1353 | .init_machine = nuri_machine_init, | 1353 | .init_machine = nuri_machine_init, |
1354 | .init_late = exynos_init_late, | ||
1354 | .timer = &exynos4_timer, | 1355 | .timer = &exynos4_timer, |
1355 | .reserve = &nuri_reserve, | 1356 | .reserve = &nuri_reserve, |
1356 | .restart = exynos4_restart, | 1357 | .restart = exynos4_restart, |
diff --git a/arch/arm/mach-exynos/mach-origen.c b/arch/arm/mach-exynos/mach-origen.c index 878d4c99142d..263ba441386e 100644 --- a/arch/arm/mach-exynos/mach-origen.c +++ b/arch/arm/mach-exynos/mach-origen.c | |||
@@ -735,6 +735,7 @@ MACHINE_START(ORIGEN, "ORIGEN") | |||
735 | .map_io = origen_map_io, | 735 | .map_io = origen_map_io, |
736 | .handle_irq = gic_handle_irq, | 736 | .handle_irq = gic_handle_irq, |
737 | .init_machine = origen_machine_init, | 737 | .init_machine = origen_machine_init, |
738 | .init_late = exynos_init_late, | ||
738 | .timer = &exynos4_timer, | 739 | .timer = &exynos4_timer, |
739 | .reserve = &origen_reserve, | 740 | .reserve = &origen_reserve, |
740 | .restart = exynos4_restart, | 741 | .restart = exynos4_restart, |
diff --git a/arch/arm/mach-exynos/mach-smdk4x12.c b/arch/arm/mach-exynos/mach-smdk4x12.c index d00e4f016a68..763967d71daa 100644 --- a/arch/arm/mach-exynos/mach-smdk4x12.c +++ b/arch/arm/mach-exynos/mach-smdk4x12.c | |||
@@ -303,6 +303,7 @@ MACHINE_START(SMDK4412, "SMDK4412") | |||
303 | .map_io = smdk4x12_map_io, | 303 | .map_io = smdk4x12_map_io, |
304 | .handle_irq = gic_handle_irq, | 304 | .handle_irq = gic_handle_irq, |
305 | .init_machine = smdk4x12_machine_init, | 305 | .init_machine = smdk4x12_machine_init, |
306 | .init_late = exynos_init_late, | ||
306 | .timer = &exynos4_timer, | 307 | .timer = &exynos4_timer, |
307 | .restart = exynos4_restart, | 308 | .restart = exynos4_restart, |
308 | MACHINE_END | 309 | MACHINE_END |
diff --git a/arch/arm/mach-exynos/mach-smdkv310.c b/arch/arm/mach-exynos/mach-smdkv310.c index 83b91fa777c1..f9d2b3107255 100644 --- a/arch/arm/mach-exynos/mach-smdkv310.c +++ b/arch/arm/mach-exynos/mach-smdkv310.c | |||
@@ -393,6 +393,7 @@ MACHINE_START(SMDKC210, "SMDKC210") | |||
393 | .map_io = smdkv310_map_io, | 393 | .map_io = smdkv310_map_io, |
394 | .handle_irq = gic_handle_irq, | 394 | .handle_irq = gic_handle_irq, |
395 | .init_machine = smdkv310_machine_init, | 395 | .init_machine = smdkv310_machine_init, |
396 | .init_late = exynos_init_late, | ||
396 | .timer = &exynos4_timer, | 397 | .timer = &exynos4_timer, |
397 | .restart = exynos4_restart, | 398 | .restart = exynos4_restart, |
398 | MACHINE_END | 399 | MACHINE_END |
diff --git a/arch/arm/mach-exynos/mach-universal_c210.c b/arch/arm/mach-exynos/mach-universal_c210.c index cb2b027f09a6..2cd95aa88751 100644 --- a/arch/arm/mach-exynos/mach-universal_c210.c +++ b/arch/arm/mach-exynos/mach-universal_c210.c | |||
@@ -1113,6 +1113,7 @@ MACHINE_START(UNIVERSAL_C210, "UNIVERSAL_C210") | |||
1113 | .map_io = universal_map_io, | 1113 | .map_io = universal_map_io, |
1114 | .handle_irq = gic_handle_irq, | 1114 | .handle_irq = gic_handle_irq, |
1115 | .init_machine = universal_machine_init, | 1115 | .init_machine = universal_machine_init, |
1116 | .init_late = exynos_init_late, | ||
1116 | .timer = &exynos4_timer, | 1117 | .timer = &exynos4_timer, |
1117 | .reserve = &universal_reserve, | 1118 | .reserve = &universal_reserve, |
1118 | .restart = exynos4_restart, | 1119 | .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 5cca573964f0..da4f4f5ddd42 100644 --- a/arch/arm/mach-imx/imx51-dt.c +++ b/arch/arm/mach-imx/imx51-dt.c | |||
@@ -115,6 +115,7 @@ DT_MACHINE_START(IMX51_DT, "Freescale i.MX51 (Device Tree Support)") | |||
115 | .handle_irq = imx51_handle_irq, | 115 | .handle_irq = imx51_handle_irq, |
116 | .timer = &imx51_timer, | 116 | .timer = &imx51_timer, |
117 | .init_machine = imx51_dt_init, | 117 | .init_machine = imx51_dt_init, |
118 | .init_late = imx51_init_late, | ||
118 | .dt_compat = imx51_dt_board_compat, | 119 | .dt_compat = imx51_dt_board_compat, |
119 | .restart = mxc_restart, | 120 | .restart = mxc_restart, |
120 | MACHINE_END | 121 | MACHINE_END |
diff --git a/arch/arm/mach-imx/mach-cpuimx51.c b/arch/arm/mach-imx/mach-cpuimx51.c index 944025da8333..4bd7c7679b1c 100644 --- a/arch/arm/mach-imx/mach-cpuimx51.c +++ b/arch/arm/mach-imx/mach-cpuimx51.c | |||
@@ -297,5 +297,6 @@ MACHINE_START(EUKREA_CPUIMX51, "Eukrea CPUIMX51 Module") | |||
297 | .handle_irq = imx51_handle_irq, | 297 | .handle_irq = imx51_handle_irq, |
298 | .timer = &mxc_timer, | 298 | .timer = &mxc_timer, |
299 | .init_machine = eukrea_cpuimx51_init, | 299 | .init_machine = eukrea_cpuimx51_init, |
300 | .init_late = imx51_init_late, | ||
300 | .restart = mxc_restart, | 301 | .restart = mxc_restart, |
301 | MACHINE_END | 302 | MACHINE_END |
diff --git a/arch/arm/mach-imx/mach-cpuimx51sd.c b/arch/arm/mach-imx/mach-cpuimx51sd.c index 9fbe923c8b08..0b8770fe7eae 100644 --- a/arch/arm/mach-imx/mach-cpuimx51sd.c +++ b/arch/arm/mach-imx/mach-cpuimx51sd.c | |||
@@ -335,5 +335,6 @@ MACHINE_START(EUKREA_CPUIMX51SD, "Eukrea CPUIMX51SD") | |||
335 | .handle_irq = imx51_handle_irq, | 335 | .handle_irq = imx51_handle_irq, |
336 | .timer = &mxc_timer, | 336 | .timer = &mxc_timer, |
337 | .init_machine = eukrea_cpuimx51sd_init, | 337 | .init_machine = eukrea_cpuimx51sd_init, |
338 | .init_late = imx51_init_late, | ||
338 | .restart = mxc_restart, | 339 | .restart = mxc_restart, |
339 | MACHINE_END | 340 | 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 e4b822e9f719..f3b01157108d 100644 --- a/arch/arm/mach-imx/mach-mx51_babbage.c +++ b/arch/arm/mach-imx/mach-mx51_babbage.c | |||
@@ -426,5 +426,6 @@ MACHINE_START(MX51_BABBAGE, "Freescale MX51 Babbage Board") | |||
426 | .handle_irq = imx51_handle_irq, | 426 | .handle_irq = imx51_handle_irq, |
427 | .timer = &mx51_babbage_timer, | 427 | .timer = &mx51_babbage_timer, |
428 | .init_machine = mx51_babbage_init, | 428 | .init_machine = mx51_babbage_init, |
429 | .init_late = imx51_init_late, | ||
429 | .restart = mxc_restart, | 430 | .restart = mxc_restart, |
430 | MACHINE_END | 431 | MACHINE_END |
diff --git a/arch/arm/mach-imx/mach-mx51_efikamx.c b/arch/arm/mach-imx/mach-mx51_efikamx.c index 586e9f822124..a9f3c7c5a1e0 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 | { |
@@ -293,5 +296,6 @@ MACHINE_START(MX51_EFIKAMX, "Genesi EfikaMX nettop") | |||
293 | .handle_irq = imx51_handle_irq, | 296 | .handle_irq = imx51_handle_irq, |
294 | .timer = &mx51_efikamx_timer, | 297 | .timer = &mx51_efikamx_timer, |
295 | .init_machine = mx51_efikamx_init, | 298 | .init_machine = mx51_efikamx_init, |
299 | .init_late = mx51_efikamx_init_late, | ||
296 | .restart = mx51_efikamx_restart, | 300 | .restart = mx51_efikamx_restart, |
297 | MACHINE_END | 301 | MACHINE_END |
diff --git a/arch/arm/mach-imx/mach-mx51_efikasb.c b/arch/arm/mach-imx/mach-mx51_efikasb.c index 24aded9e109f..e73db383c3c1 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 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 5fddf94cc969..3aba3a924d5f 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 e10f3914fcfe..d6b7e9fb0f89 100644 --- a/arch/arm/mach-imx/mm-imx5.c +++ b/arch/arm/mach-imx/mm-imx5.c | |||
@@ -234,3 +234,8 @@ void __init imx53_soc_init(void) | |||
234 | platform_device_register_simple("imx31-audmux", 0, imx53_audmux_res, | 234 | platform_device_register_simple("imx31-audmux", 0, imx53_audmux_res, |
235 | ARRAY_SIZE(imx53_audmux_res)); | 235 | ARRAY_SIZE(imx53_audmux_res)); |
236 | } | 236 | } |
237 | |||
238 | void __init imx51_init_late(void) | ||
239 | { | ||
240 | mx51_neon_fixup(); | ||
241 | } | ||
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 db81ed531031..6095d355f514 100644 --- a/arch/arm/mach-msm/board-msm7x30.c +++ b/arch/arm/mach-msm/board-msm7x30.c | |||
@@ -120,6 +120,11 @@ static void __init msm7x30_map_io(void) | |||
120 | msm_clock_init(msm_clocks_7x30, msm_num_clocks_7x30); | 120 | msm_clock_init(msm_clocks_7x30, msm_num_clocks_7x30); |
121 | } | 121 | } |
122 | 122 | ||
123 | static void __init msm7x30_init_late(void) | ||
124 | { | ||
125 | smd_debugfs_init(); | ||
126 | } | ||
127 | |||
123 | MACHINE_START(MSM7X30_SURF, "QCT MSM7X30 SURF") | 128 | MACHINE_START(MSM7X30_SURF, "QCT MSM7X30 SURF") |
124 | .atag_offset = 0x100, | 129 | .atag_offset = 0x100, |
125 | .fixup = msm7x30_fixup, | 130 | .fixup = msm7x30_fixup, |
@@ -127,6 +132,7 @@ MACHINE_START(MSM7X30_SURF, "QCT MSM7X30 SURF") | |||
127 | .map_io = msm7x30_map_io, | 132 | .map_io = msm7x30_map_io, |
128 | .init_irq = msm7x30_init_irq, | 133 | .init_irq = msm7x30_init_irq, |
129 | .init_machine = msm7x30_init, | 134 | .init_machine = msm7x30_init, |
135 | .init_late = msm7x30_init_late, | ||
130 | .timer = &msm_timer, | 136 | .timer = &msm_timer, |
131 | MACHINE_END | 137 | MACHINE_END |
132 | 138 | ||
@@ -137,6 +143,7 @@ MACHINE_START(MSM7X30_FFA, "QCT MSM7X30 FFA") | |||
137 | .map_io = msm7x30_map_io, | 143 | .map_io = msm7x30_map_io, |
138 | .init_irq = msm7x30_init_irq, | 144 | .init_irq = msm7x30_init_irq, |
139 | .init_machine = msm7x30_init, | 145 | .init_machine = msm7x30_init, |
146 | .init_late = msm7x30_init_late, | ||
140 | .timer = &msm_timer, | 147 | .timer = &msm_timer, |
141 | MACHINE_END | 148 | MACHINE_END |
142 | 149 | ||
@@ -147,5 +154,6 @@ MACHINE_START(MSM7X30_FLUID, "QCT MSM7X30 FLUID") | |||
147 | .map_io = msm7x30_map_io, | 154 | .map_io = msm7x30_map_io, |
148 | .init_irq = msm7x30_init_irq, | 155 | .init_irq = msm7x30_init_irq, |
149 | .init_machine = msm7x30_init, | 156 | .init_machine = msm7x30_init, |
157 | .init_late = msm7x30_init_late, | ||
150 | .timer = &msm_timer, | 158 | .timer = &msm_timer, |
151 | MACHINE_END | 159 | 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 7e8909c978c3..dd625aaa39d5 100644 --- a/arch/arm/mach-msm/board-qsd8x50.c +++ b/arch/arm/mach-msm/board-qsd8x50.c | |||
@@ -191,11 +191,17 @@ static void __init qsd8x50_init(void) | |||
191 | qsd8x50_init_mmc(); | 191 | qsd8x50_init_mmc(); |
192 | } | 192 | } |
193 | 193 | ||
194 | static void __init qsd8x50_init_late(void) | ||
195 | { | ||
196 | smd_debugfs_init(); | ||
197 | } | ||
198 | |||
194 | MACHINE_START(QSD8X50_SURF, "QCT QSD8X50 SURF") | 199 | MACHINE_START(QSD8X50_SURF, "QCT QSD8X50 SURF") |
195 | .atag_offset = 0x100, | 200 | .atag_offset = 0x100, |
196 | .map_io = qsd8x50_map_io, | 201 | .map_io = qsd8x50_map_io, |
197 | .init_irq = qsd8x50_init_irq, | 202 | .init_irq = qsd8x50_init_irq, |
198 | .init_machine = qsd8x50_init, | 203 | .init_machine = qsd8x50_init, |
204 | .init_late = qsd8x50_init_late, | ||
199 | .timer = &msm_timer, | 205 | .timer = &msm_timer, |
200 | MACHINE_END | 206 | MACHINE_END |
201 | 207 | ||
@@ -204,5 +210,6 @@ MACHINE_START(QSD8X50A_ST1_5, "QCT QSD8X50A ST1.5") | |||
204 | .map_io = qsd8x50_map_io, | 210 | .map_io = qsd8x50_map_io, |
205 | .init_irq = qsd8x50_init_irq, | 211 | .init_irq = qsd8x50_init_irq, |
206 | .init_machine = qsd8x50_init, | 212 | .init_machine = qsd8x50_init, |
213 | .init_late = qsd8x50_init_late, | ||
207 | .timer = &msm_timer, | 214 | .timer = &msm_timer, |
208 | MACHINE_END | 215 | 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 80bd43c7f4ec..a77ee57f840d 100644 --- a/arch/arm/mach-omap1/board-fsample.c +++ b/arch/arm/mach-omap1/board-fsample.c | |||
@@ -383,6 +383,7 @@ MACHINE_START(OMAP_FSAMPLE, "OMAP730 F-Sample") | |||
383 | .reserve = omap_reserve, | 383 | .reserve = omap_reserve, |
384 | .init_irq = omap1_init_irq, | 384 | .init_irq = omap1_init_irq, |
385 | .init_machine = omap_fsample_init, | 385 | .init_machine = omap_fsample_init, |
386 | .init_late = omap1_init_late, | ||
386 | .timer = &omap1_timer, | 387 | .timer = &omap1_timer, |
387 | .restart = omap1_restart, | 388 | .restart = omap1_restart, |
388 | MACHINE_END | 389 | 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 553a2e535764..04cf99455758 100644 --- a/arch/arm/mach-omap1/board-h2.c +++ b/arch/arm/mach-omap1/board-h2.c | |||
@@ -446,6 +446,7 @@ MACHINE_START(OMAP_H2, "TI-H2") | |||
446 | .reserve = omap_reserve, | 446 | .reserve = omap_reserve, |
447 | .init_irq = omap1_init_irq, | 447 | .init_irq = omap1_init_irq, |
448 | .init_machine = h2_init, | 448 | .init_machine = h2_init, |
449 | .init_late = omap1_init_late, | ||
449 | .timer = &omap1_timer, | 450 | .timer = &omap1_timer, |
450 | .restart = omap1_restart, | 451 | .restart = omap1_restart, |
451 | MACHINE_END | 452 | MACHINE_END |
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c index 4c19f4c06851..a11ef0a7c025 100644 --- a/arch/arm/mach-omap1/board-h3.c +++ b/arch/arm/mach-omap1/board-h3.c | |||
@@ -439,6 +439,7 @@ MACHINE_START(OMAP_H3, "TI OMAP1710 H3 board") | |||
439 | .reserve = omap_reserve, | 439 | .reserve = omap_reserve, |
440 | .init_irq = omap1_init_irq, | 440 | .init_irq = omap1_init_irq, |
441 | .init_machine = h3_init, | 441 | .init_machine = h3_init, |
442 | .init_late = omap1_init_late, | ||
442 | .timer = &omap1_timer, | 443 | .timer = &omap1_timer, |
443 | .restart = omap1_restart, | 444 | .restart = omap1_restart, |
444 | MACHINE_END | 445 | 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 a2c5abcd7c84..0711685f89a5 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 76d4ee05a814..512989bb15c0 100644 --- a/arch/arm/mach-omap1/board-perseus2.c +++ b/arch/arm/mach-omap1/board-perseus2.c | |||
@@ -345,6 +345,7 @@ MACHINE_START(OMAP_PERSEUS2, "OMAP730 Perseus2") | |||
345 | .reserve = omap_reserve, | 345 | .reserve = omap_reserve, |
346 | .init_irq = omap1_init_irq, | 346 | .init_irq = omap1_init_irq, |
347 | .init_machine = omap_perseus2_init, | 347 | .init_machine = omap_perseus2_init, |
348 | .init_late = omap1_init_late, | ||
348 | .timer = &omap1_timer, | 349 | .timer = &omap1_timer, |
349 | .restart = omap1_restart, | 350 | .restart = omap1_restart, |
350 | MACHINE_END | 351 | 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 af658ad338ec..0b77e6d68f5f 100644 --- a/arch/arm/mach-omap1/common.h +++ b/arch/arm/mach-omap1/common.h | |||
@@ -52,8 +52,18 @@ static inline void omap16xx_map_io(void) | |||
52 | } | 52 | } |
53 | #endif | 53 | #endif |
54 | 54 | ||
55 | #ifdef CONFIG_OMAP_SERIAL_WAKE | ||
56 | int omap_serial_wakeup_init(void); | ||
57 | #else | ||
58 | static inline int omap_serial_wakeup_init(void) | ||
59 | { | ||
60 | return 0; | ||
61 | } | ||
62 | #endif | ||
63 | |||
55 | void omap1_init_early(void); | 64 | void omap1_init_early(void); |
56 | void omap1_init_irq(void); | 65 | void omap1_init_irq(void); |
66 | void omap1_init_late(void); | ||
57 | void omap1_restart(char, const char *); | 67 | void omap1_restart(char, const char *); |
58 | 68 | ||
59 | extern struct sys_timer omap1_timer; | 69 | extern struct sys_timer omap1_timer; |
diff --git a/arch/arm/mach-omap1/io.c b/arch/arm/mach-omap1/io.c index d969a7203d14..cf811f2bc7fc 100644 --- a/arch/arm/mach-omap1/io.c +++ b/arch/arm/mach-omap1/io.c | |||
@@ -138,6 +138,11 @@ void __init omap1_init_early(void) | |||
138 | omap_init_consistent_dma_size(); | 138 | omap_init_consistent_dma_size(); |
139 | } | 139 | } |
140 | 140 | ||
141 | void __init omap1_init_late(void) | ||
142 | { | ||
143 | omap_serial_wakeup_init(); | ||
144 | } | ||
145 | |||
141 | /* | 146 | /* |
142 | * NOTE: Please use ioremap + __raw_read/write where possible instead of these | 147 | * NOTE: Please use ioremap + __raw_read/write where possible instead of these |
143 | */ | 148 | */ |
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 da75f239873e..8ceb480996e0 100644 --- a/arch/arm/mach-omap2/board-3430sdp.c +++ b/arch/arm/mach-omap2/board-3430sdp.c | |||
@@ -635,6 +635,7 @@ MACHINE_START(OMAP_3430SDP, "OMAP3430 3430SDP board") | |||
635 | .init_irq = omap3_init_irq, | 635 | .init_irq = omap3_init_irq, |
636 | .handle_irq = omap3_intc_handle_irq, | 636 | .handle_irq = omap3_intc_handle_irq, |
637 | .init_machine = omap_3430sdp_init, | 637 | .init_machine = omap_3430sdp_init, |
638 | .init_late = omap3430_init_late, | ||
638 | .timer = &omap3_timer, | 639 | .timer = &omap3_timer, |
639 | .restart = omap_prcm_restart, | 640 | .restart = omap_prcm_restart, |
640 | MACHINE_END | 641 | 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 130ab00c09a2..3f6cf228e0b0 100644 --- a/arch/arm/mach-omap2/board-4430sdp.c +++ b/arch/arm/mach-omap2/board-4430sdp.c | |||
@@ -969,6 +969,7 @@ MACHINE_START(OMAP_4430SDP, "OMAP4430 4430SDP board") | |||
969 | .init_irq = gic_init_irq, | 969 | .init_irq = gic_init_irq, |
970 | .handle_irq = gic_handle_irq, | 970 | .handle_irq = gic_handle_irq, |
971 | .init_machine = omap_4430sdp_init, | 971 | .init_machine = omap_4430sdp_init, |
972 | .init_late = omap4430_init_late, | ||
972 | .timer = &omap4_timer, | 973 | .timer = &omap4_timer, |
973 | .restart = omap_prcm_restart, | 974 | .restart = omap_prcm_restart, |
974 | MACHINE_END | 975 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-am3517crane.c b/arch/arm/mach-omap2/board-am3517crane.c index c3851e8de28b..7231020d9af8 100644 --- a/arch/arm/mach-omap2/board-am3517crane.c +++ b/arch/arm/mach-omap2/board-am3517crane.c | |||
@@ -100,6 +100,7 @@ MACHINE_START(CRANEBOARD, "AM3517/05 CRANEBOARD") | |||
100 | .init_irq = omap3_init_irq, | 100 | .init_irq = omap3_init_irq, |
101 | .handle_irq = omap3_intc_handle_irq, | 101 | .handle_irq = omap3_intc_handle_irq, |
102 | .init_machine = am3517_crane_init, | 102 | .init_machine = am3517_crane_init, |
103 | .init_late = am35xx_init_late, | ||
103 | .timer = &omap3_timer, | 104 | .timer = &omap3_timer, |
104 | .restart = omap_prcm_restart, | 105 | .restart = omap_prcm_restart, |
105 | MACHINE_END | 106 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-am3517evm.c b/arch/arm/mach-omap2/board-am3517evm.c index 3645285a3e2b..ae50e11a2559 100644 --- a/arch/arm/mach-omap2/board-am3517evm.c +++ b/arch/arm/mach-omap2/board-am3517evm.c | |||
@@ -402,6 +402,7 @@ MACHINE_START(OMAP3517EVM, "OMAP3517/AM3517 EVM") | |||
402 | .init_irq = omap3_init_irq, | 402 | .init_irq = omap3_init_irq, |
403 | .handle_irq = omap3_intc_handle_irq, | 403 | .handle_irq = omap3_intc_handle_irq, |
404 | .init_machine = am3517_evm_init, | 404 | .init_machine = am3517_evm_init, |
405 | .init_late = am35xx_init_late, | ||
405 | .timer = &omap3_timer, | 406 | .timer = &omap3_timer, |
406 | .restart = omap_prcm_restart, | 407 | .restart = omap_prcm_restart, |
407 | MACHINE_END | 408 | 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 909a8b91b564..f9750613686c 100644 --- a/arch/arm/mach-omap2/board-cm-t35.c +++ b/arch/arm/mach-omap2/board-cm-t35.c | |||
@@ -686,6 +686,7 @@ MACHINE_START(CM_T35, "Compulab CM-T35") | |||
686 | .init_irq = omap3_init_irq, | 686 | .init_irq = omap3_init_irq, |
687 | .handle_irq = omap3_intc_handle_irq, | 687 | .handle_irq = omap3_intc_handle_irq, |
688 | .init_machine = cm_t35_init, | 688 | .init_machine = cm_t35_init, |
689 | .init_late = omap35xx_init_late, | ||
689 | .timer = &omap3_timer, | 690 | .timer = &omap3_timer, |
690 | .restart = omap_prcm_restart, | 691 | .restart = omap_prcm_restart, |
691 | MACHINE_END | 692 | MACHINE_END |
@@ -698,6 +699,7 @@ MACHINE_START(CM_T3730, "Compulab CM-T3730") | |||
698 | .init_irq = omap3_init_irq, | 699 | .init_irq = omap3_init_irq, |
699 | .handle_irq = omap3_intc_handle_irq, | 700 | .handle_irq = omap3_intc_handle_irq, |
700 | .init_machine = cm_t3730_init, | 701 | .init_machine = cm_t3730_init, |
702 | .init_late = omap3630_init_late, | ||
701 | .timer = &omap3_timer, | 703 | .timer = &omap3_timer, |
702 | .restart = omap_prcm_restart, | 704 | .restart = omap_prcm_restart, |
703 | MACHINE_END | 705 | 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 a2010f07de31..f616c8c8bc80 100644 --- a/arch/arm/mach-omap2/board-devkit8000.c +++ b/arch/arm/mach-omap2/board-devkit8000.c | |||
@@ -664,6 +664,7 @@ MACHINE_START(DEVKIT8000, "OMAP3 Devkit8000") | |||
664 | .init_irq = omap3_init_irq, | 664 | .init_irq = omap3_init_irq, |
665 | .handle_irq = omap3_intc_handle_irq, | 665 | .handle_irq = omap3_intc_handle_irq, |
666 | .init_machine = devkit8000_init, | 666 | .init_machine = devkit8000_init, |
667 | .init_late = omap35xx_init_late, | ||
667 | .timer = &omap3_secure_timer, | 668 | .timer = &omap3_secure_timer, |
668 | .restart = omap_prcm_restart, | 669 | .restart = omap_prcm_restart, |
669 | MACHINE_END | 670 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c index 098d183a0086..56ffcc9f2b2b 100644 --- a/arch/arm/mach-omap2/board-generic.c +++ b/arch/arm/mach-omap2/board-generic.c | |||
@@ -158,6 +158,7 @@ DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)") | |||
158 | .init_irq = omap_init_irq, | 158 | .init_irq = omap_init_irq, |
159 | .handle_irq = gic_handle_irq, | 159 | .handle_irq = gic_handle_irq, |
160 | .init_machine = omap4_init, | 160 | .init_machine = omap4_init, |
161 | .init_late = omap4430_init_late, | ||
161 | .timer = &omap4_timer, | 162 | .timer = &omap4_timer, |
162 | .dt_compat = omap4_boards_compat, | 163 | .dt_compat = omap4_boards_compat, |
163 | .restart = omap_prcm_restart, | 164 | .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 930c0d380435..21df74e835b7 100644 --- a/arch/arm/mach-omap2/board-igep0020.c +++ b/arch/arm/mach-omap2/board-igep0020.c | |||
@@ -684,6 +684,7 @@ MACHINE_START(IGEP0020, "IGEP v2 board") | |||
684 | .init_irq = omap3_init_irq, | 684 | .init_irq = omap3_init_irq, |
685 | .handle_irq = omap3_intc_handle_irq, | 685 | .handle_irq = omap3_intc_handle_irq, |
686 | .init_machine = igep_init, | 686 | .init_machine = igep_init, |
687 | .init_late = omap35xx_init_late, | ||
687 | .timer = &omap3_timer, | 688 | .timer = &omap3_timer, |
688 | .restart = omap_prcm_restart, | 689 | .restart = omap_prcm_restart, |
689 | MACHINE_END | 690 | MACHINE_END |
@@ -696,6 +697,7 @@ MACHINE_START(IGEP0030, "IGEP OMAP3 module") | |||
696 | .init_irq = omap3_init_irq, | 697 | .init_irq = omap3_init_irq, |
697 | .handle_irq = omap3_intc_handle_irq, | 698 | .handle_irq = omap3_intc_handle_irq, |
698 | .init_machine = igep_init, | 699 | .init_machine = igep_init, |
700 | .init_late = omap35xx_init_late, | ||
699 | .timer = &omap3_timer, | 701 | .timer = &omap3_timer, |
700 | .restart = omap_prcm_restart, | 702 | .restart = omap_prcm_restart, |
701 | MACHINE_END | 703 | 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 7be8d659d91d..b6cd804e8114 100644 --- a/arch/arm/mach-omap2/board-omap3beagle.c +++ b/arch/arm/mach-omap2/board-omap3beagle.c | |||
@@ -565,6 +565,7 @@ MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board") | |||
565 | .init_irq = omap3_init_irq, | 565 | .init_irq = omap3_init_irq, |
566 | .handle_irq = omap3_intc_handle_irq, | 566 | .handle_irq = omap3_intc_handle_irq, |
567 | .init_machine = omap3_beagle_init, | 567 | .init_machine = omap3_beagle_init, |
568 | .init_late = omap3_init_late, | ||
568 | .timer = &omap3_secure_timer, | 569 | .timer = &omap3_secure_timer, |
569 | .restart = omap_prcm_restart, | 570 | .restart = omap_prcm_restart, |
570 | MACHINE_END | 571 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c index 49df12735b41..e98c230f5f63 100644 --- a/arch/arm/mach-omap2/board-omap3evm.c +++ b/arch/arm/mach-omap2/board-omap3evm.c | |||
@@ -692,6 +692,7 @@ MACHINE_START(OMAP3EVM, "OMAP3 EVM") | |||
692 | .init_irq = omap3_init_irq, | 692 | .init_irq = omap3_init_irq, |
693 | .handle_irq = omap3_intc_handle_irq, | 693 | .handle_irq = omap3_intc_handle_irq, |
694 | .init_machine = omap3_evm_init, | 694 | .init_machine = omap3_evm_init, |
695 | .init_late = omap35xx_init_late, | ||
695 | .timer = &omap3_timer, | 696 | .timer = &omap3_timer, |
696 | .restart = omap_prcm_restart, | 697 | .restart = omap_prcm_restart, |
697 | MACHINE_END | 698 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-omap3logic.c b/arch/arm/mach-omap2/board-omap3logic.c index 9b3c141ff51b..892792755898 100644 --- a/arch/arm/mach-omap2/board-omap3logic.c +++ b/arch/arm/mach-omap2/board-omap3logic.c | |||
@@ -218,6 +218,7 @@ MACHINE_START(OMAP3_TORPEDO, "Logic OMAP3 Torpedo board") | |||
218 | .init_irq = omap3_init_irq, | 218 | .init_irq = omap3_init_irq, |
219 | .handle_irq = omap3_intc_handle_irq, | 219 | .handle_irq = omap3_intc_handle_irq, |
220 | .init_machine = omap3logic_init, | 220 | .init_machine = omap3logic_init, |
221 | .init_late = omap35xx_init_late, | ||
221 | .timer = &omap3_timer, | 222 | .timer = &omap3_timer, |
222 | .restart = omap_prcm_restart, | 223 | .restart = omap_prcm_restart, |
223 | MACHINE_END | 224 | MACHINE_END |
@@ -230,6 +231,7 @@ MACHINE_START(OMAP3530_LV_SOM, "OMAP Logic 3530 LV SOM board") | |||
230 | .init_irq = omap3_init_irq, | 231 | .init_irq = omap3_init_irq, |
231 | .handle_irq = omap3_intc_handle_irq, | 232 | .handle_irq = omap3_intc_handle_irq, |
232 | .init_machine = omap3logic_init, | 233 | .init_machine = omap3logic_init, |
234 | .init_late = omap35xx_init_late, | ||
233 | .timer = &omap3_timer, | 235 | .timer = &omap3_timer, |
234 | .restart = omap_prcm_restart, | 236 | .restart = omap_prcm_restart, |
235 | MACHINE_END | 237 | 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 4dffc95bddd2..c05fe3a340df 100644 --- a/arch/arm/mach-omap2/board-omap3stalker.c +++ b/arch/arm/mach-omap2/board-omap3stalker.c | |||
@@ -457,6 +457,7 @@ MACHINE_START(SBC3530, "OMAP3 STALKER") | |||
457 | .init_irq = omap3_init_irq, | 457 | .init_irq = omap3_init_irq, |
458 | .handle_irq = omap3_intc_handle_irq, | 458 | .handle_irq = omap3_intc_handle_irq, |
459 | .init_machine = omap3_stalker_init, | 459 | .init_machine = omap3_stalker_init, |
460 | .init_late = omap35xx_init_late, | ||
460 | .timer = &omap3_secure_timer, | 461 | .timer = &omap3_secure_timer, |
461 | .restart = omap_prcm_restart, | 462 | .restart = omap_prcm_restart, |
462 | MACHINE_END | 463 | 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 1b782ba53433..7ca817f47cf2 100644 --- a/arch/arm/mach-omap2/board-omap4panda.c +++ b/arch/arm/mach-omap2/board-omap4panda.c | |||
@@ -582,6 +582,7 @@ MACHINE_START(OMAP4_PANDA, "OMAP4 Panda board") | |||
582 | .init_irq = gic_init_irq, | 582 | .init_irq = gic_init_irq, |
583 | .handle_irq = gic_handle_irq, | 583 | .handle_irq = gic_handle_irq, |
584 | .init_machine = omap4_panda_init, | 584 | .init_machine = omap4_panda_init, |
585 | .init_late = omap4430_init_late, | ||
585 | .timer = &omap4_timer, | 586 | .timer = &omap4_timer, |
586 | .restart = omap_prcm_restart, | 587 | .restart = omap_prcm_restart, |
587 | MACHINE_END | 588 | MACHINE_END |
diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c index 33aa3910b09e..af7ac0ba9888 100644 --- a/arch/arm/mach-omap2/board-overo.c +++ b/arch/arm/mach-omap2/board-overo.c | |||
@@ -571,6 +571,7 @@ MACHINE_START(OVERO, "Gumstix Overo") | |||
571 | .init_irq = omap3_init_irq, | 571 | .init_irq = omap3_init_irq, |
572 | .handle_irq = omap3_intc_handle_irq, | 572 | .handle_irq = omap3_intc_handle_irq, |
573 | .init_machine = overo_init, | 573 | .init_machine = overo_init, |
574 | .init_late = omap35xx_init_late, | ||
574 | .timer = &omap3_timer, | 575 | .timer = &omap3_timer, |
575 | .restart = omap_prcm_restart, | 576 | .restart = omap_prcm_restart, |
576 | MACHINE_END | 577 | 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 27f01f051dff..5010f6d27ad7 100644 --- a/arch/arm/mach-omap2/board-rx51.c +++ b/arch/arm/mach-omap2/board-rx51.c | |||
@@ -129,6 +129,7 @@ MACHINE_START(NOKIA_RX51, "Nokia RX-51 board") | |||
129 | .init_irq = omap3_init_irq, | 129 | .init_irq = omap3_init_irq, |
130 | .handle_irq = omap3_intc_handle_irq, | 130 | .handle_irq = omap3_intc_handle_irq, |
131 | .init_machine = rx51_init, | 131 | .init_machine = rx51_init, |
132 | .init_late = omap3430_init_late, | ||
132 | .timer = &omap3_timer, | 133 | .timer = &omap3_timer, |
133 | .restart = omap_prcm_restart, | 134 | .restart = omap_prcm_restart, |
134 | MACHINE_END | 135 | 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 57da7f406e28..58ef29b1c7d7 100644 --- a/arch/arm/mach-omap2/common.h +++ b/arch/arm/mach-omap2/common.h | |||
@@ -78,6 +78,42 @@ static inline void omap44xx_map_common_io(void) | |||
78 | } | 78 | } |
79 | #endif | 79 | #endif |
80 | 80 | ||
81 | #if defined(CONFIG_PM) && defined(CONFIG_ARCH_OMAP2) | ||
82 | int omap2_pm_init(void); | ||
83 | #else | ||
84 | static inline int omap2_pm_init(void) | ||
85 | { | ||
86 | return 0; | ||
87 | } | ||
88 | #endif | ||
89 | |||
90 | #if defined(CONFIG_PM) && defined(CONFIG_ARCH_OMAP3) | ||
91 | int omap3_pm_init(void); | ||
92 | #else | ||
93 | static inline int omap3_pm_init(void) | ||
94 | { | ||
95 | return 0; | ||
96 | } | ||
97 | #endif | ||
98 | |||
99 | #if defined(CONFIG_PM) && defined(CONFIG_ARCH_OMAP4) | ||
100 | int omap4_pm_init(void); | ||
101 | #else | ||
102 | static inline int omap4_pm_init(void) | ||
103 | { | ||
104 | return 0; | ||
105 | } | ||
106 | #endif | ||
107 | |||
108 | #ifdef CONFIG_OMAP_MUX | ||
109 | int omap_mux_late_init(void); | ||
110 | #else | ||
111 | static inline int omap_mux_late_init(void) | ||
112 | { | ||
113 | return 0; | ||
114 | } | ||
115 | #endif | ||
116 | |||
81 | extern void omap2_init_common_infrastructure(void); | 117 | extern void omap2_init_common_infrastructure(void); |
82 | 118 | ||
83 | extern struct sys_timer omap2_timer; | 119 | extern struct sys_timer omap2_timer; |
@@ -94,6 +130,17 @@ void omap3_init_early(void); /* Do not use this one */ | |||
94 | void am35xx_init_early(void); | 130 | void am35xx_init_early(void); |
95 | void ti81xx_init_early(void); | 131 | void ti81xx_init_early(void); |
96 | void omap4430_init_early(void); | 132 | void omap4430_init_early(void); |
133 | void omap3_init_late(void); /* Do not use this one */ | ||
134 | void omap4430_init_late(void); | ||
135 | void omap2420_init_late(void); | ||
136 | void omap2430_init_late(void); | ||
137 | void omap3430_init_late(void); | ||
138 | void omap35xx_init_late(void); | ||
139 | void omap3630_init_late(void); | ||
140 | void am35xx_init_late(void); | ||
141 | void ti81xx_init_late(void); | ||
142 | void omap4430_init_late(void); | ||
143 | int omap2_common_pm_late_init(void); | ||
97 | void omap_prcm_restart(char, const char *); | 144 | void omap_prcm_restart(char, const char *); |
98 | 145 | ||
99 | /* | 146 | /* |
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c index 065bd768987c..cc86e710b108 100644 --- a/arch/arm/mach-omap2/io.c +++ b/arch/arm/mach-omap2/io.c | |||
@@ -397,6 +397,13 @@ void __init omap2420_init_early(void) | |||
397 | omap_hwmod_init_postsetup(); | 397 | omap_hwmod_init_postsetup(); |
398 | omap2420_clk_init(); | 398 | omap2420_clk_init(); |
399 | } | 399 | } |
400 | |||
401 | void __init omap2420_init_late(void) | ||
402 | { | ||
403 | omap_mux_late_init(); | ||
404 | omap2_common_pm_late_init(); | ||
405 | omap2_pm_init(); | ||
406 | } | ||
400 | #endif | 407 | #endif |
401 | 408 | ||
402 | #ifdef CONFIG_SOC_OMAP2430 | 409 | #ifdef CONFIG_SOC_OMAP2430 |
@@ -412,6 +419,13 @@ void __init omap2430_init_early(void) | |||
412 | omap_hwmod_init_postsetup(); | 419 | omap_hwmod_init_postsetup(); |
413 | omap2430_clk_init(); | 420 | omap2430_clk_init(); |
414 | } | 421 | } |
422 | |||
423 | void __init omap2430_init_late(void) | ||
424 | { | ||
425 | omap_mux_late_init(); | ||
426 | omap2_common_pm_late_init(); | ||
427 | omap2_pm_init(); | ||
428 | } | ||
415 | #endif | 429 | #endif |
416 | 430 | ||
417 | /* | 431 | /* |
@@ -466,6 +480,48 @@ void __init ti81xx_init_early(void) | |||
466 | omap_hwmod_init_postsetup(); | 480 | omap_hwmod_init_postsetup(); |
467 | omap3xxx_clk_init(); | 481 | omap3xxx_clk_init(); |
468 | } | 482 | } |
483 | |||
484 | void __init omap3_init_late(void) | ||
485 | { | ||
486 | omap_mux_late_init(); | ||
487 | omap2_common_pm_late_init(); | ||
488 | omap3_pm_init(); | ||
489 | } | ||
490 | |||
491 | void __init omap3430_init_late(void) | ||
492 | { | ||
493 | omap_mux_late_init(); | ||
494 | omap2_common_pm_late_init(); | ||
495 | omap3_pm_init(); | ||
496 | } | ||
497 | |||
498 | void __init omap35xx_init_late(void) | ||
499 | { | ||
500 | omap_mux_late_init(); | ||
501 | omap2_common_pm_late_init(); | ||
502 | omap3_pm_init(); | ||
503 | } | ||
504 | |||
505 | void __init omap3630_init_late(void) | ||
506 | { | ||
507 | omap_mux_late_init(); | ||
508 | omap2_common_pm_late_init(); | ||
509 | omap3_pm_init(); | ||
510 | } | ||
511 | |||
512 | void __init am35xx_init_late(void) | ||
513 | { | ||
514 | omap_mux_late_init(); | ||
515 | omap2_common_pm_late_init(); | ||
516 | omap3_pm_init(); | ||
517 | } | ||
518 | |||
519 | void __init ti81xx_init_late(void) | ||
520 | { | ||
521 | omap_mux_late_init(); | ||
522 | omap2_common_pm_late_init(); | ||
523 | omap3_pm_init(); | ||
524 | } | ||
469 | #endif | 525 | #endif |
470 | 526 | ||
471 | #ifdef CONFIG_ARCH_OMAP4 | 527 | #ifdef CONFIG_ARCH_OMAP4 |
@@ -482,6 +538,13 @@ void __init omap4430_init_early(void) | |||
482 | omap_hwmod_init_postsetup(); | 538 | omap_hwmod_init_postsetup(); |
483 | omap4xxx_clk_init(); | 539 | omap4xxx_clk_init(); |
484 | } | 540 | } |
541 | |||
542 | void __init omap4430_init_late(void) | ||
543 | { | ||
544 | omap_mux_late_init(); | ||
545 | omap2_common_pm_late_init(); | ||
546 | omap4_pm_init(); | ||
547 | } | ||
485 | #endif | 548 | #endif |
486 | 549 | ||
487 | void __init omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0, | 550 | 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 65c33911341f..0ede4d6010c3 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 95442b69ae27..b2758b83a0a6 100644 --- a/arch/arm/mach-omap2/pm24xx.c +++ b/arch/arm/mach-omap2/pm24xx.c | |||
@@ -301,13 +301,10 @@ static void __init prcm_setup_regs(void) | |||
301 | WKUP_MOD, PM_WKEN); | 301 | WKUP_MOD, PM_WKEN); |
302 | } | 302 | } |
303 | 303 | ||
304 | static int __init omap2_pm_init(void) | 304 | int __init omap2_pm_init(void) |
305 | { | 305 | { |
306 | u32 l; | 306 | u32 l; |
307 | 307 | ||
308 | if (!cpu_is_omap24xx()) | ||
309 | return -ENODEV; | ||
310 | |||
311 | printk(KERN_INFO "Power Management for OMAP2 initializing\n"); | 308 | printk(KERN_INFO "Power Management for OMAP2 initializing\n"); |
312 | l = omap2_prm_read_mod_reg(OCP_MOD, OMAP2_PRCM_REVISION_OFFSET); | 309 | l = omap2_prm_read_mod_reg(OCP_MOD, OMAP2_PRCM_REVISION_OFFSET); |
313 | printk(KERN_INFO "PRCM revision %d.%d\n", (l >> 4) & 0x0f, l & 0x0f); | 310 | printk(KERN_INFO "PRCM revision %d.%d\n", (l >> 4) & 0x0f, l & 0x0f); |
@@ -373,17 +370,13 @@ static int __init omap2_pm_init(void) | |||
373 | * These routines need to be in SRAM as that's the only | 370 | * These routines need to be in SRAM as that's the only |
374 | * memory the MPU can see when it wakes up. | 371 | * memory the MPU can see when it wakes up. |
375 | */ | 372 | */ |
376 | if (cpu_is_omap24xx()) { | 373 | omap2_sram_idle = omap_sram_push(omap24xx_idle_loop_suspend, |
377 | omap2_sram_idle = omap_sram_push(omap24xx_idle_loop_suspend, | 374 | omap24xx_idle_loop_suspend_sz); |
378 | omap24xx_idle_loop_suspend_sz); | ||
379 | 375 | ||
380 | omap2_sram_suspend = omap_sram_push(omap24xx_cpu_suspend, | 376 | omap2_sram_suspend = omap_sram_push(omap24xx_cpu_suspend, |
381 | omap24xx_cpu_suspend_sz); | 377 | omap24xx_cpu_suspend_sz); |
382 | } | ||
383 | 378 | ||
384 | arm_pm_idle = omap2_pm_idle; | 379 | arm_pm_idle = omap2_pm_idle; |
385 | 380 | ||
386 | return 0; | 381 | return 0; |
387 | } | 382 | } |
388 | |||
389 | late_initcall(omap2_pm_init); | ||
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c index 703bd1099259..c769b888e2c8 100644 --- a/arch/arm/mach-omap2/pm34xx.c +++ b/arch/arm/mach-omap2/pm34xx.c | |||
@@ -699,15 +699,12 @@ static void __init pm_errata_configure(void) | |||
699 | } | 699 | } |
700 | } | 700 | } |
701 | 701 | ||
702 | static int __init omap3_pm_init(void) | 702 | int __init omap3_pm_init(void) |
703 | { | 703 | { |
704 | struct power_state *pwrst, *tmp; | 704 | struct power_state *pwrst, *tmp; |
705 | struct clockdomain *neon_clkdm, *per_clkdm, *mpu_clkdm, *core_clkdm; | 705 | struct clockdomain *neon_clkdm, *per_clkdm, *mpu_clkdm, *core_clkdm; |
706 | int ret; | 706 | int ret; |
707 | 707 | ||
708 | if (!cpu_is_omap34xx()) | ||
709 | return -ENODEV; | ||
710 | |||
711 | if (!omap3_has_io_chain_ctrl()) | 708 | if (!omap3_has_io_chain_ctrl()) |
712 | pr_warning("PM: no software I/O chain control; some wakeups may be lost\n"); | 709 | pr_warning("PM: no software I/O chain control; some wakeups may be lost\n"); |
713 | 710 | ||
@@ -808,5 +805,3 @@ err2: | |||
808 | err1: | 805 | err1: |
809 | return ret; | 806 | return ret; |
810 | } | 807 | } |
811 | |||
812 | 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 b86f2779e4e6..8808aa5e0015 100644 --- a/arch/arm/mach-s3c64xx/mach-anw6410.c +++ b/arch/arm/mach-s3c64xx/mach-anw6410.c | |||
@@ -241,6 +241,7 @@ MACHINE_START(ANW6410, "A&W6410") | |||
241 | .handle_irq = vic_handle_irq, | 241 | .handle_irq = vic_handle_irq, |
242 | .map_io = anw6410_map_io, | 242 | .map_io = anw6410_map_io, |
243 | .init_machine = anw6410_machine_init, | 243 | .init_machine = anw6410_machine_init, |
244 | .init_late = s3c64xx_init_late, | ||
244 | .timer = &s3c24xx_timer, | 245 | .timer = &s3c24xx_timer, |
245 | .restart = s3c64xx_restart, | 246 | .restart = s3c64xx_restart, |
246 | MACHINE_END | 247 | MACHINE_END |
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c b/arch/arm/mach-s3c64xx/mach-crag6410.c index e20bf5835365..607d3f1bb98e 100644 --- a/arch/arm/mach-s3c64xx/mach-crag6410.c +++ b/arch/arm/mach-s3c64xx/mach-crag6410.c | |||
@@ -811,6 +811,7 @@ MACHINE_START(WLF_CRAGG_6410, "Wolfson Cragganmore 6410") | |||
811 | .handle_irq = vic_handle_irq, | 811 | .handle_irq = vic_handle_irq, |
812 | .map_io = crag6410_map_io, | 812 | .map_io = crag6410_map_io, |
813 | .init_machine = crag6410_machine_init, | 813 | .init_machine = crag6410_machine_init, |
814 | .init_late = s3c64xx_init_late, | ||
814 | .timer = &s3c24xx_timer, | 815 | .timer = &s3c24xx_timer, |
815 | .restart = s3c64xx_restart, | 816 | .restart = s3c64xx_restart, |
816 | MACHINE_END | 817 | 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 c34c2ab22ead..5aef599ed912 100644 --- a/arch/arm/mach-s3c64xx/mach-mini6410.c +++ b/arch/arm/mach-s3c64xx/mach-mini6410.c | |||
@@ -350,6 +350,7 @@ MACHINE_START(MINI6410, "MINI6410") | |||
350 | .handle_irq = vic_handle_irq, | 350 | .handle_irq = vic_handle_irq, |
351 | .map_io = mini6410_map_io, | 351 | .map_io = mini6410_map_io, |
352 | .init_machine = mini6410_machine_init, | 352 | .init_machine = mini6410_machine_init, |
353 | .init_late = s3c64xx_init_late, | ||
353 | .timer = &s3c24xx_timer, | 354 | .timer = &s3c24xx_timer, |
354 | .restart = s3c64xx_restart, | 355 | .restart = s3c64xx_restart, |
355 | MACHINE_END | 356 | 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 be2a9a22ab74..a88b60feaba9 100644 --- a/arch/arm/mach-s3c64xx/mach-real6410.c +++ b/arch/arm/mach-s3c64xx/mach-real6410.c | |||
@@ -331,6 +331,7 @@ MACHINE_START(REAL6410, "REAL6410") | |||
331 | .handle_irq = vic_handle_irq, | 331 | .handle_irq = vic_handle_irq, |
332 | .map_io = real6410_map_io, | 332 | .map_io = real6410_map_io, |
333 | .init_machine = real6410_machine_init, | 333 | .init_machine = real6410_machine_init, |
334 | .init_late = s3c64xx_init_late, | ||
334 | .timer = &s3c24xx_timer, | 335 | .timer = &s3c24xx_timer, |
335 | .restart = s3c64xx_restart, | 336 | .restart = s3c64xx_restart, |
336 | MACHINE_END | 337 | 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 d55bc96d9582..315a8b4834af 100644 --- a/arch/arm/mach-s3c64xx/mach-smdk6410.c +++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c | |||
@@ -709,6 +709,7 @@ MACHINE_START(SMDK6410, "SMDK6410") | |||
709 | .handle_irq = vic_handle_irq, | 709 | .handle_irq = vic_handle_irq, |
710 | .map_io = smdk6410_map_io, | 710 | .map_io = smdk6410_map_io, |
711 | .init_machine = smdk6410_machine_init, | 711 | .init_machine = smdk6410_machine_init, |
712 | .init_late = s3c64xx_init_late, | ||
712 | .timer = &s3c24xx_timer, | 713 | .timer = &s3c24xx_timer, |
713 | .restart = s3c64xx_restart, | 714 | .restart = s3c64xx_restart, |
714 | MACHINE_END | 715 | 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 e7c2590b75d9..93d62fb215b7 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 cb224a344af0..a99e7e617268 100644 --- a/arch/arm/mach-shmobile/board-ag5evm.c +++ b/arch/arm/mach-shmobile/board-ag5evm.c | |||
@@ -598,5 +598,6 @@ MACHINE_START(AG5EVM, "ag5evm") | |||
598 | .init_irq = sh73a0_init_irq, | 598 | .init_irq = sh73a0_init_irq, |
599 | .handle_irq = gic_handle_irq, | 599 | .handle_irq = gic_handle_irq, |
600 | .init_machine = ag5evm_init, | 600 | .init_machine = ag5evm_init, |
601 | .init_late = shmobile_init_late, | ||
601 | .timer = &shmobile_timer, | 602 | .timer = &shmobile_timer, |
602 | MACHINE_END | 603 | MACHINE_END |
diff --git a/arch/arm/mach-shmobile/board-ap4evb.c b/arch/arm/mach-shmobile/board-ap4evb.c index b56dde2732bb..522866d0cf7e 100644 --- a/arch/arm/mach-shmobile/board-ap4evb.c +++ b/arch/arm/mach-shmobile/board-ap4evb.c | |||
@@ -1440,5 +1440,6 @@ MACHINE_START(AP4EVB, "ap4evb") | |||
1440 | .init_irq = sh7372_init_irq, | 1440 | .init_irq = sh7372_init_irq, |
1441 | .handle_irq = shmobile_handle_irq_intc, | 1441 | .handle_irq = shmobile_handle_irq_intc, |
1442 | .init_machine = ap4evb_init, | 1442 | .init_machine = ap4evb_init, |
1443 | .init_late = shmobile_init_late, | ||
1443 | .timer = &shmobile_timer, | 1444 | .timer = &shmobile_timer, |
1444 | MACHINE_END | 1445 | MACHINE_END |
diff --git a/arch/arm/mach-shmobile/board-bonito.c b/arch/arm/mach-shmobile/board-bonito.c index 81fd95f7f52a..e6b1fd38e72f 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 f49e28abe0ab..4cd438f948a8 100644 --- a/arch/arm/mach-shmobile/board-mackerel.c +++ b/arch/arm/mach-shmobile/board-mackerel.c | |||
@@ -1623,5 +1623,6 @@ MACHINE_START(MACKEREL, "mackerel") | |||
1623 | .init_irq = sh7372_init_irq, | 1623 | .init_irq = sh7372_init_irq, |
1624 | .handle_irq = shmobile_handle_irq_intc, | 1624 | .handle_irq = shmobile_handle_irq_intc, |
1625 | .init_machine = mackerel_init, | 1625 | .init_machine = mackerel_init, |
1626 | .init_late = shmobile_init_late, | ||
1626 | .timer = &shmobile_timer, | 1627 | .timer = &shmobile_timer, |
1627 | MACHINE_END | 1628 | 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 83ad3fe0a75f..2a527c4de36c 100644 --- a/arch/arm/mach-shmobile/include/mach/common.h +++ b/arch/arm/mach-shmobile/include/mach/common.h | |||
@@ -83,4 +83,18 @@ extern void r8a7779_secondary_init(unsigned int cpu); | |||
83 | extern int r8a7779_boot_secondary(unsigned int cpu); | 83 | extern int r8a7779_boot_secondary(unsigned int cpu); |
84 | extern void r8a7779_smp_prepare_cpus(void); | 84 | extern void r8a7779_smp_prepare_cpus(void); |
85 | 85 | ||
86 | extern void shmobile_init_late(void); | ||
87 | |||
88 | #ifdef CONFIG_SUSPEND | ||
89 | int shmobile_suspend_init(void); | ||
90 | #else | ||
91 | static inline int shmobile_suspend_init(void) { return 0; } | ||
92 | #endif | ||
93 | |||
94 | #ifdef CONFIG_CPU_IDLE | ||
95 | int shmobile_cpuidle_init(void); | ||
96 | #else | ||
97 | static inline int shmobile_cpuidle_init(void) { return 0; } | ||
98 | #endif | ||
99 | |||
86 | #endif /* __ARCH_MACH_COMMON_H */ | 100 | #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 0952494f481a..0f0da6c02459 100644 --- a/arch/arm/mach-tegra/board-dt-tegra20.c +++ b/arch/arm/mach-tegra/board-dt-tegra20.c | |||
@@ -142,6 +142,7 @@ DT_MACHINE_START(TEGRA_DT, "nVidia Tegra20 (Flattened Device Tree)") | |||
142 | .handle_irq = gic_handle_irq, | 142 | .handle_irq = gic_handle_irq, |
143 | .timer = &tegra_timer, | 143 | .timer = &tegra_timer, |
144 | .init_machine = tegra_dt_init, | 144 | .init_machine = tegra_dt_init, |
145 | .init_late = tegra_init_late, | ||
145 | .restart = tegra_assert_system_reset, | 146 | .restart = tegra_assert_system_reset, |
146 | .dt_compat = tegra20_dt_board_compat, | 147 | .dt_compat = tegra20_dt_board_compat, |
147 | MACHINE_END | 148 | MACHINE_END |
diff --git a/arch/arm/mach-tegra/board-dt-tegra30.c b/arch/arm/mach-tegra/board-dt-tegra30.c index 5f7c03e972f3..09d21b27bf2f 100644 --- a/arch/arm/mach-tegra/board-dt-tegra30.c +++ b/arch/arm/mach-tegra/board-dt-tegra30.c | |||
@@ -80,6 +80,7 @@ DT_MACHINE_START(TEGRA30_DT, "NVIDIA Tegra30 (Flattened Device Tree)") | |||
80 | .handle_irq = gic_handle_irq, | 80 | .handle_irq = gic_handle_irq, |
81 | .timer = &tegra_timer, | 81 | .timer = &tegra_timer, |
82 | .init_machine = tegra30_dt_init, | 82 | .init_machine = tegra30_dt_init, |
83 | .init_late = tegra_init_late, | ||
83 | .restart = tegra_assert_system_reset, | 84 | .restart = tegra_assert_system_reset, |
84 | .dt_compat = tegra30_dt_board_compat, | 85 | .dt_compat = tegra30_dt_board_compat, |
85 | MACHINE_END | 86 | MACHINE_END |
diff --git a/arch/arm/mach-tegra/board-harmony.c b/arch/arm/mach-tegra/board-harmony.c index c00aadb01e09..987115aa4d96 100644 --- a/arch/arm/mach-tegra/board-harmony.c +++ b/arch/arm/mach-tegra/board-harmony.c | |||
@@ -191,5 +191,6 @@ MACHINE_START(HARMONY, "harmony") | |||
191 | .handle_irq = gic_handle_irq, | 191 | .handle_irq = gic_handle_irq, |
192 | .timer = &tegra_timer, | 192 | .timer = &tegra_timer, |
193 | .init_machine = tegra_harmony_init, | 193 | .init_machine = tegra_harmony_init, |
194 | .init_late = tegra_init_late, | ||
194 | .restart = tegra_assert_system_reset, | 195 | .restart = tegra_assert_system_reset, |
195 | MACHINE_END | 196 | MACHINE_END |
diff --git a/arch/arm/mach-tegra/board-paz00.c b/arch/arm/mach-tegra/board-paz00.c index 330afdfa2475..2e8a4c61afb2 100644 --- a/arch/arm/mach-tegra/board-paz00.c +++ b/arch/arm/mach-tegra/board-paz00.c | |||
@@ -221,5 +221,6 @@ MACHINE_START(PAZ00, "Toshiba AC100 / Dynabook AZ") | |||
221 | .handle_irq = gic_handle_irq, | 221 | .handle_irq = gic_handle_irq, |
222 | .timer = &tegra_timer, | 222 | .timer = &tegra_timer, |
223 | .init_machine = tegra_paz00_init, | 223 | .init_machine = tegra_paz00_init, |
224 | .init_late = tegra_init_late, | ||
224 | .restart = tegra_assert_system_reset, | 225 | .restart = tegra_assert_system_reset, |
225 | MACHINE_END | 226 | MACHINE_END |
diff --git a/arch/arm/mach-tegra/board-seaboard.c b/arch/arm/mach-tegra/board-seaboard.c index d669847f0485..273eaaaf271a 100644 --- a/arch/arm/mach-tegra/board-seaboard.c +++ b/arch/arm/mach-tegra/board-seaboard.c | |||
@@ -289,6 +289,7 @@ MACHINE_START(SEABOARD, "seaboard") | |||
289 | .handle_irq = gic_handle_irq, | 289 | .handle_irq = gic_handle_irq, |
290 | .timer = &tegra_timer, | 290 | .timer = &tegra_timer, |
291 | .init_machine = tegra_seaboard_init, | 291 | .init_machine = tegra_seaboard_init, |
292 | .init_late = tegra_init_late, | ||
292 | .restart = tegra_assert_system_reset, | 293 | .restart = tegra_assert_system_reset, |
293 | MACHINE_END | 294 | MACHINE_END |
294 | 295 | ||
@@ -300,6 +301,7 @@ MACHINE_START(KAEN, "kaen") | |||
300 | .handle_irq = gic_handle_irq, | 301 | .handle_irq = gic_handle_irq, |
301 | .timer = &tegra_timer, | 302 | .timer = &tegra_timer, |
302 | .init_machine = tegra_kaen_init, | 303 | .init_machine = tegra_kaen_init, |
304 | .init_late = tegra_init_late, | ||
303 | .restart = tegra_assert_system_reset, | 305 | .restart = tegra_assert_system_reset, |
304 | MACHINE_END | 306 | MACHINE_END |
305 | 307 | ||
@@ -311,5 +313,6 @@ MACHINE_START(WARIO, "wario") | |||
311 | .handle_irq = gic_handle_irq, | 313 | .handle_irq = gic_handle_irq, |
312 | .timer = &tegra_timer, | 314 | .timer = &tegra_timer, |
313 | .init_machine = tegra_wario_init, | 315 | .init_machine = tegra_wario_init, |
316 | .init_late = tegra_init_late, | ||
314 | .restart = tegra_assert_system_reset, | 317 | .restart = tegra_assert_system_reset, |
315 | MACHINE_END | 318 | MACHINE_END |
diff --git a/arch/arm/mach-tegra/board-trimslice.c b/arch/arm/mach-tegra/board-trimslice.c index cd52820a3e37..0a2a0e5bd39e 100644 --- a/arch/arm/mach-tegra/board-trimslice.c +++ b/arch/arm/mach-tegra/board-trimslice.c | |||
@@ -180,5 +180,6 @@ MACHINE_START(TRIMSLICE, "trimslice") | |||
180 | .handle_irq = gic_handle_irq, | 180 | .handle_irq = gic_handle_irq, |
181 | .timer = &tegra_timer, | 181 | .timer = &tegra_timer, |
182 | .init_machine = tegra_trimslice_init, | 182 | .init_machine = tegra_trimslice_init, |
183 | .init_late = tegra_init_late, | ||
183 | .restart = tegra_assert_system_reset, | 184 | .restart = tegra_assert_system_reset, |
184 | MACHINE_END | 185 | 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 22df10fb9972..c90ec9333f96 100644 --- a/arch/arm/mach-tegra/common.c +++ b/arch/arm/mach-tegra/common.c | |||
@@ -132,3 +132,9 @@ void __init tegra30_init_early(void) | |||
132 | tegra_powergate_init(); | 132 | tegra_powergate_init(); |
133 | } | 133 | } |
134 | #endif | 134 | #endif |
135 | |||
136 | void __init tegra_init_late(void) | ||
137 | { | ||
138 | tegra_clk_debugfs_init(); | ||
139 | tegra_powergate_debugfs_init(); | ||
140 | } | ||
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 77d03c1fbd04..348ebd959399 100644 --- a/arch/arm/mach-ux500/board-mop500.c +++ b/arch/arm/mach-ux500/board-mop500.c | |||
@@ -722,6 +722,7 @@ MACHINE_START(U8500, "ST-Ericsson MOP500 platform") | |||
722 | .timer = &ux500_timer, | 722 | .timer = &ux500_timer, |
723 | .handle_irq = gic_handle_irq, | 723 | .handle_irq = gic_handle_irq, |
724 | .init_machine = mop500_init_machine, | 724 | .init_machine = mop500_init_machine, |
725 | .init_late = ux500_init_late, | ||
725 | MACHINE_END | 726 | MACHINE_END |
726 | 727 | ||
727 | MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+") | 728 | MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+") |
@@ -731,6 +732,7 @@ MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+") | |||
731 | .timer = &ux500_timer, | 732 | .timer = &ux500_timer, |
732 | .handle_irq = gic_handle_irq, | 733 | .handle_irq = gic_handle_irq, |
733 | .init_machine = hrefv60_init_machine, | 734 | .init_machine = hrefv60_init_machine, |
735 | .init_late = ux500_init_late, | ||
734 | MACHINE_END | 736 | MACHINE_END |
735 | 737 | ||
736 | MACHINE_START(SNOWBALL, "Calao Systems Snowball platform") | 738 | MACHINE_START(SNOWBALL, "Calao Systems Snowball platform") |
@@ -741,6 +743,7 @@ MACHINE_START(SNOWBALL, "Calao Systems Snowball platform") | |||
741 | .timer = &ux500_timer, | 743 | .timer = &ux500_timer, |
742 | .handle_irq = gic_handle_irq, | 744 | .handle_irq = gic_handle_irq, |
743 | .init_machine = snowball_init_machine, | 745 | .init_machine = snowball_init_machine, |
746 | .init_late = ux500_init_late, | ||
744 | MACHINE_END | 747 | MACHINE_END |
745 | 748 | ||
746 | #ifdef CONFIG_MACH_UX500_DT | 749 | #ifdef CONFIG_MACH_UX500_DT |
@@ -830,6 +833,7 @@ DT_MACHINE_START(U8500_DT, "ST-Ericsson U8500 platform (Device Tree Support)") | |||
830 | .timer = &ux500_timer, | 833 | .timer = &ux500_timer, |
831 | .handle_irq = gic_handle_irq, | 834 | .handle_irq = gic_handle_irq, |
832 | .init_machine = u8500_init_machine, | 835 | .init_machine = u8500_init_machine, |
836 | .init_late = ux500_init_late, | ||
833 | .dt_compat = u8500_dt_board_compat, | 837 | .dt_compat = u8500_dt_board_compat, |
834 | MACHINE_END | 838 | MACHINE_END |
835 | #endif | 839 | #endif |
diff --git a/arch/arm/mach-ux500/clock.c b/arch/arm/mach-ux500/clock.c index ec35f0aa5665..ce00f5ee14ba 100644 --- a/arch/arm/mach-ux500/clock.c +++ b/arch/arm/mach-ux500/clock.c | |||
@@ -633,7 +633,7 @@ static int clk_debugfs_register(struct clk *c) | |||
633 | return 0; | 633 | return 0; |
634 | } | 634 | } |
635 | 635 | ||
636 | static int __init clk_debugfs_init(void) | 636 | int __init clk_debugfs_init(void) |
637 | { | 637 | { |
638 | struct clk *c; | 638 | struct clk *c; |
639 | struct dentry *d; | 639 | struct dentry *d; |
@@ -655,7 +655,6 @@ err_out: | |||
655 | return err; | 655 | return err; |
656 | } | 656 | } |
657 | 657 | ||
658 | late_initcall(clk_debugfs_init); | ||
659 | #endif /* defined(CONFIG_DEBUG_FS) */ | 658 | #endif /* defined(CONFIG_DEBUG_FS) */ |
660 | 659 | ||
661 | unsigned long clk_smp_twd_rate = 500000000; | 660 | unsigned long clk_smp_twd_rate = 500000000; |
@@ -694,12 +693,11 @@ static struct notifier_block clk_twd_cpufreq_nb = { | |||
694 | .notifier_call = clk_twd_cpufreq_transition, | 693 | .notifier_call = clk_twd_cpufreq_transition, |
695 | }; | 694 | }; |
696 | 695 | ||
697 | static int clk_init_smp_twd_cpufreq(void) | 696 | int clk_init_smp_twd_cpufreq(void) |
698 | { | 697 | { |
699 | return cpufreq_register_notifier(&clk_twd_cpufreq_nb, | 698 | return cpufreq_register_notifier(&clk_twd_cpufreq_nb, |
700 | CPUFREQ_TRANSITION_NOTIFIER); | 699 | CPUFREQ_TRANSITION_NOTIFIER); |
701 | } | 700 | } |
702 | late_initcall(clk_init_smp_twd_cpufreq); | ||
703 | 701 | ||
704 | #endif | 702 | #endif |
705 | 703 | ||
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 d11f3892a27d..9856c5788815 100644 --- a/arch/arm/mach-ux500/cpu.c +++ b/arch/arm/mach-ux500/cpu.c | |||
@@ -67,6 +67,12 @@ void __init ux500_init_irq(void) | |||
67 | clk_init(); | 67 | clk_init(); |
68 | } | 68 | } |
69 | 69 | ||
70 | void __init ux500_init_late(void) | ||
71 | { | ||
72 | clk_debugfs_init(); | ||
73 | clk_init_smp_twd_cpufreq(); | ||
74 | } | ||
75 | |||
70 | static const char * __init ux500_get_machine(void) | 76 | static const char * __init ux500_get_machine(void) |
71 | { | 77 | { |
72 | return kasprintf(GFP_KERNEL, "DB%4x", dbx500_partnumber()); | 78 | 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 3dc00ffa7bfa..7b5d865ac591 100644 --- a/arch/arm/mach-ux500/include/mach/setup.h +++ b/arch/arm/mach-ux500/include/mach/setup.h | |||
@@ -22,6 +22,7 @@ extern struct device * __init u5500_init_devices(void); | |||
22 | extern struct device * __init u8500_init_devices(void); | 22 | extern struct device * __init u8500_init_devices(void); |
23 | 23 | ||
24 | extern void __init ux500_init_irq(void); | 24 | extern void __init ux500_init_irq(void); |
25 | extern void __init ux500_init_late(void); | ||
25 | 26 | ||
26 | extern void __init u5500_sdi_init(struct device *parent); | 27 | extern void __init u5500_sdi_init(struct device *parent); |
27 | 28 | ||
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 |