aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-shmobile/board-ape6evm.c20
-rw-r--r--arch/arm/mach-shmobile/timer.c7
2 files changed, 27 insertions, 0 deletions
diff --git a/arch/arm/mach-shmobile/board-ape6evm.c b/arch/arm/mach-shmobile/board-ape6evm.c
index b222f68d55b7..2cca5ef86ba0 100644
--- a/arch/arm/mach-shmobile/board-ape6evm.c
+++ b/arch/arm/mach-shmobile/board-ape6evm.c
@@ -22,6 +22,8 @@
22#include <linux/gpio_keys.h> 22#include <linux/gpio_keys.h>
23#include <linux/input.h> 23#include <linux/input.h>
24#include <linux/interrupt.h> 24#include <linux/interrupt.h>
25#include <linux/irqchip.h>
26#include <linux/irqchip/arm-gic.h>
25#include <linux/kernel.h> 27#include <linux/kernel.h>
26#include <linux/mfd/tmio.h> 28#include <linux/mfd/tmio.h>
27#include <linux/mmc/host.h> 29#include <linux/mmc/host.h>
@@ -277,6 +279,22 @@ static void __init ape6evm_add_standard_devices(void)
277 sizeof(ape6evm_leds_pdata)); 279 sizeof(ape6evm_leds_pdata));
278} 280}
279 281
282static void __init ape6evm_legacy_init_time(void)
283{
284 /* Do not invoke DT-based timers via clocksource_of_init() */
285}
286
287static void __init ape6evm_legacy_init_irq(void)
288{
289 void __iomem *gic_dist_base = ioremap_nocache(0xf1001000, 0x1000);
290 void __iomem *gic_cpu_base = ioremap_nocache(0xf1002000, 0x1000);
291
292 gic_init(0, 29, gic_dist_base, gic_cpu_base);
293
294 /* Do not invoke DT-based interrupt code via irqchip_init() */
295}
296
297
280static const char *ape6evm_boards_compat_dt[] __initdata = { 298static const char *ape6evm_boards_compat_dt[] __initdata = {
281 "renesas,ape6evm", 299 "renesas,ape6evm",
282 NULL, 300 NULL,
@@ -284,7 +302,9 @@ static const char *ape6evm_boards_compat_dt[] __initdata = {
284 302
285DT_MACHINE_START(APE6EVM_DT, "ape6evm") 303DT_MACHINE_START(APE6EVM_DT, "ape6evm")
286 .init_early = shmobile_init_delay, 304 .init_early = shmobile_init_delay,
305 .init_irq = ape6evm_legacy_init_irq,
287 .init_machine = ape6evm_add_standard_devices, 306 .init_machine = ape6evm_add_standard_devices,
288 .init_late = shmobile_init_late, 307 .init_late = shmobile_init_late,
289 .dt_compat = ape6evm_boards_compat_dt, 308 .dt_compat = ape6evm_boards_compat_dt,
309 .init_time = ape6evm_legacy_init_time,
290MACHINE_END 310MACHINE_END
diff --git a/arch/arm/mach-shmobile/timer.c b/arch/arm/mach-shmobile/timer.c
index 32ee335d2632..44d32a84b001 100644
--- a/arch/arm/mach-shmobile/timer.c
+++ b/arch/arm/mach-shmobile/timer.c
@@ -75,6 +75,13 @@ void __init shmobile_init_delay(void)
75 if (!max_freq) 75 if (!max_freq)
76 return; 76 return;
77 77
78#ifdef CONFIG_ARCH_SHMOBILE_LEGACY
79 /* Non-multiplatform r8a73a4 SoC cannot use arch timer due
80 * to GIC being initialized from C and arch timer via DT */
81 if (of_machine_is_compatible("renesas,r8a73a4"))
82 has_arch_timer = false;
83#endif
84
78 if (!has_arch_timer || !IS_ENABLED(CONFIG_ARM_ARCH_TIMER)) { 85 if (!has_arch_timer || !IS_ENABLED(CONFIG_ARM_ARCH_TIMER)) {
79 if (is_a7_a8_a9) 86 if (is_a7_a8_a9)
80 shmobile_setup_delay_hz(max_freq, 1, 3); 87 shmobile_setup_delay_hz(max_freq, 1, 3);