Commit 80b9abf9 authored by Olof Johansson's avatar Olof Johansson

Merge branch 'clean/late_initcall_v2' of...

Merge branch 'clean/late_initcall_v2' of git://git.linaro.org/people/shawnguo/linux-2.6 into staging/cleanup

By Shawn Guo
via Shawn Guo
* 'clean/late_initcall_v2' of git://git.linaro.org/people/shawnguo/linux-2.6:
  ARM: ux500: use machine specific hook for late init
  ARM: tegra: use machine specific hook for late init
  ARM: shmobile: use machine specific hook for late init
  ARM: sa1100: use machine specific hook for late init
  ARM: s3c64xx: use machine specific hook for late init
  ARM: prima2: use machine specific hook for late init
  ARM: pnx4008: use machine specific hook for late init
  ARM: omap2: use machine specific hook for late init
  ARM: omap1: use machine specific hook for late init
  ARM: msm: use machine specific hook for late init
  ARM: imx: use machine specific hook for late init
  ARM: exynos: use machine specific hook for late init
  ARM: ep93xx: use machine specific hook for late init
  ARM: davinci: use machine specific hook for late init
  ARM: provide a late_initcall hook for platform initialization
parents d48b97b4 a010bc2b
...@@ -43,6 +43,7 @@ struct machine_desc { ...@@ -43,6 +43,7 @@ struct machine_desc {
void (*init_irq)(void); void (*init_irq)(void);
struct sys_timer *timer; /* system tick timer */ struct sys_timer *timer; /* system tick timer */
void (*init_machine)(void); void (*init_machine)(void);
void (*init_late)(void);
#ifdef CONFIG_MULTI_IRQ_HANDLER #ifdef CONFIG_MULTI_IRQ_HANDLER
void (*handle_irq)(struct pt_regs *); void (*handle_irq)(struct pt_regs *);
#endif #endif
......
...@@ -800,6 +800,14 @@ static int __init customize_machine(void) ...@@ -800,6 +800,14 @@ static int __init customize_machine(void)
} }
arch_initcall(customize_machine); 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 #ifdef CONFIG_KEXEC
static inline unsigned long long get_total_mem(void) static inline unsigned long long get_total_mem(void)
{ {
......
...@@ -681,6 +681,7 @@ MACHINE_START(DAVINCI_DA830_EVM, "DaVinci DA830/OMAP-L137/AM17x EVM") ...@@ -681,6 +681,7 @@ MACHINE_START(DAVINCI_DA830_EVM, "DaVinci DA830/OMAP-L137/AM17x EVM")
.init_irq = cp_intc_init, .init_irq = cp_intc_init,
.timer = &davinci_timer, .timer = &davinci_timer,
.init_machine = da830_evm_init, .init_machine = da830_evm_init,
.init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,
.restart = da8xx_restart, .restart = da8xx_restart,
MACHINE_END MACHINE_END
...@@ -1411,6 +1411,7 @@ MACHINE_START(DAVINCI_DA850_EVM, "DaVinci DA850/OMAP-L138/AM18x EVM") ...@@ -1411,6 +1411,7 @@ MACHINE_START(DAVINCI_DA850_EVM, "DaVinci DA850/OMAP-L138/AM18x EVM")
.init_irq = cp_intc_init, .init_irq = cp_intc_init,
.timer = &davinci_timer, .timer = &davinci_timer,
.init_machine = da850_evm_init, .init_machine = da850_evm_init,
.init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,
.restart = da8xx_restart, .restart = da8xx_restart,
MACHINE_END MACHINE_END
...@@ -357,6 +357,7 @@ MACHINE_START(DAVINCI_DM355_EVM, "DaVinci DM355 EVM") ...@@ -357,6 +357,7 @@ MACHINE_START(DAVINCI_DM355_EVM, "DaVinci DM355 EVM")
.init_irq = davinci_irq_init, .init_irq = davinci_irq_init,
.timer = &davinci_timer, .timer = &davinci_timer,
.init_machine = dm355_evm_init, .init_machine = dm355_evm_init,
.init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,
.restart = davinci_restart, .restart = davinci_restart,
MACHINE_END MACHINE_END
...@@ -276,6 +276,7 @@ MACHINE_START(DM355_LEOPARD, "DaVinci DM355 leopard") ...@@ -276,6 +276,7 @@ MACHINE_START(DM355_LEOPARD, "DaVinci DM355 leopard")
.init_irq = davinci_irq_init, .init_irq = davinci_irq_init,
.timer = &davinci_timer, .timer = &davinci_timer,
.init_machine = dm355_leopard_init, .init_machine = dm355_leopard_init,
.init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,
.restart = davinci_restart, .restart = davinci_restart,
MACHINE_END MACHINE_END
...@@ -618,6 +618,7 @@ MACHINE_START(DAVINCI_DM365_EVM, "DaVinci DM365 EVM") ...@@ -618,6 +618,7 @@ MACHINE_START(DAVINCI_DM365_EVM, "DaVinci DM365 EVM")
.init_irq = davinci_irq_init, .init_irq = davinci_irq_init,
.timer = &davinci_timer, .timer = &davinci_timer,
.init_machine = dm365_evm_init, .init_machine = dm365_evm_init,
.init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,
.restart = davinci_restart, .restart = davinci_restart,
MACHINE_END MACHINE_END
......
...@@ -825,6 +825,7 @@ MACHINE_START(DAVINCI_EVM, "DaVinci DM644x EVM") ...@@ -825,6 +825,7 @@ MACHINE_START(DAVINCI_EVM, "DaVinci DM644x EVM")
.init_irq = davinci_irq_init, .init_irq = davinci_irq_init,
.timer = &davinci_timer, .timer = &davinci_timer,
.init_machine = davinci_evm_init, .init_machine = davinci_evm_init,
.init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,
.restart = davinci_restart, .restart = davinci_restart,
MACHINE_END MACHINE_END
...@@ -788,6 +788,7 @@ MACHINE_START(DAVINCI_DM6467_EVM, "DaVinci DM646x EVM") ...@@ -788,6 +788,7 @@ MACHINE_START(DAVINCI_DM6467_EVM, "DaVinci DM646x EVM")
.init_irq = davinci_irq_init, .init_irq = davinci_irq_init,
.timer = &davinci_timer, .timer = &davinci_timer,
.init_machine = evm_init, .init_machine = evm_init,
.init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,
.restart = davinci_restart, .restart = davinci_restart,
MACHINE_END MACHINE_END
...@@ -798,6 +799,7 @@ MACHINE_START(DAVINCI_DM6467TEVM, "DaVinci DM6467T EVM") ...@@ -798,6 +799,7 @@ MACHINE_START(DAVINCI_DM6467TEVM, "DaVinci DM6467T EVM")
.init_irq = davinci_irq_init, .init_irq = davinci_irq_init,
.timer = &davinci_timer, .timer = &davinci_timer,
.init_machine = evm_init, .init_machine = evm_init,
.init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,
.restart = davinci_restart, .restart = davinci_restart,
MACHINE_END MACHINE_END
......
...@@ -572,6 +572,7 @@ MACHINE_START(MITYOMAPL138, "MityDSP-L138/MityARM-1808") ...@@ -572,6 +572,7 @@ MACHINE_START(MITYOMAPL138, "MityDSP-L138/MityARM-1808")
.init_irq = cp_intc_init, .init_irq = cp_intc_init,
.timer = &davinci_timer, .timer = &davinci_timer,
.init_machine = mityomapl138_init, .init_machine = mityomapl138_init,
.init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,
.restart = da8xx_restart, .restart = da8xx_restart,
MACHINE_END MACHINE_END
...@@ -278,6 +278,7 @@ MACHINE_START(NEUROS_OSD2, "Neuros OSD2") ...@@ -278,6 +278,7 @@ MACHINE_START(NEUROS_OSD2, "Neuros OSD2")
.init_irq = davinci_irq_init, .init_irq = davinci_irq_init,
.timer = &davinci_timer, .timer = &davinci_timer,
.init_machine = davinci_ntosd2_init, .init_machine = davinci_ntosd2_init,
.init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,
.restart = davinci_restart, .restart = davinci_restart,
MACHINE_END MACHINE_END
...@@ -343,6 +343,7 @@ MACHINE_START(OMAPL138_HAWKBOARD, "AM18x/OMAP-L138 Hawkboard") ...@@ -343,6 +343,7 @@ MACHINE_START(OMAPL138_HAWKBOARD, "AM18x/OMAP-L138 Hawkboard")
.init_irq = cp_intc_init, .init_irq = cp_intc_init,
.timer = &davinci_timer, .timer = &davinci_timer,
.init_machine = omapl138_hawk_init, .init_machine = omapl138_hawk_init,
.init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,
.restart = da8xx_restart, .restart = da8xx_restart,
MACHINE_END MACHINE_END
...@@ -157,6 +157,7 @@ MACHINE_START(SFFSDR, "Lyrtech SFFSDR") ...@@ -157,6 +157,7 @@ MACHINE_START(SFFSDR, "Lyrtech SFFSDR")
.init_irq = davinci_irq_init, .init_irq = davinci_irq_init,
.timer = &davinci_timer, .timer = &davinci_timer,
.init_machine = davinci_sffsdr_init, .init_machine = davinci_sffsdr_init,
.init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,
.restart = davinci_restart, .restart = davinci_restart,
MACHINE_END MACHINE_END
...@@ -282,6 +282,7 @@ MACHINE_START(TNETV107X, "TNETV107X EVM") ...@@ -282,6 +282,7 @@ MACHINE_START(TNETV107X, "TNETV107X EVM")
.init_irq = cp_intc_init, .init_irq = cp_intc_init,
.timer = &davinci_timer, .timer = &davinci_timer,
.init_machine = tnetv107x_evm_board_init, .init_machine = tnetv107x_evm_board_init,
.init_late = davinci_init_late,
.dma_zone_size = SZ_128M, .dma_zone_size = SZ_128M,
.restart = tnetv107x_restart, .restart = tnetv107x_restart,
MACHINE_END MACHINE_END
...@@ -213,7 +213,7 @@ EXPORT_SYMBOL(clk_unregister); ...@@ -213,7 +213,7 @@ EXPORT_SYMBOL(clk_unregister);
/* /*
* Disable any unused clocks left on by the bootloader * 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; struct clk *ck;
...@@ -237,7 +237,6 @@ static int __init clk_disable_unused(void) ...@@ -237,7 +237,6 @@ static int __init clk_disable_unused(void)
return 0; return 0;
} }
late_initcall(clk_disable_unused);
#endif #endif
static unsigned long clk_sysclk_recalc(struct clk *clk) static unsigned long clk_sysclk_recalc(struct clk *clk)
......
...@@ -117,3 +117,10 @@ void __init davinci_common_init(struct davinci_soc_info *soc_info) ...@@ -117,3 +117,10 @@ void __init davinci_common_init(struct davinci_soc_info *soc_info)
err: err:
panic("davinci_common_init: SoC Initialization failed\n"); panic("davinci_common_init: SoC Initialization failed\n");
} }
void __init davinci_init_late(void)
{
davinci_cpufreq_init();
davinci_pm_init();
davinci_clk_disable_unused();
}
...@@ -240,10 +240,9 @@ static struct platform_driver davinci_cpufreq_driver = { ...@@ -240,10 +240,9 @@ static struct platform_driver davinci_cpufreq_driver = {
.remove = __exit_p(davinci_cpufreq_remove), .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, return platform_driver_probe(&davinci_cpufreq_driver,
davinci_cpufreq_probe); davinci_cpufreq_probe);
} }
late_initcall(davinci_cpufreq_init);
...@@ -84,6 +84,25 @@ extern struct davinci_soc_info davinci_soc_info; ...@@ -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_common_init(struct davinci_soc_info *soc_info);
extern void davinci_init_ide(void); extern void davinci_init_ide(void);
void davinci_restart(char mode, const char *cmd); 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 */ /* standard place to map on-chip SRAMs; they *may* support DMA */
#define SRAM_VIRT 0xfffe0000 #define SRAM_VIRT 0xfffe0000
......
...@@ -152,8 +152,7 @@ static struct platform_driver davinci_pm_driver = { ...@@ -152,8 +152,7 @@ static struct platform_driver davinci_pm_driver = {
.remove = __exit_p(davinci_pm_remove), .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); return platform_driver_probe(&davinci_pm_driver, davinci_pm_probe);
} }
late_initcall(davinci_pm_init);
...@@ -41,5 +41,6 @@ MACHINE_START(ADSSPHERE, "ADS Sphere board") ...@@ -41,5 +41,6 @@ MACHINE_START(ADSSPHERE, "ADS Sphere board")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.timer = &ep93xx_timer, .timer = &ep93xx_timer,
.init_machine = adssphere_init_machine, .init_machine = adssphere_init_machine,
.init_late = ep93xx_init_late,
.restart = ep93xx_restart, .restart = ep93xx_restart,
MACHINE_END MACHINE_END
...@@ -904,3 +904,8 @@ void ep93xx_restart(char mode, const char *cmd) ...@@ -904,3 +904,8 @@ void ep93xx_restart(char mode, const char *cmd)
while (1) while (1)
; ;
} }
void __init ep93xx_init_late(void)
{
crunch_init();
}
...@@ -79,12 +79,10 @@ static struct notifier_block crunch_notifier_block = { ...@@ -79,12 +79,10 @@ static struct notifier_block crunch_notifier_block = {
.notifier_call = crunch_do, .notifier_call = crunch_do,
}; };
static int __init crunch_init(void) int __init crunch_init(void)
{ {
thread_register_notifier(&crunch_notifier_block); thread_register_notifier(&crunch_notifier_block);
elf_hwcap |= HWCAP_CRUNCH; elf_hwcap |= HWCAP_CRUNCH;
return 0; return 0;
} }
late_initcall(crunch_init);
...@@ -255,6 +255,7 @@ MACHINE_START(EDB9301, "Cirrus Logic EDB9301 Evaluation Board") ...@@ -255,6 +255,7 @@ MACHINE_START(EDB9301, "Cirrus Logic EDB9301 Evaluation Board")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.timer = &ep93xx_timer, .timer = &ep93xx_timer,
.init_machine = edb93xx_init_machine, .init_machine = edb93xx_init_machine,
.init_late = ep93xx_init_late,
.restart = ep93xx_restart, .restart = ep93xx_restart,
MACHINE_END MACHINE_END
#endif #endif
...@@ -268,6 +269,7 @@ MACHINE_START(EDB9302, "Cirrus Logic EDB9302 Evaluation Board") ...@@ -268,6 +269,7 @@ MACHINE_START(EDB9302, "Cirrus Logic EDB9302 Evaluation Board")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.timer = &ep93xx_timer, .timer = &ep93xx_timer,
.init_machine = edb93xx_init_machine, .init_machine = edb93xx_init_machine,
.init_late = ep93xx_init_late,
.restart = ep93xx_restart, .restart = ep93xx_restart,
MACHINE_END MACHINE_END
#endif #endif
...@@ -281,6 +283,7 @@ MACHINE_START(EDB9302A, "Cirrus Logic EDB9302A Evaluation Board") ...@@ -281,6 +283,7 @@ MACHINE_START(EDB9302A, "Cirrus Logic EDB9302A Evaluation Board")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.timer = &ep93xx_timer, .timer = &ep93xx_timer,
.init_machine = edb93xx_init_machine, .init_machine = edb93xx_init_machine,
.init_late = ep93xx_init_late,
.restart = ep93xx_restart, .restart = ep93xx_restart,
MACHINE_END MACHINE_END
#endif #endif
...@@ -294,6 +297,7 @@ MACHINE_START(EDB9307, "Cirrus Logic EDB9307 Evaluation Board") ...@@ -294,6 +297,7 @@ MACHINE_START(EDB9307, "Cirrus Logic EDB9307 Evaluation Board")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.timer = &ep93xx_timer, .timer = &ep93xx_timer,
.init_machine = edb93xx_init_machine, .init_machine = edb93xx_init_machine,
.init_late = ep93xx_init_late,
.restart = ep93xx_restart, .restart = ep93xx_restart,
MACHINE_END MACHINE_END
#endif #endif
...@@ -307,6 +311,7 @@ MACHINE_START(EDB9307A, "Cirrus Logic EDB9307A Evaluation Board") ...@@ -307,6 +311,7 @@ MACHINE_START(EDB9307A, "Cirrus Logic EDB9307A Evaluation Board")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.timer = &ep93xx_timer, .timer = &ep93xx_timer,
.init_machine = edb93xx_init_machine, .init_machine = edb93xx_init_machine,
.init_late = ep93xx_init_late,
.restart = ep93xx_restart, .restart = ep93xx_restart,
MACHINE_END MACHINE_END
#endif #endif
...@@ -320,6 +325,7 @@ MACHINE_START(EDB9312, "Cirrus Logic EDB9312 Evaluation Board") ...@@ -320,6 +325,7 @@ MACHINE_START(EDB9312, "Cirrus Logic EDB9312 Evaluation Board")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.timer = &ep93xx_timer, .timer = &ep93xx_timer,
.init_machine = edb93xx_init_machine, .init_machine = edb93xx_init_machine,
.init_late = ep93xx_init_late,
.restart = ep93xx_restart, .restart = ep93xx_restart,
MACHINE_END MACHINE_END
#endif #endif
...@@ -333,6 +339,7 @@ MACHINE_START(EDB9315, "Cirrus Logic EDB9315 Evaluation Board") ...@@ -333,6 +339,7 @@ MACHINE_START(EDB9315, "Cirrus Logic EDB9315 Evaluation Board")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.timer = &ep93xx_timer, .timer = &ep93xx_timer,
.init_machine = edb93xx_init_machine, .init_machine = edb93xx_init_machine,
.init_late = ep93xx_init_late,
.restart = ep93xx_restart, .restart = ep93xx_restart,
MACHINE_END MACHINE_END
#endif #endif
...@@ -346,6 +353,7 @@ MACHINE_START(EDB9315A, "Cirrus Logic EDB9315A Evaluation Board") ...@@ -346,6 +353,7 @@ MACHINE_START(EDB9315A, "Cirrus Logic EDB9315A Evaluation Board")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.timer = &ep93xx_timer, .timer = &ep93xx_timer,
.init_machine = edb93xx_init_machine, .init_machine = edb93xx_init_machine,
.init_late = ep93xx_init_late,
.restart = ep93xx_restart, .restart = ep93xx_restart,
MACHINE_END MACHINE_END
#endif #endif
...@@ -41,5 +41,6 @@ MACHINE_START(GESBC9312, "Glomation GESBC-9312-sx") ...@@ -41,5 +41,6 @@ MACHINE_START(GESBC9312, "Glomation GESBC-9312-sx")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.timer = &ep93xx_timer, .timer = &ep93xx_timer,
.init_machine = gesbc9312_init_machine, .init_machine = gesbc9312_init_machine,
.init_late = ep93xx_init_late,
.restart = ep93xx_restart, .restart = ep93xx_restart,
MACHINE_END MACHINE_END
...@@ -53,5 +53,12 @@ void ep93xx_init_devices(void); ...@@ -53,5 +53,12 @@ void ep93xx_init_devices(void);
extern struct sys_timer ep93xx_timer; extern struct sys_timer ep93xx_timer;
void ep93xx_restart(char, const char *); 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 #endif
...@@ -85,6 +85,7 @@ MACHINE_START(MICRO9, "Contec Micro9-High") ...@@ -85,6 +85,7 @@ MACHINE_START(MICRO9, "Contec Micro9-High")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.timer = &ep93xx_timer, .timer = &ep93xx_timer,
.init_machine = micro9_init_machine, .init_machine = micro9_init_machine,
.init_late = ep93xx_init_late,
.restart = ep93xx_restart, .restart = ep93xx_restart,
MACHINE_END MACHINE_END
#endif #endif
...@@ -98,6 +99,7 @@ MACHINE_START(MICRO9M, "Contec Micro9-Mid") ...@@ -98,6 +99,7 @@ MACHINE_START(MICRO9M, "Contec Micro9-Mid")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.timer = &ep93xx_timer, .timer = &ep93xx_timer,
.init_machine = micro9_init_machine, .init_machine = micro9_init_machine,
.init_late = ep93xx_init_late,
.restart = ep93xx_restart, .restart = ep93xx_restart,
MACHINE_END MACHINE_END
#endif #endif
...@@ -111,6 +113,7 @@ MACHINE_START(MICRO9L, "Contec Micro9-Lite") ...@@ -111,6 +113,7 @@ MACHINE_START(MICRO9L, "Contec Micro9-Lite")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.timer = &ep93xx_timer, .timer = &ep93xx_timer,
.init_machine = micro9_init_machine, .init_machine = micro9_init_machine,
.init_late = ep93xx_init_late,
.restart = ep93xx_restart, .restart = ep93xx_restart,
MACHINE_END MACHINE_END
#endif #endif
...@@ -124,6 +127,7 @@ MACHINE_START(MICRO9S, "Contec Micro9-Slim") ...@@ -124,6 +127,7 @@ MACHINE_START(MICRO9S, "Contec Micro9-Slim")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.timer = &ep93xx_timer, .timer = &ep93xx_timer,
.init_machine = micro9_init_machine, .init_machine = micro9_init_machine,
.init_late = ep93xx_init_late,
.restart = ep93xx_restart, .restart = ep93xx_restart,
MACHINE_END MACHINE_END
#endif #endif
...@@ -86,5 +86,6 @@ MACHINE_START(SIM_ONE, "Simplemachines Sim.One Board") ...@@ -86,5 +86,6 @@ MACHINE_START(SIM_ONE, "Simplemachines Sim.One Board")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.timer = &ep93xx_timer, .timer = &ep93xx_timer,
.init_machine = simone_init_machine, .init_machine = simone_init_machine,
.init_late = ep93xx_init_late,
.restart = ep93xx_restart, .restart = ep93xx_restart,
MACHINE_END MACHINE_END
...@@ -183,5 +183,6 @@ MACHINE_START(SNAPPER_CL15, "Bluewater Systems Snapper CL15") ...@@ -183,5 +183,6 @@ MACHINE_START(SNAPPER_CL15, "Bluewater Systems Snapper CL15")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.timer = &ep93xx_timer, .timer = &ep93xx_timer,
.init_machine = snappercl15_init_machine, .init_machine = snappercl15_init_machine,
.init_late = ep93xx_init_late,
.restart = ep93xx_restart, .restart = ep93xx_restart,
MACHINE_END MACHINE_END
...@@ -252,5 +252,6 @@ MACHINE_START(TS72XX, "Technologic Systems TS-72xx SBC") ...@@ -252,5 +252,6 @@ MACHINE_START(TS72XX, "Technologic Systems TS-72xx SBC")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.timer = &ep93xx_timer, .timer = &ep93xx_timer,
.init_machine = ts72xx_init_machine, .init_machine = ts72xx_init_machine,
.init_late = ep93xx_init_late,
.restart = ep93xx_restart, .restart = ep93xx_restart,
MACHINE_END MACHINE_END
...@@ -367,5 +367,6 @@ MACHINE_START(VISION_EP9307, "Vision Engraving Systems EP9307") ...@@ -367,5 +367,6 @@ MACHINE_START(VISION_EP9307, "Vision Engraving Systems EP9307")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.timer = &ep93xx_timer, .timer = &ep93xx_timer,
.init_machine = vision_init_machine, .init_machine = vision_init_machine,
.init_late = ep93xx_init_late,
.restart = ep93xx_restart, .restart = ep93xx_restart,
MACHINE_END MACHINE_END
...@@ -285,6 +285,11 @@ void exynos5_restart(char mode, const char *cmd) ...@@ -285,6 +285,11 @@ void exynos5_restart(char mode, const char *cmd)
__raw_writel(0x1, EXYNOS_SWRESET); __raw_writel(0x1, EXYNOS_SWRESET);
} }
void __init exynos_init_late(void)
{
exynos_pm_late_initcall();
}
/* /*
* exynos_map_io * exynos_map_io
* *
......
...@@ -19,6 +19,13 @@ void exynos4_init_irq(void); ...@@ -19,6 +19,13 @@ void exynos4_init_irq(void);
void exynos5_init_irq(void); void exynos5_init_irq(void);
void exynos4_restart(char mode, const char *cmd); void exynos4_restart(char mode, const char *cmd);
void exynos5_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 #ifdef CONFIG_ARCH_EXYNOS4
void exynos4_register_clocks(void); void exynos4_register_clocks(void);
......
...@@ -214,6 +214,7 @@ MACHINE_START(ARMLEX4210, "ARMLEX4210") ...@@ -214,6 +214,7 @@ MACHINE_START(ARMLEX4210, "ARMLEX4210")
.map_io = armlex4210_map_io, .map_io = armlex4210_map_io,
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.init_machine = armlex4210_machine_init, .init_machine = armlex4210_machine_init,
.init_late = exynos_init_late,
.timer = &exynos4_timer, .timer = &exynos4_timer,
.restart = exynos4_restart, .restart = exynos4_restart,
MACHINE_END MACHINE_END
...@@ -83,6 +83,7 @@ DT_MACHINE_START(EXYNOS4210_DT, "Samsung Exynos4 (Flattened Device Tree)") ...@@ -83,6 +83,7 @@ DT_MACHINE_START(EXYNOS4210_DT, "Samsung Exynos4 (Flattened Device Tree)")
.map_io = exynos4210_dt_map_io, .map_io = exynos4210_dt_map_io,
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.init_machine = exynos4210_dt_machine_init, .init_machine = exynos4210_dt_machine_init,
.init_late = exynos_init_late,
.timer = &exynos4_timer, .timer = &exynos4_timer,
.dt_compat = exynos4210_dt_compat, .dt_compat = exynos4210_dt_compat,
.restart = exynos4_restart, .restart = exynos4_restart,
......
...@@ -72,6 +72,7 @@ DT_MACHINE_START(EXYNOS5_DT, "SAMSUNG EXYNOS5 (Flattened Device Tree)") ...@@ -72,6 +72,7 @@ DT_MACHINE_START(EXYNOS5_DT, "SAMSUNG EXYNOS5 (Flattened Device Tree)")
.map_io = exynos5250_dt_map_io, .map_io = exynos5250_dt_map_io,
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.init_machine = exynos5250_dt_machine_init, .init_machine = exynos5250_dt_machine_init,
.init_late = exynos_init_late,
.timer = &exynos4_timer, .timer = &exynos4_timer,
.dt_compat = exynos5250_dt_compat, .dt_compat = exynos5250_dt_compat,
.restart = exynos5_restart, .restart = exynos5_restart,
......
...@@ -1351,6 +1351,7 @@ MACHINE_START(NURI, "NURI") ...@@ -1351,6 +1351,7 @@ MACHINE_START(NURI, "NURI")
.map_io = nuri_map_io, .map_io = nuri_map_io,
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.init_machine = nuri_machine_init, .init_machine = nuri_machine_init,
.init_late = exynos_init_late,
.timer = &exynos4_timer, .timer = &exynos4_timer,
.reserve = &nuri_reserve, .reserve = &nuri_reserve,
.restart = exynos4_restart, .restart = exynos4_restart,
......
...@@ -735,6 +735,7 @@ MACHINE_START(ORIGEN, "ORIGEN") ...@@ -735,6 +735,7 @@ MACHINE_START(ORIGEN, "ORIGEN")
.map_io = origen_map_io, .map_io = origen_map_io,
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.init_machine = origen_machine_init, .init_machine = origen_machine_init,
.init_late = exynos_init_late,
.timer = &exynos4_timer, .timer = &exynos4_timer,
.reserve = &origen_reserve, .reserve = &origen_reserve,
.restart = exynos4_restart, .restart = exynos4_restart,
......
...@@ -303,6 +303,7 @@ MACHINE_START(SMDK4412, "SMDK4412") ...@@ -303,6 +303,7 @@ MACHINE_START(SMDK4412, "SMDK4412")
.map_io = smdk4x12_map_io, .map_io = smdk4x12_map_io,
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.init_machine = smdk4x12_machine_init, .init_machine = smdk4x12_machine_init,
.init_late = exynos_init_late,
.timer = &exynos4_timer, .timer = &exynos4_timer,
.restart = exynos4_restart, .restart = exynos4_restart,
MACHINE_END MACHINE_END
...@@ -393,6 +393,7 @@ MACHINE_START(SMDKC210, "SMDKC210") ...@@ -393,6 +393,7 @@ MACHINE_START(SMDKC210, "SMDKC210")
.map_io = smdkv310_map_io, .map_io = smdkv310_map_io,
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.init_machine = smdkv310_machine_init, .init_machine = smdkv310_machine_init,
.init_late = exynos_init_late,
.timer = &exynos4_timer, .timer = &exynos4_timer,
.restart = exynos4_restart, .restart = exynos4_restart,
MACHINE_END MACHINE_END
...@@ -1113,6 +1113,7 @@ MACHINE_START(UNIVERSAL_C210, "UNIVERSAL_C210") ...@@ -1113,6 +1113,7 @@ MACHINE_START(UNIVERSAL_C210, "UNIVERSAL_C210")
.map_io = universal_map_io, .map_io = universal_map_io,
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.init_machine = universal_machine_init, .init_machine = universal_machine_init,
.init_late = exynos_init_late,
.timer = &exynos4_timer, .timer = &exynos4_timer,
.reserve = &universal_reserve, .reserve = &universal_reserve,
.restart = exynos4_restart, .restart = exynos4_restart,
......
...@@ -193,9 +193,8 @@ static __init int exynos4_pm_init_power_domain(void) ...@@ -193,9 +193,8 @@ static __init int exynos4_pm_init_power_domain(void)
} }
arch_initcall(exynos4_pm_init_power_domain); 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(); pm_genpd_poweroff_unused();
return 0; return 0;
} }
late_initcall(exynos_pm_late_initcall);
...@@ -62,11 +62,8 @@ EXPORT_SYMBOL(mx51_revision); ...@@ -62,11 +62,8 @@ EXPORT_SYMBOL(mx51_revision);
* Dependent on link order - so the assumption is that vfp_init is called * Dependent on link order - so the assumption is that vfp_init is called
* before us. * 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 && if (mx51_revision() < IMX_CHIP_REVISION_3_0 &&
(elf_hwcap & HWCAP_NEON)) { (elf_hwcap & HWCAP_NEON)) {
elf_hwcap &= ~HWCAP_NEON; elf_hwcap &= ~HWCAP_NEON;
...@@ -75,7 +72,6 @@ static int __init mx51_neon_fixup(void) ...@@ -75,7 +72,6 @@ static int __init mx51_neon_fixup(void)
return 0; return 0;
} }
late_initcall(mx51_neon_fixup);
#endif #endif
static int get_mx53_srev(void) static int get_mx53_srev(void)
......
...@@ -115,6 +115,7 @@ DT_MACHINE_START(IMX51_DT, "Freescale i.MX51 (Device Tree Support)") ...@@ -115,6 +115,7 @@ DT_MACHINE_START(IMX51_DT, "Freescale i.MX51 (Device Tree Support)")
.handle_irq = imx51_handle_irq, .handle_irq = imx51_handle_irq,
.timer = &imx51_timer, .timer = &imx51_timer,
.init_machine = imx51_dt_init, .init_machine = imx51_dt_init,
.init_late = imx51_init_late,
.dt_compat = imx51_dt_board_compat, .dt_compat = imx51_dt_board_compat,
.restart = mxc_restart, .restart = mxc_restart,
MACHINE_END MACHINE_END
...@@ -297,5 +297,6 @@ MACHINE_START(EUKREA_CPUIMX51, "Eukrea CPUIMX51 Module") ...@@ -297,5 +297,6 @@ MACHINE_START(EUKREA_CPUIMX51, "Eukrea CPUIMX51 Module")
.handle_irq = imx51_handle_irq, .handle_irq = imx51_handle_irq,
.timer = &mxc_timer, .timer = &mxc_timer,
.init_machine = eukrea_cpuimx51_init, .init_machine = eukrea_cpuimx51_init,
.init_late = imx51_init_late,
.restart = mxc_restart, .restart = mxc_restart,
MACHINE_END MACHINE_END
...@@ -335,5 +335,6 @@ MACHINE_START(EUKREA_CPUIMX51SD, "Eukrea CPUIMX51SD") ...@@ -335,5 +335,6 @@ MACHINE_START(EUKREA_CPUIMX51SD, "Eukrea CPUIMX51SD")
.handle_irq = imx51_handle_irq, .handle_irq = imx51_handle_irq,
.timer = &mxc_timer, .timer = &mxc_timer,
.init_machine = eukrea_cpuimx51sd_init, .init_machine = eukrea_cpuimx51sd_init,
.init_late = imx51_init_late,
.restart = mxc_restart, .restart = mxc_restart,
MACHINE_END MACHINE_END
...@@ -175,5 +175,6 @@ MACHINE_START(MX51_3DS, "Freescale MX51 3-Stack Board") ...@@ -175,5 +175,6 @@ MACHINE_START(MX51_3DS, "Freescale MX51 3-Stack Board")
.handle_irq = imx51_handle_irq, .handle_irq = imx51_handle_irq,
.timer = &mx51_3ds_timer, .timer = &mx51_3ds_timer,
.init_machine = mx51_3ds_init, .init_machine = mx51_3ds_init,
.init_late = imx51_init_late,
.restart = mxc_restart, .restart = mxc_restart,
MACHINE_END MACHINE_END
...@@ -426,5 +426,6 @@ MACHINE_START(MX51_BABBAGE, "Freescale MX51 Babbage Board") ...@@ -426,5 +426,6 @@ MACHINE_START(MX51_BABBAGE, "Freescale MX51 Babbage Board")
.handle_irq = imx51_handle_irq, .handle_irq = imx51_handle_irq,
.timer = &mx51_babbage_timer, .timer = &mx51_babbage_timer,
.init_machine = mx51_babbage_init, .init_machine = mx51_babbage_init,
.init_late = imx51_init_late,
.restart = mxc_restart, .restart = mxc_restart,
MACHINE_END MACHINE_END
...@@ -207,29 +207,32 @@ static void mx51_efikamx_power_off(void) ...@@ -207,29 +207,32 @@ static void mx51_efikamx_power_off(void)
static int __init mx51_efikamx_power_init(void) static int __init mx51_efikamx_power_init(void)
{ {
if (machine_is_mx51_efikamx()) { pwgt1 = regulator_get(NULL, "pwgt1");
pwgt1 = regulator_get(NULL, "pwgt1"); pwgt2 = regulator_get(NULL, "pwgt2");
pwgt2 = regulator_get(NULL, "pwgt2"); if (!IS_ERR(pwgt1) && !IS_ERR(pwgt2)) {
if (!IS_ERR(pwgt1) && !IS_ERR(pwgt2)) { regulator_enable(pwgt1);
regulator_enable(pwgt1); regulator_enable(pwgt2);
regulator_enable(pwgt2); }
} gpio_request(EFIKAMX_POWEROFF, "poweroff");
gpio_request(EFIKAMX_POWEROFF, "poweroff"); pm_power_off = mx51_efikamx_power_off;
pm_power_off = mx51_efikamx_power_off;
/* enable coincell charger. maybe need a small power driver ? */
/* enable coincell charger. maybe need a small power driver ? */ coincell = regulator_get(NULL, "coincell");
coincell = regulator_get(NULL, "coincell"); if (!IS_ERR(coincell)) {
if (!IS_ERR(coincell)) { regulator_set_voltage(coincell, 3000000, 3000000);
regulator_set_voltage(coincell, 3000000, 3000000); regulator_enable(coincell);
regulator_enable(coincell);
}
regulator_has_full_constraints();
} }
regulator_has_full_constraints();
return 0; 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) static void __init mx51_efikamx_init(void)
{ {
...@@ -293,5 +296,6 @@ MACHINE_START(MX51_EFIKAMX, "Genesi EfikaMX nettop") ...@@ -293,5 +296,6 @@ MACHINE_START(MX51_EFIKAMX, "Genesi EfikaMX nettop")
.handle_irq = imx51_handle_irq, .handle_irq = imx51_handle_irq,
.timer = &mx51_efikamx_timer, .timer = &mx51_efikamx_timer,
.init_machine = mx51_efikamx_init, .init_machine = mx51_efikamx_init,
.init_late = mx51_efikamx_init_late,
.restart = mx51_efikamx_restart, .restart = mx51_efikamx_restart,
MACHINE_END MACHINE_END
...@@ -211,22 +211,25 @@ static void mx51_efikasb_power_off(void) ...@@ -211,22 +211,25 @@ static void mx51_efikasb_power_off(void)
static int __init mx51_efikasb_power_init(void) static int __init mx51_efikasb_power_init(void)
{ {
if (machine_is_mx51_efikasb()) { pwgt1 = regulator_get(NULL, "pwgt1");
pwgt1 = regulator_get(NULL, "pwgt1"); pwgt2 = regulator_get(NULL, "pwgt2");
pwgt2 = regulator_get(NULL, "pwgt2"); if (!IS_ERR(pwgt1) && !IS_ERR(pwgt2)) {
if (!IS_ERR(pwgt1) && !IS_ERR(pwgt2)) { regulator_enable(pwgt1);
regulator_enable(pwgt1); regulator_enable(pwgt2);
regulator_enable(pwgt2);
}
gpio_request(EFIKASB_POWEROFF, "poweroff");
pm_power_off = mx51_efikasb_power_off;
regulator_has_full_constraints();
} }
gpio_request(EFIKASB_POWEROFF, "poweroff");
pm_power_off = mx51_efikasb_power_off;
regulator_has_full_constraints();
return 0; 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 /* 01 R1.3 board
10 R2.0 board */ 10 R2.0 board */
...@@ -287,6 +290,7 @@ MACHINE_START(MX51_EFIKASB, "Genesi Efika Smartbook") ...@@ -287,6 +290,7 @@ MACHINE_START(MX51_EFIKASB, "Genesi Efika Smartbook")
.init_irq = mx51_init_irq, .init_irq = mx51_init_irq,
.handle_irq = imx51_handle_irq, .handle_irq = imx51_handle_irq,
.init_machine = efikasb_board_init, .init_machine = efikasb_board_init,
.init_late = mx51_efikasb_init_late,
.timer = &mx51_efikasb_timer, .timer = &mx51_efikasb_timer,
.restart = mxc_restart, .restart = mxc_restart,
MACHINE_END MACHINE_END
...@@ -694,6 +694,11 @@ static void __init pcm037_reserve(void) ...@@ -694,6 +694,11 @@ static void __init pcm037_reserve(void)
MX3_CAMERA_BUF_SIZE); MX3_CAMERA_BUF_SIZE);
} }
static void __init pcm037_init_late(void)
{
pcm037_eet_init_devices();
}
MACHINE_START(PCM037, "Phytec Phycore pcm037") MACHINE_START(PCM037, "Phytec Phycore pcm037")
/* Maintainer: Pengutronix */ /* Maintainer: Pengutronix */
.atag_offset = 0x100, .atag_offset = 0x100,
...@@ -704,5 +709,6 @@ MACHINE_START(PCM037, "Phytec Phycore pcm037") ...@@ -704,5 +709,6 @@ MACHINE_START(PCM037, "Phytec Phycore pcm037")
.handle_irq = imx31_handle_irq, .handle_irq = imx31_handle_irq,
.timer = &pcm037_timer, .timer = &pcm037_timer,
.init_machine = pcm037_init, .init_machine = pcm037_init,
.init_late = pcm037_init_late,
.restart = mxc_restart, .restart = mxc_restart,
MACHINE_END MACHINE_END
...@@ -160,9 +160,9 @@ static const struct gpio_keys_platform_data ...@@ -160,9 +160,9 @@ static const struct gpio_keys_platform_data
.rep = 0, /* No auto-repeat */ .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; return 0;
mxc_iomux_setup_multiple_pins(pcm037_eet_pins, mxc_iomux_setup_multiple_pins(pcm037_eet_pins,
...@@ -176,4 +176,3 @@ static int __init eet_init_devices(void) ...@@ -176,4 +176,3 @@ static int __init eet_init_devices(void)
return 0; return 0;
} }
late_initcall(eet_init_devices);
...@@ -234,3 +234,8 @@ void __init imx53_soc_init(void) ...@@ -234,3 +234,8 @@ void __init imx53_soc_init(void)
platform_device_register_simple("imx31-audmux", 0, imx53_audmux_res, platform_device_register_simple("imx31-audmux", 0, imx53_audmux_res,
ARRAY_SIZE(imx53_audmux_res)); ARRAY_SIZE(imx53_audmux_res));
} }
void __init imx51_init_late(void)
{
mx51_neon_fixup();
}
...@@ -8,4 +8,10 @@ enum pcm037_board_variant { ...@@ -8,4 +8,10 @@ enum pcm037_board_variant {
extern enum pcm037_board_variant pcm037_variant(void); 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 #endif
...@@ -94,6 +94,11 @@ static void __init halibut_map_io(void) ...@@ -94,6 +94,11 @@ static void __init halibut_map_io(void)
msm_clock_init(msm_clocks_7x01a, msm_num_clocks_7x01a); 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)") MACHINE_START(HALIBUT, "Halibut Board (QCT SURF7200A)")
.atag_offset = 0x100, .atag_offset = 0x100,
.fixup = halibut_fixup, .fixup = halibut_fixup,
...@@ -101,5 +106,6 @@ MACHINE_START(HALIBUT, "Halibut Board (QCT SURF7200A)") ...@@ -101,5 +106,6 @@ MACHINE_START(HALIBUT, "Halibut Board (QCT SURF7200A)")
.init_early = halibut_init_early, .init_early = halibut_init_early,
.init_irq = halibut_init_irq, .init_irq = halibut_init_irq,
.init_machine = halibut_init, .init_machine = halibut_init,
.init_late = halibut_init_late,
.timer = &msm_timer, .timer = &msm_timer,
MACHINE_END MACHINE_END
...@@ -71,6 +71,11 @@ static void __init mahimahi_map_io(void) ...@@ -71,6 +71,11 @@ static void __init mahimahi_map_io(void)
msm_clock_init(); msm_clock_init();
} }
static void __init mahimahi_init_late(void)
{
smd_debugfs_init();
}
extern struct sys_timer msm_timer; extern struct sys_timer msm_timer;
MACHINE_START(MAHIMAHI, "mahimahi") MACHINE_START(MAHIMAHI, "mahimahi")
...@@ -79,5 +84,6 @@ MACHINE_START(MAHIMAHI, "mahimahi") ...@@ -79,5 +84,6 @@ MACHINE_START(MAHIMAHI, "mahimahi")
.map_io = mahimahi_map_io, .map_io = mahimahi_map_io,
.init_irq = msm_init_irq, .init_irq = msm_init_irq,
.init_machine = mahimahi_init, .init_machine = mahimahi_init,
.init_late = mahimahi_init_late,
.timer = &msm_timer, .timer = &msm_timer,
MACHINE_END MACHINE_END
...@@ -128,11 +128,17 @@ static void __init msm7x2x_map_io(void) ...@@ -128,11 +128,17 @@ static void __init msm7x2x_map_io(void)
#endif #endif
} }
static void __init msm7x2x_init_late(void)
{
smd_debugfs_init();
}
MACHINE_START(MSM7X27_SURF, "QCT MSM7x27 SURF") MACHINE_START(MSM7X27_SURF, "QCT MSM7x27 SURF")
.atag_offset = 0x100, .atag_offset = 0x100,
.map_io = msm7x2x_map_io, .map_io = msm7x2x_map_io,
.init_irq = msm7x2x_init_irq, .init_irq = msm7x2x_init_irq,
.init_machine = msm7x2x_init, .init_machine = msm7x2x_init,
.init_late = msm7x2x_init_late,
.timer = &msm_timer, .timer = &msm_timer,
MACHINE_END MACHINE_END
...@@ -141,6 +147,7 @@ MACHINE_START(MSM7X27_FFA, "QCT MSM7x27 FFA") ...@@ -141,6 +147,7 @@ MACHINE_START(MSM7X27_FFA, "QCT MSM7x27 FFA")
.map_io = msm7x2x_map_io, .map_io = msm7x2x_map_io,
.init_irq = msm7x2x_init_irq, .init_irq = msm7x2x_init_irq,
.init_machine = msm7x2x_init, .init_machine = msm7x2x_init,
.init_late = msm7x2x_init_late,
.timer = &msm_timer, .timer = &msm_timer,
MACHINE_END MACHINE_END
...@@ -149,6 +156,7 @@ MACHINE_START(MSM7X25_SURF, "QCT MSM7x25 SURF") ...@@ -149,6 +156,7 @@ MACHINE_START(MSM7X25_SURF, "QCT MSM7x25 SURF")
.map_io = msm7x2x_map_io, .map_io = msm7x2x_map_io,
.init_irq = msm7x2x_init_irq, .init_irq = msm7x2x_init_irq,
.init_machine = msm7x2x_init, .init_machine = msm7x2x_init,
.init_late = msm7x2x_init_late,
.timer = &msm_timer, .timer = &msm_timer,
MACHINE_END MACHINE_END
...@@ -157,5 +165,6 @@ MACHINE_START(MSM7X25_FFA, "QCT MSM7x25 FFA") ...@@ -157,5 +165,6 @@ MACHINE_START(MSM7X25_FFA, "QCT MSM7x25 FFA")
.map_io = msm7x2x_map_io, .map_io = msm7x2x_map_io,
.init_irq = msm7x2x_init_irq, .init_irq = msm7x2x_init_irq,
.init_machine = msm7x2x_init, .init_machine = msm7x2x_init,
.init_late = msm7x2x_init_late,
.timer = &msm_timer, .timer = &msm_timer,
MACHINE_END MACHINE_END
...@@ -120,6 +120,11 @@ static void __init msm7x30_map_io(void) ...@@ -120,6 +120,11 @@ static void __init msm7x30_map_io(void)
msm_clock_init(msm_clocks_7x30, msm_num_clocks_7x30); 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") MACHINE_START(MSM7X30_SURF, "QCT MSM7X30 SURF")
.atag_offset = 0x100, .atag_offset = 0x100,
.fixup = msm7x30_fixup, .fixup = msm7x30_fixup,
...@@ -127,6 +132,7 @@ MACHINE_START(MSM7X30_SURF, "QCT MSM7X30 SURF") ...@@ -127,6 +132,7 @@ MACHINE_START(MSM7X30_SURF, "QCT MSM7X30 SURF")
.map_io = msm7x30_map_io, .map_io = msm7x30_map_io,
.init_irq = msm7x30_init_irq, .init_irq = msm7x30_init_irq,
.init_machine = msm7x30_init, .init_machine = msm7x30_init,
.init_late = msm7x30_init_late,
.timer = &msm_timer, .timer = &msm_timer,
MACHINE_END MACHINE_END
...@@ -137,6 +143,7 @@ MACHINE_START(MSM7X30_FFA, "QCT MSM7X30 FFA") ...@@ -137,6 +143,7 @@ MACHINE_START(MSM7X30_FFA, "QCT MSM7X30 FFA")
.map_io = msm7x30_map_io, .map_io = msm7x30_map_io,
.init_irq = msm7x30_init_irq, .init_irq = msm7x30_init_irq,
.init_machine = msm7x30_init, .init_machine = msm7x30_init,
.init_late = msm7x30_init_late,
.timer = &msm_timer, .timer = &msm_timer,
MACHINE_END MACHINE_END
...@@ -147,5 +154,6 @@ MACHINE_START(MSM7X30_FLUID, "QCT MSM7X30 FLUID") ...@@ -147,5 +154,6 @@ MACHINE_START(MSM7X30_FLUID, "QCT MSM7X30 FLUID")
.map_io = msm7x30_map_io, .map_io = msm7x30_map_io,
.init_irq = msm7x30_init_irq, .init_irq = msm7x30_init_irq,
.init_machine = msm7x30_init, .init_machine = msm7x30_init,
.init_late = msm7x30_init_late,
.timer = &msm_timer, .timer = &msm_timer,
MACHINE_END MACHINE_END
...@@ -93,6 +93,11 @@ static void __init msm8960_rumi3_init(void) ...@@ -93,6 +93,11 @@ static void __init msm8960_rumi3_init(void)
platform_add_devices(rumi3_devices, ARRAY_SIZE(rumi3_devices)); 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") MACHINE_START(MSM8960_SIM, "QCT MSM8960 SIMULATOR")
.fixup = msm8960_fixup, .fixup = msm8960_fixup,
.reserve = msm8960_reserve, .reserve = msm8960_reserve,
...@@ -101,6 +106,7 @@ MACHINE_START(MSM8960_SIM, "QCT MSM8960 SIMULATOR") ...@@ -101,6 +106,7 @@ MACHINE_START(MSM8960_SIM, "QCT MSM8960 SIMULATOR")
.timer = &msm_timer, .timer = &msm_timer,
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.init_machine = msm8960_sim_init, .init_machine = msm8960_sim_init,
.init_late = msm8960_init_late,
MACHINE_END MACHINE_END
MACHINE_START(MSM8960_RUMI3, "QCT MSM8960 RUMI3") MACHINE_START(MSM8960_RUMI3, "QCT MSM8960 RUMI3")
...@@ -111,5 +117,6 @@ MACHINE_START(MSM8960_RUMI3, "QCT MSM8960 RUMI3") ...@@ -111,5 +117,6 @@ MACHINE_START(MSM8960_RUMI3, "QCT MSM8960 RUMI3")
.timer = &msm_timer, .timer = &msm_timer,
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.init_machine = msm8960_rumi3_init, .init_machine = msm8960_rumi3_init,
.init_late = msm8960_init_late,
MACHINE_END MACHINE_END
...@@ -81,6 +81,11 @@ static void __init msm8x60_init(void) ...@@ -81,6 +81,11 @@ static void __init msm8x60_init(void)
{ {
} }
static void __init msm8x60_init_late(void)
{
smd_debugfs_init();
}
#ifdef CONFIG_OF #ifdef CONFIG_OF
static struct of_dev_auxdata msm_auxdata_lookup[] __initdata = { static struct of_dev_auxdata msm_auxdata_lookup[] __initdata = {
{} {}
...@@ -111,6 +116,7 @@ MACHINE_START(MSM8X60_RUMI3, "QCT MSM8X60 RUMI3") ...@@ -111,6 +116,7 @@ MACHINE_START(MSM8X60_RUMI3, "QCT MSM8X60 RUMI3")
.init_irq = msm8x60_init_irq, .init_irq = msm8x60_init_irq,
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.init_machine = msm8x60_init, .init_machine = msm8x60_init,
.init_late = msm8x60_init_late,
.timer = &msm_timer, .timer = &msm_timer,
MACHINE_END MACHINE_END
...@@ -121,6 +127,7 @@ MACHINE_START(MSM8X60_SURF, "QCT MSM8X60 SURF") ...@@ -121,6 +127,7 @@ MACHINE_START(MSM8X60_SURF, "QCT MSM8X60 SURF")
.init_irq = msm8x60_init_irq, .init_irq = msm8x60_init_irq,
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.init_machine = msm8x60_init, .init_machine = msm8x60_init,
.init_late = msm8x60_init_late,
.timer = &msm_timer, .timer = &msm_timer,
MACHINE_END MACHINE_END
...@@ -131,6 +138,7 @@ MACHINE_START(MSM8X60_SIM, "QCT MSM8X60 SIMULATOR") ...@@ -131,6 +138,7 @@ MACHINE_START(MSM8X60_SIM, "QCT MSM8X60 SIMULATOR")
.init_irq = msm8x60_init_irq, .init_irq = msm8x60_init_irq,
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.init_machine = msm8x60_init, .init_machine = msm8x60_init,
.init_late = msm8x60_init_late,
.timer = &msm_timer, .timer = &msm_timer,
MACHINE_END MACHINE_END
...@@ -141,6 +149,7 @@ MACHINE_START(MSM8X60_FFA, "QCT MSM8X60 FFA") ...@@ -141,6 +149,7 @@ MACHINE_START(MSM8X60_FFA, "QCT MSM8X60 FFA")
.init_irq = msm8x60_init_irq, .init_irq = msm8x60_init_irq,
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.init_machine = msm8x60_init, .init_machine = msm8x60_init,
.init_late = msm8x60_init_late,
.timer = &msm_timer, .timer = &msm_timer,
MACHINE_END MACHINE_END
...@@ -150,6 +159,7 @@ DT_MACHINE_START(MSM_DT, "Qualcomm MSM (Flattened Device Tree)") ...@@ -150,6 +159,7 @@ DT_MACHINE_START(MSM_DT, "Qualcomm MSM (Flattened Device Tree)")
.map_io = msm8x60_map_io, .map_io = msm8x60_map_io,
.init_irq = msm8x60_init_irq, .init_irq = msm8x60_init_irq,
.init_machine = msm8x60_dt_init, .init_machine = msm8x60_dt_init,
.init_late = msm8x60_init_late,
.timer = &msm_timer, .timer = &msm_timer,
.dt_compat = msm8x60_fluid_match, .dt_compat = msm8x60_fluid_match,
MACHINE_END MACHINE_END
......
...@@ -191,11 +191,17 @@ static void __init qsd8x50_init(void) ...@@ -191,11 +191,17 @@ static void __init qsd8x50_init(void)
qsd8x50_init_mmc(); qsd8x50_init_mmc();
} }
static void __init qsd8x50_init_late(void)
{
smd_debugfs_init();
}
MACHINE_START(QSD8X50_SURF, "QCT QSD8X50 SURF") MACHINE_START(QSD8X50_SURF, "QCT QSD8X50 SURF")
.atag_offset = 0x100, .atag_offset = 0x100,
.map_io = qsd8x50_map_io, .map_io = qsd8x50_map_io,
.init_irq = qsd8x50_init_irq, .init_irq = qsd8x50_init_irq,
.init_machine = qsd8x50_init, .init_machine = qsd8x50_init,
.init_late = qsd8x50_init_late,
.timer = &msm_timer, .timer = &msm_timer,
MACHINE_END MACHINE_END
...@@ -204,5 +210,6 @@ MACHINE_START(QSD8X50A_ST1_5, "QCT QSD8X50A ST1.5") ...@@ -204,5 +210,6 @@ MACHINE_START(QSD8X50A_ST1_5, "QCT QSD8X50A ST1.5")
.map_io = qsd8x50_map_io, .map_io = qsd8x50_map_io,
.init_irq = qsd8x50_init_irq, .init_irq = qsd8x50_init_irq,
.init_machine = qsd8x50_init, .init_machine = qsd8x50_init,
.init_late = qsd8x50_init_late,
.timer = &msm_timer, .timer = &msm_timer,
MACHINE_END MACHINE_END
...@@ -101,6 +101,11 @@ static void __init sapphire_map_io(void) ...@@ -101,6 +101,11 @@ static void __init sapphire_map_io(void)
msm_clock_init(); msm_clock_init();
} }
static void __init sapphire_init_late(void)
{
smd_debugfs_init();
}
MACHINE_START(SAPPHIRE, "sapphire") MACHINE_START(SAPPHIRE, "sapphire")
/* Maintainer: Brian Swetland <swetland@google.com> */ /* Maintainer: Brian Swetland <swetland@google.com> */
.atag_offset = 0x100, .atag_offset = 0x100,
...@@ -108,5 +113,6 @@ MACHINE_START(SAPPHIRE, "sapphire") ...@@ -108,5 +113,6 @@ MACHINE_START(SAPPHIRE, "sapphire")
.map_io = sapphire_map_io, .map_io = sapphire_map_io,
.init_irq = sapphire_init_irq, .init_irq = sapphire_init_irq,
.init_machine = sapphire_init, .init_machine = sapphire_init,
.init_late = sapphire_init_late,
.timer = &msm_timer, .timer = &msm_timer,
MACHINE_END MACHINE_END
...@@ -98,6 +98,11 @@ static void __init trout_map_io(void) ...@@ -98,6 +98,11 @@ static void __init trout_map_io(void)
msm_clock_init(msm_clocks_7x01a, msm_num_clocks_7x01a); 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") MACHINE_START(TROUT, "HTC Dream")
.atag_offset = 0x100, .atag_offset = 0x100,
.fixup = trout_fixup, .fixup = trout_fixup,
...@@ -105,5 +110,6 @@ MACHINE_START(TROUT, "HTC Dream") ...@@ -105,5 +110,6 @@ MACHINE_START(TROUT, "HTC Dream")
.init_early = trout_init_early, .init_early = trout_init_early,
.init_irq = trout_init_irq, .init_irq = trout_init_irq,
.init_machine = trout_init, .init_machine = trout_init,
.init_late = trout_init_late,
.timer = &msm_timer, .timer = &msm_timer,
MACHINE_END MACHINE_END
...@@ -47,4 +47,10 @@ int __init msm_add_sdcc(unsigned int controller, ...@@ -47,4 +47,10 @@ int __init msm_add_sdcc(unsigned int controller,
struct msm_mmc_platform_data *plat, struct msm_mmc_platform_data *plat,
unsigned int stat_irq, unsigned long stat_irq_flags); 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 #endif
...@@ -216,7 +216,7 @@ static void debug_create(const char *name, umode_t mode, ...@@ -216,7 +216,7 @@ static void debug_create(const char *name, umode_t mode,
debugfs_create_file(name, mode, dent, fill, &debug_ops); debugfs_create_file(name, mode, dent, fill, &debug_ops);
} }
static int smd_debugfs_init(void) int __init smd_debugfs_init(void)
{ {
struct dentry *dent; struct dentry *dent;
...@@ -234,7 +234,6 @@ static int smd_debugfs_init(void) ...@@ -234,7 +234,6 @@ static int smd_debugfs_init(void)
return 0; return 0;
} }
late_initcall(smd_debugfs_init);
#endif #endif
......
...@@ -595,7 +595,12 @@ static int __init late_init(void) ...@@ -595,7 +595,12 @@ static int __init late_init(void)
gpio_free(AMS_DELTA_GPIO_PIN_MODEM_IRQ); gpio_free(AMS_DELTA_GPIO_PIN_MODEM_IRQ);
return err; 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) static void __init ams_delta_map_io(void)
{ {
...@@ -611,6 +616,7 @@ MACHINE_START(AMS_DELTA, "Amstrad E3 (Delta)") ...@@ -611,6 +616,7 @@ MACHINE_START(AMS_DELTA, "Amstrad E3 (Delta)")
.reserve = omap_reserve, .reserve = omap_reserve,
.init_irq = omap1_init_irq, .init_irq = omap1_init_irq,
.init_machine = ams_delta_init, .init_machine = ams_delta_init,
.init_late = ams_delta_init_late,
.timer = &omap1_timer, .timer = &omap1_timer,
.restart = omap1_restart, .restart = omap1_restart,
MACHINE_END MACHINE_END
...@@ -383,6 +383,7 @@ MACHINE_START(OMAP_FSAMPLE, "OMAP730 F-Sample") ...@@ -383,6 +383,7 @@ MACHINE_START(OMAP_FSAMPLE, "OMAP730 F-Sample")
.reserve = omap_reserve, .reserve = omap_reserve,
.init_irq = omap1_init_irq, .init_irq = omap1_init_irq,
.init_machine = omap_fsample_init, .init_machine = omap_fsample_init,
.init_late = omap1_init_late,
.timer = &omap1_timer, .timer = &omap1_timer,
.restart = omap1_restart, .restart = omap1_restart,
MACHINE_END MACHINE_END
...@@ -88,6 +88,7 @@ MACHINE_START(OMAP_GENERIC, "Generic OMAP1510/1610/1710") ...@@ -88,6 +88,7 @@ MACHINE_START(OMAP_GENERIC, "Generic OMAP1510/1610/1710")
.reserve = omap_reserve, .reserve = omap_reserve,
.init_irq = omap1_init_irq, .init_irq = omap1_init_irq,
.init_machine = omap_generic_init, .init_machine = omap_generic_init,
.init_late = omap1_init_late,
.timer = &omap1_timer, .timer = &omap1_timer,
.restart = omap1_restart, .restart = omap1_restart,
MACHINE_END MACHINE_END
...@@ -446,6 +446,7 @@ MACHINE_START(OMAP_H2, "TI-H2") ...@@ -446,6 +446,7 @@ MACHINE_START(OMAP_H2, "TI-H2")
.reserve = omap_reserve, .reserve = omap_reserve,
.init_irq = omap1_init_irq, .init_irq = omap1_init_irq,
.init_machine = h2_init, .init_machine = h2_init,
.init_late = omap1_init_late,
.timer = &omap1_timer, .timer = &omap1_timer,
.restart = omap1_restart, .restart = omap1_restart,
MACHINE_END MACHINE_END
...@@ -439,6 +439,7 @@ MACHINE_START(OMAP_H3, "TI OMAP1710 H3 board") ...@@ -439,6 +439,7 @@ MACHINE_START(OMAP_H3, "TI OMAP1710 H3 board")
.reserve = omap_reserve, .reserve = omap_reserve,
.init_irq = omap1_init_irq, .init_irq = omap1_init_irq,
.init_machine = h3_init, .init_machine = h3_init,
.init_late = omap1_init_late,
.timer = &omap1_timer, .timer = &omap1_timer,
.restart = omap1_restart, .restart = omap1_restart,
MACHINE_END MACHINE_END
...@@ -605,6 +605,7 @@ MACHINE_START(HERALD, "HTC Herald") ...@@ -605,6 +605,7 @@ MACHINE_START(HERALD, "HTC Herald")
.reserve = omap_reserve, .reserve = omap_reserve,
.init_irq = omap1_init_irq, .init_irq = omap1_init_irq,
.init_machine = htcherald_init, .init_machine = htcherald_init,
.init_late = omap1_init_late,
.timer = &omap1_timer, .timer = &omap1_timer,
.restart = omap1_restart, .restart = omap1_restart,
MACHINE_END MACHINE_END
...@@ -457,6 +457,7 @@ MACHINE_START(OMAP_INNOVATOR, "TI-Innovator") ...@@ -457,6 +457,7 @@ MACHINE_START(OMAP_INNOVATOR, "TI-Innovator")
.reserve = omap_reserve, .reserve = omap_reserve,
.init_irq = omap1_init_irq, .init_irq = omap1_init_irq,
.init_machine = innovator_init, .init_machine = innovator_init,
.init_late = omap1_init_late,
.timer = &omap1_timer, .timer = &omap1_timer,
.restart = omap1_restart, .restart = omap1_restart,
MACHINE_END MACHINE_END
...@@ -255,6 +255,7 @@ MACHINE_START(NOKIA770, "Nokia 770") ...@@ -255,6 +255,7 @@ MACHINE_START(NOKIA770, "Nokia 770")
.reserve = omap_reserve, .reserve = omap_reserve,
.init_irq = omap1_init_irq, .init_irq = omap1_init_irq,
.init_machine = omap_nokia770_init, .init_machine = omap_nokia770_init,
.init_late = omap1_init_late,
.timer = &omap1_timer, .timer = &omap1_timer,
.restart = omap1_restart, .restart = omap1_restart,
MACHINE_END MACHINE_END
...@@ -574,6 +574,7 @@ MACHINE_START(OMAP_OSK, "TI-OSK") ...@@ -574,6 +574,7 @@ MACHINE_START(OMAP_OSK, "TI-OSK")
.reserve = omap_reserve, .reserve = omap_reserve,
.init_irq = omap1_init_irq, .init_irq = omap1_init_irq,
.init_machine = osk_init, .init_machine = osk_init,
.init_late = omap1_init_late,
.timer = &omap1_timer, .timer = &omap1_timer,
.restart = omap1_restart, .restart = omap1_restart,
MACHINE_END MACHINE_END
...@@ -267,6 +267,7 @@ MACHINE_START(OMAP_PALMTE, "OMAP310 based Palm Tungsten E") ...@@ -267,6 +267,7 @@ MACHINE_START(OMAP_PALMTE, "OMAP310 based Palm Tungsten E")
.reserve = omap_reserve, .reserve = omap_reserve,
.init_irq = omap1_init_irq, .init_irq = omap1_init_irq,
.init_machine = omap_palmte_init, .init_machine = omap_palmte_init,
.init_late = omap1_init_late,
.timer = &omap1_timer, .timer = &omap1_timer,
.restart = omap1_restart, .restart = omap1_restart,
MACHINE_END MACHINE_END
...@@ -313,6 +313,7 @@ MACHINE_START(OMAP_PALMTT, "OMAP1510 based Palm Tungsten|T") ...@@ -313,6 +313,7 @@ MACHINE_START(OMAP_PALMTT, "OMAP1510 based Palm Tungsten|T")
.reserve = omap_reserve, .reserve = omap_reserve,
.init_irq = omap1_init_irq, .init_irq = omap1_init_irq,
.init_machine = omap_palmtt_init, .init_machine = omap_palmtt_init,
.init_late = omap1_init_late,
.timer = &omap1_timer, .timer = &omap1_timer,
.restart = omap1_restart, .restart = omap1_restart,
MACHINE_END MACHINE_END
...@@ -330,6 +330,7 @@ MACHINE_START(OMAP_PALMZ71, "OMAP310 based Palm Zire71") ...@@ -330,6 +330,7 @@ MACHINE_START(OMAP_PALMZ71, "OMAP310 based Palm Zire71")
.reserve = omap_reserve, .reserve = omap_reserve,
.init_irq = omap1_init_irq, .init_irq = omap1_init_irq,
.init_machine = omap_palmz71_init, .init_machine = omap_palmz71_init,
.init_late = omap1_init_late,
.timer = &omap1_timer, .timer = &omap1_timer,
.restart = omap1_restart, .restart = omap1_restart,
MACHINE_END MACHINE_END
...@@ -345,6 +345,7 @@ MACHINE_START(OMAP_PERSEUS2, "OMAP730 Perseus2") ...@@ -345,6 +345,7 @@ MACHINE_START(OMAP_PERSEUS2, "OMAP730 Perseus2")
.reserve = omap_reserve, .reserve = omap_reserve,
.init_irq = omap1_init_irq, .init_irq = omap1_init_irq,
.init_machine = omap_perseus2_init, .init_machine = omap_perseus2_init,
.init_late = omap1_init_late,
.timer = &omap1_timer, .timer = &omap1_timer,
.restart = omap1_restart, .restart = omap1_restart,
MACHINE_END MACHINE_END
...@@ -407,6 +407,7 @@ MACHINE_START(SX1, "OMAP310 based Siemens SX1") ...@@ -407,6 +407,7 @@ MACHINE_START(SX1, "OMAP310 based Siemens SX1")
.reserve = omap_reserve, .reserve = omap_reserve,
.init_irq = omap1_init_irq, .init_irq = omap1_init_irq,
.init_machine = omap_sx1_init, .init_machine = omap_sx1_init,
.init_late = omap1_init_late,
.timer = &omap1_timer, .timer = &omap1_timer,
.restart = omap1_restart, .restart = omap1_restart,
MACHINE_END MACHINE_END
...@@ -294,6 +294,7 @@ MACHINE_START(VOICEBLUE, "VoiceBlue OMAP5910") ...@@ -294,6 +294,7 @@ MACHINE_START(VOICEBLUE, "VoiceBlue OMAP5910")
.reserve = omap_reserve, .reserve = omap_reserve,
.init_irq = omap1_init_irq, .init_irq = omap1_init_irq,
.init_machine = voiceblue_init, .init_machine = voiceblue_init,
.init_late = omap1_init_late,
.timer = &omap1_timer, .timer = &omap1_timer,
.restart = voiceblue_restart, .restart = voiceblue_restart,
MACHINE_END MACHINE_END
...@@ -52,8 +52,18 @@ static inline void omap16xx_map_io(void) ...@@ -52,8 +52,18 @@ static inline void omap16xx_map_io(void)
} }
#endif #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_early(void);
void omap1_init_irq(void); void omap1_init_irq(void);
void omap1_init_late(void);
void omap1_restart(char, const char *); void omap1_restart(char, const char *);
extern struct sys_timer omap1_timer; extern struct sys_timer omap1_timer;
......
...@@ -138,6 +138,11 @@ void __init omap1_init_early(void) ...@@ -138,6 +138,11 @@ void __init omap1_init_early(void)
omap_init_consistent_dma_size(); 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 * NOTE: Please use ioremap + __raw_read/write where possible instead of these
*/ */
......
...@@ -237,7 +237,7 @@ static void __init omap_serial_set_port_wakeup(int gpio_nr) ...@@ -237,7 +237,7 @@ static void __init omap_serial_set_port_wakeup(int gpio_nr)
enable_irq_wake(gpio_to_irq(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()) if (!cpu_is_omap16xx())
return 0; return 0;
...@@ -251,7 +251,6 @@ static int __init omap_serial_wakeup_init(void) ...@@ -251,7 +251,6 @@ static int __init omap_serial_wakeup_init(void)
return 0; return 0;
} }
late_initcall(omap_serial_wakeup_init);
#endif /* CONFIG_OMAP_SERIAL_WAKE */ #endif /* CONFIG_OMAP_SERIAL_WAKE */
......
...@@ -303,6 +303,7 @@ MACHINE_START(OMAP_2430SDP, "OMAP2430 sdp2430 board") ...@@ -303,6 +303,7 @@ MACHINE_START(OMAP_2430SDP, "OMAP2430 sdp2430 board")
.init_irq = omap2_init_irq, .init_irq = omap2_init_irq,
.handle_irq = omap2_intc_handle_irq, .handle_irq = omap2_intc_handle_irq,
.init_machine = omap_2430sdp_init, .init_machine = omap_2430sdp_init,
.init_late = omap2430_init_late,
.timer = &omap2_timer, .timer = &omap2_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -635,6 +635,7 @@ MACHINE_START(OMAP_3430SDP, "OMAP3430 3430SDP board") ...@@ -635,6 +635,7 @@ MACHINE_START(OMAP_3430SDP, "OMAP3430 3430SDP board")
.init_irq = omap3_init_irq, .init_irq = omap3_init_irq,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = omap_3430sdp_init, .init_machine = omap_3430sdp_init,
.init_late = omap3430_init_late,
.timer = &omap3_timer, .timer = &omap3_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -217,6 +217,7 @@ MACHINE_START(OMAP_3630SDP, "OMAP 3630SDP board") ...@@ -217,6 +217,7 @@ MACHINE_START(OMAP_3630SDP, "OMAP 3630SDP board")
.init_irq = omap3_init_irq, .init_irq = omap3_init_irq,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = omap_sdp_init, .init_machine = omap_sdp_init,
.init_late = omap3630_init_late,
.timer = &omap3_timer, .timer = &omap3_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -969,6 +969,7 @@ MACHINE_START(OMAP_4430SDP, "OMAP4430 4430SDP board") ...@@ -969,6 +969,7 @@ MACHINE_START(OMAP_4430SDP, "OMAP4430 4430SDP board")
.init_irq = gic_init_irq, .init_irq = gic_init_irq,
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.init_machine = omap_4430sdp_init, .init_machine = omap_4430sdp_init,
.init_late = omap4430_init_late,
.timer = &omap4_timer, .timer = &omap4_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -100,6 +100,7 @@ MACHINE_START(CRANEBOARD, "AM3517/05 CRANEBOARD") ...@@ -100,6 +100,7 @@ MACHINE_START(CRANEBOARD, "AM3517/05 CRANEBOARD")
.init_irq = omap3_init_irq, .init_irq = omap3_init_irq,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = am3517_crane_init, .init_machine = am3517_crane_init,
.init_late = am35xx_init_late,
.timer = &omap3_timer, .timer = &omap3_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -402,6 +402,7 @@ MACHINE_START(OMAP3517EVM, "OMAP3517/AM3517 EVM") ...@@ -402,6 +402,7 @@ MACHINE_START(OMAP3517EVM, "OMAP3517/AM3517 EVM")
.init_irq = omap3_init_irq, .init_irq = omap3_init_irq,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = am3517_evm_init, .init_machine = am3517_evm_init,
.init_late = am35xx_init_late,
.timer = &omap3_timer, .timer = &omap3_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -356,6 +356,7 @@ MACHINE_START(OMAP_APOLLON, "OMAP24xx Apollon") ...@@ -356,6 +356,7 @@ MACHINE_START(OMAP_APOLLON, "OMAP24xx Apollon")
.init_irq = omap2_init_irq, .init_irq = omap2_init_irq,
.handle_irq = omap2_intc_handle_irq, .handle_irq = omap2_intc_handle_irq,
.init_machine = omap_apollon_init, .init_machine = omap_apollon_init,
.init_late = omap2420_init_late,
.timer = &omap2_timer, .timer = &omap2_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -686,6 +686,7 @@ MACHINE_START(CM_T35, "Compulab CM-T35") ...@@ -686,6 +686,7 @@ MACHINE_START(CM_T35, "Compulab CM-T35")
.init_irq = omap3_init_irq, .init_irq = omap3_init_irq,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = cm_t35_init, .init_machine = cm_t35_init,
.init_late = omap35xx_init_late,
.timer = &omap3_timer, .timer = &omap3_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -698,6 +699,7 @@ MACHINE_START(CM_T3730, "Compulab CM-T3730") ...@@ -698,6 +699,7 @@ MACHINE_START(CM_T3730, "Compulab CM-T3730")
.init_irq = omap3_init_irq, .init_irq = omap3_init_irq,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = cm_t3730_init, .init_machine = cm_t3730_init,
.init_late = omap3630_init_late,
.timer = &omap3_timer, .timer = &omap3_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -303,6 +303,7 @@ MACHINE_START(CM_T3517, "Compulab CM-T3517") ...@@ -303,6 +303,7 @@ MACHINE_START(CM_T3517, "Compulab CM-T3517")
.init_irq = omap3_init_irq, .init_irq = omap3_init_irq,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = cm_t3517_init, .init_machine = cm_t3517_init,
.init_late = am35xx_init_late,
.timer = &omap3_timer, .timer = &omap3_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -664,6 +664,7 @@ MACHINE_START(DEVKIT8000, "OMAP3 Devkit8000") ...@@ -664,6 +664,7 @@ MACHINE_START(DEVKIT8000, "OMAP3 Devkit8000")
.init_irq = omap3_init_irq, .init_irq = omap3_init_irq,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = devkit8000_init, .init_machine = devkit8000_init,
.init_late = omap35xx_init_late,
.timer = &omap3_secure_timer, .timer = &omap3_secure_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -158,6 +158,7 @@ DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)") ...@@ -158,6 +158,7 @@ DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)")
.init_irq = omap_init_irq, .init_irq = omap_init_irq,
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.init_machine = omap4_init, .init_machine = omap4_init,
.init_late = omap4430_init_late,
.timer = &omap4_timer, .timer = &omap4_timer,
.dt_compat = omap4_boards_compat, .dt_compat = omap4_boards_compat,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
......
...@@ -398,6 +398,7 @@ MACHINE_START(OMAP_H4, "OMAP2420 H4 board") ...@@ -398,6 +398,7 @@ MACHINE_START(OMAP_H4, "OMAP2420 H4 board")
.init_irq = omap2_init_irq, .init_irq = omap2_init_irq,
.handle_irq = omap2_intc_handle_irq, .handle_irq = omap2_intc_handle_irq,
.init_machine = omap_h4_init, .init_machine = omap_h4_init,
.init_late = omap2420_init_late,
.timer = &omap2_timer, .timer = &omap2_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -684,6 +684,7 @@ MACHINE_START(IGEP0020, "IGEP v2 board") ...@@ -684,6 +684,7 @@ MACHINE_START(IGEP0020, "IGEP v2 board")
.init_irq = omap3_init_irq, .init_irq = omap3_init_irq,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = igep_init, .init_machine = igep_init,
.init_late = omap35xx_init_late,
.timer = &omap3_timer, .timer = &omap3_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -696,6 +697,7 @@ MACHINE_START(IGEP0030, "IGEP OMAP3 module") ...@@ -696,6 +697,7 @@ MACHINE_START(IGEP0030, "IGEP OMAP3 module")
.init_irq = omap3_init_irq, .init_irq = omap3_init_irq,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = igep_init, .init_machine = igep_init,
.init_late = omap35xx_init_late,
.timer = &omap3_timer, .timer = &omap3_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -442,6 +442,7 @@ MACHINE_START(OMAP_LDP, "OMAP LDP board") ...@@ -442,6 +442,7 @@ MACHINE_START(OMAP_LDP, "OMAP LDP board")
.init_irq = omap3_init_irq, .init_irq = omap3_init_irq,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = omap_ldp_init, .init_machine = omap_ldp_init,
.init_late = omap3430_init_late,
.timer = &omap3_timer, .timer = &omap3_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -694,6 +694,7 @@ MACHINE_START(NOKIA_N800, "Nokia N800") ...@@ -694,6 +694,7 @@ MACHINE_START(NOKIA_N800, "Nokia N800")
.init_irq = omap2_init_irq, .init_irq = omap2_init_irq,
.handle_irq = omap2_intc_handle_irq, .handle_irq = omap2_intc_handle_irq,
.init_machine = n8x0_init_machine, .init_machine = n8x0_init_machine,
.init_late = omap2420_init_late,
.timer = &omap2_timer, .timer = &omap2_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -706,6 +707,7 @@ MACHINE_START(NOKIA_N810, "Nokia N810") ...@@ -706,6 +707,7 @@ MACHINE_START(NOKIA_N810, "Nokia N810")
.init_irq = omap2_init_irq, .init_irq = omap2_init_irq,
.handle_irq = omap2_intc_handle_irq, .handle_irq = omap2_intc_handle_irq,
.init_machine = n8x0_init_machine, .init_machine = n8x0_init_machine,
.init_late = omap2420_init_late,
.timer = &omap2_timer, .timer = &omap2_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -718,6 +720,7 @@ MACHINE_START(NOKIA_N810_WIMAX, "Nokia N810 WiMAX") ...@@ -718,6 +720,7 @@ MACHINE_START(NOKIA_N810_WIMAX, "Nokia N810 WiMAX")
.init_irq = omap2_init_irq, .init_irq = omap2_init_irq,
.handle_irq = omap2_intc_handle_irq, .handle_irq = omap2_intc_handle_irq,
.init_machine = n8x0_init_machine, .init_machine = n8x0_init_machine,
.init_late = omap2420_init_late,
.timer = &omap2_timer, .timer = &omap2_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -565,6 +565,7 @@ MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board") ...@@ -565,6 +565,7 @@ MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")
.init_irq = omap3_init_irq, .init_irq = omap3_init_irq,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = omap3_beagle_init, .init_machine = omap3_beagle_init,
.init_late = omap3_init_late,
.timer = &omap3_secure_timer, .timer = &omap3_secure_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -692,6 +692,7 @@ MACHINE_START(OMAP3EVM, "OMAP3 EVM") ...@@ -692,6 +692,7 @@ MACHINE_START(OMAP3EVM, "OMAP3 EVM")
.init_irq = omap3_init_irq, .init_irq = omap3_init_irq,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = omap3_evm_init, .init_machine = omap3_evm_init,
.init_late = omap35xx_init_late,
.timer = &omap3_timer, .timer = &omap3_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -218,6 +218,7 @@ MACHINE_START(OMAP3_TORPEDO, "Logic OMAP3 Torpedo board") ...@@ -218,6 +218,7 @@ MACHINE_START(OMAP3_TORPEDO, "Logic OMAP3 Torpedo board")
.init_irq = omap3_init_irq, .init_irq = omap3_init_irq,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = omap3logic_init, .init_machine = omap3logic_init,
.init_late = omap35xx_init_late,
.timer = &omap3_timer, .timer = &omap3_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -230,6 +231,7 @@ MACHINE_START(OMAP3530_LV_SOM, "OMAP Logic 3530 LV SOM board") ...@@ -230,6 +231,7 @@ MACHINE_START(OMAP3530_LV_SOM, "OMAP Logic 3530 LV SOM board")
.init_irq = omap3_init_irq, .init_irq = omap3_init_irq,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = omap3logic_init, .init_machine = omap3logic_init,
.init_late = omap35xx_init_late,
.timer = &omap3_timer, .timer = &omap3_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -622,6 +622,7 @@ MACHINE_START(OMAP3_PANDORA, "Pandora Handheld Console") ...@@ -622,6 +622,7 @@ MACHINE_START(OMAP3_PANDORA, "Pandora Handheld Console")
.init_irq = omap3_init_irq, .init_irq = omap3_init_irq,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = omap3pandora_init, .init_machine = omap3pandora_init,
.init_late = omap35xx_init_late,
.timer = &omap3_timer, .timer = &omap3_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -457,6 +457,7 @@ MACHINE_START(SBC3530, "OMAP3 STALKER") ...@@ -457,6 +457,7 @@ MACHINE_START(SBC3530, "OMAP3 STALKER")
.init_irq = omap3_init_irq, .init_irq = omap3_init_irq,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = omap3_stalker_init, .init_machine = omap3_stalker_init,
.init_late = omap35xx_init_late,
.timer = &omap3_secure_timer, .timer = &omap3_secure_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -387,6 +387,7 @@ MACHINE_START(TOUCHBOOK, "OMAP3 touchbook Board") ...@@ -387,6 +387,7 @@ MACHINE_START(TOUCHBOOK, "OMAP3 touchbook Board")
.init_irq = omap3_init_irq, .init_irq = omap3_init_irq,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = omap3_touchbook_init, .init_machine = omap3_touchbook_init,
.init_late = omap3430_init_late,
.timer = &omap3_secure_timer, .timer = &omap3_secure_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -582,6 +582,7 @@ MACHINE_START(OMAP4_PANDA, "OMAP4 Panda board") ...@@ -582,6 +582,7 @@ MACHINE_START(OMAP4_PANDA, "OMAP4 Panda board")
.init_irq = gic_init_irq, .init_irq = gic_init_irq,
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.init_machine = omap4_panda_init, .init_machine = omap4_panda_init,
.init_late = omap4430_init_late,
.timer = &omap4_timer, .timer = &omap4_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -571,6 +571,7 @@ MACHINE_START(OVERO, "Gumstix Overo") ...@@ -571,6 +571,7 @@ MACHINE_START(OVERO, "Gumstix Overo")
.init_irq = omap3_init_irq, .init_irq = omap3_init_irq,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = overo_init, .init_machine = overo_init,
.init_late = omap35xx_init_late,
.timer = &omap3_timer, .timer = &omap3_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -151,6 +151,7 @@ MACHINE_START(NOKIA_RM680, "Nokia RM-680 board") ...@@ -151,6 +151,7 @@ MACHINE_START(NOKIA_RM680, "Nokia RM-680 board")
.init_irq = omap3_init_irq, .init_irq = omap3_init_irq,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = rm680_init, .init_machine = rm680_init,
.init_late = omap3630_init_late,
.timer = &omap3_timer, .timer = &omap3_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -163,6 +164,7 @@ MACHINE_START(NOKIA_RM696, "Nokia RM-696 board") ...@@ -163,6 +164,7 @@ MACHINE_START(NOKIA_RM696, "Nokia RM-696 board")
.init_irq = omap3_init_irq, .init_irq = omap3_init_irq,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = rm680_init, .init_machine = rm680_init,
.init_late = omap3630_init_late,
.timer = &omap3_timer, .timer = &omap3_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -129,6 +129,7 @@ MACHINE_START(NOKIA_RX51, "Nokia RX-51 board") ...@@ -129,6 +129,7 @@ MACHINE_START(NOKIA_RX51, "Nokia RX-51 board")
.init_irq = omap3_init_irq, .init_irq = omap3_init_irq,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = rx51_init, .init_machine = rx51_init,
.init_late = omap3430_init_late,
.timer = &omap3_timer, .timer = &omap3_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -52,6 +52,7 @@ MACHINE_START(TI8168EVM, "ti8168evm") ...@@ -52,6 +52,7 @@ MACHINE_START(TI8168EVM, "ti8168evm")
.init_irq = ti81xx_init_irq, .init_irq = ti81xx_init_irq,
.timer = &omap3_timer, .timer = &omap3_timer,
.init_machine = ti81xx_evm_init, .init_machine = ti81xx_evm_init,
.init_late = ti81xx_init_late,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -63,5 +64,6 @@ MACHINE_START(TI8148EVM, "ti8148evm") ...@@ -63,5 +64,6 @@ MACHINE_START(TI8148EVM, "ti8148evm")
.init_irq = ti81xx_init_irq, .init_irq = ti81xx_init_irq,
.timer = &omap3_timer, .timer = &omap3_timer,
.init_machine = ti81xx_evm_init, .init_machine = ti81xx_evm_init,
.init_late = ti81xx_init_late,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -137,6 +137,7 @@ MACHINE_START(OMAP_ZOOM2, "OMAP Zoom2 board") ...@@ -137,6 +137,7 @@ MACHINE_START(OMAP_ZOOM2, "OMAP Zoom2 board")
.init_irq = omap3_init_irq, .init_irq = omap3_init_irq,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = omap_zoom_init, .init_machine = omap_zoom_init,
.init_late = omap3430_init_late,
.timer = &omap3_timer, .timer = &omap3_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -149,6 +150,7 @@ MACHINE_START(OMAP_ZOOM3, "OMAP Zoom3 board") ...@@ -149,6 +150,7 @@ MACHINE_START(OMAP_ZOOM3, "OMAP Zoom3 board")
.init_irq = omap3_init_irq, .init_irq = omap3_init_irq,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = omap_zoom_init, .init_machine = omap_zoom_init,
.init_late = omap3630_init_late,
.timer = &omap3_timer, .timer = &omap3_timer,
.restart = omap_prcm_restart, .restart = omap_prcm_restart,
MACHINE_END MACHINE_END
...@@ -78,6 +78,42 @@ static inline void omap44xx_map_common_io(void) ...@@ -78,6 +78,42 @@ static inline void omap44xx_map_common_io(void)
} }
#endif #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 void omap2_init_common_infrastructure(void);
extern struct sys_timer omap2_timer; extern struct sys_timer omap2_timer;
...@@ -94,6 +130,17 @@ void omap3_init_early(void); /* Do not use this one */ ...@@ -94,6 +130,17 @@ void omap3_init_early(void); /* Do not use this one */
void am35xx_init_early(void); void am35xx_init_early(void);
void ti81xx_init_early(void); void ti81xx_init_early(void);
void omap4430_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 *); void omap_prcm_restart(char, const char *);
/* /*
......
...@@ -397,6 +397,13 @@ void __init omap2420_init_early(void) ...@@ -397,6 +397,13 @@ void __init omap2420_init_early(void)
omap_hwmod_init_postsetup(); omap_hwmod_init_postsetup();
omap2420_clk_init(); omap2420_clk_init();
} }
void __init omap2420_init_late(void)
{
omap_mux_late_init();
omap2_common_pm_late_init();
omap2_pm_init();
}
#endif #endif
#ifdef CONFIG_SOC_OMAP2430 #ifdef CONFIG_SOC_OMAP2430
...@@ -412,6 +419,13 @@ void __init omap2430_init_early(void) ...@@ -412,6 +419,13 @@ void __init omap2430_init_early(void)
omap_hwmod_init_postsetup(); omap_hwmod_init_postsetup();
omap2430_clk_init(); omap2430_clk_init();
} }
void __init omap2430_init_late(void)
{
omap_mux_late_init();
omap2_common_pm_late_init();
omap2_pm_init();
}
#endif #endif
/* /*
...@@ -466,6 +480,48 @@ void __init ti81xx_init_early(void) ...@@ -466,6 +480,48 @@ void __init ti81xx_init_early(void)
omap_hwmod_init_postsetup(); omap_hwmod_init_postsetup();
omap3xxx_clk_init(); 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 #endif
#ifdef CONFIG_ARCH_OMAP4 #ifdef CONFIG_ARCH_OMAP4
...@@ -482,6 +538,13 @@ void __init omap4430_init_early(void) ...@@ -482,6 +538,13 @@ void __init omap4430_init_early(void)
omap_hwmod_init_postsetup(); omap_hwmod_init_postsetup();
omap4xxx_clk_init(); omap4xxx_clk_init();
} }
void __init omap4430_init_late(void)
{
omap_mux_late_init();
omap2_common_pm_late_init();
omap4_pm_init();
}
#endif #endif
void __init omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0, void __init omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0,
......
...@@ -788,7 +788,7 @@ static void __init omap_mux_free_names(struct omap_mux *m) ...@@ -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 */ /* 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; struct omap_mux_partition *partition;
int ret; int ret;
...@@ -823,7 +823,6 @@ static int __init omap_mux_late_init(void) ...@@ -823,7 +823,6 @@ static int __init omap_mux_late_init(void)
return 0; return 0;
} }
late_initcall(omap_mux_late_init);
static void __init omap_mux_package_fixup(struct omap_mux *p, static void __init omap_mux_package_fixup(struct omap_mux *p,
struct omap_mux *superset) struct omap_mux *superset)
......
...@@ -295,7 +295,7 @@ static int __init omap2_common_pm_init(void) ...@@ -295,7 +295,7 @@ static int __init omap2_common_pm_init(void)
} }
postcore_initcall(omap2_common_pm_init); 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 * In the case of DT, the PMIC and SR initialization will be done using
...@@ -322,4 +322,3 @@ static int __init omap2_common_pm_late_init(void) ...@@ -322,4 +322,3 @@ static int __init omap2_common_pm_late_init(void)
return 0; return 0;
} }
late_initcall(omap2_common_pm_late_init);
...@@ -301,13 +301,10 @@ static void __init prcm_setup_regs(void) ...@@ -301,13 +301,10 @@ static void __init prcm_setup_regs(void)
WKUP_MOD, PM_WKEN); WKUP_MOD, PM_WKEN);
} }
static int __init omap2_pm_init(void) int __init omap2_pm_init(void)
{ {
u32 l; u32 l;
if (!cpu_is_omap24xx())
return -ENODEV;
printk(KERN_INFO "Power Management for OMAP2 initializing\n"); printk(KERN_INFO "Power Management for OMAP2 initializing\n");
l = omap2_prm_read_mod_reg(OCP_MOD, OMAP2_PRCM_REVISION_OFFSET); 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); printk(KERN_INFO "PRCM revision %d.%d\n", (l >> 4) & 0x0f, l & 0x0f);
...@@ -373,17 +370,13 @@ static int __init omap2_pm_init(void) ...@@ -373,17 +370,13 @@ static int __init omap2_pm_init(void)
* These routines need to be in SRAM as that's the only * These routines need to be in SRAM as that's the only
* memory the MPU can see when it wakes up. * memory the MPU can see when it wakes up.
*/ */
if (cpu_is_omap24xx()) { omap2_sram_idle = omap_sram_push(omap24xx_idle_loop_suspend,
omap2_sram_idle = omap_sram_push(omap24xx_idle_loop_suspend, omap24xx_idle_loop_suspend_sz);
omap24xx_idle_loop_suspend_sz);
omap2_sram_suspend = omap_sram_push(omap24xx_cpu_suspend, omap2_sram_suspend = omap_sram_push(omap24xx_cpu_suspend,
omap24xx_cpu_suspend_sz); omap24xx_cpu_suspend_sz);
}
arm_pm_idle = omap2_pm_idle; arm_pm_idle = omap2_pm_idle;
return 0; return 0;
} }
late_initcall(omap2_pm_init);
...@@ -699,15 +699,12 @@ static void __init pm_errata_configure(void) ...@@ -699,15 +699,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 power_state *pwrst, *tmp;
struct clockdomain *neon_clkdm, *per_clkdm, *mpu_clkdm, *core_clkdm; struct clockdomain *neon_clkdm, *per_clkdm, *mpu_clkdm, *core_clkdm;
int ret; int ret;
if (!cpu_is_omap34xx())
return -ENODEV;
if (!omap3_has_io_chain_ctrl()) if (!omap3_has_io_chain_ctrl())
pr_warning("PM: no software I/O chain control; some wakeups may be lost\n"); pr_warning("PM: no software I/O chain control; some wakeups may be lost\n");
...@@ -808,5 +805,3 @@ static int __init omap3_pm_init(void) ...@@ -808,5 +805,3 @@ static int __init omap3_pm_init(void)
err1: err1:
return ret; return ret;
} }
late_initcall(omap3_pm_init);
...@@ -141,15 +141,12 @@ static void omap_default_idle(void) ...@@ -141,15 +141,12 @@ static void omap_default_idle(void)
* Initializes all powerdomain and clockdomain target states * Initializes all powerdomain and clockdomain target states
* and all PRCM settings. * and all PRCM settings.
*/ */
static int __init omap4_pm_init(void) int __init omap4_pm_init(void)
{ {
int ret; int ret;
struct clockdomain *emif_clkdm, *mpuss_clkdm, *l3_1_clkdm, *l4wkup; struct clockdomain *emif_clkdm, *mpuss_clkdm, *l3_1_clkdm, *l4wkup;
struct clockdomain *ducati_clkdm, *l3_2_clkdm, *l4_per_clkdm; struct clockdomain *ducati_clkdm, *l3_2_clkdm, *l4_per_clkdm;
if (!cpu_is_omap44xx())
return -ENODEV;
if (omap_rev() == OMAP4430_REV_ES1_0) { if (omap_rev() == OMAP4430_REV_ES1_0) {
WARN(1, "Power Management not supported on OMAP4430 ES1.0\n"); WARN(1, "Power Management not supported on OMAP4430 ES1.0\n");
return -ENODEV; return -ENODEV;
...@@ -217,4 +214,3 @@ static int __init omap4_pm_init(void) ...@@ -217,4 +214,3 @@ static int __init omap4_pm_init(void)
err2: err2:
return ret; return ret;
} }
late_initcall(omap4_pm_init);
...@@ -265,6 +265,17 @@ static void pnx4008_restart(char mode, const char *cmd) ...@@ -265,6 +265,17 @@ static void pnx4008_restart(char mode, const char *cmd)
soft_restart(0); 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; extern struct sys_timer pnx4008_timer;
MACHINE_START(PNX4008, "Philips PNX4008") MACHINE_START(PNX4008, "Philips PNX4008")
...@@ -273,6 +284,7 @@ MACHINE_START(PNX4008, "Philips PNX4008") ...@@ -273,6 +284,7 @@ MACHINE_START(PNX4008, "Philips PNX4008")
.map_io = pnx4008_map_io, .map_io = pnx4008_map_io,
.init_irq = pnx4008_init_irq, .init_irq = pnx4008_init_irq,
.init_machine = pnx4008_init, .init_machine = pnx4008_init,
.init_late = pnx4008_init_late,
.timer = &pnx4008_timer, .timer = &pnx4008_timer,
.restart = pnx4008_restart, .restart = pnx4008_restart,
MACHINE_END MACHINE_END
...@@ -124,7 +124,7 @@ static const struct platform_suspend_ops pnx4008_pm_ops = { ...@@ -124,7 +124,7 @@ static const struct platform_suspend_ops pnx4008_pm_ops = {
.valid = pnx4008_pm_valid, .valid = pnx4008_pm_valid,
}; };
static int __init pnx4008_pm_init(void) int __init pnx4008_pm_init(void)
{ {
u32 sram_size_to_allocate; u32 sram_size_to_allocate;
...@@ -151,5 +151,3 @@ static int __init pnx4008_pm_init(void) ...@@ -151,5 +151,3 @@ static int __init pnx4008_pm_init(void)
suspend_set_ops(&pnx4008_pm_ops); suspend_set_ops(&pnx4008_pm_ops);
return 0; return 0;
} }
late_initcall(pnx4008_pm_init);
...@@ -24,4 +24,10 @@ static inline void sirfsoc_map_lluart(void) {} ...@@ -24,4 +24,10 @@ static inline void sirfsoc_map_lluart(void) {}
extern void __init sirfsoc_map_lluart(void); extern void __init sirfsoc_map_lluart(void);
#endif #endif
#ifdef CONFIG_SUSPEND
extern int sirfsoc_pm_init(void);
#else
static inline int sirfsoc_pm_init(void) { return 0; }
#endif
#endif #endif
...@@ -85,12 +85,11 @@ static const struct platform_suspend_ops sirfsoc_pm_ops = { ...@@ -85,12 +85,11 @@ static const struct platform_suspend_ops sirfsoc_pm_ops = {
.valid = suspend_valid_only_mem, .valid = suspend_valid_only_mem,
}; };
static int __init sirfsoc_pm_init(void) int __init sirfsoc_pm_init(void)
{ {
suspend_set_ops(&sirfsoc_pm_ops); suspend_set_ops(&sirfsoc_pm_ops);
return 0; return 0;
} }
late_initcall(sirfsoc_pm_init);
static const struct of_device_id pwrc_ids[] = { static const struct of_device_id pwrc_ids[] = {
{ .compatible = "sirf,prima2-pwrc" }, { .compatible = "sirf,prima2-pwrc" },
......
...@@ -25,6 +25,11 @@ void __init sirfsoc_mach_init(void) ...@@ -25,6 +25,11 @@ void __init sirfsoc_mach_init(void)
of_platform_bus_probe(NULL, sirfsoc_of_bus_ids, NULL); 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 = { static const char *prima2cb_dt_match[] __initdata = {
"sirf,prima2-cb", "sirf,prima2-cb",
NULL NULL
...@@ -39,6 +44,7 @@ MACHINE_START(PRIMA2_EVB, "prima2cb") ...@@ -39,6 +44,7 @@ MACHINE_START(PRIMA2_EVB, "prima2cb")
.timer = &sirfsoc_timer, .timer = &sirfsoc_timer,
.dma_zone_size = SZ_256M, .dma_zone_size = SZ_256M,
.init_machine = sirfsoc_mach_init, .init_machine = sirfsoc_mach_init,
.init_late = sirfsoc_init_late,
.dt_compat = prima2cb_dt_match, .dt_compat = prima2cb_dt_match,
.restart = sirfsoc_restart, .restart = sirfsoc_restart,
MACHINE_END MACHINE_END
...@@ -384,3 +384,8 @@ void s3c64xx_restart(char mode, const char *cmd) ...@@ -384,3 +384,8 @@ void s3c64xx_restart(char mode, const char *cmd)
/* if all else fails, or mode was for soft, jump to 0 */ /* if all else fails, or mode was for soft, jump to 0 */
soft_restart(0); soft_restart(0);
} }
void __init s3c64xx_init_late(void)
{
s3c64xx_pm_late_initcall();
}
...@@ -24,6 +24,7 @@ void s3c64xx_register_clocks(unsigned long xtal, unsigned armclk_limit); ...@@ -24,6 +24,7 @@ void s3c64xx_register_clocks(unsigned long xtal, unsigned armclk_limit);
void s3c64xx_setup_clocks(void); void s3c64xx_setup_clocks(void);
void s3c64xx_restart(char mode, const char *cmd); void s3c64xx_restart(char mode, const char *cmd);
void s3c64xx_init_late(void);
#ifdef CONFIG_CPU_S3C6400 #ifdef CONFIG_CPU_S3C6400
...@@ -51,4 +52,10 @@ extern void s3c6410_init_clocks(int xtal); ...@@ -51,4 +52,10 @@ extern void s3c6410_init_clocks(int xtal);
#define s3c6410_init NULL #define s3c6410_init NULL
#endif #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 */ #endif /* __ARCH_ARM_MACH_S3C64XX_COMMON_H */
...@@ -241,6 +241,7 @@ MACHINE_START(ANW6410, "A&W6410") ...@@ -241,6 +241,7 @@ MACHINE_START(ANW6410, "A&W6410")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.map_io = anw6410_map_io, .map_io = anw6410_map_io,
.init_machine = anw6410_machine_init, .init_machine = anw6410_machine_init,
.init_late = s3c64xx_init_late,
.timer = &s3c24xx_timer, .timer = &s3c24xx_timer,
.restart = s3c64xx_restart, .restart = s3c64xx_restart,
MACHINE_END MACHINE_END
...@@ -811,6 +811,7 @@ MACHINE_START(WLF_CRAGG_6410, "Wolfson Cragganmore 6410") ...@@ -811,6 +811,7 @@ MACHINE_START(WLF_CRAGG_6410, "Wolfson Cragganmore 6410")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.map_io = crag6410_map_io, .map_io = crag6410_map_io,
.init_machine = crag6410_machine_init, .init_machine = crag6410_machine_init,
.init_late = s3c64xx_init_late,
.timer = &s3c24xx_timer, .timer = &s3c24xx_timer,
.restart = s3c64xx_restart, .restart = s3c64xx_restart,
MACHINE_END MACHINE_END
...@@ -272,6 +272,7 @@ MACHINE_START(HMT, "Airgoo-HMT") ...@@ -272,6 +272,7 @@ MACHINE_START(HMT, "Airgoo-HMT")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.map_io = hmt_map_io, .map_io = hmt_map_io,
.init_machine = hmt_machine_init, .init_machine = hmt_machine_init,
.init_late = s3c64xx_init_late,
.timer = &s3c24xx_timer, .timer = &s3c24xx_timer,
.restart = s3c64xx_restart, .restart = s3c64xx_restart,
MACHINE_END MACHINE_END
...@@ -350,6 +350,7 @@ MACHINE_START(MINI6410, "MINI6410") ...@@ -350,6 +350,7 @@ MACHINE_START(MINI6410, "MINI6410")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.map_io = mini6410_map_io, .map_io = mini6410_map_io,
.init_machine = mini6410_machine_init, .init_machine = mini6410_machine_init,
.init_late = s3c64xx_init_late,
.timer = &s3c24xx_timer, .timer = &s3c24xx_timer,
.restart = s3c64xx_restart, .restart = s3c64xx_restart,
MACHINE_END MACHINE_END
...@@ -104,6 +104,7 @@ MACHINE_START(NCP, "NCP") ...@@ -104,6 +104,7 @@ MACHINE_START(NCP, "NCP")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.map_io = ncp_map_io, .map_io = ncp_map_io,
.init_machine = ncp_machine_init, .init_machine = ncp_machine_init,
.init_late = s3c64xx_init_late,
.timer = &s3c24xx_timer, .timer = &s3c24xx_timer,
.restart = s3c64xx_restart, .restart = s3c64xx_restart,
MACHINE_END MACHINE_END
...@@ -331,6 +331,7 @@ MACHINE_START(REAL6410, "REAL6410") ...@@ -331,6 +331,7 @@ MACHINE_START(REAL6410, "REAL6410")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.map_io = real6410_map_io, .map_io = real6410_map_io,
.init_machine = real6410_machine_init, .init_machine = real6410_machine_init,
.init_late = s3c64xx_init_late,
.timer = &s3c24xx_timer, .timer = &s3c24xx_timer,
.restart = s3c64xx_restart, .restart = s3c64xx_restart,
MACHINE_END MACHINE_END
...@@ -152,6 +152,7 @@ MACHINE_START(SMARTQ5, "SmartQ 5") ...@@ -152,6 +152,7 @@ MACHINE_START(SMARTQ5, "SmartQ 5")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.map_io = smartq_map_io, .map_io = smartq_map_io,
.init_machine = smartq5_machine_init, .init_machine = smartq5_machine_init,
.init_late = s3c64xx_init_late,
.timer = &s3c24xx_timer, .timer = &s3c24xx_timer,
.restart = s3c64xx_restart, .restart = s3c64xx_restart,
MACHINE_END MACHINE_END
...@@ -168,6 +168,7 @@ MACHINE_START(SMARTQ7, "SmartQ 7") ...@@ -168,6 +168,7 @@ MACHINE_START(SMARTQ7, "SmartQ 7")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.map_io = smartq_map_io, .map_io = smartq_map_io,
.init_machine = smartq7_machine_init, .init_machine = smartq7_machine_init,
.init_late = s3c64xx_init_late,
.timer = &s3c24xx_timer, .timer = &s3c24xx_timer,
.restart = s3c64xx_restart, .restart = s3c64xx_restart,
MACHINE_END MACHINE_END
...@@ -93,6 +93,7 @@ MACHINE_START(SMDK6400, "SMDK6400") ...@@ -93,6 +93,7 @@ MACHINE_START(SMDK6400, "SMDK6400")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.map_io = smdk6400_map_io, .map_io = smdk6400_map_io,
.init_machine = smdk6400_machine_init, .init_machine = smdk6400_machine_init,
.init_late = s3c64xx_init_late,
.timer = &s3c24xx_timer, .timer = &s3c24xx_timer,
.restart = s3c64xx_restart, .restart = s3c64xx_restart,
MACHINE_END MACHINE_END
...@@ -709,6 +709,7 @@ MACHINE_START(SMDK6410, "SMDK6410") ...@@ -709,6 +709,7 @@ MACHINE_START(SMDK6410, "SMDK6410")
.handle_irq = vic_handle_irq, .handle_irq = vic_handle_irq,
.map_io = smdk6410_map_io, .map_io = smdk6410_map_io,
.init_machine = smdk6410_machine_init, .init_machine = smdk6410_machine_init,
.init_late = s3c64xx_init_late,
.timer = &s3c24xx_timer, .timer = &s3c24xx_timer,
.restart = s3c64xx_restart, .restart = s3c64xx_restart,
MACHINE_END MACHINE_END
...@@ -365,10 +365,9 @@ static __init int s3c64xx_pm_initcall(void) ...@@ -365,10 +365,9 @@ static __init int s3c64xx_pm_initcall(void)
} }
arch_initcall(s3c64xx_pm_initcall); arch_initcall(s3c64xx_pm_initcall);
static __init int s3c64xx_pm_late_initcall(void) int __init s3c64xx_pm_late_initcall(void)
{ {
pm_genpd_poweroff_unused(); pm_genpd_poweroff_unused();
return 0; return 0;
} }
late_initcall(s3c64xx_pm_late_initcall);
...@@ -538,6 +538,7 @@ MACHINE_START(ASSABET, "Intel-Assabet") ...@@ -538,6 +538,7 @@ MACHINE_START(ASSABET, "Intel-Assabet")
.init_irq = sa1100_init_irq, .init_irq = sa1100_init_irq,
.timer = &sa1100_timer, .timer = &sa1100_timer,
.init_machine = assabet_init, .init_machine = assabet_init,
.init_late = sa11x0_init_late,
#ifdef CONFIG_SA1111 #ifdef CONFIG_SA1111
.dma_zone_size = SZ_1M, .dma_zone_size = SZ_1M,
#endif #endif
......
...@@ -305,6 +305,7 @@ MACHINE_START(BADGE4, "Hewlett-Packard Laboratories BadgePAD 4") ...@@ -305,6 +305,7 @@ MACHINE_START(BADGE4, "Hewlett-Packard Laboratories BadgePAD 4")
.map_io = badge4_map_io, .map_io = badge4_map_io,
.nr_irqs = SA1100_NR_IRQS, .nr_irqs = SA1100_NR_IRQS,
.init_irq = sa1100_init_irq, .init_irq = sa1100_init_irq,
.init_late = sa11x0_init_late,
.timer = &sa1100_timer, .timer = &sa1100_timer,
#ifdef CONFIG_SA1111 #ifdef CONFIG_SA1111
.dma_zone_size = SZ_1M, .dma_zone_size = SZ_1M,
......
...@@ -134,5 +134,6 @@ MACHINE_START(CERF, "Intrinsyc CerfBoard/CerfCube") ...@@ -134,5 +134,6 @@ MACHINE_START(CERF, "Intrinsyc CerfBoard/CerfCube")
.init_irq = cerf_init_irq, .init_irq = cerf_init_irq,
.timer = &sa1100_timer, .timer = &sa1100_timer,
.init_machine = cerf_init, .init_machine = cerf_init,
.init_late = sa11x0_init_late,
.restart = sa11x0_restart, .restart = sa11x0_restart,
MACHINE_END MACHINE_END
...@@ -401,5 +401,6 @@ MACHINE_START(COLLIE, "Sharp-Collie") ...@@ -401,5 +401,6 @@ MACHINE_START(COLLIE, "Sharp-Collie")
.init_irq = sa1100_init_irq, .init_irq = sa1100_init_irq,
.timer = &sa1100_timer, .timer = &sa1100_timer,
.init_machine = collie_init, .init_machine = collie_init,
.init_late = sa11x0_init_late,
.restart = sa11x0_restart, .restart = sa11x0_restart,
MACHINE_END MACHINE_END
...@@ -359,6 +359,10 @@ static int __init sa1100_init(void) ...@@ -359,6 +359,10 @@ static int __init sa1100_init(void)
arch_initcall(sa1100_init); arch_initcall(sa1100_init);
void __init sa11x0_init_late(void)
{
sa11x0_pm_init();
}
/* /*
* Common I/O mapping: * Common I/O mapping:
......
...@@ -11,6 +11,7 @@ extern void __init sa1100_map_io(void); ...@@ -11,6 +11,7 @@ extern void __init sa1100_map_io(void);
extern void __init sa1100_init_irq(void); extern void __init sa1100_init_irq(void);
extern void __init sa1100_init_gpio(void); extern void __init sa1100_init_gpio(void);
extern void sa11x0_restart(char, const char *); extern void sa11x0_restart(char, const char *);
extern void sa11x0_init_late(void);
#define SET_BANK(__nr,__start,__size) \ #define SET_BANK(__nr,__start,__size) \
mi->bank[__nr].start = (__start), \ mi->bank[__nr].start = (__start), \
...@@ -41,3 +42,9 @@ void sa11x0_register_mcp(struct mcp_plat_data *data); ...@@ -41,3 +42,9 @@ void sa11x0_register_mcp(struct mcp_plat_data *data);
struct sa1100fb_mach_info; struct sa1100fb_mach_info;
void sa11x0_register_lcd(struct sa1100fb_mach_info *inf); 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
...@@ -110,6 +110,7 @@ MACHINE_START(H3100, "Compaq iPAQ H3100") ...@@ -110,6 +110,7 @@ MACHINE_START(H3100, "Compaq iPAQ H3100")
.init_irq = sa1100_init_irq, .init_irq = sa1100_init_irq,
.timer = &sa1100_timer, .timer = &sa1100_timer,
.init_machine = h3100_mach_init, .init_machine = h3100_mach_init,
.init_late = sa11x0_init_late,
.restart = sa11x0_restart, .restart = sa11x0_restart,
MACHINE_END MACHINE_END
...@@ -160,6 +160,7 @@ MACHINE_START(H3600, "Compaq iPAQ H3600") ...@@ -160,6 +160,7 @@ MACHINE_START(H3600, "Compaq iPAQ H3600")
.init_irq = sa1100_init_irq, .init_irq = sa1100_init_irq,
.timer = &sa1100_timer, .timer = &sa1100_timer,
.init_machine = h3600_mach_init, .init_machine = h3600_mach_init,
.init_late = sa11x0_init_late,
.restart = sa11x0_restart, .restart = sa11x0_restart,
MACHINE_END MACHINE_END
...@@ -199,5 +199,6 @@ MACHINE_START(HACKKIT, "HackKit Cpu Board") ...@@ -199,5 +199,6 @@ MACHINE_START(HACKKIT, "HackKit Cpu Board")
.init_irq = sa1100_init_irq, .init_irq = sa1100_init_irq,
.timer = &sa1100_timer, .timer = &sa1100_timer,
.init_machine = hackkit_init, .init_machine = hackkit_init,
.init_late = sa11x0_init_late,
.restart = sa11x0_restart, .restart = sa11x0_restart,
MACHINE_END MACHINE_END
...@@ -348,6 +348,7 @@ MACHINE_START(JORNADA720, "HP Jornada 720") ...@@ -348,6 +348,7 @@ MACHINE_START(JORNADA720, "HP Jornada 720")
.init_irq = sa1100_init_irq, .init_irq = sa1100_init_irq,
.timer = &sa1100_timer, .timer = &sa1100_timer,
.init_machine = jornada720_mach_init, .init_machine = jornada720_mach_init,
.init_late = sa11x0_init_late,
#ifdef CONFIG_SA1111 #ifdef CONFIG_SA1111
.dma_zone_size = SZ_1M, .dma_zone_size = SZ_1M,
#endif #endif
......
...@@ -147,6 +147,7 @@ MACHINE_START(LART, "LART") ...@@ -147,6 +147,7 @@ MACHINE_START(LART, "LART")
.nr_irqs = SA1100_NR_IRQS, .nr_irqs = SA1100_NR_IRQS,
.init_irq = sa1100_init_irq, .init_irq = sa1100_init_irq,
.init_machine = lart_init, .init_machine = lart_init,
.init_late = sa11x0_init_late,
.timer = &sa1100_timer, .timer = &sa1100_timer,
.restart = sa11x0_restart, .restart = sa11x0_restart,
MACHINE_END MACHINE_END
...@@ -112,5 +112,6 @@ MACHINE_START(NANOENGINE, "BSE nanoEngine") ...@@ -112,5 +112,6 @@ MACHINE_START(NANOENGINE, "BSE nanoEngine")
.init_irq = sa1100_init_irq, .init_irq = sa1100_init_irq,
.timer = &sa1100_timer, .timer = &sa1100_timer,
.init_machine = nanoengine_init, .init_machine = nanoengine_init,
.init_late = sa11x0_init_late,
.restart = sa11x0_restart, .restart = sa11x0_restart,
MACHINE_END MACHINE_END
...@@ -135,5 +135,6 @@ MACHINE_START(PLEB, "PLEB") ...@@ -135,5 +135,6 @@ MACHINE_START(PLEB, "PLEB")
.init_irq = sa1100_init_irq, .init_irq = sa1100_init_irq,
.timer = &sa1100_timer, .timer = &sa1100_timer,
.init_machine = pleb_init, .init_machine = pleb_init,
.init_late = sa11x0_init_late,
.restart = sa11x0_restart, .restart = sa11x0_restart,
MACHINE_END MACHINE_END
...@@ -117,10 +117,8 @@ static const struct platform_suspend_ops sa11x0_pm_ops = { ...@@ -117,10 +117,8 @@ static const struct platform_suspend_ops sa11x0_pm_ops = {
.valid = suspend_valid_only_mem, .valid = suspend_valid_only_mem,
}; };
static int __init sa11x0_pm_init(void) int __init sa11x0_pm_init(void)
{ {
suspend_set_ops(&sa11x0_pm_ops); suspend_set_ops(&sa11x0_pm_ops);
return 0; return 0;
} }
late_initcall(sa11x0_pm_init);
...@@ -104,5 +104,6 @@ MACHINE_START(SHANNON, "Shannon (AKA: Tuxscreen)") ...@@ -104,5 +104,6 @@ MACHINE_START(SHANNON, "Shannon (AKA: Tuxscreen)")
.init_irq = sa1100_init_irq, .init_irq = sa1100_init_irq,
.timer = &sa1100_timer, .timer = &sa1100_timer,
.init_machine = shannon_init, .init_machine = shannon_init,
.init_late = sa11x0_init_late,
.restart = sa11x0_restart, .restart = sa11x0_restart,
MACHINE_END MACHINE_END
...@@ -395,6 +395,7 @@ MACHINE_START(SIMPAD, "Simpad") ...@@ -395,6 +395,7 @@ MACHINE_START(SIMPAD, "Simpad")
.map_io = simpad_map_io, .map_io = simpad_map_io,
.nr_irqs = SA1100_NR_IRQS, .nr_irqs = SA1100_NR_IRQS,
.init_irq = sa1100_init_irq, .init_irq = sa1100_init_irq,
.init_late = sa11x0_init_late,
.timer = &sa1100_timer, .timer = &sa1100_timer,
.restart = sa11x0_restart, .restart = sa11x0_restart,
MACHINE_END MACHINE_END
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# #
# Common objects # Common objects
obj-y := timer.o console.o clock.o obj-y := timer.o console.o clock.o common.o
# CPU objects # CPU objects
obj-$(CONFIG_ARCH_SH7367) += setup-sh7367.o clock-sh7367.o intc-sh7367.o obj-$(CONFIG_ARCH_SH7367) += setup-sh7367.o clock-sh7367.o intc-sh7367.o
......
...@@ -598,5 +598,6 @@ MACHINE_START(AG5EVM, "ag5evm") ...@@ -598,5 +598,6 @@ MACHINE_START(AG5EVM, "ag5evm")
.init_irq = sh73a0_init_irq, .init_irq = sh73a0_init_irq,
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.init_machine = ag5evm_init, .init_machine = ag5evm_init,
.init_late = shmobile_init_late,
.timer = &shmobile_timer, .timer = &shmobile_timer,
MACHINE_END MACHINE_END
...@@ -1440,5 +1440,6 @@ MACHINE_START(AP4EVB, "ap4evb") ...@@ -1440,5 +1440,6 @@ MACHINE_START(AP4EVB, "ap4evb")
.init_irq = sh7372_init_irq, .init_irq = sh7372_init_irq,
.handle_irq = shmobile_handle_irq_intc, .handle_irq = shmobile_handle_irq_intc,
.init_machine = ap4evb_init, .init_machine = ap4evb_init,
.init_late = shmobile_init_late,
.timer = &shmobile_timer, .timer = &shmobile_timer,
MACHINE_END MACHINE_END
...@@ -500,5 +500,6 @@ MACHINE_START(BONITO, "bonito") ...@@ -500,5 +500,6 @@ MACHINE_START(BONITO, "bonito")
.init_irq = r8a7740_init_irq, .init_irq = r8a7740_init_irq,
.handle_irq = shmobile_handle_irq_intc, .handle_irq = shmobile_handle_irq_intc,
.init_machine = bonito_init, .init_machine = bonito_init,
.init_late = shmobile_init_late,
.timer = &shmobile_timer, .timer = &shmobile_timer,
MACHINE_END MACHINE_END
...@@ -338,5 +338,6 @@ MACHINE_START(G3EVM, "g3evm") ...@@ -338,5 +338,6 @@ MACHINE_START(G3EVM, "g3evm")
.init_irq = sh7367_init_irq, .init_irq = sh7367_init_irq,
.handle_irq = shmobile_handle_irq_intc, .handle_irq = shmobile_handle_irq_intc,
.init_machine = g3evm_init, .init_machine = g3evm_init,
.init_late = shmobile_init_late,
.timer = &shmobile_timer, .timer = &shmobile_timer,
MACHINE_END MACHINE_END
...@@ -381,5 +381,6 @@ MACHINE_START(G4EVM, "g4evm") ...@@ -381,5 +381,6 @@ MACHINE_START(G4EVM, "g4evm")
.init_irq = sh7377_init_irq, .init_irq = sh7377_init_irq,
.handle_irq = shmobile_handle_irq_intc, .handle_irq = shmobile_handle_irq_intc,
.init_machine = g4evm_init, .init_machine = g4evm_init,
.init_late = shmobile_init_late,
.timer = &shmobile_timer, .timer = &shmobile_timer,
MACHINE_END MACHINE_END
...@@ -521,5 +521,6 @@ MACHINE_START(KOTA2, "kota2") ...@@ -521,5 +521,6 @@ MACHINE_START(KOTA2, "kota2")
.init_irq = sh73a0_init_irq, .init_irq = sh73a0_init_irq,
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.init_machine = kota2_init, .init_machine = kota2_init,
.init_late = shmobile_init_late,
.timer = &shmobile_timer, .timer = &shmobile_timer,
MACHINE_END MACHINE_END
...@@ -1623,5 +1623,6 @@ MACHINE_START(MACKEREL, "mackerel") ...@@ -1623,5 +1623,6 @@ MACHINE_START(MACKEREL, "mackerel")
.init_irq = sh7372_init_irq, .init_irq = sh7372_init_irq,
.handle_irq = shmobile_handle_irq_intc, .handle_irq = shmobile_handle_irq_intc,
.init_machine = mackerel_init, .init_machine = mackerel_init,
.init_late = shmobile_init_late,
.timer = &shmobile_timer, .timer = &shmobile_timer,
MACHINE_END MACHINE_END
...@@ -98,5 +98,6 @@ MACHINE_START(MARZEN, "marzen") ...@@ -98,5 +98,6 @@ MACHINE_START(MARZEN, "marzen")
.init_irq = r8a7779_init_irq, .init_irq = r8a7779_init_irq,
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.init_machine = marzen_init, .init_machine = marzen_init,
.init_late = shmobile_init_late,
.timer = &shmobile_timer, .timer = &shmobile_timer,
MACHINE_END MACHINE_END
/*
* 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();
}
...@@ -46,7 +46,7 @@ static struct cpuidle_driver shmobile_cpuidle_driver = { ...@@ -46,7 +46,7 @@ static struct cpuidle_driver shmobile_cpuidle_driver = {
void (*shmobile_cpuidle_setup)(struct cpuidle_driver *drv); 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_device *dev = &shmobile_cpuidle_dev;
struct cpuidle_driver *drv = &shmobile_cpuidle_driver; struct cpuidle_driver *drv = &shmobile_cpuidle_driver;
...@@ -65,4 +65,3 @@ static int shmobile_cpuidle_init(void) ...@@ -65,4 +65,3 @@ static int shmobile_cpuidle_init(void)
return 0; return 0;
} }
late_initcall(shmobile_cpuidle_init);
...@@ -83,4 +83,18 @@ extern void r8a7779_secondary_init(unsigned int cpu); ...@@ -83,4 +83,18 @@ extern void r8a7779_secondary_init(unsigned int cpu);
extern int r8a7779_boot_secondary(unsigned int cpu); extern int r8a7779_boot_secondary(unsigned int cpu);
extern void r8a7779_smp_prepare_cpus(void); extern void r8a7779_smp_prepare_cpus(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 */ #endif /* __ARCH_MACH_COMMON_H */
...@@ -39,9 +39,8 @@ struct platform_suspend_ops shmobile_suspend_ops = { ...@@ -39,9 +39,8 @@ struct platform_suspend_ops shmobile_suspend_ops = {
.valid = suspend_valid_only_mem, .valid = suspend_valid_only_mem,
}; };
static int __init shmobile_suspend_init(void) int __init shmobile_suspend_init(void)
{ {
suspend_set_ops(&shmobile_suspend_ops); suspend_set_ops(&shmobile_suspend_ops);
return 0; return 0;
} }
late_initcall(shmobile_suspend_init);
...@@ -142,6 +142,7 @@ DT_MACHINE_START(TEGRA_DT, "nVidia Tegra20 (Flattened Device Tree)") ...@@ -142,6 +142,7 @@ DT_MACHINE_START(TEGRA_DT, "nVidia Tegra20 (Flattened Device Tree)")
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.timer = &tegra_timer, .timer = &tegra_timer,
.init_machine = tegra_dt_init, .init_machine = tegra_dt_init,
.init_late = tegra_init_late,
.restart = tegra_assert_system_reset, .restart = tegra_assert_system_reset,
.dt_compat = tegra20_dt_board_compat, .dt_compat = tegra20_dt_board_compat,
MACHINE_END MACHINE_END
...@@ -80,6 +80,7 @@ DT_MACHINE_START(TEGRA30_DT, "NVIDIA Tegra30 (Flattened Device Tree)") ...@@ -80,6 +80,7 @@ DT_MACHINE_START(TEGRA30_DT, "NVIDIA Tegra30 (Flattened Device Tree)")
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.timer = &tegra_timer, .timer = &tegra_timer,
.init_machine = tegra30_dt_init, .init_machine = tegra30_dt_init,
.init_late = tegra_init_late,
.restart = tegra_assert_system_reset, .restart = tegra_assert_system_reset,
.dt_compat = tegra30_dt_board_compat, .dt_compat = tegra30_dt_board_compat,
MACHINE_END MACHINE_END
...@@ -191,5 +191,6 @@ MACHINE_START(HARMONY, "harmony") ...@@ -191,5 +191,6 @@ MACHINE_START(HARMONY, "harmony")
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.timer = &tegra_timer, .timer = &tegra_timer,
.init_machine = tegra_harmony_init, .init_machine = tegra_harmony_init,
.init_late = tegra_init_late,
.restart = tegra_assert_system_reset, .restart = tegra_assert_system_reset,
MACHINE_END MACHINE_END
...@@ -221,5 +221,6 @@ MACHINE_START(PAZ00, "Toshiba AC100 / Dynabook AZ") ...@@ -221,5 +221,6 @@ MACHINE_START(PAZ00, "Toshiba AC100 / Dynabook AZ")
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.timer = &tegra_timer, .timer = &tegra_timer,
.init_machine = tegra_paz00_init, .init_machine = tegra_paz00_init,
.init_late = tegra_init_late,
.restart = tegra_assert_system_reset, .restart = tegra_assert_system_reset,
MACHINE_END MACHINE_END
...@@ -289,6 +289,7 @@ MACHINE_START(SEABOARD, "seaboard") ...@@ -289,6 +289,7 @@ MACHINE_START(SEABOARD, "seaboard")
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.timer = &tegra_timer, .timer = &tegra_timer,
.init_machine = tegra_seaboard_init, .init_machine = tegra_seaboard_init,
.init_late = tegra_init_late,
.restart = tegra_assert_system_reset, .restart = tegra_assert_system_reset,
MACHINE_END MACHINE_END
...@@ -300,6 +301,7 @@ MACHINE_START(KAEN, "kaen") ...@@ -300,6 +301,7 @@ MACHINE_START(KAEN, "kaen")
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.timer = &tegra_timer, .timer = &tegra_timer,
.init_machine = tegra_kaen_init, .init_machine = tegra_kaen_init,
.init_late = tegra_init_late,
.restart = tegra_assert_system_reset, .restart = tegra_assert_system_reset,
MACHINE_END MACHINE_END
...@@ -311,5 +313,6 @@ MACHINE_START(WARIO, "wario") ...@@ -311,5 +313,6 @@ MACHINE_START(WARIO, "wario")
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.timer = &tegra_timer, .timer = &tegra_timer,
.init_machine = tegra_wario_init, .init_machine = tegra_wario_init,
.init_late = tegra_init_late,
.restart = tegra_assert_system_reset, .restart = tegra_assert_system_reset,
MACHINE_END MACHINE_END
...@@ -180,5 +180,6 @@ MACHINE_START(TRIMSLICE, "trimslice") ...@@ -180,5 +180,6 @@ MACHINE_START(TRIMSLICE, "trimslice")
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.timer = &tegra_timer, .timer = &tegra_timer,
.init_machine = tegra_trimslice_init, .init_machine = tegra_trimslice_init,
.init_late = tegra_init_late,
.restart = tegra_assert_system_reset, .restart = tegra_assert_system_reset,
MACHINE_END MACHINE_END
...@@ -32,5 +32,19 @@ void __init tegra_init_irq(void); ...@@ -32,5 +32,19 @@ void __init tegra_init_irq(void);
void __init tegra_dt_init_irq(void); void __init tegra_dt_init_irq(void);
int __init tegra_pcie_init(bool init_port0, bool init_port1); 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; extern struct sys_timer tegra_timer;
#endif #endif
...@@ -642,7 +642,7 @@ static int clk_debugfs_register(struct clk *c) ...@@ -642,7 +642,7 @@ static int clk_debugfs_register(struct clk *c)
return 0; return 0;
} }
static int __init clk_debugfs_init(void) int __init tegra_clk_debugfs_init(void)
{ {
struct clk *c; struct clk *c;
struct dentry *d; struct dentry *d;
...@@ -669,5 +669,4 @@ static int __init clk_debugfs_init(void) ...@@ -669,5 +669,4 @@ static int __init clk_debugfs_init(void)
return err; return err;
} }
late_initcall(clk_debugfs_init);
#endif #endif
...@@ -132,3 +132,9 @@ void __init tegra30_init_early(void) ...@@ -132,3 +132,9 @@ void __init tegra30_init_early(void)
tegra_powergate_init(); tegra_powergate_init();
} }
#endif #endif
void __init tegra_init_late(void)
{
tegra_clk_debugfs_init();
tegra_powergate_debugfs_init();
}
...@@ -234,7 +234,7 @@ static const struct file_operations powergate_fops = { ...@@ -234,7 +234,7 @@ static const struct file_operations powergate_fops = {
.release = single_release, .release = single_release,
}; };
static int __init powergate_debugfs_init(void) int __init tegra_powergate_debugfs_init(void)
{ {
struct dentry *d; struct dentry *d;
int err = -ENOMEM; int err = -ENOMEM;
...@@ -247,6 +247,4 @@ static int __init powergate_debugfs_init(void) ...@@ -247,6 +247,4 @@ static int __init powergate_debugfs_init(void)
return err; return err;
} }
late_initcall(powergate_debugfs_init);
#endif #endif
...@@ -722,6 +722,7 @@ MACHINE_START(U8500, "ST-Ericsson MOP500 platform") ...@@ -722,6 +722,7 @@ MACHINE_START(U8500, "ST-Ericsson MOP500 platform")
.timer = &ux500_timer, .timer = &ux500_timer,
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.init_machine = mop500_init_machine, .init_machine = mop500_init_machine,
.init_late = ux500_init_late,
MACHINE_END MACHINE_END
MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+") MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+")
...@@ -731,6 +732,7 @@ MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+") ...@@ -731,6 +732,7 @@ MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+")
.timer = &ux500_timer, .timer = &ux500_timer,
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.init_machine = hrefv60_init_machine, .init_machine = hrefv60_init_machine,
.init_late = ux500_init_late,
MACHINE_END MACHINE_END
MACHINE_START(SNOWBALL, "Calao Systems Snowball platform") MACHINE_START(SNOWBALL, "Calao Systems Snowball platform")
...@@ -741,6 +743,7 @@ MACHINE_START(SNOWBALL, "Calao Systems Snowball platform") ...@@ -741,6 +743,7 @@ MACHINE_START(SNOWBALL, "Calao Systems Snowball platform")
.timer = &ux500_timer, .timer = &ux500_timer,
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.init_machine = snowball_init_machine, .init_machine = snowball_init_machine,
.init_late = ux500_init_late,
MACHINE_END MACHINE_END
#ifdef CONFIG_MACH_UX500_DT #ifdef CONFIG_MACH_UX500_DT
...@@ -830,6 +833,7 @@ DT_MACHINE_START(U8500_DT, "ST-Ericsson U8500 platform (Device Tree Support)") ...@@ -830,6 +833,7 @@ DT_MACHINE_START(U8500_DT, "ST-Ericsson U8500 platform (Device Tree Support)")
.timer = &ux500_timer, .timer = &ux500_timer,
.handle_irq = gic_handle_irq, .handle_irq = gic_handle_irq,
.init_machine = u8500_init_machine, .init_machine = u8500_init_machine,
.init_late = ux500_init_late,
.dt_compat = u8500_dt_board_compat, .dt_compat = u8500_dt_board_compat,
MACHINE_END MACHINE_END
#endif #endif
...@@ -633,7 +633,7 @@ static int clk_debugfs_register(struct clk *c) ...@@ -633,7 +633,7 @@ static int clk_debugfs_register(struct clk *c)
return 0; return 0;
} }
static int __init clk_debugfs_init(void) int __init clk_debugfs_init(void)
{ {
struct clk *c; struct clk *c;
struct dentry *d; struct dentry *d;
...@@ -655,7 +655,6 @@ static int __init clk_debugfs_init(void) ...@@ -655,7 +655,6 @@ static int __init clk_debugfs_init(void)
return err; return err;
} }
late_initcall(clk_debugfs_init);
#endif /* defined(CONFIG_DEBUG_FS) */ #endif /* defined(CONFIG_DEBUG_FS) */
unsigned long clk_smp_twd_rate = 500000000; unsigned long clk_smp_twd_rate = 500000000;
...@@ -694,12 +693,11 @@ static struct notifier_block clk_twd_cpufreq_nb = { ...@@ -694,12 +693,11 @@ static struct notifier_block clk_twd_cpufreq_nb = {
.notifier_call = clk_twd_cpufreq_transition, .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, return cpufreq_register_notifier(&clk_twd_cpufreq_nb,
CPUFREQ_TRANSITION_NOTIFIER); CPUFREQ_TRANSITION_NOTIFIER);
} }
late_initcall(clk_init_smp_twd_cpufreq);
#endif #endif
......
...@@ -150,3 +150,15 @@ struct clk clk_##_name = { \ ...@@ -150,3 +150,15 @@ struct clk clk_##_name = { \
int __init clk_db8500_ed_fixup(void); int __init clk_db8500_ed_fixup(void);
int __init clk_init(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
...@@ -67,6 +67,12 @@ void __init ux500_init_irq(void) ...@@ -67,6 +67,12 @@ void __init ux500_init_irq(void)
clk_init(); clk_init();
} }
void __init ux500_init_late(void)
{
clk_debugfs_init();
clk_init_smp_twd_cpufreq();
}
static const char * __init ux500_get_machine(void) static const char * __init ux500_get_machine(void)
{ {
return kasprintf(GFP_KERNEL, "DB%4x", dbx500_partnumber()); return kasprintf(GFP_KERNEL, "DB%4x", dbx500_partnumber());
......
...@@ -22,6 +22,7 @@ extern struct device * __init u5500_init_devices(void); ...@@ -22,6 +22,7 @@ extern struct device * __init u5500_init_devices(void);
extern struct device * __init u8500_init_devices(void); extern struct device * __init u8500_init_devices(void);
extern void __init ux500_init_irq(void); extern void __init ux500_init_irq(void);
extern void __init ux500_init_late(void);
extern void __init u5500_sdi_init(struct device *parent); extern void __init u5500_sdi_init(struct device *parent);
......
...@@ -53,6 +53,7 @@ extern void imx35_soc_init(void); ...@@ -53,6 +53,7 @@ extern void imx35_soc_init(void);
extern void imx50_soc_init(void); extern void imx50_soc_init(void);
extern void imx51_soc_init(void); extern void imx51_soc_init(void);
extern void imx53_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 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 void mxc_timer_init(struct clk *timer_clk, void __iomem *, int);
extern int mx1_clocks_init(unsigned long fref); extern int mx1_clocks_init(unsigned long fref);
...@@ -149,4 +150,10 @@ extern void imx6q_pm_init(void); ...@@ -149,4 +150,10 @@ extern void imx6q_pm_init(void);
static inline void imx6q_pm_init(void) {} static inline void imx6q_pm_init(void) {}
#endif #endif
#ifdef CONFIG_NEON
extern int mx51_neon_fixup(void);
#else
static inline int mx51_neon_fixup(void) { return 0; }
#endif
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment