]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge tag 'cleanup-initcall' of git://git.kernel.org/pub/scm/linux/kernel/git/arm...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 26 May 2012 20:14:01 +0000 (13:14 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 26 May 2012 20:14:01 +0000 (13:14 -0700)
Pull sweeping late_initcall cleanup for arm-soc from Olof Johansson:
 "This is a patch series from Shawn Guo that moves from individual
  late_initcalls() to using a member in the machine structure to invoke
  a platform's late initcalls.

  This cleanup is a step in the move towards multiplatform kernels since
  it would reduce the need to check for compatible platforms in each and
  every initcall."

Fix up trivial conflicts in arch/arm/mach-{exynos/mach-universal_c210.c,
imx/mach-cpuimx51.c, omap2/board-generic.c} due to changes nearby (and,
in the case of cpuimx51.c the board support being deleted)

* tag 'cleanup-initcall' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
  ARM: ux500: use machine specific hook for late init
  ARM: tegra: use machine specific hook for late init
  ARM: shmobile: use machine specific hook for late init
  ARM: sa1100: use machine specific hook for late init
  ARM: s3c64xx: use machine specific hook for late init
  ARM: prima2: use machine specific hook for late init
  ARM: pnx4008: use machine specific hook for late init
  ARM: omap2: use machine specific hook for late init
  ARM: omap1: use machine specific hook for late init
  ARM: msm: use machine specific hook for late init
  ARM: imx: use machine specific hook for late init
  ARM: exynos: use machine specific hook for late init
  ARM: ep93xx: use machine specific hook for late init
  ARM: davinci: use machine specific hook for late init
  ARM: provide a late_initcall hook for platform initialization

178 files changed:
arch/arm/include/asm/mach/arch.h
arch/arm/kernel/setup.c
arch/arm/mach-davinci/board-da830-evm.c
arch/arm/mach-davinci/board-da850-evm.c
arch/arm/mach-davinci/board-dm355-evm.c
arch/arm/mach-davinci/board-dm355-leopard.c
arch/arm/mach-davinci/board-dm365-evm.c
arch/arm/mach-davinci/board-dm644x-evm.c
arch/arm/mach-davinci/board-dm646x-evm.c
arch/arm/mach-davinci/board-mityomapl138.c
arch/arm/mach-davinci/board-neuros-osd2.c
arch/arm/mach-davinci/board-omapl138-hawk.c
arch/arm/mach-davinci/board-sffsdr.c
arch/arm/mach-davinci/board-tnetv107x-evm.c
arch/arm/mach-davinci/clock.c
arch/arm/mach-davinci/common.c
arch/arm/mach-davinci/cpufreq.c
arch/arm/mach-davinci/include/mach/common.h
arch/arm/mach-davinci/pm.c
arch/arm/mach-ep93xx/adssphere.c
arch/arm/mach-ep93xx/core.c
arch/arm/mach-ep93xx/crunch.c
arch/arm/mach-ep93xx/edb93xx.c
arch/arm/mach-ep93xx/gesbc9312.c
arch/arm/mach-ep93xx/include/mach/platform.h
arch/arm/mach-ep93xx/micro9.c
arch/arm/mach-ep93xx/simone.c
arch/arm/mach-ep93xx/snappercl15.c
arch/arm/mach-ep93xx/ts72xx.c
arch/arm/mach-ep93xx/vision_ep9307.c
arch/arm/mach-exynos/common.c
arch/arm/mach-exynos/common.h
arch/arm/mach-exynos/mach-armlex4210.c
arch/arm/mach-exynos/mach-exynos4-dt.c
arch/arm/mach-exynos/mach-exynos5-dt.c
arch/arm/mach-exynos/mach-nuri.c
arch/arm/mach-exynos/mach-origen.c
arch/arm/mach-exynos/mach-smdk4x12.c
arch/arm/mach-exynos/mach-smdkv310.c
arch/arm/mach-exynos/mach-universal_c210.c
arch/arm/mach-exynos/pm_domains.c
arch/arm/mach-imx/cpu-imx5.c
arch/arm/mach-imx/imx51-dt.c
arch/arm/mach-imx/mach-cpuimx51sd.c
arch/arm/mach-imx/mach-mx51_3ds.c
arch/arm/mach-imx/mach-mx51_babbage.c
arch/arm/mach-imx/mach-mx51_efikamx.c
arch/arm/mach-imx/mach-mx51_efikasb.c
arch/arm/mach-imx/mach-pcm037.c
arch/arm/mach-imx/mach-pcm037_eet.c
arch/arm/mach-imx/mm-imx5.c
arch/arm/mach-imx/pcm037.h
arch/arm/mach-msm/board-halibut.c
arch/arm/mach-msm/board-mahimahi.c
arch/arm/mach-msm/board-msm7x27.c
arch/arm/mach-msm/board-msm7x30.c
arch/arm/mach-msm/board-msm8960.c
arch/arm/mach-msm/board-msm8x60.c
arch/arm/mach-msm/board-qsd8x50.c
arch/arm/mach-msm/board-sapphire.c
arch/arm/mach-msm/board-trout.c
arch/arm/mach-msm/include/mach/board.h
arch/arm/mach-msm/smd_debug.c
arch/arm/mach-omap1/board-ams-delta.c
arch/arm/mach-omap1/board-fsample.c
arch/arm/mach-omap1/board-generic.c
arch/arm/mach-omap1/board-h2.c
arch/arm/mach-omap1/board-h3.c
arch/arm/mach-omap1/board-htcherald.c
arch/arm/mach-omap1/board-innovator.c
arch/arm/mach-omap1/board-nokia770.c
arch/arm/mach-omap1/board-osk.c
arch/arm/mach-omap1/board-palmte.c
arch/arm/mach-omap1/board-palmtt.c
arch/arm/mach-omap1/board-palmz71.c
arch/arm/mach-omap1/board-perseus2.c
arch/arm/mach-omap1/board-sx1.c
arch/arm/mach-omap1/board-voiceblue.c
arch/arm/mach-omap1/common.h
arch/arm/mach-omap1/io.c
arch/arm/mach-omap1/serial.c
arch/arm/mach-omap2/board-2430sdp.c
arch/arm/mach-omap2/board-3430sdp.c
arch/arm/mach-omap2/board-3630sdp.c
arch/arm/mach-omap2/board-4430sdp.c
arch/arm/mach-omap2/board-am3517crane.c
arch/arm/mach-omap2/board-am3517evm.c
arch/arm/mach-omap2/board-apollon.c
arch/arm/mach-omap2/board-cm-t35.c
arch/arm/mach-omap2/board-cm-t3517.c
arch/arm/mach-omap2/board-devkit8000.c
arch/arm/mach-omap2/board-generic.c
arch/arm/mach-omap2/board-h4.c
arch/arm/mach-omap2/board-igep0020.c
arch/arm/mach-omap2/board-ldp.c
arch/arm/mach-omap2/board-n8x0.c
arch/arm/mach-omap2/board-omap3beagle.c
arch/arm/mach-omap2/board-omap3evm.c
arch/arm/mach-omap2/board-omap3logic.c
arch/arm/mach-omap2/board-omap3pandora.c
arch/arm/mach-omap2/board-omap3stalker.c
arch/arm/mach-omap2/board-omap3touchbook.c
arch/arm/mach-omap2/board-omap4panda.c
arch/arm/mach-omap2/board-overo.c
arch/arm/mach-omap2/board-rm680.c
arch/arm/mach-omap2/board-rx51.c
arch/arm/mach-omap2/board-ti8168evm.c
arch/arm/mach-omap2/board-zoom.c
arch/arm/mach-omap2/common.h
arch/arm/mach-omap2/io.c
arch/arm/mach-omap2/mux.c
arch/arm/mach-omap2/pm.c
arch/arm/mach-omap2/pm24xx.c
arch/arm/mach-omap2/pm34xx.c
arch/arm/mach-omap2/pm44xx.c
arch/arm/mach-pnx4008/core.c
arch/arm/mach-pnx4008/pm.c
arch/arm/mach-prima2/common.h
arch/arm/mach-prima2/pm.c
arch/arm/mach-prima2/prima2.c
arch/arm/mach-s3c64xx/common.c
arch/arm/mach-s3c64xx/common.h
arch/arm/mach-s3c64xx/mach-anw6410.c
arch/arm/mach-s3c64xx/mach-crag6410.c
arch/arm/mach-s3c64xx/mach-hmt.c
arch/arm/mach-s3c64xx/mach-mini6410.c
arch/arm/mach-s3c64xx/mach-ncp.c
arch/arm/mach-s3c64xx/mach-real6410.c
arch/arm/mach-s3c64xx/mach-smartq5.c
arch/arm/mach-s3c64xx/mach-smartq7.c
arch/arm/mach-s3c64xx/mach-smdk6400.c
arch/arm/mach-s3c64xx/mach-smdk6410.c
arch/arm/mach-s3c64xx/pm.c
arch/arm/mach-sa1100/assabet.c
arch/arm/mach-sa1100/badge4.c
arch/arm/mach-sa1100/cerf.c
arch/arm/mach-sa1100/collie.c
arch/arm/mach-sa1100/generic.c
arch/arm/mach-sa1100/generic.h
arch/arm/mach-sa1100/h3100.c
arch/arm/mach-sa1100/h3600.c
arch/arm/mach-sa1100/hackkit.c
arch/arm/mach-sa1100/jornada720.c
arch/arm/mach-sa1100/lart.c
arch/arm/mach-sa1100/nanoengine.c
arch/arm/mach-sa1100/pleb.c
arch/arm/mach-sa1100/pm.c
arch/arm/mach-sa1100/shannon.c
arch/arm/mach-sa1100/simpad.c
arch/arm/mach-shmobile/Makefile
arch/arm/mach-shmobile/board-ag5evm.c
arch/arm/mach-shmobile/board-ap4evb.c
arch/arm/mach-shmobile/board-bonito.c
arch/arm/mach-shmobile/board-g3evm.c
arch/arm/mach-shmobile/board-g4evm.c
arch/arm/mach-shmobile/board-kota2.c
arch/arm/mach-shmobile/board-mackerel.c
arch/arm/mach-shmobile/board-marzen.c
arch/arm/mach-shmobile/common.c [new file with mode: 0644]
arch/arm/mach-shmobile/cpuidle.c
arch/arm/mach-shmobile/include/mach/common.h
arch/arm/mach-shmobile/suspend.c
arch/arm/mach-tegra/board-dt-tegra20.c
arch/arm/mach-tegra/board-dt-tegra30.c
arch/arm/mach-tegra/board-harmony.c
arch/arm/mach-tegra/board-paz00.c
arch/arm/mach-tegra/board-seaboard.c
arch/arm/mach-tegra/board-trimslice.c
arch/arm/mach-tegra/board.h
arch/arm/mach-tegra/clock.c
arch/arm/mach-tegra/common.c
arch/arm/mach-tegra/powergate.c
arch/arm/mach-ux500/board-mop500.c
arch/arm/mach-ux500/clock.c
arch/arm/mach-ux500/clock.h
arch/arm/mach-ux500/cpu.c
arch/arm/mach-ux500/include/mach/setup.h
arch/arm/plat-mxc/include/mach/common.h

index d7692cafde7fdd3d0b4e297620fbf2dd45d611d6..0b1c94b8c65226a85b2a8e696ec51c7cfaea6527 100644 (file)
@@ -43,6 +43,7 @@ struct machine_desc {
        void                    (*init_irq)(void);
        struct sys_timer        *timer;         /* system tick timer    */
        void                    (*init_machine)(void);
+       void                    (*init_late)(void);
 #ifdef CONFIG_MULTI_IRQ_HANDLER
        void                    (*handle_irq)(struct pt_regs *);
 #endif
index 1b3096dfb964f8b29554ef966c9371494ccd6596..e15d83bb4ea378c1316db6a7d705eab30248a98b 100644 (file)
@@ -801,6 +801,14 @@ static int __init customize_machine(void)
 }
 arch_initcall(customize_machine);
 
+static int __init init_machine_late(void)
+{
+       if (machine_desc->init_late)
+               machine_desc->init_late();
+       return 0;
+}
+late_initcall(init_machine_late);
+
 #ifdef CONFIG_KEXEC
 static inline unsigned long long get_total_mem(void)
 {
index dc1afe5be20cc3d305c178faaec0bfd1633e4e3f..0031864e7f116908b23b94a0a7a1df8d13e33b69 100644 (file)
@@ -681,6 +681,7 @@ MACHINE_START(DAVINCI_DA830_EVM, "DaVinci DA830/OMAP-L137/AM17x EVM")
        .init_irq       = cp_intc_init,
        .timer          = &davinci_timer,
        .init_machine   = da830_evm_init,
+       .init_late      = davinci_init_late,
        .dma_zone_size  = SZ_128M,
        .restart        = da8xx_restart,
 MACHINE_END
index 09f61073c8d9993ea0df99fc1c991d5890c4786e..0149fb453be3cd0f83b48cc4290d02d35038925c 100644 (file)
@@ -1411,6 +1411,7 @@ MACHINE_START(DAVINCI_DA850_EVM, "DaVinci DA850/OMAP-L138/AM18x EVM")
        .init_irq       = cp_intc_init,
        .timer          = &davinci_timer,
        .init_machine   = da850_evm_init,
+       .init_late      = davinci_init_late,
        .dma_zone_size  = SZ_128M,
        .restart        = da8xx_restart,
 MACHINE_END
index 82ed753fb36088936014a434c85378890647aefa..1c7b1f46a8f3c3c42284c6e954526fe8b555fa2b 100644 (file)
@@ -357,6 +357,7 @@ MACHINE_START(DAVINCI_DM355_EVM, "DaVinci DM355 EVM")
        .init_irq     = davinci_irq_init,
        .timer        = &davinci_timer,
        .init_machine = dm355_evm_init,
+       .init_late      = davinci_init_late,
        .dma_zone_size  = SZ_128M,
        .restart        = davinci_restart,
 MACHINE_END
index d74a8b3445fbc2cfd6958248cadf6fd04398000c..8e7703213b0822102c8475afe9405865ec6ba8f6 100644 (file)
@@ -276,6 +276,7 @@ MACHINE_START(DM355_LEOPARD, "DaVinci DM355 leopard")
        .init_irq     = davinci_irq_init,
        .timer        = &davinci_timer,
        .init_machine = dm355_leopard_init,
+       .init_late      = davinci_init_late,
        .dma_zone_size  = SZ_128M,
        .restart        = davinci_restart,
 MACHINE_END
index 5bce2b83bb4fcde59938104b12f76caae6de8594..688a9c556dc9081e518627095ad94f62724a98ad 100644 (file)
@@ -618,6 +618,7 @@ MACHINE_START(DAVINCI_DM365_EVM, "DaVinci DM365 EVM")
        .init_irq       = davinci_irq_init,
        .timer          = &davinci_timer,
        .init_machine   = dm365_evm_init,
+       .init_late      = davinci_init_late,
        .dma_zone_size  = SZ_128M,
        .restart        = davinci_restart,
 MACHINE_END
index 3683306e02453e4d0bf5feb8b943c79a031745b8..d34ed55912b2efd1217a0cb8d5a84bc5b271e232 100644 (file)
@@ -825,6 +825,7 @@ MACHINE_START(DAVINCI_EVM, "DaVinci DM644x EVM")
        .init_irq     = davinci_irq_init,
        .timer        = &davinci_timer,
        .init_machine = davinci_evm_init,
+       .init_late      = davinci_init_late,
        .dma_zone_size  = SZ_128M,
        .restart        = davinci_restart,
 MACHINE_END
index d72ab948d6309a26f7b79fdef5208d7e0ca6f88a..958679a20e13d3ec018e5b974ae35e1e17d400c0 100644 (file)
@@ -788,6 +788,7 @@ MACHINE_START(DAVINCI_DM6467_EVM, "DaVinci DM646x EVM")
        .init_irq     = davinci_irq_init,
        .timer        = &davinci_timer,
        .init_machine = evm_init,
+       .init_late      = davinci_init_late,
        .dma_zone_size  = SZ_128M,
        .restart        = davinci_restart,
 MACHINE_END
@@ -798,6 +799,7 @@ MACHINE_START(DAVINCI_DM6467TEVM, "DaVinci DM6467T EVM")
        .init_irq     = davinci_irq_init,
        .timer        = &davinci_timer,
        .init_machine = evm_init,
+       .init_late      = davinci_init_late,
        .dma_zone_size  = SZ_128M,
        .restart        = davinci_restart,
 MACHINE_END
index 672d820e2aa4c73d93fe128cd233d99ae2fa8eaa..beecde3a1d2f9a830362cb89aa9d6e7a249b9ae6 100644 (file)
@@ -572,6 +572,7 @@ MACHINE_START(MITYOMAPL138, "MityDSP-L138/MityARM-1808")
        .init_irq       = cp_intc_init,
        .timer          = &davinci_timer,
        .init_machine   = mityomapl138_init,
+       .init_late      = davinci_init_late,
        .dma_zone_size  = SZ_128M,
        .restart        = da8xx_restart,
 MACHINE_END
index a772bb45570a7e92de29de7aa70a1a2f4250951f..5de69f2fcca9fec965fc300b506056c4a1f29e01 100644 (file)
@@ -278,6 +278,7 @@ MACHINE_START(NEUROS_OSD2, "Neuros OSD2")
        .init_irq       = davinci_irq_init,
        .timer          = &davinci_timer,
        .init_machine = davinci_ntosd2_init,
+       .init_late      = davinci_init_late,
        .dma_zone_size  = SZ_128M,
        .restart        = davinci_restart,
 MACHINE_END
index 45e815760a27fd0cfc0f2965590eb90a1779b240..dc1208e9e664649718f2e2f4935cd5e9cc5dc86e 100644 (file)
@@ -343,6 +343,7 @@ MACHINE_START(OMAPL138_HAWKBOARD, "AM18x/OMAP-L138 Hawkboard")
        .init_irq       = cp_intc_init,
        .timer          = &davinci_timer,
        .init_machine   = omapl138_hawk_init,
+       .init_late      = davinci_init_late,
        .dma_zone_size  = SZ_128M,
        .restart        = da8xx_restart,
 MACHINE_END
index 76e675096104d8edc85c664d776bf341327909a6..9078acf94bacfe211c8ec3ff24a427eae6f11895 100644 (file)
@@ -157,6 +157,7 @@ MACHINE_START(SFFSDR, "Lyrtech SFFSDR")
        .init_irq     = davinci_irq_init,
        .timer        = &davinci_timer,
        .init_machine = davinci_sffsdr_init,
+       .init_late      = davinci_init_late,
        .dma_zone_size  = SZ_128M,
        .restart        = davinci_restart,
 MACHINE_END
index 5f14e30b00d896a79c83ded76929543c956fb93f..ac4e003ad86336e61cb4774a0934f437bbfdfaca 100644 (file)
@@ -282,6 +282,7 @@ MACHINE_START(TNETV107X, "TNETV107X EVM")
        .init_irq       = cp_intc_init,
        .timer          = &davinci_timer,
        .init_machine   = tnetv107x_evm_board_init,
+       .init_late      = davinci_init_late,
        .dma_zone_size  = SZ_128M,
        .restart        = tnetv107x_restart,
 MACHINE_END
index 008772e3b84321463c850c272065f4b0bc2d341a..34668ead53c73b1c70ee0b09261ba74ff8a3627b 100644 (file)
@@ -213,7 +213,7 @@ EXPORT_SYMBOL(clk_unregister);
 /*
  * Disable any unused clocks left on by the bootloader
  */
-static int __init clk_disable_unused(void)
+int __init davinci_clk_disable_unused(void)
 {
        struct clk *ck;
 
@@ -237,7 +237,6 @@ static int __init clk_disable_unused(void)
 
        return 0;
 }
-late_initcall(clk_disable_unused);
 #endif
 
 static unsigned long clk_sysclk_recalc(struct clk *clk)
index cb9b2e47510c8de2118bd80364f4b60b4308e07b..64b0f65a8639aa919173b597c8134e55192972b6 100644 (file)
@@ -117,3 +117,10 @@ void __init davinci_common_init(struct davinci_soc_info *soc_info)
 err:
        panic("davinci_common_init: SoC Initialization failed\n");
 }
+
+void __init davinci_init_late(void)
+{
+       davinci_cpufreq_init();
+       davinci_pm_init();
+       davinci_clk_disable_unused();
+}
index 031048fec9f5e2d175707eea2c4ed0d2edd395a2..4729eaab0f403e90c83ae2799d37b1521831efb1 100644 (file)
@@ -240,10 +240,9 @@ static struct platform_driver davinci_cpufreq_driver = {
        .remove = __exit_p(davinci_cpufreq_remove),
 };
 
-static int __init davinci_cpufreq_init(void)
+int __init davinci_cpufreq_init(void)
 {
        return platform_driver_probe(&davinci_cpufreq_driver,
                                                        davinci_cpufreq_probe);
 }
-late_initcall(davinci_cpufreq_init);
 
index 5cd39a4e0c966d4823d2c438edf8376216f35ae6..bdc4aa8e672ac98349d10c9059e063b1294e40dc 100644 (file)
@@ -84,6 +84,25 @@ extern struct davinci_soc_info davinci_soc_info;
 extern void davinci_common_init(struct davinci_soc_info *soc_info);
 extern void davinci_init_ide(void);
 void davinci_restart(char mode, const char *cmd);
+void davinci_init_late(void);
+
+#ifdef CONFIG_DAVINCI_RESET_CLOCKS
+int davinci_clk_disable_unused(void);
+#else
+static inline int davinci_clk_disable_unused(void) { return 0; }
+#endif
+
+#ifdef CONFIG_CPU_FREQ
+int davinci_cpufreq_init(void);
+#else
+static inline int davinci_cpufreq_init(void) { return 0; }
+#endif
+
+#ifdef CONFIG_SUSPEND
+int davinci_pm_init(void);
+#else
+static inline int davinci_pm_init(void) { return 0; }
+#endif
 
 /* standard place to map on-chip SRAMs; they *may* support DMA */
 #define SRAM_VIRT      0xfffe0000
index 04c49f7543ef0df4a30a52c5c862f623222a93cd..eb8360b33aa9d4528a73562c585186949fe38657 100644 (file)
@@ -152,8 +152,7 @@ static struct platform_driver davinci_pm_driver = {
        .remove = __exit_p(davinci_pm_remove),
 };
 
-static int __init davinci_pm_init(void)
+int __init davinci_pm_init(void)
 {
        return platform_driver_probe(&davinci_pm_driver, davinci_pm_probe);
 }
-late_initcall(davinci_pm_init);
index 2d45947a3034b260bede63835a0db4606154c1cd..a472777e9eba4523acd0386af0595715c9bb16ee 100644 (file)
@@ -41,5 +41,6 @@ MACHINE_START(ADSSPHERE, "ADS Sphere board")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = adssphere_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
index ad1a91ab6acd9978b4418b051c3b68cf90cf1565..4dd07a0e3604a19498cf4fa507b544a666e2d8a5 100644 (file)
@@ -834,3 +834,8 @@ void ep93xx_restart(char mode, const char *cmd)
        while (1)
                ;
 }
+
+void __init ep93xx_init_late(void)
+{
+       crunch_init();
+}
index 74753e2df60357c5375b6f243fbe4529f2466097..a4a2ab9648c92cd5d7a10a1eb646e63c65d2a366 100644 (file)
@@ -79,12 +79,10 @@ static struct notifier_block crunch_notifier_block = {
        .notifier_call  = crunch_do,
 };
 
-static int __init crunch_init(void)
+int __init crunch_init(void)
 {
        thread_register_notifier(&crunch_notifier_block);
        elf_hwcap |= HWCAP_CRUNCH;
 
        return 0;
 }
-
-late_initcall(crunch_init);
index da9047d726f07dc1e064409df07a46c3bd4eb8b5..d74c5cddb98b654972ae986489f90c0e700aa190 100644 (file)
@@ -255,6 +255,7 @@ MACHINE_START(EDB9301, "Cirrus Logic EDB9301 Evaluation Board")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = edb93xx_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 #endif
@@ -268,6 +269,7 @@ MACHINE_START(EDB9302, "Cirrus Logic EDB9302 Evaluation Board")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = edb93xx_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 #endif
@@ -281,6 +283,7 @@ MACHINE_START(EDB9302A, "Cirrus Logic EDB9302A Evaluation Board")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = edb93xx_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 #endif
@@ -294,6 +297,7 @@ MACHINE_START(EDB9307, "Cirrus Logic EDB9307 Evaluation Board")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = edb93xx_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 #endif
@@ -307,6 +311,7 @@ MACHINE_START(EDB9307A, "Cirrus Logic EDB9307A Evaluation Board")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = edb93xx_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 #endif
@@ -320,6 +325,7 @@ MACHINE_START(EDB9312, "Cirrus Logic EDB9312 Evaluation Board")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = edb93xx_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 #endif
@@ -333,6 +339,7 @@ MACHINE_START(EDB9315, "Cirrus Logic EDB9315 Evaluation Board")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = edb93xx_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 #endif
@@ -346,6 +353,7 @@ MACHINE_START(EDB9315A, "Cirrus Logic EDB9315A Evaluation Board")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = edb93xx_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 #endif
index fcdffbe49dcc8b17423b39e84bfa44a74f8826e0..437c3411115513156bf252c569a22ac636f3de0a 100644 (file)
@@ -41,5 +41,6 @@ MACHINE_START(GESBC9312, "Glomation GESBC-9312-sx")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = gesbc9312_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
index 602bd87fd0ab4dc386dfd2481b5de71b292cbcf4..1ecb040d98bf7f3e390f76473ec85c7c50e377a3 100644 (file)
@@ -53,5 +53,12 @@ void ep93xx_init_devices(void);
 extern struct sys_timer ep93xx_timer;
 
 void ep93xx_restart(char, const char *);
+void ep93xx_init_late(void);
+
+#ifdef CONFIG_CRUNCH
+int crunch_init(void);
+#else
+static inline int crunch_init(void) { return 0; }
+#endif
 
 #endif
index dc431c5f04cee416a7fa102658189cc27949628e..3d7cdab725b20ec278635ac41c96c4724b65db54 100644 (file)
@@ -85,6 +85,7 @@ MACHINE_START(MICRO9, "Contec Micro9-High")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = micro9_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 #endif
@@ -98,6 +99,7 @@ MACHINE_START(MICRO9M, "Contec Micro9-Mid")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = micro9_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 #endif
@@ -111,6 +113,7 @@ MACHINE_START(MICRO9L, "Contec Micro9-Lite")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = micro9_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 #endif
@@ -124,6 +127,7 @@ MACHINE_START(MICRO9S, "Contec Micro9-Slim")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = micro9_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 #endif
index f40c2987e5451f2f55fa613a603f1d03e1382229..33dc07917417d4b5caf89c600ea9885c05fbb0bf 100644 (file)
@@ -86,5 +86,6 @@ MACHINE_START(SIM_ONE, "Simplemachines Sim.One Board")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = simone_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
index 0c00852ef160ba73dc19519e9365170c76a4d299..eb282378fa786bc076f0bcbc5ac5b7ba513a9f22 100644 (file)
@@ -183,5 +183,6 @@ MACHINE_START(SNAPPER_CL15, "Bluewater Systems Snapper CL15")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = snappercl15_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
index 5ea790942e9476cdf313ee35fc2e1baf1fc83ee6..d4ef339d961ed2327f94b08f1c3afc4838119463 100644 (file)
@@ -252,5 +252,6 @@ MACHINE_START(TS72XX, "Technologic Systems TS-72xx SBC")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = ts72xx_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
index ba156eb225e89c647acf87159262a44939c9d4e9..2905a4929bdc86972e66fa9a1e581681007e7772 100644 (file)
@@ -367,5 +367,6 @@ MACHINE_START(VISION_EP9307, "Vision Engraving Systems EP9307")
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = vision_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
index 49134711f4c6a446a54c432748f5ccece37e2401..742edd3bbec34b14f9c6e1817029b9c81f602c03 100644 (file)
@@ -288,6 +288,11 @@ void exynos5_restart(char mode, const char *cmd)
        __raw_writel(0x1, EXYNOS_SWRESET);
 }
 
+void __init exynos_init_late(void)
+{
+       exynos_pm_late_initcall();
+}
+
 /*
  * exynos_map_io
  *
index 677b5467df186298ecd2a8f0046e4e6f46c9fdc5..aed2eeb065179f46f5d9b374974020b96e0a05a2 100644 (file)
@@ -19,6 +19,13 @@ void exynos4_init_irq(void);
 void exynos5_init_irq(void);
 void exynos4_restart(char mode, const char *cmd);
 void exynos5_restart(char mode, const char *cmd);
+void exynos_init_late(void);
+
+#ifdef CONFIG_PM_GENERIC_DOMAINS
+int exynos_pm_late_initcall(void);
+#else
+static int exynos_pm_late_initcall(void) { return 0; }
+#endif
 
 #ifdef CONFIG_ARCH_EXYNOS4
 void exynos4_register_clocks(void);
index 372e33196e8a9444f3cfabc30fe06cb065501c71..5a3daa0168d85450b0aa3777fb965249d79ba735 100644 (file)
@@ -203,6 +203,7 @@ MACHINE_START(ARMLEX4210, "ARMLEX4210")
        .map_io         = armlex4210_map_io,
        .handle_irq     = gic_handle_irq,
        .init_machine   = armlex4210_machine_init,
+       .init_late      = exynos_init_late,
        .timer          = &exynos4_timer,
        .restart        = exynos4_restart,
 MACHINE_END
index 8245f1c761d9f5dd5124b83f189f6f95c20c501e..e7e9743543acd6384f38f5cfcfcd7b4760872225 100644 (file)
@@ -83,6 +83,7 @@ DT_MACHINE_START(EXYNOS4210_DT, "Samsung Exynos4 (Flattened Device Tree)")
        .map_io         = exynos4210_dt_map_io,
        .handle_irq     = gic_handle_irq,
        .init_machine   = exynos4210_dt_machine_init,
+       .init_late      = exynos_init_late,
        .timer          = &exynos4_timer,
        .dt_compat      = exynos4210_dt_compat,
        .restart        = exynos4_restart,
index cf5d2228e9985eb3cfdfde1b3b25a78baf8ae5ca..7b1e11a228cce49776135f140316c83182f4d440 100644 (file)
@@ -76,6 +76,7 @@ DT_MACHINE_START(EXYNOS5_DT, "SAMSUNG EXYNOS5 (Flattened Device Tree)")
        .map_io         = exynos5250_dt_map_io,
        .handle_irq     = gic_handle_irq,
        .init_machine   = exynos5250_dt_machine_init,
+       .init_late      = exynos_init_late,
        .timer          = &exynos4_timer,
        .dt_compat      = exynos5250_dt_compat,
        .restart        = exynos5_restart,
index 6c31f2ad765df785ed7f2af402fd96c50e217194..972983e392bc6d8dd2b34bd07798dcbfc5dfb4b4 100644 (file)
@@ -1389,6 +1389,7 @@ MACHINE_START(NURI, "NURI")
        .map_io         = nuri_map_io,
        .handle_irq     = gic_handle_irq,
        .init_machine   = nuri_machine_init,
+       .init_late      = exynos_init_late,
        .timer          = &exynos4_timer,
        .reserve        = &nuri_reserve,
        .restart        = exynos4_restart,
index 26124a38bcbdfbcf6466cb4b6667bfa20a7c4eec..a7f7fd567ddee48b11e2be362c854c9e7f347f18 100644 (file)
@@ -766,6 +766,7 @@ MACHINE_START(ORIGEN, "ORIGEN")
        .map_io         = origen_map_io,
        .handle_irq     = gic_handle_irq,
        .init_machine   = origen_machine_init,
+       .init_late      = exynos_init_late,
        .timer          = &exynos4_timer,
        .reserve        = &origen_reserve,
        .restart        = exynos4_restart,
index fe772d893cc9653ded14e3cd6fdda8c8a0fe8867..fb09c70e195af8a61e3399fb0db0926222905a66 100644 (file)
@@ -316,6 +316,7 @@ MACHINE_START(SMDK4412, "SMDK4412")
        .map_io         = smdk4x12_map_io,
        .handle_irq     = gic_handle_irq,
        .init_machine   = smdk4x12_machine_init,
+       .init_late      = exynos_init_late,
        .timer          = &exynos4_timer,
        .restart        = exynos4_restart,
        .reserve        = &smdk4x12_reserve,
index a8c7656b1fce99a9c979d41363467d925d1bbe3d..70df1a0c21187034ddea5153c90c55bda9611778 100644 (file)
@@ -411,6 +411,7 @@ MACHINE_START(SMDKC210, "SMDKC210")
        .map_io         = smdkv310_map_io,
        .handle_irq     = gic_handle_irq,
        .init_machine   = smdkv310_machine_init,
+       .init_late      = exynos_init_late,
        .timer          = &exynos4_timer,
        .restart        = exynos4_restart,
 MACHINE_END
index 6b731b863275f5cc1d1362d3ccd68ade5db9b8b3..083b44de9c10090dc887149c2ead7bb31858246a 100644 (file)
@@ -1157,6 +1157,7 @@ MACHINE_START(UNIVERSAL_C210, "UNIVERSAL_C210")
        .map_io         = universal_map_io,
        .handle_irq     = gic_handle_irq,
        .init_machine   = universal_machine_init,
+       .init_late      = exynos_init_late,
        .timer          = &s5p_timer,
        .reserve        = &universal_reserve,
        .restart        = exynos4_restart,
index 13b306808b42b45606ae33cf6e1b101e1baa8382..e9fafcf163de8982287876a7ca6d6cf94488f472 100644 (file)
@@ -193,9 +193,8 @@ static __init int exynos4_pm_init_power_domain(void)
 }
 arch_initcall(exynos4_pm_init_power_domain);
 
-static __init int exynos_pm_late_initcall(void)
+int __init exynos_pm_late_initcall(void)
 {
        pm_genpd_poweroff_unused();
        return 0;
 }
-late_initcall(exynos_pm_late_initcall);
index aa15c517d06e9338293b2669b78b8f486ffba232..8eb15a2fcaf9307e047a16252ec25e0a5e59e9bb 100644 (file)
@@ -62,11 +62,8 @@ EXPORT_SYMBOL(mx51_revision);
  * Dependent on link order - so the assumption is that vfp_init is called
  * before us.
  */
-static int __init mx51_neon_fixup(void)
+int __init mx51_neon_fixup(void)
 {
-       if (!cpu_is_mx51())
-               return 0;
-
        if (mx51_revision() < IMX_CHIP_REVISION_3_0 &&
                        (elf_hwcap & HWCAP_NEON)) {
                elf_hwcap &= ~HWCAP_NEON;
@@ -75,7 +72,6 @@ static int __init mx51_neon_fixup(void)
        return 0;
 }
 
-late_initcall(mx51_neon_fixup);
 #endif
 
 static int get_mx53_srev(void)
index 5f577fbda2c8621d861c2304fbbc7fc355184fd4..18e78dba4298ad90aebc7f0a86e44e723d413924 100644 (file)
@@ -118,6 +118,7 @@ DT_MACHINE_START(IMX51_DT, "Freescale i.MX51 (Device Tree Support)")
        .handle_irq     = imx51_handle_irq,
        .timer          = &imx51_timer,
        .init_machine   = imx51_dt_init,
+       .init_late      = imx51_init_late,
        .dt_compat      = imx51_dt_board_compat,
        .restart        = mxc_restart,
 MACHINE_END
index ce341a6874fc892e867319f43c16aa19f558c9d0..ac50f1671e381447d7fda9335d32cac33432b7ca 100644 (file)
@@ -369,5 +369,6 @@ MACHINE_START(EUKREA_CPUIMX51SD, "Eukrea CPUIMX51SD")
        .handle_irq = imx51_handle_irq,
        .timer = &mxc_timer,
        .init_machine = eukrea_cpuimx51sd_init,
+       .init_late      = imx51_init_late,
        .restart        = mxc_restart,
 MACHINE_END
index 83eab4176ca48668f1f7295698c3ca6b4aaa4502..3c5b163923f63e4b20ab311fee76a70bb431d666 100644 (file)
@@ -175,5 +175,6 @@ MACHINE_START(MX51_3DS, "Freescale MX51 3-Stack Board")
        .handle_irq = imx51_handle_irq,
        .timer = &mx51_3ds_timer,
        .init_machine = mx51_3ds_init,
+       .init_late      = imx51_init_late,
        .restart        = mxc_restart,
 MACHINE_END
index 517672ebcbc5a1f6c642e26e43d6c2241d705b0d..dde397014d4b709d2cd2026d8ea879676f3b35b8 100644 (file)
@@ -432,5 +432,6 @@ MACHINE_START(MX51_BABBAGE, "Freescale MX51 Babbage Board")
        .handle_irq = imx51_handle_irq,
        .timer = &mx51_babbage_timer,
        .init_machine = mx51_babbage_init,
+       .init_late      = imx51_init_late,
        .restart        = mxc_restart,
 MACHINE_END
index 86e96ef11f9d554ef926b35b344d1d70441bfa55..8d09c0126cabeb505a269f79c1131e9ffb5debd5 100644 (file)
@@ -207,29 +207,32 @@ static void mx51_efikamx_power_off(void)
 
 static int __init mx51_efikamx_power_init(void)
 {
-       if (machine_is_mx51_efikamx()) {
-               pwgt1 = regulator_get(NULL, "pwgt1");
-               pwgt2 = regulator_get(NULL, "pwgt2");
-               if (!IS_ERR(pwgt1) && !IS_ERR(pwgt2)) {
-                       regulator_enable(pwgt1);
-                       regulator_enable(pwgt2);
-               }
-               gpio_request(EFIKAMX_POWEROFF, "poweroff");
-               pm_power_off = mx51_efikamx_power_off;
-
-               /* enable coincell charger. maybe need a small power driver ? */
-               coincell = regulator_get(NULL, "coincell");
-               if (!IS_ERR(coincell)) {
-                       regulator_set_voltage(coincell, 3000000, 3000000);
-                       regulator_enable(coincell);
-               }
-
-               regulator_has_full_constraints();
+       pwgt1 = regulator_get(NULL, "pwgt1");
+       pwgt2 = regulator_get(NULL, "pwgt2");
+       if (!IS_ERR(pwgt1) && !IS_ERR(pwgt2)) {
+               regulator_enable(pwgt1);
+               regulator_enable(pwgt2);
+       }
+       gpio_request(EFIKAMX_POWEROFF, "poweroff");
+       pm_power_off = mx51_efikamx_power_off;
+
+       /* enable coincell charger. maybe need a small power driver ? */
+       coincell = regulator_get(NULL, "coincell");
+       if (!IS_ERR(coincell)) {
+               regulator_set_voltage(coincell, 3000000, 3000000);
+               regulator_enable(coincell);
        }
 
+       regulator_has_full_constraints();
+
        return 0;
 }
-late_initcall(mx51_efikamx_power_init);
+
+static void __init mx51_efikamx_init_late(void)
+{
+       imx51_init_late();
+       mx51_efikamx_power_init();
+}
 
 static void __init mx51_efikamx_init(void)
 {
@@ -292,5 +295,6 @@ MACHINE_START(MX51_EFIKAMX, "Genesi Efika MX (Smarttop)")
        .handle_irq = imx51_handle_irq,
        .timer = &mx51_efikamx_timer,
        .init_machine = mx51_efikamx_init,
+       .init_late = mx51_efikamx_init_late,
        .restart = mx51_efikamx_restart,
 MACHINE_END
index 88f837a6cc76d44c841dfcc23de37b735d878953..fdbd181b97efaf015378a3b35c44bd80197404e6 100644 (file)
@@ -211,22 +211,25 @@ static void mx51_efikasb_power_off(void)
 
 static int __init mx51_efikasb_power_init(void)
 {
-       if (machine_is_mx51_efikasb()) {
-               pwgt1 = regulator_get(NULL, "pwgt1");
-               pwgt2 = regulator_get(NULL, "pwgt2");
-               if (!IS_ERR(pwgt1) && !IS_ERR(pwgt2)) {
-                       regulator_enable(pwgt1);
-                       regulator_enable(pwgt2);
-               }
-               gpio_request(EFIKASB_POWEROFF, "poweroff");
-               pm_power_off = mx51_efikasb_power_off;
-
-               regulator_has_full_constraints();
+       pwgt1 = regulator_get(NULL, "pwgt1");
+       pwgt2 = regulator_get(NULL, "pwgt2");
+       if (!IS_ERR(pwgt1) && !IS_ERR(pwgt2)) {
+               regulator_enable(pwgt1);
+               regulator_enable(pwgt2);
        }
+       gpio_request(EFIKASB_POWEROFF, "poweroff");
+       pm_power_off = mx51_efikasb_power_off;
+
+       regulator_has_full_constraints();
 
        return 0;
 }
-late_initcall(mx51_efikasb_power_init);
+
+static void __init mx51_efikasb_init_late(void)
+{
+       imx51_init_late();
+       mx51_efikasb_power_init();
+}
 
 /* 01     R1.3 board
    10     R2.0 board */
@@ -287,6 +290,7 @@ MACHINE_START(MX51_EFIKASB, "Genesi Efika MX (Smartbook)")
        .init_irq = mx51_init_irq,
        .handle_irq = imx51_handle_irq,
        .init_machine =  efikasb_board_init,
+       .init_late = mx51_efikasb_init_late,
        .timer = &mx51_efikasb_timer,
        .restart        = mxc_restart,
 MACHINE_END
index 10c9795934a3c87673b9c3434dec4d4de40bc3d9..0a40004154f234e4afba7f20477a902509bb6637 100644 (file)
@@ -694,6 +694,11 @@ static void __init pcm037_reserve(void)
                        MX3_CAMERA_BUF_SIZE);
 }
 
+static void __init pcm037_init_late(void)
+{
+       pcm037_eet_init_devices();
+}
+
 MACHINE_START(PCM037, "Phytec Phycore pcm037")
        /* Maintainer: Pengutronix */
        .atag_offset = 0x100,
@@ -704,5 +709,6 @@ MACHINE_START(PCM037, "Phytec Phycore pcm037")
        .handle_irq = imx31_handle_irq,
        .timer = &pcm037_timer,
        .init_machine = pcm037_init,
+       .init_late = pcm037_init_late,
        .restart        = mxc_restart,
 MACHINE_END
index 1b7606bef8f4f0047b585974cd9f49fc6854c07d..11ffa81ad17db2d9501286df2201371ce3fdc0cc 100644 (file)
@@ -160,9 +160,9 @@ static const struct gpio_keys_platform_data
        .rep            = 0, /* No auto-repeat */
 };
 
-static int __init eet_init_devices(void)
+int __init pcm037_eet_init_devices(void)
 {
-       if (!machine_is_pcm037() || pcm037_variant() != PCM037_EET)
+       if (pcm037_variant() != PCM037_EET)
                return 0;
 
        mxc_iomux_setup_multiple_pins(pcm037_eet_pins,
@@ -176,4 +176,3 @@ static int __init eet_init_devices(void)
 
        return 0;
 }
-late_initcall(eet_init_devices);
index 8b4dc20c7c53ba49eb3120ae7e6d12b0191e1655..feeee17da96b227b769c1748c6175b6071b8bd59 100644 (file)
@@ -237,3 +237,8 @@ void __init imx53_soc_init(void)
        platform_device_register_simple("imx31-audmux", 0, imx53_audmux_res,
                                        ARRAY_SIZE(imx53_audmux_res));
 }
+
+void __init imx51_init_late(void)
+{
+       mx51_neon_fixup();
+}
index d6929721a5fd620e40f75b570fca567d4aa9d967..7d167690e17dab2e2e3ff6318010bbaf3198965b 100644 (file)
@@ -8,4 +8,10 @@ enum pcm037_board_variant {
 
 extern enum pcm037_board_variant pcm037_variant(void);
 
+#ifdef CONFIG_MACH_PCM037_EET
+int pcm037_eet_init_devices(void);
+#else
+static inline int pcm037_eet_init_devices(void) { return 0; }
+#endif
+
 #endif
index 26aac363a06405f865e76ea8c0db6324af8d85aa..4fa3e99d9a62afbc38feeed5e916730f8bb984a4 100644 (file)
@@ -94,6 +94,11 @@ static void __init halibut_map_io(void)
        msm_clock_init(msm_clocks_7x01a, msm_num_clocks_7x01a);
 }
 
+static void __init halibut_init_late(void)
+{
+       smd_debugfs_init();
+}
+
 MACHINE_START(HALIBUT, "Halibut Board (QCT SURF7200A)")
        .atag_offset    = 0x100,
        .fixup          = halibut_fixup,
@@ -101,5 +106,6 @@ MACHINE_START(HALIBUT, "Halibut Board (QCT SURF7200A)")
        .init_early     = halibut_init_early,
        .init_irq       = halibut_init_irq,
        .init_machine   = halibut_init,
+       .init_late      = halibut_init_late,
        .timer          = &msm_timer,
 MACHINE_END
index 5a4882fc6f7a0faaf5122b150290fb7ed74d715e..cf1f89a5dc622ad55bc28bca21275913c494ab88 100644 (file)
@@ -71,6 +71,11 @@ static void __init mahimahi_map_io(void)
        msm_clock_init();
 }
 
+static void __init mahimahi_init_late(void)
+{
+       smd_debugfs_init();
+}
+
 extern struct sys_timer msm_timer;
 
 MACHINE_START(MAHIMAHI, "mahimahi")
@@ -79,5 +84,6 @@ MACHINE_START(MAHIMAHI, "mahimahi")
        .map_io         = mahimahi_map_io,
        .init_irq       = msm_init_irq,
        .init_machine   = mahimahi_init,
+       .init_late      = mahimahi_init_late,
        .timer          = &msm_timer,
 MACHINE_END
index 6d84ee740df483911363f2ef54311b618787bf54..451ab1d43c927017a1f8743cf9c55438c7463837 100644 (file)
@@ -128,11 +128,17 @@ static void __init msm7x2x_map_io(void)
 #endif
 }
 
+static void __init msm7x2x_init_late(void)
+{
+       smd_debugfs_init();
+}
+
 MACHINE_START(MSM7X27_SURF, "QCT MSM7x27 SURF")
        .atag_offset    = 0x100,
        .map_io         = msm7x2x_map_io,
        .init_irq       = msm7x2x_init_irq,
        .init_machine   = msm7x2x_init,
+       .init_late      = msm7x2x_init_late,
        .timer          = &msm_timer,
 MACHINE_END
 
@@ -141,6 +147,7 @@ MACHINE_START(MSM7X27_FFA, "QCT MSM7x27 FFA")
        .map_io         = msm7x2x_map_io,
        .init_irq       = msm7x2x_init_irq,
        .init_machine   = msm7x2x_init,
+       .init_late      = msm7x2x_init_late,
        .timer          = &msm_timer,
 MACHINE_END
 
@@ -149,6 +156,7 @@ MACHINE_START(MSM7X25_SURF, "QCT MSM7x25 SURF")
        .map_io         = msm7x2x_map_io,
        .init_irq       = msm7x2x_init_irq,
        .init_machine   = msm7x2x_init,
+       .init_late      = msm7x2x_init_late,
        .timer          = &msm_timer,
 MACHINE_END
 
@@ -157,5 +165,6 @@ MACHINE_START(MSM7X25_FFA, "QCT MSM7x25 FFA")
        .map_io         = msm7x2x_map_io,
        .init_irq       = msm7x2x_init_irq,
        .init_machine   = msm7x2x_init,
+       .init_late      = msm7x2x_init_late,
        .timer          = &msm_timer,
 MACHINE_END
index 75b3cfcada6d06586aff8ec0b627db092e408e75..a5001378135d4d3ec8615022370457a293cd14f7 100644 (file)
@@ -119,6 +119,11 @@ static void __init msm7x30_map_io(void)
        msm_clock_init(msm_clocks_7x30, msm_num_clocks_7x30);
 }
 
+static void __init msm7x30_init_late(void)
+{
+       smd_debugfs_init();
+}
+
 MACHINE_START(MSM7X30_SURF, "QCT MSM7X30 SURF")
        .atag_offset = 0x100,
        .fixup = msm7x30_fixup,
@@ -126,6 +131,7 @@ MACHINE_START(MSM7X30_SURF, "QCT MSM7X30 SURF")
        .map_io = msm7x30_map_io,
        .init_irq = msm7x30_init_irq,
        .init_machine = msm7x30_init,
+       .init_late = msm7x30_init_late,
        .timer = &msm_timer,
 MACHINE_END
 
@@ -136,6 +142,7 @@ MACHINE_START(MSM7X30_FFA, "QCT MSM7X30 FFA")
        .map_io = msm7x30_map_io,
        .init_irq = msm7x30_init_irq,
        .init_machine = msm7x30_init,
+       .init_late = msm7x30_init_late,
        .timer = &msm_timer,
 MACHINE_END
 
@@ -146,5 +153,6 @@ MACHINE_START(MSM7X30_FLUID, "QCT MSM7X30 FLUID")
        .map_io = msm7x30_map_io,
        .init_irq = msm7x30_init_irq,
        .init_machine = msm7x30_init,
+       .init_late = msm7x30_init_late,
        .timer = &msm_timer,
 MACHINE_END
index ed3598128530f143df0c89fedf66a96177c8f4e0..65f4a1daa2e5f6d5250bee88ceba4d3590a0f39e 100644 (file)
@@ -93,6 +93,11 @@ static void __init msm8960_rumi3_init(void)
        platform_add_devices(rumi3_devices, ARRAY_SIZE(rumi3_devices));
 }
 
+static void __init msm8960_init_late(void)
+{
+       smd_debugfs_init();
+}
+
 MACHINE_START(MSM8960_SIM, "QCT MSM8960 SIMULATOR")
        .fixup = msm8960_fixup,
        .reserve = msm8960_reserve,
@@ -101,6 +106,7 @@ MACHINE_START(MSM8960_SIM, "QCT MSM8960 SIMULATOR")
        .timer = &msm_timer,
        .handle_irq = gic_handle_irq,
        .init_machine = msm8960_sim_init,
+       .init_late = msm8960_init_late,
 MACHINE_END
 
 MACHINE_START(MSM8960_RUMI3, "QCT MSM8960 RUMI3")
@@ -111,5 +117,6 @@ MACHINE_START(MSM8960_RUMI3, "QCT MSM8960 RUMI3")
        .timer = &msm_timer,
        .handle_irq = gic_handle_irq,
        .init_machine = msm8960_rumi3_init,
+       .init_late = msm8960_init_late,
 MACHINE_END
 
index fb3496a52ef4c08921de04e75e4682ad00e796a2..e37a724cd1eb5c1e2703571deb84f0adfc3d28f9 100644 (file)
@@ -81,6 +81,11 @@ static void __init msm8x60_init(void)
 {
 }
 
+static void __init msm8x60_init_late(void)
+{
+       smd_debugfs_init();
+}
+
 #ifdef CONFIG_OF
 static struct of_dev_auxdata msm_auxdata_lookup[] __initdata = {
        {}
@@ -111,6 +116,7 @@ MACHINE_START(MSM8X60_RUMI3, "QCT MSM8X60 RUMI3")
        .init_irq = msm8x60_init_irq,
        .handle_irq = gic_handle_irq,
        .init_machine = msm8x60_init,
+       .init_late = msm8x60_init_late,
        .timer = &msm_timer,
 MACHINE_END
 
@@ -121,6 +127,7 @@ MACHINE_START(MSM8X60_SURF, "QCT MSM8X60 SURF")
        .init_irq = msm8x60_init_irq,
        .handle_irq = gic_handle_irq,
        .init_machine = msm8x60_init,
+       .init_late = msm8x60_init_late,
        .timer = &msm_timer,
 MACHINE_END
 
@@ -131,6 +138,7 @@ MACHINE_START(MSM8X60_SIM, "QCT MSM8X60 SIMULATOR")
        .init_irq = msm8x60_init_irq,
        .handle_irq = gic_handle_irq,
        .init_machine = msm8x60_init,
+       .init_late = msm8x60_init_late,
        .timer = &msm_timer,
 MACHINE_END
 
@@ -141,6 +149,7 @@ MACHINE_START(MSM8X60_FFA, "QCT MSM8X60 FFA")
        .init_irq = msm8x60_init_irq,
        .handle_irq = gic_handle_irq,
        .init_machine = msm8x60_init,
+       .init_late = msm8x60_init_late,
        .timer = &msm_timer,
 MACHINE_END
 
@@ -150,6 +159,7 @@ DT_MACHINE_START(MSM_DT, "Qualcomm MSM (Flattened Device Tree)")
        .map_io = msm8x60_map_io,
        .init_irq = msm8x60_init_irq,
        .init_machine = msm8x60_dt_init,
+       .init_late = msm8x60_init_late,
        .timer = &msm_timer,
        .dt_compat = msm8x60_fluid_match,
 MACHINE_END
index fbaa4ed95a3cf9dc578b53fb7ea511e06b2187ee..c8fe0edb9761961f877378601dad5c3c0a810be4 100644 (file)
@@ -190,11 +190,17 @@ static void __init qsd8x50_init(void)
        qsd8x50_init_mmc();
 }
 
+static void __init qsd8x50_init_late(void)
+{
+       smd_debugfs_init();
+}
+
 MACHINE_START(QSD8X50_SURF, "QCT QSD8X50 SURF")
        .atag_offset = 0x100,
        .map_io = qsd8x50_map_io,
        .init_irq = qsd8x50_init_irq,
        .init_machine = qsd8x50_init,
+       .init_late = qsd8x50_init_late,
        .timer = &msm_timer,
 MACHINE_END
 
@@ -203,5 +209,6 @@ MACHINE_START(QSD8X50A_ST1_5, "QCT QSD8X50A ST1.5")
        .map_io = qsd8x50_map_io,
        .init_irq = qsd8x50_init_irq,
        .init_machine = qsd8x50_init,
+       .init_late = qsd8x50_init_late,
        .timer = &msm_timer,
 MACHINE_END
index 4a8ea0d40b6ffe0b794d95a29f6d9e9003456eab..2e569ab10eef3f253b4f429d5b01b12dddaf933a 100644 (file)
@@ -101,6 +101,11 @@ static void __init sapphire_map_io(void)
        msm_clock_init();
 }
 
+static void __init sapphire_init_late(void)
+{
+       smd_debugfs_init();
+}
+
 MACHINE_START(SAPPHIRE, "sapphire")
 /* Maintainer: Brian Swetland <swetland@google.com> */
        .atag_offset    = 0x100,
@@ -108,5 +113,6 @@ MACHINE_START(SAPPHIRE, "sapphire")
        .map_io         = sapphire_map_io,
        .init_irq       = sapphire_init_irq,
        .init_machine   = sapphire_init,
+       .init_late      = sapphire_init_late,
        .timer          = &msm_timer,
 MACHINE_END
index d4060a37e23d39776456974e97b361ac6522b1e5..bbe13f12fa0197f54d8b63f7ad420fbdd4b8c7c9 100644 (file)
@@ -98,6 +98,11 @@ static void __init trout_map_io(void)
        msm_clock_init(msm_clocks_7x01a, msm_num_clocks_7x01a);
 }
 
+static void __init trout_init_late(void)
+{
+       smd_debugfs_init();
+}
+
 MACHINE_START(TROUT, "HTC Dream")
        .atag_offset    = 0x100,
        .fixup          = trout_fixup,
@@ -105,5 +110,6 @@ MACHINE_START(TROUT, "HTC Dream")
        .init_early     = trout_init_early,
        .init_irq       = trout_init_irq,
        .init_machine   = trout_init,
+       .init_late      = trout_init_late,
        .timer          = &msm_timer,
 MACHINE_END
index 2ce8f1f2fc4d57c163193229340b7b04d04c7474..435f8edfafd1bb78855a5ba8ece372935e78f481 100644 (file)
@@ -47,4 +47,10 @@ int __init msm_add_sdcc(unsigned int controller,
                        struct msm_mmc_platform_data *plat,
                        unsigned int stat_irq, unsigned long stat_irq_flags);
 
+#if defined(CONFIG_MSM_SMD) && defined(CONFIG_DEBUG_FS)
+int smd_debugfs_init(void);
+#else
+static inline int smd_debugfs_init(void) { return 0; }
+#endif
+
 #endif
index c56df9e932aec303aca92252040fe2d9344b5391..8056b3e5590f9969a2d2928a4efaa47e5c9fc087 100644 (file)
@@ -216,7 +216,7 @@ static void debug_create(const char *name, umode_t mode,
        debugfs_create_file(name, mode, dent, fill, &debug_ops);
 }
 
-static int smd_debugfs_init(void)
+int __init smd_debugfs_init(void)
 {
        struct dentry *dent;
 
@@ -234,7 +234,6 @@ static int smd_debugfs_init(void)
        return 0;
 }
 
-late_initcall(smd_debugfs_init);
 #endif
 
 
index c1b681ef4cba80870ccec99715b14eb0ddfad07a..f2f8a58470182c5d1d783b1a3496833f1b1dfbc7 100644 (file)
@@ -595,7 +595,12 @@ gpio_free:
        gpio_free(AMS_DELTA_GPIO_PIN_MODEM_IRQ);
        return err;
 }
-late_initcall(late_init);
+
+static void __init ams_delta_init_late(void)
+{
+       omap1_init_late();
+       late_init();
+}
 
 static void __init ams_delta_map_io(void)
 {
@@ -611,6 +616,7 @@ MACHINE_START(AMS_DELTA, "Amstrad E3 (Delta)")
        .reserve        = omap_reserve,
        .init_irq       = omap1_init_irq,
        .init_machine   = ams_delta_init,
+       .init_late      = ams_delta_init_late,
        .timer          = &omap1_timer,
        .restart        = omap1_restart,
 MACHINE_END
index 4a4afb371022e0898d78a1cc673f02d392b5b957..c7364fdbda05370f05a84277cbcf3b494daf897d 100644 (file)
@@ -369,6 +369,7 @@ MACHINE_START(OMAP_FSAMPLE, "OMAP730 F-Sample")
        .reserve        = omap_reserve,
        .init_irq       = omap1_init_irq,
        .init_machine   = omap_fsample_init,
+       .init_late      = omap1_init_late,
        .timer          = &omap1_timer,
        .restart        = omap1_restart,
 MACHINE_END
index 9a5fe581bc1c8c0e22264edbe5b8dd17b9215780..e75e2d55a2d72ba133c5e923389c03512058461e 100644 (file)
@@ -88,6 +88,7 @@ MACHINE_START(OMAP_GENERIC, "Generic OMAP1510/1610/1710")
        .reserve        = omap_reserve,
        .init_irq       = omap1_init_irq,
        .init_machine   = omap_generic_init,
+       .init_late      = omap1_init_late,
        .timer          = &omap1_timer,
        .restart        = omap1_restart,
 MACHINE_END
index 057ec13f06490bfbdcc5c425fd36f54aa8b1863b..7e503686f7af2b2635698c112f350ffd6ce72dd8 100644 (file)
@@ -431,6 +431,7 @@ MACHINE_START(OMAP_H2, "TI-H2")
        .reserve        = omap_reserve,
        .init_irq       = omap1_init_irq,
        .init_machine   = h2_init,
+       .init_late      = omap1_init_late,
        .timer          = &omap1_timer,
        .restart        = omap1_restart,
 MACHINE_END
index f6ddf875965712ebcf05698e589b2ddc3fddae5c..9fb03f189d934bce14ce17f37cf53f99b3551472 100644 (file)
@@ -425,6 +425,7 @@ MACHINE_START(OMAP_H3, "TI OMAP1710 H3 board")
        .reserve        = omap_reserve,
        .init_irq       = omap1_init_irq,
        .init_machine   = h3_init,
+       .init_late      = omap1_init_late,
        .timer          = &omap1_timer,
        .restart        = omap1_restart,
 MACHINE_END
index 60c06ee23855d018198698dbd74110611447d8e6..118a9d4a4c54a56b2bad8b261c60335b3f3a3f82 100644 (file)
@@ -605,6 +605,7 @@ MACHINE_START(HERALD, "HTC Herald")
        .reserve        = omap_reserve,
        .init_irq       = omap1_init_irq,
        .init_machine   = htcherald_init,
+       .init_late      = omap1_init_late,
        .timer          = &omap1_timer,
        .restart        = omap1_restart,
 MACHINE_END
index 67d7fd57a692b7d7c209b01859ad0a97cc8c86f0..7970223a559d552d270953905a2107e3dfb2446f 100644 (file)
@@ -457,6 +457,7 @@ MACHINE_START(OMAP_INNOVATOR, "TI-Innovator")
        .reserve        = omap_reserve,
        .init_irq       = omap1_init_irq,
        .init_machine   = innovator_init,
+       .init_late      = omap1_init_late,
        .timer          = &omap1_timer,
        .restart        = omap1_restart,
 MACHINE_END
index d21dcc2fbc5af3a3b53477e8e735aa5bcb428447..7212ae97f44acfc1ff508fbca348a3ff26702a8a 100644 (file)
@@ -255,6 +255,7 @@ MACHINE_START(NOKIA770, "Nokia 770")
        .reserve        = omap_reserve,
        .init_irq       = omap1_init_irq,
        .init_machine   = omap_nokia770_init,
+       .init_late      = omap1_init_late,
        .timer          = &omap1_timer,
        .restart        = omap1_restart,
 MACHINE_END
index a5f85dda3f6924ce84dce90270a704edfafd6962..da8d872d3d1cddf00bdab9c3bdec4684ec585989 100644 (file)
@@ -574,6 +574,7 @@ MACHINE_START(OMAP_OSK, "TI-OSK")
        .reserve        = omap_reserve,
        .init_irq       = omap1_init_irq,
        .init_machine   = osk_init,
+       .init_late      = omap1_init_late,
        .timer          = &omap1_timer,
        .restart        = omap1_restart,
 MACHINE_END
index a60e6c22f8169ed9027e26b2425b54875d23deba..949b62a736931b0a74158727ca2ca2ecf488c6e8 100644 (file)
@@ -267,6 +267,7 @@ MACHINE_START(OMAP_PALMTE, "OMAP310 based Palm Tungsten E")
        .reserve        = omap_reserve,
        .init_irq       = omap1_init_irq,
        .init_machine   = omap_palmte_init,
+       .init_late      = omap1_init_late,
        .timer          = &omap1_timer,
        .restart        = omap1_restart,
 MACHINE_END
index 8d854878547be0fcdcc77e9e539b3d819d33ae97..7f1e1cf2bf46a47e525338ff47398b2226ea997f 100644 (file)
@@ -313,6 +313,7 @@ MACHINE_START(OMAP_PALMTT, "OMAP1510 based Palm Tungsten|T")
        .reserve        = omap_reserve,
        .init_irq       = omap1_init_irq,
        .init_machine   = omap_palmtt_init,
+       .init_late      = omap1_init_late,
        .timer          = &omap1_timer,
        .restart        = omap1_restart,
 MACHINE_END
index 61ed4f0247ce37567e8fb0046f4d1cf503e4181b..3c71c6bace2cd09489b358d6569c2652471040aa 100644 (file)
@@ -330,6 +330,7 @@ MACHINE_START(OMAP_PALMZ71, "OMAP310 based Palm Zire71")
        .reserve        = omap_reserve,
        .init_irq       = omap1_init_irq,
        .init_machine   = omap_palmz71_init,
+       .init_late      = omap1_init_late,
        .timer          = &omap1_timer,
        .restart        = omap1_restart,
 MACHINE_END
index a2c88890e767e369488c4b5eb16f87f524e0f51a..f2cb24387c229d059a4a3af3dcffef386540f7d6 100644 (file)
@@ -331,6 +331,7 @@ MACHINE_START(OMAP_PERSEUS2, "OMAP730 Perseus2")
        .reserve        = omap_reserve,
        .init_irq       = omap1_init_irq,
        .init_machine   = omap_perseus2_init,
+       .init_late      = omap1_init_late,
        .timer          = &omap1_timer,
        .restart        = omap1_restart,
 MACHINE_END
index f34cb74a9f41d12cbe3983dcd121fa11f4ccb5cd..3b7b82b136840ac05fcedaa1e9ba3da1617df96b 100644 (file)
@@ -407,6 +407,7 @@ MACHINE_START(SX1, "OMAP310 based Siemens SX1")
        .reserve        = omap_reserve,
        .init_irq       = omap1_init_irq,
        .init_machine   = omap_sx1_init,
+       .init_late      = omap1_init_late,
        .timer          = &omap1_timer,
        .restart        = omap1_restart,
 MACHINE_END
index 37232d04233ff779bb44e631d4675559ef34de19..afd67f0ec495160d4c5f996f8f81b6832b03e1c2 100644 (file)
@@ -294,6 +294,7 @@ MACHINE_START(VOICEBLUE, "VoiceBlue OMAP5910")
        .reserve        = omap_reserve,
        .init_irq       = omap1_init_irq,
        .init_machine   = voiceblue_init,
+       .init_late      = omap1_init_late,
        .timer          = &omap1_timer,
        .restart        = voiceblue_restart,
 MACHINE_END
index 64ce3bbe22b586ab96765a7fcb824a5af8505c26..c2552b24f9f295381b36132cc4d59b850ade8d3f 100644 (file)
@@ -53,8 +53,18 @@ static inline void omap16xx_map_io(void)
 }
 #endif
 
+#ifdef CONFIG_OMAP_SERIAL_WAKE
+int omap_serial_wakeup_init(void);
+#else
+static inline int omap_serial_wakeup_init(void)
+{
+       return 0;
+}
+#endif
+
 void omap1_init_early(void);
 void omap1_init_irq(void);
+void omap1_init_late(void);
 void omap1_restart(char, const char *);
 
 extern void __init omap_check_revision(void);
index 71ce017bf5d8a895c9ddb8f2b4c1a12dba4ef7d4..6c95a59f0f1648275f2b75db41b11493096ce2d0 100644 (file)
@@ -137,6 +137,11 @@ void __init omap1_init_early(void)
        omap_init_consistent_dma_size();
 }
 
+void __init omap1_init_late(void)
+{
+       omap_serial_wakeup_init();
+}
+
 /*
  * NOTE: Please use ioremap + __raw_read/write where possible instead of these
  */
index 93ae8f29727e61a002bcf705a6d2492f4772023a..6809c9e56c9317dfdbaf8eff92e79d651d164237 100644 (file)
@@ -237,7 +237,7 @@ static void __init omap_serial_set_port_wakeup(int gpio_nr)
        enable_irq_wake(gpio_to_irq(gpio_nr));
 }
 
-static int __init omap_serial_wakeup_init(void)
+int __init omap_serial_wakeup_init(void)
 {
        if (!cpu_is_omap16xx())
                return 0;
@@ -251,7 +251,6 @@ static int __init omap_serial_wakeup_init(void)
 
        return 0;
 }
-late_initcall(omap_serial_wakeup_init);
 
 #endif /* CONFIG_OMAP_SERIAL_WAKE */
 
index e658f835d0de3da65c24a4ccba0ec8252fa65e18..99ca6bad5c30c210c0a6e19d5eae570ef862d632 100644 (file)
@@ -303,6 +303,7 @@ MACHINE_START(OMAP_2430SDP, "OMAP2430 sdp2430 board")
        .init_irq       = omap2_init_irq,
        .handle_irq     = omap2_intc_handle_irq,
        .init_machine   = omap_2430sdp_init,
+       .init_late      = omap2430_init_late,
        .timer          = &omap2_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
index 37abb0d49b5178efca0a682bb9abcc25a9d861fa..a98c688058a92e8cb9251e289567515631b6443e 100644 (file)
@@ -605,6 +605,7 @@ MACHINE_START(OMAP_3430SDP, "OMAP3430 3430SDP board")
        .init_irq       = omap3_init_irq,
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = omap_3430sdp_init,
+       .init_late      = omap3430_init_late,
        .timer          = &omap3_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
index 6ef350d1ae4f40a89a8b1bc54c6858780db1b2a8..2dc9ba523c7a1fcfd8dc8226180328430fb87685 100644 (file)
@@ -217,6 +217,7 @@ MACHINE_START(OMAP_3630SDP, "OMAP 3630SDP board")
        .init_irq       = omap3_init_irq,
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = omap_sdp_init,
+       .init_late      = omap3630_init_late,
        .timer          = &omap3_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
index 94af6cde2e36d4868a338ce46644689945bf2f81..8e17284a803ff0cae6ae473aced0a9793418c059 100644 (file)
@@ -912,6 +912,7 @@ MACHINE_START(OMAP_4430SDP, "OMAP4430 4430SDP board")
        .init_irq       = gic_init_irq,
        .handle_irq     = gic_handle_irq,
        .init_machine   = omap_4430sdp_init,
+       .init_late      = omap4430_init_late,
        .timer          = &omap4_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
index 3b8a53c1f2a897a21e24d510849459709459bc96..92432c28673dfe9a17971bcc8f86b477c4f7cb03 100644 (file)
@@ -102,6 +102,7 @@ MACHINE_START(CRANEBOARD, "AM3517/05 CRANEBOARD")
        .init_irq       = omap3_init_irq,
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = am3517_crane_init,
+       .init_late      = am35xx_init_late,
        .timer          = &omap3_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
index 99790eb646e848c8ddd47d72a62554c36b669b45..18f601096ce1807aaf9ba2fa8712f707a7c3bba3 100644 (file)
@@ -385,6 +385,7 @@ MACHINE_START(OMAP3517EVM, "OMAP3517/AM3517 EVM")
        .init_irq       = omap3_init_irq,
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = am3517_evm_init,
+       .init_late      = am35xx_init_late,
        .timer          = &omap3_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
index 768ece2e9c3b4bcf14175a7068c801e68575e6d6..502c31e123be0308f46b44bb4c40dadb88ef6e4c 100644 (file)
@@ -356,6 +356,7 @@ MACHINE_START(OMAP_APOLLON, "OMAP24xx Apollon")
        .init_irq       = omap2_init_irq,
        .handle_irq     = omap2_intc_handle_irq,
        .init_machine   = omap_apollon_init,
+       .init_late      = omap2420_init_late,
        .timer          = &omap2_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
index c03df142ea672ea11c4470a983be031bbef5bffb..ded100c80a91cb55f50245a924efcca310cee621 100644 (file)
@@ -669,6 +669,7 @@ MACHINE_START(CM_T35, "Compulab CM-T35")
        .init_irq       = omap3_init_irq,
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = cm_t35_init,
+       .init_late      = omap35xx_init_late,
        .timer          = &omap3_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
@@ -681,6 +682,7 @@ MACHINE_START(CM_T3730, "Compulab CM-T3730")
        .init_irq       = omap3_init_irq,
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = cm_t3730_init,
+       .init_late     = omap3630_init_late,
        .timer          = &omap3_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
index 9e66e167e4f39f67a75b4a130e6207a3ec7edcf1..a33ad4641d9ad5b1a2a440bca1c1dc65fa09b963 100644 (file)
@@ -303,6 +303,7 @@ MACHINE_START(CM_T3517, "Compulab CM-T3517")
        .init_irq       = omap3_init_irq,
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = cm_t3517_init,
+       .init_late      = am35xx_init_late,
        .timer          = &omap3_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
index b063f0d2faa6811a6aaab8376e17e5e8fe4a319b..6567c1cd55729ce167cf90a48ab18d700ebe545f 100644 (file)
@@ -644,6 +644,7 @@ MACHINE_START(DEVKIT8000, "OMAP3 Devkit8000")
        .init_irq       = omap3_init_irq,
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = devkit8000_init,
+       .init_late      = omap35xx_init_late,
        .timer          = &omap3_secure_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
index 7302ba7ff1b9007f0952566f8588571dfdd53b91..20293465786701f8650e1377ea070c6eee536673 100644 (file)
@@ -125,6 +125,7 @@ DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)")
        .init_irq       = omap_init_irq,
        .handle_irq     = gic_handle_irq,
        .init_machine   = omap_generic_init,
+       .init_late      = omap4430_init_late,
        .timer          = &omap4_timer,
        .dt_compat      = omap4_boards_compat,
        .restart        = omap_prcm_restart,
index 0bbbabe28fcc94bc80f9c3851af7a5d5559405ff..876becf8205a475ad6e168c5ca5ac513f737a49f 100644 (file)
@@ -398,6 +398,7 @@ MACHINE_START(OMAP_H4, "OMAP2420 H4 board")
        .init_irq       = omap2_init_irq,
        .handle_irq     = omap2_intc_handle_irq,
        .init_machine   = omap_h4_init,
+       .init_late      = omap2420_init_late,
        .timer          = &omap2_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
index 7a274098f67bf5d5946e4d3becc4343ed6c5a9a2..74915295482ec849e0d0fefe5fc9a22703ee1f2c 100644 (file)
@@ -650,6 +650,7 @@ MACHINE_START(IGEP0020, "IGEP v2 board")
        .init_irq       = omap3_init_irq,
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = igep_init,
+       .init_late      = omap35xx_init_late,
        .timer          = &omap3_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
@@ -662,6 +663,7 @@ MACHINE_START(IGEP0030, "IGEP OMAP3 module")
        .init_irq       = omap3_init_irq,
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = igep_init,
+       .init_late      = omap35xx_init_late,
        .timer          = &omap3_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
index 1b6049567ab49621d59061d80b34d6cb84a94cf0..ef9e82977499678dabccf463c48ec3396eba84fe 100644 (file)
@@ -442,6 +442,7 @@ MACHINE_START(OMAP_LDP, "OMAP LDP board")
        .init_irq       = omap3_init_irq,
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = omap_ldp_init,
+       .init_late      = omap3430_init_late,
        .timer          = &omap3_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
index 518091c5f77c74fe20df08f2714746062a8b004f..8ca14e88a31af12f43d219fe6d8a6b63b61ec4f1 100644 (file)
@@ -694,6 +694,7 @@ MACHINE_START(NOKIA_N800, "Nokia N800")
        .init_irq       = omap2_init_irq,
        .handle_irq     = omap2_intc_handle_irq,
        .init_machine   = n8x0_init_machine,
+       .init_late      = omap2420_init_late,
        .timer          = &omap2_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
@@ -706,6 +707,7 @@ MACHINE_START(NOKIA_N810, "Nokia N810")
        .init_irq       = omap2_init_irq,
        .handle_irq     = omap2_intc_handle_irq,
        .init_machine   = n8x0_init_machine,
+       .init_late      = omap2420_init_late,
        .timer          = &omap2_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
@@ -718,6 +720,7 @@ MACHINE_START(NOKIA_N810_WIMAX, "Nokia N810 WiMAX")
        .init_irq       = omap2_init_irq,
        .handle_irq     = omap2_intc_handle_irq,
        .init_machine   = n8x0_init_machine,
+       .init_late      = omap2420_init_late,
        .timer          = &omap2_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
index 2a7b9a9da1db58081642b6bd700239e7e3d85079..79c6909eeb785ef24d71be68f076034c0cd476df 100644 (file)
@@ -543,6 +543,7 @@ MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")
        .init_irq       = omap3_init_irq,
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = omap3_beagle_init,
+       .init_late      = omap3_init_late,
        .timer          = &omap3_secure_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
index ace3c675e9c22a15e1712f39a1fd95bdc42c0dc5..639bd07ea38a1cca473ac4c6fa5da29024ad9d77 100644 (file)
@@ -671,6 +671,7 @@ MACHINE_START(OMAP3EVM, "OMAP3 EVM")
        .init_irq       = omap3_init_irq,
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = omap3_evm_init,
+       .init_late      = omap35xx_init_late,
        .timer          = &omap3_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
index c008bf8e1c36612c32595a043b24fd39fa7c4950..932e1778aff94187c4ff2056c11f489747061c27 100644 (file)
@@ -242,6 +242,7 @@ MACHINE_START(OMAP3_TORPEDO, "Logic OMAP3 Torpedo board")
        .init_irq       = omap3_init_irq,
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = omap3logic_init,
+       .init_late      = omap35xx_init_late,
        .timer          = &omap3_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
@@ -254,6 +255,7 @@ MACHINE_START(OMAP3530_LV_SOM, "OMAP Logic 3530 LV SOM board")
        .init_irq       = omap3_init_irq,
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = omap3logic_init,
+       .init_late      = omap35xx_init_late,
        .timer          = &omap3_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
index 33d995d0f0755e73f2a920c1af2ea59df4ea2430..57aebee44fd0311a0c115aa1a408227dd8b698d7 100644 (file)
@@ -622,6 +622,7 @@ MACHINE_START(OMAP3_PANDORA, "Pandora Handheld Console")
        .init_irq       = omap3_init_irq,
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = omap3pandora_init,
+       .init_late      = omap35xx_init_late,
        .timer          = &omap3_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
index 4396bae9167713dbd951abb28dfad4e7cd9cf27e..b318f5602e36ed15ee51f0a0f94d74ea3802dab6 100644 (file)
@@ -436,6 +436,7 @@ MACHINE_START(SBC3530, "OMAP3 STALKER")
        .init_irq               = omap3_init_irq,
        .handle_irq             = omap3_intc_handle_irq,
        .init_machine           = omap3_stalker_init,
+       .init_late              = omap35xx_init_late,
        .timer                  = &omap3_secure_timer,
        .restart                = omap_prcm_restart,
 MACHINE_END
index ae2251fa4a69346567a816e01aa4c2b2601ed875..485d14d6a8cd0683b0b74bb6ef63194292f6b4ab 100644 (file)
@@ -387,6 +387,7 @@ MACHINE_START(TOUCHBOOK, "OMAP3 touchbook Board")
        .init_irq       = omap3_init_irq,
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = omap3_touchbook_init,
+       .init_late      = omap3430_init_late,
        .timer          = &omap3_secure_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
index 68b8fc9ff0101d0b3a40633dc106d46b8db6c9fe..982fb2622ab83063840b61d867098b8ebf700df5 100644 (file)
@@ -521,6 +521,7 @@ MACHINE_START(OMAP4_PANDA, "OMAP4 Panda board")
        .init_irq       = gic_init_irq,
        .handle_irq     = gic_handle_irq,
        .init_machine   = omap4_panda_init,
+       .init_late      = omap4430_init_late,
        .timer          = &omap4_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
index 5527c1979a168983a2b0608f5af7229cb4658018..8fa2fc3a4c3c51e973eb07c91f3c687c86aca62a 100644 (file)
@@ -554,6 +554,7 @@ MACHINE_START(OVERO, "Gumstix Overo")
        .init_irq       = omap3_init_irq,
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = overo_init,
+       .init_late      = omap35xx_init_late,
        .timer          = &omap3_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
index ae53d71f0ce076bace77dd6fcf26895083dc0b16..0ad1bb3bdb98dfdde02d9ffdb83f25e151ec5d70 100644 (file)
@@ -151,6 +151,7 @@ MACHINE_START(NOKIA_RM680, "Nokia RM-680 board")
        .init_irq       = omap3_init_irq,
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = rm680_init,
+       .init_late      = omap3630_init_late,
        .timer          = &omap3_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
@@ -163,6 +164,7 @@ MACHINE_START(NOKIA_RM696, "Nokia RM-696 board")
        .init_irq       = omap3_init_irq,
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = rm680_init,
+       .init_late      = omap3630_init_late,
        .timer          = &omap3_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
index 2da92a6ba40ab0fe8f44311f1200e5c0912d517a..345dd931f76fe86bb7ecf6550412a1acf3afb6f0 100644 (file)
@@ -127,6 +127,7 @@ MACHINE_START(NOKIA_RX51, "Nokia RX-51 board")
        .init_irq       = omap3_init_irq,
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = rx51_init,
+       .init_late      = omap3430_init_late,
        .timer          = &omap3_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
index ab9a7a9e9d643a8d7cb347d048ea43eb2dd1df5e..d4c8392cadb67f6fb0e70697965fb4a141e404a7 100644 (file)
@@ -52,6 +52,7 @@ MACHINE_START(TI8168EVM, "ti8168evm")
        .init_irq       = ti81xx_init_irq,
        .timer          = &omap3_timer,
        .init_machine   = ti81xx_evm_init,
+       .init_late      = ti81xx_init_late,
        .restart        = omap_prcm_restart,
 MACHINE_END
 
@@ -63,5 +64,6 @@ MACHINE_START(TI8148EVM, "ti8148evm")
        .init_irq       = ti81xx_init_irq,
        .timer          = &omap3_timer,
        .init_machine   = ti81xx_evm_init,
+       .init_late      = ti81xx_init_late,
        .restart        = omap_prcm_restart,
 MACHINE_END
index 5c20bcc57f2b951d50fe2bef11080b36e9729a36..4e7e56142e6fef6c972196ec2eac8b96f186b4ae 100644 (file)
@@ -137,6 +137,7 @@ MACHINE_START(OMAP_ZOOM2, "OMAP Zoom2 board")
        .init_irq       = omap3_init_irq,
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = omap_zoom_init,
+       .init_late      = omap3430_init_late,
        .timer          = &omap3_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
@@ -149,6 +150,7 @@ MACHINE_START(OMAP_ZOOM3, "OMAP Zoom3 board")
        .init_irq       = omap3_init_irq,
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = omap_zoom_init,
+       .init_late      = omap3630_init_late,
        .timer          = &omap3_timer,
        .restart        = omap_prcm_restart,
 MACHINE_END
index 4cb1fe666311965aa9a02e3ec43ffad218efa760..be9dfd1abe603f247c089f7c0feab81bb3402223 100644 (file)
@@ -79,6 +79,42 @@ static inline void omap44xx_map_common_io(void)
 }
 #endif
 
+#if defined(CONFIG_PM) && defined(CONFIG_ARCH_OMAP2)
+int omap2_pm_init(void);
+#else
+static inline int omap2_pm_init(void)
+{
+       return 0;
+}
+#endif
+
+#if defined(CONFIG_PM) && defined(CONFIG_ARCH_OMAP3)
+int omap3_pm_init(void);
+#else
+static inline int omap3_pm_init(void)
+{
+       return 0;
+}
+#endif
+
+#if defined(CONFIG_PM) && defined(CONFIG_ARCH_OMAP4)
+int omap4_pm_init(void);
+#else
+static inline int omap4_pm_init(void)
+{
+       return 0;
+}
+#endif
+
+#ifdef CONFIG_OMAP_MUX
+int omap_mux_late_init(void);
+#else
+static inline int omap_mux_late_init(void)
+{
+       return 0;
+}
+#endif
+
 extern void omap2_init_common_infrastructure(void);
 
 extern struct sys_timer omap2_timer;
@@ -95,6 +131,17 @@ void omap3_init_early(void);        /* Do not use this one */
 void am35xx_init_early(void);
 void ti81xx_init_early(void);
 void omap4430_init_early(void);
+void omap3_init_late(void);    /* Do not use this one */
+void omap4430_init_late(void);
+void omap2420_init_late(void);
+void omap2430_init_late(void);
+void omap3430_init_late(void);
+void omap35xx_init_late(void);
+void omap3630_init_late(void);
+void am35xx_init_late(void);
+void ti81xx_init_late(void);
+void omap4430_init_late(void);
+int omap2_common_pm_late_init(void);
 void omap_prcm_restart(char, const char *);
 
 /*
index e1f9c6fc0414fb7960409c53daa5b7b5c7e1b40e..8d014ba04abcc7fe0fe0416db50dcb212458bb94 100644 (file)
@@ -350,6 +350,13 @@ void __init omap2420_init_early(void)
        omap_hwmod_init_postsetup();
        omap2420_clk_init();
 }
+
+void __init omap2420_init_late(void)
+{
+       omap_mux_late_init();
+       omap2_common_pm_late_init();
+       omap2_pm_init();
+}
 #endif
 
 #ifdef CONFIG_SOC_OMAP2430
@@ -365,6 +372,13 @@ void __init omap2430_init_early(void)
        omap_hwmod_init_postsetup();
        omap2430_clk_init();
 }
+
+void __init omap2430_init_late(void)
+{
+       omap_mux_late_init();
+       omap2_common_pm_late_init();
+       omap2_pm_init();
+}
 #endif
 
 /*
@@ -419,6 +433,48 @@ void __init ti81xx_init_early(void)
        omap_hwmod_init_postsetup();
        omap3xxx_clk_init();
 }
+
+void __init omap3_init_late(void)
+{
+       omap_mux_late_init();
+       omap2_common_pm_late_init();
+       omap3_pm_init();
+}
+
+void __init omap3430_init_late(void)
+{
+       omap_mux_late_init();
+       omap2_common_pm_late_init();
+       omap3_pm_init();
+}
+
+void __init omap35xx_init_late(void)
+{
+       omap_mux_late_init();
+       omap2_common_pm_late_init();
+       omap3_pm_init();
+}
+
+void __init omap3630_init_late(void)
+{
+       omap_mux_late_init();
+       omap2_common_pm_late_init();
+       omap3_pm_init();
+}
+
+void __init am35xx_init_late(void)
+{
+       omap_mux_late_init();
+       omap2_common_pm_late_init();
+       omap3_pm_init();
+}
+
+void __init ti81xx_init_late(void)
+{
+       omap_mux_late_init();
+       omap2_common_pm_late_init();
+       omap3_pm_init();
+}
 #endif
 
 #ifdef CONFIG_ARCH_OMAP4
@@ -435,6 +491,13 @@ void __init omap4430_init_early(void)
        omap_hwmod_init_postsetup();
        omap4xxx_clk_init();
 }
+
+void __init omap4430_init_late(void)
+{
+       omap_mux_late_init();
+       omap2_common_pm_late_init();
+       omap4_pm_init();
+}
 #endif
 
 void __init omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0,
index 3268ee24eada87ee74d24ce90bc9ea918260bfd2..80e55c5c99988c2bf63d49a63bf9b562cfaff036 100644 (file)
@@ -788,7 +788,7 @@ static void __init omap_mux_free_names(struct omap_mux *m)
 }
 
 /* Free all data except for GPIO pins unless CONFIG_DEBUG_FS is set */
-static int __init omap_mux_late_init(void)
+int __init omap_mux_late_init(void)
 {
        struct omap_mux_partition *partition;
        int ret;
@@ -823,7 +823,6 @@ static int __init omap_mux_late_init(void)
 
        return 0;
 }
-late_initcall(omap_mux_late_init);
 
 static void __init omap_mux_package_fixup(struct omap_mux *p,
                                        struct omap_mux *superset)
index d0c1c9695996d43f6ba7aa1de95e2cb58cd31048..9cb5cede0f5053632db80f17afecfbc0ecbdbed3 100644 (file)
@@ -295,7 +295,7 @@ static int __init omap2_common_pm_init(void)
 }
 postcore_initcall(omap2_common_pm_init);
 
-static int __init omap2_common_pm_late_init(void)
+int __init omap2_common_pm_late_init(void)
 {
        /*
         * 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)
 
        return 0;
 }
-late_initcall(omap2_common_pm_late_init);
index facfffca9eacb33471413136e61bea8fd3c9e6cb..2edeffc923a641d3a996e56e7575ba3543b2af55 100644 (file)
@@ -298,13 +298,10 @@ static void __init prcm_setup_regs(void)
                                WKUP_MOD, PM_WKEN);
 }
 
-static int __init omap2_pm_init(void)
+int __init omap2_pm_init(void)
 {
        u32 l;
 
-       if (!cpu_is_omap24xx())
-               return -ENODEV;
-
        printk(KERN_INFO "Power Management for OMAP2 initializing\n");
        l = omap2_prm_read_mod_reg(OCP_MOD, OMAP2_PRCM_REVISION_OFFSET);
        printk(KERN_INFO "PRCM revision %d.%d\n", (l >> 4) & 0x0f, l & 0x0f);
@@ -370,17 +367,13 @@ static int __init omap2_pm_init(void)
         * These routines need to be in SRAM as that's the only
         * memory the MPU can see when it wakes up.
         */
-       if (cpu_is_omap24xx()) {
-               omap2_sram_idle = omap_sram_push(omap24xx_idle_loop_suspend,
-                                                omap24xx_idle_loop_suspend_sz);
+       omap2_sram_idle = omap_sram_push(omap24xx_idle_loop_suspend,
+                                        omap24xx_idle_loop_suspend_sz);
 
-               omap2_sram_suspend = omap_sram_push(omap24xx_cpu_suspend,
-                                                   omap24xx_cpu_suspend_sz);
-       }
+       omap2_sram_suspend = omap_sram_push(omap24xx_cpu_suspend,
+                                           omap24xx_cpu_suspend_sz);
 
        arm_pm_idle = omap2_pm_idle;
 
        return 0;
 }
-
-late_initcall(omap2_pm_init);
index 8b43aefba0eae19b85a574f7324ed672d6670677..a34023d0ca7c665627d96ba4109a8a0e17b4ec6e 100644 (file)
@@ -697,15 +697,12 @@ static void __init pm_errata_configure(void)
        }
 }
 
-static int __init omap3_pm_init(void)
+int __init omap3_pm_init(void)
 {
        struct power_state *pwrst, *tmp;
        struct clockdomain *neon_clkdm, *mpu_clkdm;
        int ret;
 
-       if (!cpu_is_omap34xx())
-               return -ENODEV;
-
        if (!omap3_has_io_chain_ctrl())
                pr_warning("PM: no software I/O chain control; some wakeups may be lost\n");
 
@@ -804,5 +801,3 @@ err2:
 err1:
        return ret;
 }
-
-late_initcall(omap3_pm_init);
index 8856253524292dcfb9ebffca53bcc3f83cf3151d..ea24174f5707177d635d19a7671c3b8d2ed4443e 100644 (file)
@@ -141,15 +141,12 @@ static void omap_default_idle(void)
  * Initializes all powerdomain and clockdomain target states
  * and all PRCM settings.
  */
-static int __init omap4_pm_init(void)
+int __init omap4_pm_init(void)
 {
        int ret;
        struct clockdomain *emif_clkdm, *mpuss_clkdm, *l3_1_clkdm, *l4wkup;
        struct clockdomain *ducati_clkdm, *l3_2_clkdm, *l4_per_clkdm;
 
-       if (!cpu_is_omap44xx())
-               return -ENODEV;
-
        if (omap_rev() == OMAP4430_REV_ES1_0) {
                WARN(1, "Power Management not supported on OMAP4430 ES1.0\n");
                return -ENODEV;
@@ -217,4 +214,3 @@ static int __init omap4_pm_init(void)
 err2:
        return ret;
 }
-late_initcall(omap4_pm_init);
index be4c92858509f60975efadc3fd02c6d00084e996..a00d2f1254ed5194f31788a0776f84a231f7a743 100644 (file)
@@ -265,6 +265,17 @@ static void pnx4008_restart(char mode, const char *cmd)
        soft_restart(0);
 }
 
+#ifdef CONFIG_PM
+extern int pnx4008_pm_init(void);
+#else
+static inline int pnx4008_pm_init(void) { return 0; }
+#endif
+
+void __init pnx4008_init_late(void)
+{
+       pnx4008_pm_init();
+}
+
 extern struct sys_timer pnx4008_timer;
 
 MACHINE_START(PNX4008, "Philips PNX4008")
@@ -273,6 +284,7 @@ MACHINE_START(PNX4008, "Philips PNX4008")
        .map_io                 = pnx4008_map_io,
        .init_irq               = pnx4008_init_irq,
        .init_machine           = pnx4008_init,
+       .init_late              = pnx4008_init_late,
        .timer                  = &pnx4008_timer,
        .restart                = pnx4008_restart,
 MACHINE_END
index f3e60a049f983c5eb79c20646137f3b2c17f2806..26f8d06b142ade13d14116f51c8001dfea3ad898 100644 (file)
@@ -124,7 +124,7 @@ static const struct platform_suspend_ops pnx4008_pm_ops = {
        .valid = pnx4008_pm_valid,
 };
 
-static int __init pnx4008_pm_init(void)
+int __init pnx4008_pm_init(void)
 {
        u32 sram_size_to_allocate;
 
@@ -151,5 +151,3 @@ static int __init pnx4008_pm_init(void)
        suspend_set_ops(&pnx4008_pm_ops);
        return 0;
 }
-
-late_initcall(pnx4008_pm_init);
index b28a930d4f8ad0e0cf2f54deec014d4233d00a16..60d826fc2185143c5d0edfdef5fd08755ead758f 100644 (file)
@@ -24,4 +24,10 @@ static inline void sirfsoc_map_lluart(void)  {}
 extern void __init sirfsoc_map_lluart(void);
 #endif
 
+#ifdef CONFIG_SUSPEND
+extern int sirfsoc_pm_init(void);
+#else
+static inline int sirfsoc_pm_init(void) { return 0; }
+#endif
+
 #endif
index 26ebb57719df5d3fbf389e46cb723b92029b8191..fb5a7910af35b7a86534116f53b821aa2d36755c 100644 (file)
@@ -85,12 +85,11 @@ static const struct platform_suspend_ops sirfsoc_pm_ops = {
        .valid = suspend_valid_only_mem,
 };
 
-static int __init sirfsoc_pm_init(void)
+int __init sirfsoc_pm_init(void)
 {
        suspend_set_ops(&sirfsoc_pm_ops);
        return 0;
 }
-late_initcall(sirfsoc_pm_init);
 
 static const struct of_device_id pwrc_ids[] = {
        { .compatible = "sirf,prima2-pwrc" },
index 02b9c05ff9905b5ca94d1f5672709fe68d6b8c5c..8f0429d4b79f698d5c0e77117a75a3210f49c34b 100644 (file)
@@ -25,6 +25,11 @@ void __init sirfsoc_mach_init(void)
        of_platform_bus_probe(NULL, sirfsoc_of_bus_ids, NULL);
 }
 
+void __init sirfsoc_init_late(void)
+{
+       sirfsoc_pm_init();
+}
+
 static const char *prima2cb_dt_match[] __initdata = {
        "sirf,prima2-cb",
        NULL
@@ -39,6 +44,7 @@ MACHINE_START(PRIMA2_EVB, "prima2cb")
        .timer          = &sirfsoc_timer,
        .dma_zone_size  = SZ_256M,
        .init_machine   = sirfsoc_mach_init,
+       .init_late      = sirfsoc_init_late,
        .dt_compat      = prima2cb_dt_match,
        .restart        = sirfsoc_restart,
 MACHINE_END
index b313380342a5790efbcb62104353e54f44672dbd..be746e33e86c08a6d91fdb371c9cae2f27c8a91d 100644 (file)
@@ -384,3 +384,8 @@ void s3c64xx_restart(char mode, const char *cmd)
        /* if all else fails, or mode was for soft, jump to 0 */
        soft_restart(0);
 }
+
+void __init s3c64xx_init_late(void)
+{
+       s3c64xx_pm_late_initcall();
+}
index 7a10be629aba26723cb51bc28d460a0a5dc4ef53..6cfc99bdfb3733e3e311c0872a4d3df82558f9b0 100644 (file)
@@ -24,6 +24,7 @@ void s3c64xx_register_clocks(unsigned long xtal, unsigned armclk_limit);
 void s3c64xx_setup_clocks(void);
 
 void s3c64xx_restart(char mode, const char *cmd);
+void s3c64xx_init_late(void);
 
 #ifdef CONFIG_CPU_S3C6400
 
@@ -51,4 +52,10 @@ extern void s3c6410_init_clocks(int xtal);
 #define s3c6410_init NULL
 #endif
 
+#ifdef CONFIG_PM
+int __init s3c64xx_pm_late_initcall(void);
+#else
+static inline int s3c64xx_pm_late_initcall(void) { return 0; }
+#endif
+
 #endif /* __ARCH_ARM_MACH_S3C64XX_COMMON_H */
index f252691fb209d73fd316882014e12653c56cc2d8..314df0518afd51acf8c65525d219a0dcb3047e34 100644 (file)
@@ -230,6 +230,7 @@ MACHINE_START(ANW6410, "A&W6410")
        .handle_irq     = vic_handle_irq,
        .map_io         = anw6410_map_io,
        .init_machine   = anw6410_machine_init,
+       .init_late      = s3c64xx_init_late,
        .timer          = &s3c24xx_timer,
        .restart        = s3c64xx_restart,
 MACHINE_END
index aa1137fb47e616b3a43d569553ca0cd1db9e5a6e..eda5e027b109aa6a9af206c782cbfba6cd58bb9f 100644 (file)
@@ -813,6 +813,7 @@ MACHINE_START(WLF_CRAGG_6410, "Wolfson Cragganmore 6410")
        .handle_irq     = vic_handle_irq,
        .map_io         = crag6410_map_io,
        .init_machine   = crag6410_machine_init,
+       .init_late      = s3c64xx_init_late,
        .timer          = &s3c24xx_timer,
        .restart        = s3c64xx_restart,
 MACHINE_END
index 521e07b8501b18780d335f0162bac4cd140fdb03..1bf6b9da20fc487aaf78086ad715bb50f5351023 100644 (file)
@@ -272,6 +272,7 @@ MACHINE_START(HMT, "Airgoo-HMT")
        .handle_irq     = vic_handle_irq,
        .map_io         = hmt_map_io,
        .init_machine   = hmt_machine_init,
+       .init_late      = s3c64xx_init_late,
        .timer          = &s3c24xx_timer,
        .restart        = s3c64xx_restart,
 MACHINE_END
index b2166d4a5538caa33f0e9acd74b64aaa24a0a2a6..f8ea61ea3b33f27b137503d24bbccef1b205ec33 100644 (file)
@@ -339,6 +339,7 @@ MACHINE_START(MINI6410, "MINI6410")
        .handle_irq     = vic_handle_irq,
        .map_io         = mini6410_map_io,
        .init_machine   = mini6410_machine_init,
+       .init_late      = s3c64xx_init_late,
        .timer          = &s3c24xx_timer,
        .restart        = s3c64xx_restart,
 MACHINE_END
index 0efa2ba783b269f2c8824974f34c2e33ae7935dd..cad2e05eddf781e2429c2afc143626ce563d7f59 100644 (file)
@@ -104,6 +104,7 @@ MACHINE_START(NCP, "NCP")
        .handle_irq     = vic_handle_irq,
        .map_io         = ncp_map_io,
        .init_machine   = ncp_machine_init,
+       .init_late      = s3c64xx_init_late,
        .timer          = &s3c24xx_timer,
        .restart        = s3c64xx_restart,
 MACHINE_END
index 5c08266cea216957aa2b4051f82c4bd47356eb79..b92d8e17d502bebd35b876a2ce2926a4a3dde0f9 100644 (file)
@@ -320,6 +320,7 @@ MACHINE_START(REAL6410, "REAL6410")
        .handle_irq     = vic_handle_irq,
        .map_io         = real6410_map_io,
        .init_machine   = real6410_machine_init,
+       .init_late      = s3c64xx_init_late,
        .timer          = &s3c24xx_timer,
        .restart        = s3c64xx_restart,
 MACHINE_END
index 3f42431d4ddaf5ce47c186fd977d59e1d4f87623..c5021d0335c6a3c57036b86e010e1a926b96e6b1 100644 (file)
@@ -152,6 +152,7 @@ MACHINE_START(SMARTQ5, "SmartQ 5")
        .handle_irq     = vic_handle_irq,
        .map_io         = smartq_map_io,
        .init_machine   = smartq5_machine_init,
+       .init_late      = s3c64xx_init_late,
        .timer          = &s3c24xx_timer,
        .restart        = s3c64xx_restart,
 MACHINE_END
index e5c09b6db9677c06f625fba604e8b19fe1662a49..aa9072a4cbef4b72d4652887a819fc7a882bfeb8 100644 (file)
@@ -168,6 +168,7 @@ MACHINE_START(SMARTQ7, "SmartQ 7")
        .handle_irq     = vic_handle_irq,
        .map_io         = smartq_map_io,
        .init_machine   = smartq7_machine_init,
+       .init_late      = s3c64xx_init_late,
        .timer          = &s3c24xx_timer,
        .restart        = s3c64xx_restart,
 MACHINE_END
index 5f096534f4c4daf02c337a1371ba9d0393bac6e4..b0f4525c66bdf4549f0276bc4b085c9c7b1c898c 100644 (file)
@@ -93,6 +93,7 @@ MACHINE_START(SMDK6400, "SMDK6400")
        .handle_irq     = vic_handle_irq,
        .map_io         = smdk6400_map_io,
        .init_machine   = smdk6400_machine_init,
+       .init_late      = s3c64xx_init_late,
        .timer          = &s3c24xx_timer,
        .restart        = s3c64xx_restart,
 MACHINE_END
index 7da044f738acfaa28533f51cfa34a9a42d3500e5..d44319b09412cf572697f2f271543ce6260f6124 100644 (file)
@@ -702,6 +702,7 @@ MACHINE_START(SMDK6410, "SMDK6410")
        .handle_irq     = vic_handle_irq,
        .map_io         = smdk6410_map_io,
        .init_machine   = smdk6410_machine_init,
+       .init_late      = s3c64xx_init_late,
        .timer          = &s3c24xx_timer,
        .restart        = s3c64xx_restart,
 MACHINE_END
index 7d3e81b9dd06229034603aa260064384d8d44a5d..7feb426fc202d10be8f74a8992b5de212b6e4ba0 100644 (file)
@@ -365,10 +365,9 @@ static __init int s3c64xx_pm_initcall(void)
 }
 arch_initcall(s3c64xx_pm_initcall);
 
-static __init int s3c64xx_pm_late_initcall(void)
+int __init s3c64xx_pm_late_initcall(void)
 {
        pm_genpd_poweroff_unused();
 
        return 0;
 }
-late_initcall(s3c64xx_pm_late_initcall);
index 375d3f779a88a6f213aa296fd12aef7fd0631d0f..d1dc7f1a239ca057a5264eef71e05df77e885eda 100644 (file)
@@ -538,6 +538,7 @@ MACHINE_START(ASSABET, "Intel-Assabet")
        .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = assabet_init,
+       .init_late      = sa11x0_init_late,
 #ifdef CONFIG_SA1111
        .dma_zone_size  = SZ_1M,
 #endif
index e0f0c030258c5614bedf2abc8bd5d05e946e4233..b30fb99b587c9fe1025def432f7c7c0a6eb9bbf2 100644 (file)
@@ -305,6 +305,7 @@ MACHINE_START(BADGE4, "Hewlett-Packard Laboratories BadgePAD 4")
        .map_io         = badge4_map_io,
        .nr_irqs        = SA1100_NR_IRQS,
        .init_irq       = sa1100_init_irq,
+       .init_late      = sa11x0_init_late,
        .timer          = &sa1100_timer,
 #ifdef CONFIG_SA1111
        .dma_zone_size  = SZ_1M,
index 4a61f60e0502dc595dd54dc0a0a2e46a149227da..09d7f4b4b35487509840fe72ad0dd2d313c0e285 100644 (file)
@@ -134,5 +134,6 @@ MACHINE_START(CERF, "Intrinsyc CerfBoard/CerfCube")
        .init_irq       = cerf_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = cerf_init,
+       .init_late      = sa11x0_init_late,
        .restart        = sa11x0_restart,
 MACHINE_END
index c7f418b0cde9bde3ba23c8d1ea73533fa775b700..ea5cff38745c63ab666051695b5299497ae9b580 100644 (file)
@@ -401,5 +401,6 @@ MACHINE_START(COLLIE, "Sharp-Collie")
        .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = collie_init,
+       .init_late      = sa11x0_init_late,
        .restart        = sa11x0_restart,
 MACHINE_END
index 16be4c56abe3ff37a153807b93d066c49c0d94ab..9db3e98e8b85dbf8f4c27106e8c3e5ea76d89ccd 100644 (file)
@@ -359,6 +359,10 @@ static int __init sa1100_init(void)
 
 arch_initcall(sa1100_init);
 
+void __init sa11x0_init_late(void)
+{
+       sa11x0_pm_init();
+}
 
 /*
  * Common I/O mapping:
index 9eb3b3cd5a63501f18297676fc8c32dbdca21b57..a5b7c13da3e31bc7d331068f72c32420f95759b5 100644 (file)
@@ -11,6 +11,7 @@ extern void __init sa1100_map_io(void);
 extern void __init sa1100_init_irq(void);
 extern void __init sa1100_init_gpio(void);
 extern void sa11x0_restart(char, const char *);
+extern void sa11x0_init_late(void);
 
 #define SET_BANK(__nr,__start,__size) \
        mi->bank[__nr].start = (__start), \
@@ -41,3 +42,9 @@ void sa11x0_register_mcp(struct mcp_plat_data *data);
 
 struct sa1100fb_mach_info;
 void sa11x0_register_lcd(struct sa1100fb_mach_info *inf);
+
+#ifdef CONFIG_PM
+int sa11x0_pm_init(void);
+#else
+static inline int sa11x0_pm_init(void) { return 0; }
+#endif
index b2e8d0f418e09ef08ce2529d25defc7f9ef6aa9e..e1571eab08aeb3b5f5d48d5c62b2b7cea206c0cf 100644 (file)
@@ -110,6 +110,7 @@ MACHINE_START(H3100, "Compaq iPAQ H3100")
        .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = h3100_mach_init,
+       .init_late      = sa11x0_init_late,
        .restart        = sa11x0_restart,
 MACHINE_END
 
index cb6659f294fe37b35687fefd448d5d572a3ed274..ba7a2901ab88232da9bea4df8abc38266cc4544d 100644 (file)
@@ -160,6 +160,7 @@ MACHINE_START(H3600, "Compaq iPAQ H3600")
        .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = h3600_mach_init,
+       .init_late      = sa11x0_init_late,
        .restart        = sa11x0_restart,
 MACHINE_END
 
index 5535475bf58334b222733bd5fd6d16b76360aa66..7f86bd911826a4327462d577d43c53031c2fe185 100644 (file)
@@ -199,5 +199,6 @@ MACHINE_START(HACKKIT, "HackKit Cpu Board")
        .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = hackkit_init,
+       .init_late      = sa11x0_init_late,
        .restart        = sa11x0_restart,
 MACHINE_END
index ca7a7e834720a1cb3ef692f35f1d1b09ec2cf5f0..e3084f47027d8bf32c90af399825617cc4b62fa3 100644 (file)
@@ -348,6 +348,7 @@ MACHINE_START(JORNADA720, "HP Jornada 720")
        .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = jornada720_mach_init,
+       .init_late      = sa11x0_init_late,
 #ifdef CONFIG_SA1111
        .dma_zone_size  = SZ_1M,
 #endif
index eb6534e0b0d01c64e1ee88fa65bd23fbadaea99d..b775a0abec0af7575dafebe8673eef8758c14300 100644 (file)
@@ -147,6 +147,7 @@ MACHINE_START(LART, "LART")
        .nr_irqs        = SA1100_NR_IRQS,
        .init_irq       = sa1100_init_irq,
        .init_machine   = lart_init,
+       .init_late      = sa11x0_init_late,
        .timer          = &sa1100_timer,
        .restart        = sa11x0_restart,
 MACHINE_END
index 8f6446b9f025231669c19aa84ad2fed17d057e62..41f69d97066f5c0a5e1783d42b6be9dfaf3bbd9d 100644 (file)
@@ -112,5 +112,6 @@ MACHINE_START(NANOENGINE, "BSE nanoEngine")
        .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = nanoengine_init,
+       .init_late      = sa11x0_init_late,
        .restart        = sa11x0_restart,
 MACHINE_END
index 1602575a0d5c47f8c3be09387f1fff63c737e41e..37fe0a0a53692951db7335c05eb5249419e1d010 100644 (file)
@@ -135,5 +135,6 @@ MACHINE_START(PLEB, "PLEB")
        .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = pleb_init,
+       .init_late      = sa11x0_init_late,
        .restart        = sa11x0_restart,
 MACHINE_END
index 2fa499ec6afebf52cad16e2641192029a1cf44ef..690cf0ce5c0caa8f06ca8b10d0b31d0a36cc3032 100644 (file)
@@ -117,10 +117,8 @@ static const struct platform_suspend_ops sa11x0_pm_ops = {
        .valid          = suspend_valid_only_mem,
 };
 
-static int __init sa11x0_pm_init(void)
+int __init sa11x0_pm_init(void)
 {
        suspend_set_ops(&sa11x0_pm_ops);
        return 0;
 }
-
-late_initcall(sa11x0_pm_init);
index ca8bf59b9047d0fe07a31d4fc9dda277271c4b07..5d33fc3108ef7c3d4c291f00b2199b429c90ef21 100644 (file)
@@ -104,5 +104,6 @@ MACHINE_START(SHANNON, "Shannon (AKA: Tuxscreen)")
        .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = shannon_init,
+       .init_late      = sa11x0_init_late,
        .restart        = sa11x0_restart,
 MACHINE_END
index 3efae03cb3d7defef1f3f88e7112b09addb3a1cf..fbd53593be54ff37e409c9909c684682e5ce7dd0 100644 (file)
@@ -395,6 +395,7 @@ MACHINE_START(SIMPAD, "Simpad")
        .map_io         = simpad_map_io,
        .nr_irqs        = SA1100_NR_IRQS,
        .init_irq       = sa1100_init_irq,
+       .init_late      = sa11x0_init_late,
        .timer          = &sa1100_timer,
        .restart        = sa11x0_restart,
 MACHINE_END
index e6b177bc94107683808ac734ebe132a7c951f863..8aa1962c22a278dd233022b0886b9a77bba39af4 100644 (file)
@@ -3,7 +3,7 @@
 #
 
 # Common objects
-obj-y                          := timer.o console.o clock.o
+obj-y                          := timer.o console.o clock.o common.o
 
 # CPU objects
 obj-$(CONFIG_ARCH_SH7367)      += setup-sh7367.o clock-sh7367.o intc-sh7367.o
index 0891ec6e27f502b8fe220a3bff3b97dfbbe44c69..5a6f22f05e99bc3a166a92d968f48e3d43c56e5b 100644 (file)
@@ -580,5 +580,6 @@ MACHINE_START(AG5EVM, "ag5evm")
        .init_irq       = sh73a0_init_irq,
        .handle_irq     = gic_handle_irq,
        .init_machine   = ag5evm_init,
+       .init_late      = shmobile_init_late,
        .timer          = &shmobile_timer,
 MACHINE_END
index b540b8eb20ca91d860fdf75bab7ce97d4a675434..ace60246a5dfd429d3ffd98c778c6910cd839d39 100644 (file)
@@ -1469,5 +1469,6 @@ MACHINE_START(AP4EVB, "ap4evb")
        .init_irq       = sh7372_init_irq,
        .handle_irq     = shmobile_handle_irq_intc,
        .init_machine   = ap4evb_init,
+       .init_late      = shmobile_init_late,
        .timer          = &shmobile_timer,
 MACHINE_END
index 63ab7062bee33746e1ab439cd4475a13e596b7b6..e9b32cfbf741061f378fedf05b556553cdd6ceb3 100644 (file)
@@ -500,5 +500,6 @@ MACHINE_START(BONITO, "bonito")
        .init_irq       = r8a7740_init_irq,
        .handle_irq     = shmobile_handle_irq_intc,
        .init_machine   = bonito_init,
+       .init_late      = shmobile_init_late,
        .timer          = &shmobile_timer,
 MACHINE_END
index 39b6cf85ced6cc2d98d3132c56629ff0a7398874..796fa00ad3c459cc3432a522446592bc2e18f33a 100644 (file)
@@ -338,5 +338,6 @@ MACHINE_START(G3EVM, "g3evm")
        .init_irq       = sh7367_init_irq,
        .handle_irq     = shmobile_handle_irq_intc,
        .init_machine   = g3evm_init,
+       .init_late      = shmobile_init_late,
        .timer          = &shmobile_timer,
 MACHINE_END
index 0e5a39c670bc259731790e7f275bcfeb47ead4c9..f1257321999a3ca585b15706d413077339552f46 100644 (file)
@@ -381,5 +381,6 @@ MACHINE_START(G4EVM, "g4evm")
        .init_irq       = sh7377_init_irq,
        .handle_irq     = shmobile_handle_irq_intc,
        .init_machine   = g4evm_init,
+       .init_late      = shmobile_init_late,
        .timer          = &shmobile_timer,
 MACHINE_END
index 200dcd42a3a0f819bc4581b8f9b82e0da9a3f962..f60f1b281cc46117c2cd2a03585ac8b21a8359dd 100644 (file)
@@ -521,5 +521,6 @@ MACHINE_START(KOTA2, "kota2")
        .init_irq       = sh73a0_init_irq,
        .handle_irq     = gic_handle_irq,
        .init_machine   = kota2_init,
+       .init_late      = shmobile_init_late,
        .timer          = &shmobile_timer,
 MACHINE_END
index 50c67b22d08749eab3b985da19b6706906127729..b577f7c44678ade9a79753742e6606b3eb120600 100644 (file)
@@ -1638,5 +1638,6 @@ MACHINE_START(MACKEREL, "mackerel")
        .init_irq       = sh7372_init_irq,
        .handle_irq     = shmobile_handle_irq_intc,
        .init_machine   = mackerel_init,
+       .init_late      = shmobile_init_late,
        .timer          = &shmobile_timer,
 MACHINE_END
index ef0e13bf0b3a46911564e1ef7515740a77028574..14de3787cafcc7193abefe6e4c1c589988a76acc 100644 (file)
@@ -98,5 +98,6 @@ MACHINE_START(MARZEN, "marzen")
        .init_irq       = r8a7779_init_irq,
        .handle_irq     = gic_handle_irq,
        .init_machine   = marzen_init,
+       .init_late      = shmobile_init_late,
        .timer          = &shmobile_timer,
 MACHINE_END
diff --git a/arch/arm/mach-shmobile/common.c b/arch/arm/mach-shmobile/common.c
new file mode 100644 (file)
index 0000000..608aba9
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ */
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <mach/common.h>
+
+void __init shmobile_init_late(void)
+{
+       shmobile_suspend_init();
+       shmobile_cpuidle_init();
+}
index 7e6559105d40f27be8ffbdbc394cc377cec65ade..7b541e911ab4aebe99262ef74c8ec0fb6084c01c 100644 (file)
@@ -46,7 +46,7 @@ static struct cpuidle_driver shmobile_cpuidle_driver = {
 
 void (*shmobile_cpuidle_setup)(struct cpuidle_driver *drv);
 
-static int shmobile_cpuidle_init(void)
+int shmobile_cpuidle_init(void)
 {
        struct cpuidle_device *dev = &shmobile_cpuidle_dev;
        struct cpuidle_driver *drv = &shmobile_cpuidle_driver;
@@ -65,4 +65,3 @@ static int shmobile_cpuidle_init(void)
 
        return 0;
 }
-late_initcall(shmobile_cpuidle_init);
index ff5f12fd742fb737c923eb2210cebcdafed5a537..01e2bc014f1501f41f2f2a9b18a7596bb686ac27 100644 (file)
@@ -85,4 +85,18 @@ extern int r8a7779_boot_secondary(unsigned int cpu);
 extern void r8a7779_smp_prepare_cpus(void);
 extern void r8a7779_register_twd(void);
 
+extern void shmobile_init_late(void);
+
+#ifdef CONFIG_SUSPEND
+int shmobile_suspend_init(void);
+#else
+static inline int shmobile_suspend_init(void) { return 0; }
+#endif
+
+#ifdef CONFIG_CPU_IDLE
+int shmobile_cpuidle_init(void);
+#else
+static inline int shmobile_cpuidle_init(void) { return 0; }
+#endif
+
 #endif /* __ARCH_MACH_COMMON_H */
index 4d1b86a49923bf7f28f004ad4bb8c4a3f902095f..47d83f7a70b6065d2053730ad14237622fcdad7f 100644 (file)
@@ -39,9 +39,8 @@ struct platform_suspend_ops shmobile_suspend_ops = {
        .valid          = suspend_valid_only_mem,
 };
 
-static int __init shmobile_suspend_init(void)
+int __init shmobile_suspend_init(void)
 {
        suspend_set_ops(&shmobile_suspend_ops);
        return 0;
 }
-late_initcall(shmobile_suspend_init);
index fac3eb1af17e0257c043b9cbb91181b35caf1f84..eb7249db50a59cada041847515313f60cd05eb59 100644 (file)
@@ -110,6 +110,7 @@ DT_MACHINE_START(TEGRA_DT, "nVidia Tegra20 (Flattened Device Tree)")
        .handle_irq     = gic_handle_irq,
        .timer          = &tegra_timer,
        .init_machine   = tegra_dt_init,
+       .init_late      = tegra_init_late,
        .restart        = tegra_assert_system_reset,
        .dt_compat      = tegra20_dt_board_compat,
 MACHINE_END
index d96dae0b4aa7dc04e687733238055ca30af93080..4f76fa7a5da396860f9bf3a5a4d672c037b52a47 100644 (file)
@@ -90,6 +90,7 @@ DT_MACHINE_START(TEGRA30_DT, "NVIDIA Tegra30 (Flattened Device Tree)")
        .handle_irq     = gic_handle_irq,
        .timer          = &tegra_timer,
        .init_machine   = tegra30_dt_init,
+       .init_late      = tegra_init_late,
        .restart        = tegra_assert_system_reset,
        .dt_compat      = tegra30_dt_board_compat,
 MACHINE_END
index b906b3b6077b97a85a0e058605e4a6ccdfabb89a..e65e837f40136bba659b5ce2ae3b640fc70e9a0b 100644 (file)
@@ -192,5 +192,6 @@ MACHINE_START(HARMONY, "harmony")
        .handle_irq     = gic_handle_irq,
        .timer          = &tegra_timer,
        .init_machine   = tegra_harmony_init,
+       .init_late      = tegra_init_late,
        .restart        = tegra_assert_system_reset,
 MACHINE_END
index 55a1e6ccf4a274ad365225aa7181adfe77c3216f..bbc1907e98a69875144b32e367629a9f8b2739f9 100644 (file)
@@ -225,5 +225,6 @@ MACHINE_START(PAZ00, "Toshiba AC100 / Dynabook AZ")
        .handle_irq     = gic_handle_irq,
        .timer          = &tegra_timer,
        .init_machine   = tegra_paz00_init,
+       .init_late      = tegra_init_late,
        .restart        = tegra_assert_system_reset,
 MACHINE_END
index 79064c7a7907023eb1c4ffb82fc84aeddd44ca8c..71e9f3fc7fba28ffbd893c978342d3c7ad7c53e5 100644 (file)
@@ -277,6 +277,7 @@ MACHINE_START(SEABOARD, "seaboard")
        .handle_irq     = gic_handle_irq,
        .timer          = &tegra_timer,
        .init_machine   = tegra_seaboard_init,
+       .init_late      = tegra_init_late,
        .restart        = tegra_assert_system_reset,
 MACHINE_END
 
@@ -288,6 +289,7 @@ MACHINE_START(KAEN, "kaen")
        .handle_irq     = gic_handle_irq,
        .timer          = &tegra_timer,
        .init_machine   = tegra_kaen_init,
+       .init_late      = tegra_init_late,
        .restart        = tegra_assert_system_reset,
 MACHINE_END
 
@@ -299,5 +301,6 @@ MACHINE_START(WARIO, "wario")
        .handle_irq     = gic_handle_irq,
        .timer          = &tegra_timer,
        .init_machine   = tegra_wario_init,
+       .init_late      = tegra_init_late,
        .restart        = tegra_assert_system_reset,
 MACHINE_END
index 832fa931c7100afcb3d07657d8f2fa24f1df6216..776aa9564d5d61e3c803f701c2ed0bf87cca8dbc 100644 (file)
@@ -178,5 +178,6 @@ MACHINE_START(TRIMSLICE, "trimslice")
        .handle_irq     = gic_handle_irq,
        .timer          = &tegra_timer,
        .init_machine   = tegra_trimslice_init,
+       .init_late      = tegra_init_late,
        .restart        = tegra_assert_system_reset,
 MACHINE_END
index 75d1543d77c0d0f2029191f96fabc07d98c4e8fe..65014968fc6c05ad1144c421856034b40756f037 100644 (file)
@@ -32,5 +32,19 @@ void __init tegra_init_irq(void);
 void __init tegra_dt_init_irq(void);
 int __init tegra_pcie_init(bool init_port0, bool init_port1);
 
+void tegra_init_late(void);
+
+#ifdef CONFIG_DEBUG_FS
+int tegra_clk_debugfs_init(void);
+#else
+static inline int tegra_clk_debugfs_init(void) { return 0; }
+#endif
+
+#if defined(CONFIG_ARCH_TEGRA_2x_SOC) && defined(CONFIG_DEBUG_FS)
+int __init tegra_powergate_debugfs_init(void);
+#else
+static inline int tegra_powergate_debugfs_init(void) { return 0; }
+#endif
+
 extern struct sys_timer tegra_timer;
 #endif
index 8dad8d18cb49cd26e12212718de9295a4f4e550a..58f981c0819c717883ae99c8d9d7d4c825ea1cae 100644 (file)
@@ -642,7 +642,7 @@ static int clk_debugfs_register(struct clk *c)
        return 0;
 }
 
-static int __init clk_debugfs_init(void)
+int __init tegra_clk_debugfs_init(void)
 {
        struct clk *c;
        struct dentry *d;
@@ -669,5 +669,4 @@ err_out:
        return err;
 }
 
-late_initcall(clk_debugfs_init);
 #endif
index 2d80566b5383d5a745a62e2a6314f15c02afe796..204a5c8b0b574bd0cf2b46f5b0d4d1ccde87dd61 100644 (file)
@@ -146,3 +146,9 @@ void __init tegra30_init_early(void)
        tegra_powergate_init();
 }
 #endif
+
+void __init tegra_init_late(void)
+{
+       tegra_clk_debugfs_init();
+       tegra_powergate_debugfs_init();
+}
index c238699ae86f5021defde301911bcde0c0696a0f..f5b12fb4ff12306563fd5da0152230424118a843 100644 (file)
@@ -234,7 +234,7 @@ static const struct file_operations powergate_fops = {
        .release        = single_release,
 };
 
-static int __init powergate_debugfs_init(void)
+int __init tegra_powergate_debugfs_init(void)
 {
        struct dentry *d;
        int err = -ENOMEM;
@@ -247,6 +247,4 @@ static int __init powergate_debugfs_init(void)
        return err;
 }
 
-late_initcall(powergate_debugfs_init);
-
 #endif
index f943687acaf0e214d1bebc4ed317976c0b640cb5..b23a643f03f4ce62eaddfd9b29b7722c06c5afd8 100644 (file)
@@ -785,6 +785,7 @@ MACHINE_START(U8500, "ST-Ericsson MOP500 platform")
        .timer          = &ux500_timer,
        .handle_irq     = gic_handle_irq,
        .init_machine   = mop500_init_machine,
+       .init_late      = ux500_init_late,
 MACHINE_END
 
 MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+")
@@ -794,6 +795,7 @@ MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+")
        .timer          = &ux500_timer,
        .handle_irq     = gic_handle_irq,
        .init_machine   = hrefv60_init_machine,
+       .init_late      = ux500_init_late,
 MACHINE_END
 
 MACHINE_START(SNOWBALL, "Calao Systems Snowball platform")
@@ -804,6 +806,7 @@ MACHINE_START(SNOWBALL, "Calao Systems Snowball platform")
        .timer          = &ux500_timer,
        .handle_irq     = gic_handle_irq,
        .init_machine   = snowball_init_machine,
+       .init_late      = ux500_init_late,
 MACHINE_END
 
 #ifdef CONFIG_MACH_UX500_DT
@@ -918,6 +921,7 @@ DT_MACHINE_START(U8500_DT, "ST-Ericsson U8500 platform (Device Tree Support)")
        .timer          = &ux500_timer,
        .handle_irq     = gic_handle_irq,
        .init_machine   = u8500_init_machine,
+       .init_late      = ux500_init_late,
        .dt_compat      = u8500_dt_board_compat,
 MACHINE_END
 #endif
index 1762c4728f1e24b3dd41881d1d145cbac31c7c49..8d73b066a18d31dda628af949f7c84c260bd56a7 100644 (file)
@@ -635,7 +635,7 @@ static int clk_debugfs_register(struct clk *c)
        return 0;
 }
 
-static int __init clk_debugfs_init(void)
+int __init clk_debugfs_init(void)
 {
        struct clk *c;
        struct dentry *d;
@@ -657,7 +657,6 @@ err_out:
        return err;
 }
 
-late_initcall(clk_debugfs_init);
 #endif /* defined(CONFIG_DEBUG_FS) */
 
 unsigned long clk_smp_twd_rate = 500000000;
@@ -696,12 +695,11 @@ static struct notifier_block clk_twd_cpufreq_nb = {
        .notifier_call = clk_twd_cpufreq_transition,
 };
 
-static int clk_init_smp_twd_cpufreq(void)
+int clk_init_smp_twd_cpufreq(void)
 {
        return cpufreq_register_notifier(&clk_twd_cpufreq_nb,
                                  CPUFREQ_TRANSITION_NOTIFIER);
 }
-late_initcall(clk_init_smp_twd_cpufreq);
 
 #endif
 
index d776ada08dbf1062b0cb8d5733a31c00dcc7a78b..65d27a13f46d5073abbe4e7cc201ee4493247c74 100644 (file)
@@ -150,3 +150,15 @@ struct clk clk_##_name = {                                         \
 
 int __init clk_db8500_ed_fixup(void);
 int __init clk_init(void);
+
+#ifdef CONFIG_DEBUG_FS
+int clk_debugfs_init(void);
+#else
+static inline int clk_debugfs_init(void) { return 0; }
+#endif
+
+#ifdef CONFIG_CPU_FREQ
+int clk_init_smp_twd_cpufreq(void);
+#else
+static inline int clk_init_smp_twd_cpufreq(void) { return 0; }
+#endif
index a29a0e3adcf9da3e3aebca1905a3f7764bee4fdd..e2360e7c770d3a6c99b8abedfc38810503f290a7 100644 (file)
@@ -73,6 +73,12 @@ void __init ux500_init_irq(void)
        clk_init();
 }
 
+void __init ux500_init_late(void)
+{
+       clk_debugfs_init();
+       clk_init_smp_twd_cpufreq();
+}
+
 static const char * __init ux500_get_machine(void)
 {
        return kasprintf(GFP_KERNEL, "DB%4x", dbx500_partnumber());
index 4e369f1645ec9bbbfdc3ee3a28927a7f0e01ff2d..8b7ed82a286665961f04d548a0ab1137027fc7d8 100644 (file)
@@ -20,6 +20,7 @@ extern void __init u8500_map_io(void);
 extern struct device * __init u8500_init_devices(void);
 
 extern void __init ux500_init_irq(void);
+extern void __init ux500_init_late(void);
 
 extern struct device *ux500_soc_device_init(const char *soc_id);
 
index 0319c4a0cafaffc0869e2b74d632340ce2a05867..cf663d84e7c1d1397291e4667c526087c3aaca56 100644 (file)
@@ -53,6 +53,7 @@ extern void imx35_soc_init(void);
 extern void imx50_soc_init(void);
 extern void imx51_soc_init(void);
 extern void imx53_soc_init(void);
+extern void imx51_init_late(void);
 extern void epit_timer_init(struct clk *timer_clk, void __iomem *base, int irq);
 extern void mxc_timer_init(struct clk *timer_clk, void __iomem *, int);
 extern int mx1_clocks_init(unsigned long fref);
@@ -149,4 +150,10 @@ extern void imx6q_pm_init(void);
 static inline void imx6q_pm_init(void) {}
 #endif
 
+#ifdef CONFIG_NEON
+extern int mx51_neon_fixup(void);
+#else
+static inline int mx51_neon_fixup(void) { return 0; }
+#endif
+
 #endif