Commit 21cc1b7e authored by Shawn Guo's avatar Shawn Guo

ARM: shmobile: use machine specific hook for late init

Cc: Paul Mundt <lethal@linux-sh.org>
Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
Acked-by: default avatarMagnus Damm <damm@opensource.se>
Acked-by: default avatar"Rafael J. Wysocki" <rjw@sisk.pl>
parent 7fea1ba5
...@@ -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);
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