ARM: shmobile: Enable ARM_GLOBAL_TIMER on Cortex-A9 MPCore SoCs
authorGeert Uytterhoeven <geert+renesas@glider.be>
Wed, 11 Dec 2019 13:52:22 +0000 (14:52 +0100)
committerGeert Uytterhoeven <geert+renesas@glider.be>
Mon, 10 Feb 2020 12:44:29 +0000 (13:44 +0100)
SH-Mobile AG5 and R-Car H1 SoCs are based on the Cortex-A9 MPCore, which
includes a global timer.

Enable the ARM global timer on these SoCs, which will be used for:
  - the scheduler clock, improving scheduler accuracy from 10 ms to 3 or
    4 ns,
  - delay loops, allowing removal of calls to shmobile_init_delay() from
    the corresponding machine vectors.

Note that when using an old DTB lacking the global timer, the kernel
will still work.  However, loops-per-jiffies will no longer be preset,
and the delay loop will need to be calibrated during boot.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/20191211135222.26770-5-geert+renesas@glider.be
arch/arm/mach-shmobile/setup-r8a7779.c
arch/arm/mach-shmobile/setup-sh73a0.c
drivers/soc/renesas/Kconfig

index b13ec90..86406e3 100644 (file)
@@ -72,7 +72,6 @@ static const char *const r8a7779_compat_dt[] __initconst = {
 DT_MACHINE_START(R8A7779_DT, "Generic R8A7779 (Flattened Device Tree)")
        .smp            = smp_ops(r8a7779_smp_ops),
        .map_io         = r8a7779_map_io,
-       .init_early     = shmobile_init_delay,
        .init_irq       = r8a7779_init_irq_dt,
        .init_late      = shmobile_init_late,
        .dt_compat      = r8a7779_compat_dt,
index cc08aa7..eb4a62f 100644 (file)
@@ -56,7 +56,6 @@ static const char *const sh73a0_boards_compat_dt[] __initconst = {
 DT_MACHINE_START(SH73A0_DT, "Generic SH73A0 (Flattened Device Tree)")
        .smp            = smp_ops(sh73a0_smp_ops),
        .map_io         = sh73a0_map_io,
-       .init_early     = shmobile_init_delay,
        .init_machine   = sh73a0_generic_init,
        .init_late      = shmobile_init_late,
        .dt_compat      = sh73a0_boards_compat_dt,
index ba2b8b5..de5cfe3 100644 (file)
@@ -116,6 +116,7 @@ config ARCH_R8A7779
        bool "R-Car H1 (R8A77790)"
        select ARCH_RCAR_GEN1
        select ARM_ERRATA_754322
+       select ARM_GLOBAL_TIMER
        select HAVE_ARM_SCU if SMP
        select HAVE_ARM_TWD if SMP
        select SYSC_R8A7779
@@ -163,6 +164,7 @@ config ARCH_SH73A0
        bool "SH-Mobile AG5 (R8A73A00)"
        select ARCH_RMOBILE
        select ARM_ERRATA_754322
+       select ARM_GLOBAL_TIMER
        select HAVE_ARM_SCU if SMP
        select HAVE_ARM_TWD if SMP
        select RENESAS_INTC_IRQPIN