clocksource/drivers/timer-ti-dm: Handle dra7 timer wrap errata i940
authorTony Lindgren <tony@atomide.com>
Tue, 23 Mar 2021 07:43:26 +0000 (09:43 +0200)
committerDaniel Lezcano <daniel.lezcano@linaro.org>
Thu, 8 Apr 2021 14:41:18 +0000 (16:41 +0200)
commit25de4ce5ed02994aea8bc111d133308f6fd62566
tree74bd4c307d545f9caf89b26617d3b8c007bc392d
parent3efe7a878a11c13b5297057bfc1e5639ce1241ce
clocksource/drivers/timer-ti-dm: Handle dra7 timer wrap errata i940

There is a timer wrap issue on dra7 for the ARM architected timer.
In a typical clock configuration the timer fails to wrap after 388 days.

To work around the issue, we need to use timer-ti-dm percpu timers instead.

Let's configure dmtimer3 and 4 as percpu timers by default, and warn about
the issue if the dtb is not configured properly.

Let's do this as a single patch so it can be backported to v5.8 and later
kernels easily. Note that this patch depends on earlier timer-ti-dm
systimer posted mode fixes, and a preparatory clockevent patch
"clocksource/drivers/timer-ti-dm: Prepare to handle dra7 timer wrap issue".

For more information, please see the errata for "AM572x Sitara Processors
Silicon Revisions 1.1, 2.0":

https://www.ti.com/lit/er/sprz429m/sprz429m.pdf

The concept is based on earlier reference patches done by Tero Kristo and
Keerthy.

Cc: Keerthy <j-keerthy@ti.com>
Cc: Tero Kristo <kristo@kernel.org>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Link: https://lore.kernel.org/r/20210323074326.28302-3-tony@atomide.com
arch/arm/boot/dts/dra7-l4.dtsi
arch/arm/boot/dts/dra7.dtsi
drivers/clocksource/timer-ti-dm-systimer.c
include/linux/cpuhotplug.h