Hi,
This small patchset adds usage of generic Cortex-A9 timer driver
by Armada 38x SoCs. The system clocksource subsystem
will pick one of above two available ones (ARM generic or legacy
axp/a370 timer). Test on v4.13-rc3 showed, that the generic one
is chosen - no regression whatsoever observed on A388-GP and
A388-Clearfog. Backward compatibility with older kernels/DT
is preserved.
I'm looking forward to any comments or remarks.
Best regards,
Marcin
Marcin Wojtas (2):
ARM: mvebu: enable ARM_GLOBAL_TIMER compilation Armada 38x platforms
ARM: dts: armada-38x: Add arm_global_timer node
arch/arm/boot/dts/armada-38x.dtsi | 7 +++++++
arch/arm/mach-mvebu/Kconfig | 2 ++
2 files changed, 9 insertions(+)
--
1.8.3.1
Armada 38x SoCs along with legacy timer (time-armada-370-xp.c),
comprise generic Cortex-A9 global timer (arm_global_timer.c).
Enable its compilation. The system clocksource subsystem
will pick one of above two available ones in case the global
timer node is present in the device tree.
Signed-off-by: Marcin Wojtas <[email protected]>
---
arch/arm/mach-mvebu/Kconfig | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig
index 541647f..9b49867 100644
--- a/arch/arm/mach-mvebu/Kconfig
+++ b/arch/arm/mach-mvebu/Kconfig
@@ -60,6 +60,8 @@ config MACH_ARMADA_38X
select ARM_ERRATA_720789
select ARM_ERRATA_753970
select ARM_GIC
+ select ARM_GLOBAL_TIMER
+ select CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK
select ARMADA_370_XP_IRQ
select ARMADA_38X_CLK
select HAVE_ARM_SCU
--
1.8.3.1
Since generic Cortex-A9 global timer is available after adding
it to compilation, enable its node in armada-38x.dtsi.
Signed-off-by: Marcin Wojtas <[email protected]>
---
arch/arm/boot/dts/armada-38x.dtsi | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/arch/arm/boot/dts/armada-38x.dtsi b/arch/arm/boot/dts/armada-38x.dtsi
index af31f5d..7ff0811e 100644
--- a/arch/arm/boot/dts/armada-38x.dtsi
+++ b/arch/arm/boot/dts/armada-38x.dtsi
@@ -154,6 +154,13 @@
reg = <0xc000 0x58>;
};
+ timer@c200 {
+ compatible = "arm,cortex-a9-global-timer";
+ reg = <0xc200 0x20>;
+ interrupts = <GIC_PPI 11 (IRQ_TYPE_EDGE_RISING | GIC_CPU_MASK_SIMPLE(2))>;
+ clocks = <&coreclk 2>;
+ };
+
timer@c600 {
compatible = "arm,cortex-a9-twd-timer";
reg = <0xc600 0x20>;
--
1.8.3.1
Hi Marcin,
On mar., août 01 2017, Marcin Wojtas <[email protected]> wrote:
> Since generic Cortex-A9 global timer is available after adding
> it to compilation, enable its node in armada-38x.dtsi.
>
> Signed-off-by: Marcin Wojtas <[email protected]>
Applied on mvebu/dt
Thanks,
Gregory
> ---
> arch/arm/boot/dts/armada-38x.dtsi | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/arch/arm/boot/dts/armada-38x.dtsi b/arch/arm/boot/dts/armada-38x.dtsi
> index af31f5d..7ff0811e 100644
> --- a/arch/arm/boot/dts/armada-38x.dtsi
> +++ b/arch/arm/boot/dts/armada-38x.dtsi
> @@ -154,6 +154,13 @@
> reg = <0xc000 0x58>;
> };
>
> + timer@c200 {
> + compatible = "arm,cortex-a9-global-timer";
> + reg = <0xc200 0x20>;
> + interrupts = <GIC_PPI 11 (IRQ_TYPE_EDGE_RISING | GIC_CPU_MASK_SIMPLE(2))>;
> + clocks = <&coreclk 2>;
> + };
> +
> timer@c600 {
> compatible = "arm,cortex-a9-twd-timer";
> reg = <0xc600 0x20>;
> --
> 1.8.3.1
>
--
Gregory Clement, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
Hi Marcin,
On mar., août 01 2017, Marcin Wojtas <[email protected]> wrote:
> Armada 38x SoCs along with legacy timer (time-armada-370-xp.c),
> comprise generic Cortex-A9 global timer (arm_global_timer.c).
> Enable its compilation. The system clocksource subsystem
> will pick one of above two available ones in case the global
> timer node is present in the device tree.
>
> Signed-off-by: Marcin Wojtas <[email protected]>
Applied on mvebu/soc
Thanks,
Gregory
> ---
> arch/arm/mach-mvebu/Kconfig | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig
> index 541647f..9b49867 100644
> --- a/arch/arm/mach-mvebu/Kconfig
> +++ b/arch/arm/mach-mvebu/Kconfig
> @@ -60,6 +60,8 @@ config MACH_ARMADA_38X
> select ARM_ERRATA_720789
> select ARM_ERRATA_753970
> select ARM_GIC
> + select ARM_GLOBAL_TIMER
> + select CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK
> select ARMADA_370_XP_IRQ
> select ARMADA_38X_CLK
> select HAVE_ARM_SCU
> --
> 1.8.3.1
>
--
Gregory Clement, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com