Re: [PATCH 0/6] 32-bit Meson: add the ARM TWD and Global Timers

From: Martin Blumenstingl
Date: Sun Dec 02 2018 - 16:13:13 EST


Hi Kevin,

On Fri, Nov 23, 2018 at 8:53 PM Martin Blumenstingl
<martin.blumenstingl@xxxxxxxxxxxxxx> wrote:
>
> The 32-bit Meson SoCs use Cortex-A9 or Cortex-A5 cores. These come
> with the ARM TWD ("Timer Watchdog") which contains a timer and a
> watchdog as well as the ARM Global Timer.
>
> This enables the corresponding configs for the 32-bit Meson target.
> Additionally this adds and enables the ARM TWD timer. The Global
> Timer is added but currently disabled because it's clock input is
> the PERIPH clock which is derived from the CPU clock. Thus the rate
> of the PERIPH clock will change when changing the CPU frequency.
> Unfortunately the Global Timer driver doesn't handle clocks with
> changing rates yet (unlike the TWD timer), thus we keep it disabled
> for now.
>
> The whole series is inspired by an almost 3 year old patch from
> Carlo: [0]
>
>
> Dependencies:
> - I build this on top of my other series "ARM: dts: meson: add the
> timer interrupts and clocks" from [1]
this is already merged into your v4.21/dt branch

> - CLKID_PERIPH requires updated clock driver headers. Neil provided
> a tag which includes the updated headers: [2]
this is still a dependency which you could easily pull in

> - There is no runtime dependency on the PERIPH clock as we don't
> have CPU frequency scaling support enabled yet. In case the TWD
> timer driver can't find the clock it falls back to auto-detecting
> the clock rate at boot time. This is safe as long as we don't have
> .dts patches in place which allow changing the CPU clock rate. Once
> we enable CPU frequency scaling support for the PERIPH clock becomes
> mandatory so the TWD timer driver knows about changes to the PERIPH
> clock (which is derived from the CPU clock).
and there's still not a hard runtime dependency until you apply [3]
"ARM: dts: enable CPU frequency scaling on Meson8/Meson8b"

> Martin Blumenstingl (6):
> ARM: meson: select HAVE_ARM_TWD and ARM_GLOBAL_TIMER
> ARM: dts: meson: group the Cortex-A5 / Cortex-A9 peripherals
> ARM: dts: meson8: add the ARM TWD timer
> ARM: dts: meson8: add the Cortex-A9 global timer
> ARM: dts: meson8b: add the ARM TWD timer
> ARM: dts: meson8b: add the Cortex-A5 global timer
>
> arch/arm/boot/dts/meson.dtsi | 24 ++++++++++++++++--------
> arch/arm/boot/dts/meson8.dtsi | 32 +++++++++++++++++++++++++++-----
> arch/arm/boot/dts/meson8b.dtsi | 32 +++++++++++++++++++++++++++-----
> arch/arm/mach-meson/Kconfig | 2 ++
> 4 files changed, 72 insertions(+), 18 deletions(-)
if you plan to send another pull-request to the arm-soc tree then
please consider including this series.
it fixes some harmless (but still noisy) warnings during boot which
also also seen by Odroid-C1 in your KernelCI lab:
Clockevents: could not switch to one-shot mode:
dummy_timer is not functional.
Clockevents: could not switch to one-shot mode:
dummy_timer is not functional.
Clockevents: could not switch to one-shot mode:
dummy_timer is not functional.
Clockevents: could not switch to one-shot mode:
dummy_timer is not functional.
Could not switch to high resolution mode on CPU 3
Could not switch to high resolution mode on CPU 2
Could not switch to high resolution mode on CPU 0
Could not switch to high resolution mode on CPU 1


Regards
Martin


[0] https://patchwork.kernel.org/patch/7797581/
[1] https://patchwork.kernel.org/cover/10687005/
[2] http://lists.infradead.org/pipermail/linux-amlogic/2018-November/009136.html
[3] https://patchwork.kernel.org/cover/10705475/