diff options
| author | Olof Johansson <olof@lixom.net> | 2012-05-11 03:49:56 -0400 |
|---|---|---|
| committer | Olof Johansson <olof@lixom.net> | 2012-05-11 03:49:56 -0400 |
| commit | 80b9abf973462499c1a0110df47f62cc90361e2c (patch) | |
| tree | 4e67448ba08df9a68713611b93e9f2635bf8bb26 | |
| parent | d48b97b403d23f6df0b990cee652bdf9a52337a3 (diff) | |
| parent | a010bc2b9e2ccc0b59057d4cc136d48a1f7cebcb (diff) | |
Merge branch 'clean/late_initcall_v2' of git://git.linaro.org/people/shawnguo/linux-2.6 into staging/cleanup
By Shawn Guo
via Shawn Guo
* 'clean/late_initcall_v2' of git://git.linaro.org/people/shawnguo/linux-2.6:
ARM: ux500: use machine specific hook for late init
ARM: tegra: use machine specific hook for late init
ARM: shmobile: use machine specific hook for late init
ARM: sa1100: use machine specific hook for late init
ARM: s3c64xx: use machine specific hook for late init
ARM: prima2: use machine specific hook for late init
ARM: pnx4008: use machine specific hook for late init
ARM: omap2: use machine specific hook for late init
ARM: omap1: use machine specific hook for late init
ARM: msm: use machine specific hook for late init
ARM: imx: use machine specific hook for late init
ARM: exynos: use machine specific hook for late init
ARM: ep93xx: use machine specific hook for late init
ARM: davinci: use machine specific hook for late init
ARM: provide a late_initcall hook for platform initialization
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 |
