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

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

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

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

69 files changed:
1  2 
arch/arm/kernel/setup.c
arch/arm/mach-davinci/board-da850-evm.c
arch/arm/mach-ep93xx/core.c
arch/arm/mach-exynos/common.c
arch/arm/mach-exynos/mach-armlex4210.c
arch/arm/mach-exynos/mach-exynos5-dt.c
arch/arm/mach-exynos/mach-nuri.c
arch/arm/mach-exynos/mach-origen.c
arch/arm/mach-exynos/mach-smdk4x12.c
arch/arm/mach-exynos/mach-smdkv310.c
arch/arm/mach-exynos/mach-universal_c210.c
arch/arm/mach-imx/imx51-dt.c
arch/arm/mach-imx/mach-cpuimx51sd.c
arch/arm/mach-imx/mach-mx51_babbage.c
arch/arm/mach-imx/mach-mx51_efikamx.c
arch/arm/mach-imx/mach-mx51_efikasb.c
arch/arm/mach-imx/mach-pcm037.c
arch/arm/mach-imx/mm-imx5.c
arch/arm/mach-msm/board-msm7x30.c
arch/arm/mach-msm/board-qsd8x50.c
arch/arm/mach-omap1/board-fsample.c
arch/arm/mach-omap1/board-h2.c
arch/arm/mach-omap1/board-h3.c
arch/arm/mach-omap1/board-palmz71.c
arch/arm/mach-omap1/board-perseus2.c
arch/arm/mach-omap1/common.h
arch/arm/mach-omap1/io.c
arch/arm/mach-omap2/board-3430sdp.c
arch/arm/mach-omap2/board-4430sdp.c
arch/arm/mach-omap2/board-am3517crane.c
arch/arm/mach-omap2/board-am3517evm.c
arch/arm/mach-omap2/board-cm-t35.c
arch/arm/mach-omap2/board-devkit8000.c
arch/arm/mach-omap2/board-generic.c
arch/arm/mach-omap2/board-igep0020.c
arch/arm/mach-omap2/board-omap3beagle.c
arch/arm/mach-omap2/board-omap3evm.c
arch/arm/mach-omap2/board-omap3logic.c
arch/arm/mach-omap2/board-omap3stalker.c
arch/arm/mach-omap2/board-omap4panda.c
arch/arm/mach-omap2/board-overo.c
arch/arm/mach-omap2/board-rx51.c
arch/arm/mach-omap2/common.h
arch/arm/mach-omap2/io.c
arch/arm/mach-omap2/mux.c
arch/arm/mach-omap2/pm24xx.c
arch/arm/mach-omap2/pm34xx.c
arch/arm/mach-s3c64xx/mach-anw6410.c
arch/arm/mach-s3c64xx/mach-crag6410.c
arch/arm/mach-s3c64xx/mach-mini6410.c
arch/arm/mach-s3c64xx/mach-real6410.c
arch/arm/mach-s3c64xx/mach-smdk6410.c
arch/arm/mach-shmobile/Makefile
arch/arm/mach-shmobile/board-ag5evm.c
arch/arm/mach-shmobile/board-ap4evb.c
arch/arm/mach-shmobile/board-bonito.c
arch/arm/mach-shmobile/board-mackerel.c
arch/arm/mach-shmobile/include/mach/common.h
arch/arm/mach-tegra/board-dt-tegra20.c
arch/arm/mach-tegra/board-dt-tegra30.c
arch/arm/mach-tegra/board-harmony.c
arch/arm/mach-tegra/board-paz00.c
arch/arm/mach-tegra/board-seaboard.c
arch/arm/mach-tegra/board-trimslice.c
arch/arm/mach-tegra/common.c
arch/arm/mach-ux500/board-mop500.c
arch/arm/mach-ux500/clock.c
arch/arm/mach-ux500/cpu.c
arch/arm/mach-ux500/include/mach/setup.h

Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -316,7 -303,7 +316,8 @@@ MACHINE_START(SMDK4412, "SMDK4412"
        .map_io         = smdk4x12_map_io,
        .handle_irq     = gic_handle_irq,
        .init_machine   = smdk4x12_machine_init,
+       .init_late      = exynos_init_late,
        .timer          = &exynos4_timer,
        .restart        = exynos4_restart,
 +      .reserve        = &smdk4x12_reserve,
  MACHINE_END
Simple merge
@@@ -1157,7 -1113,8 +1157,8 @@@ MACHINE_START(UNIVERSAL_C210, "UNIVERSA
        .map_io         = universal_map_io,
        .handle_irq     = gic_handle_irq,
        .init_machine   = universal_machine_init,
 -      .timer          = &exynos4_timer,
+       .init_late      = exynos_init_late,
 +      .timer          = &s5p_timer,
        .reserve        = &universal_reserve,
        .restart        = exynos4_restart,
  MACHINE_END
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -53,31 -52,22 +53,41 @@@ static inline void omap16xx_map_io(void
  }
  #endif
  
+ #ifdef CONFIG_OMAP_SERIAL_WAKE
+ int omap_serial_wakeup_init(void);
+ #else
+ static inline int omap_serial_wakeup_init(void)
+ {
+       return 0;
+ }
+ #endif
  void omap1_init_early(void);
  void omap1_init_irq(void);
+ void omap1_init_late(void);
  void omap1_restart(char, const char *);
  
 +extern void __init omap_check_revision(void);
 +
 +extern void omap1_nand_cmd_ctl(struct mtd_info *mtd, int cmd,
 +                             unsigned int ctrl);
 +
  extern struct sys_timer omap1_timer;
 -extern bool omap_32k_timer_init(void);
 -extern void __init omap_init_consistent_dma_size(void);
 +#ifdef CONFIG_OMAP_32K_TIMER
 +extern int omap_32k_timer_init(void);
 +#else
 +static inline int __init omap_32k_timer_init(void)
 +{
 +      return -ENODEV;
 +}
 +#endif
 +
 +extern u32 omap_irq_flags;
 +
 +#ifdef CONFIG_ARCH_OMAP16XX
 +extern int ocpi_enable(void);
 +#else
 +static inline int ocpi_enable(void) { return 0; }
 +#endif
  
  #endif /* __ARCH_ARM_MACH_OMAP1_COMMON_H */
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -124,7 -157,8 +124,8 @@@ DT_MACHINE_START(OMAP4_DT, "Generic OMA
        .init_early     = omap4430_init_early,
        .init_irq       = omap_init_irq,
        .handle_irq     = gic_handle_irq,
 -      .init_machine   = omap4_init,
 +      .init_machine   = omap_generic_init,
+       .init_late      = omap4430_init_late,
        .timer          = &omap4_timer,
        .dt_compat      = omap4_boards_compat,
        .restart        = omap_prcm_restart,
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -697,15 -699,12 +697,12 @@@ static void __init pm_errata_configure(
        }
  }
  
static int __init omap3_pm_init(void)
+ int __init omap3_pm_init(void)
  {
        struct power_state *pwrst, *tmp;
 -      struct clockdomain *neon_clkdm, *per_clkdm, *mpu_clkdm, *core_clkdm;
 +      struct clockdomain *neon_clkdm, *mpu_clkdm;
        int ret;
  
-       if (!cpu_is_omap34xx())
-               return -ENODEV;
        if (!omap3_has_io_chain_ctrl())
                pr_warning("PM: no software I/O chain control; some wakeups may be lost\n");
  
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -83,6 -82,19 +83,20 @@@ extern int r8a7779_platform_cpu_kill(un
  extern void r8a7779_secondary_init(unsigned int cpu);
  extern int r8a7779_boot_secondary(unsigned int cpu);
  extern void r8a7779_smp_prepare_cpus(void);
 +extern void r8a7779_register_twd(void);
  
+ extern void shmobile_init_late(void);
+ #ifdef CONFIG_SUSPEND
+ int shmobile_suspend_init(void);
+ #else
+ static inline int shmobile_suspend_init(void) { return 0; }
+ #endif
+ #ifdef CONFIG_CPU_IDLE
+ int shmobile_cpuidle_init(void);
+ #else
+ static inline int shmobile_cpuidle_init(void) { return 0; }
+ #endif
  #endif /* __ARCH_MACH_COMMON_H */
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -20,7 -21,13 +20,8 @@@ extern void __init u8500_map_io(void)
  extern struct device * __init u8500_init_devices(void);
  
  extern void __init ux500_init_irq(void);
+ extern void __init ux500_init_late(void);
  
 -extern void __init u5500_sdi_init(struct device *parent);
 -
 -extern void __init db5500_dma_init(struct device *parent);
 -
  extern struct device *ux500_soc_device_init(const char *soc_id);
  
  struct amba_device;