ccu9540.dtb
dtb-$(CONFIG_ARCH_SHMOBILE) += emev2-kzm9d.dtb \
r8a7740-armadillo800eva.dtb \
+ +++ r8a7779-marzen-reference.dtb \
sh73a0-kzm9g.dtb \
++ ++ sh73a0-kzm9g-reference.dtb \
sh7372-mackerel.dtb
dtb-$(CONFIG_ARCH_SPEAR13XX) += spear1310-evb.dtb \
spear1340-evb.dtb
# SMP objects
smp-y := platsmp.o headsmp.o
smp-$(CONFIG_HOTPLUG_CPU) += hotplug.o
- --smp-$(CONFIG_ARCH_SH73A0) += smp-sh73a0.o
- smp-$(CONFIG_ARCH_SH73A0) += smp-sh73a0.o headsmp-sh73a0.o
- ---smp-$(CONFIG_ARCH_R8A7779) += smp-r8a7779.o
- ---smp-$(CONFIG_ARCH_EMEV2) += smp-emev2.o
- - -
- - -# Pinmux setup
- - -pfc-y :=
- - -pfc-$(CONFIG_ARCH_SH7372) += pfc-sh7372.o
- - -pfc-$(CONFIG_ARCH_SH73A0) += pfc-sh73a0.o
- - -pfc-$(CONFIG_ARCH_R8A7740) += pfc-r8a7740.o
- - -pfc-$(CONFIG_ARCH_R8A7779) += pfc-r8a7779.o
+ +++smp-$(CONFIG_ARCH_SH73A0) += smp-sh73a0.o headsmp-scu.o
+ +++smp-$(CONFIG_ARCH_R8A7779) += smp-r8a7779.o headsmp-scu.o
+ +++smp-$(CONFIG_ARCH_EMEV2) += smp-emev2.o headsmp-scu.o
- # Pinmux setup
- pfc-y :=
- pfc-$(CONFIG_ARCH_SH7372) += pfc-sh7372.o
- pfc-$(CONFIG_ARCH_SH73A0) += pfc-sh73a0.o
- pfc-$(CONFIG_ARCH_R8A7740) += pfc-r8a7740.o
- pfc-$(CONFIG_ARCH_R8A7779) += pfc-r8a7779.o
-
# IRQ objects
obj-$(CONFIG_ARCH_SH7372) += entry-intc.o
obj-$(CONFIG_ARCH_R8A7740) += entry-intc.o
* As a final step pass earlyprint=sh-sci.2,115200 on the kernel
* command line in case of the marzen board.
*/
- /* override timer setup with soc-specific code */
- shmobile_timer.init = r8a7779_earlytimer_init;
+ ++}
+ +++
+ +++#ifdef CONFIG_USE_OF
+ +++void __init r8a7779_add_early_devices_dt(void)
+ +++{
+ +++ shmobile_setup_delay(1000, 2, 4); /* Cortex-A9 @ 1000MHz */
+ + +
- - /* override timer setup with soc-specific code */
- - shmobile_timer.init = r8a7779_earlytimer_init;
+ +++ early_platform_add_devices(r8a7779_early_devices_dt,
+ +++ ARRAY_SIZE(r8a7779_early_devices_dt));
+ +++
+ +++ /* Early serial console setup is not included here.
+ +++ * See comment in r8a7779_add_early_devices().
+ +++ */
+ + +}
++
+ +++static const struct of_dev_auxdata r8a7779_auxdata_lookup[] __initconst = {
+ +++ {},
+ +++};
+ +++
+ +++void __init r8a7779_add_standard_devices_dt(void)
+ +++{
+ +++ /* clocks are setup late during boot in the case of DT */
+ +++ r8a7779_clock_init();
+ +++
+ +++ platform_add_devices(r8a7779_early_devices_dt,
+ +++ ARRAY_SIZE(r8a7779_early_devices_dt));
+ +++ of_platform_populate(NULL, of_default_bus_match_table,
+ +++ r8a7779_auxdata_lookup, NULL);
++ }
+ +++
+ +++static const char *r8a7779_compat_dt[] __initdata = {
+ +++ "renesas,r8a7779",
+ +++ NULL,
+ +++};
+ +++
+ +++DT_MACHINE_START(SH73A0_DT, "Generic R8A7779 (Flattened Device Tree)")
+ +++ .map_io = r8a7779_map_io,
+ +++ .init_early = r8a7779_add_early_devices_dt,
+ +++ .nr_irqs = NR_IRQS_LEGACY,
+ +++ .init_irq = r8a7779_init_irq_dt,
+ +++ .init_machine = r8a7779_add_standard_devices_dt,
+ +++ .init_time = shmobile_timer_init,
+ +++ .dt_compat = r8a7779_compat_dt,
+ +++MACHINE_END
+ +++#endif /* CONFIG_USE_OF */
/* setup early console here as well */
shmobile_setup_console();
- /* override timer setup with soc-specific code */
- shmobile_timer.init = sh73a0_earlytimer_init;
+ ++}
+ ++
+ ++#ifdef CONFIG_USE_OF
+ ++
+ ++/* Please note that the clock initialisation shcheme used in
+ ++ * sh73a0_add_early_devices_dt() and sh73a0_add_standard_devices_dt()
+ ++ * does not work with SMP as there is a yet to be resolved lock-up in
+ ++ * workqueue initialisation.
+ ++ *
+ ++ * CONFIG_SMP should be disabled when using this code.
+ ++ */
+ ++
+ ++void __init sh73a0_add_early_devices_dt(void)
+ ++{
+ ++ shmobile_setup_delay(1196, 44, 46); /* Cortex-A9 @ 1196MHz */
+ ++
+ ++ early_platform_add_devices(sh73a0_early_devices_dt,
+ ++ ARRAY_SIZE(sh73a0_early_devices_dt));
+ ++
+ ++ /* setup early console here as well */
+ ++ shmobile_setup_console();
+ ++}
+ +
- - /* override timer setup with soc-specific code */
- - shmobile_timer.init = sh73a0_earlytimer_init;
+ ++static const struct of_dev_auxdata sh73a0_auxdata_lookup[] __initconst = {
+ ++ {},
+ ++};
+
+ ++void __init sh73a0_add_standard_devices_dt(void)
+ ++{
+ ++ /* clocks are setup late during boot in the case of DT */
+ ++ sh73a0_clock_init();
+ ++
+ ++ platform_add_devices(sh73a0_early_devices_dt,
+ ++ ARRAY_SIZE(sh73a0_early_devices_dt));
+ ++ of_platform_populate(NULL, of_default_bus_match_table,
+ ++ sh73a0_auxdata_lookup, NULL);
}
+ ++
+ ++static const char *sh73a0_boards_compat_dt[] __initdata = {
+ ++ "renesas,sh73a0",
+ ++ NULL,
+ ++};
+ ++
+ ++DT_MACHINE_START(SH73A0_DT, "Generic SH73A0 (Flattened Device Tree)")
+ ++ .map_io = sh73a0_map_io,
+ ++ .init_early = sh73a0_add_early_devices_dt,
+ ++ .nr_irqs = NR_IRQS_LEGACY,
+ ++ .init_irq = sh73a0_init_irq_dt,
+ ++ .init_machine = sh73a0_add_standard_devices_dt,
+ ++ .init_time = shmobile_timer_init,
+ ++ .dt_compat = sh73a0_boards_compat_dt,
+ ++MACHINE_END
+ ++#endif /* CONFIG_USE_OF */