ARM: shmobile: use machine specific hook for late init
Cc: Paul Mundt <lethal@linux-sh.org> Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Acked-by: Magnus Damm <damm@opensource.se> Acked-by: "Rafael J. Wysocki" <rjw@sisk.pl>
This commit is contained in:
@@ -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")
|
|||||||
.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")
|
|||||||
.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")
|
|||||||
.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")
|
|||||||
.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")
|
|||||||
.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")
|
|||||||
.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")
|
|||||||
.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")
|
|||||||
.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
|
||||||
|
24
arch/arm/mach-shmobile/common.c
Normal file
24
arch/arm/mach-shmobile/common.c
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; version 2 of the License.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <mach/common.h>
|
||||||
|
|
||||||
|
void __init shmobile_init_late(void)
|
||||||
|
{
|
||||||
|
shmobile_suspend_init();
|
||||||
|
shmobile_cpuidle_init();
|
||||||
|
}
|
@@ -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)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
late_initcall(shmobile_cpuidle_init);
|
|
||||||
|
@@ -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 = {
|
|||||||
.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);
|
|
||||||
|
Reference in New Issue
Block a user