linux/drivers/clocksource
Alexander Kochetkov 5e0a39d0f7 clocksource/drivers/rockchip_timer: Implement clocksource timer
The clock supplying the arm-global-timer on the rk3188 is coming from the
the cpu clock itself and thus changes its rate everytime cpufreq adjusts
the cpu frequency making this timer unsuitable as a stable clocksource
and sched clock.

The rk3188, rk3288 and following socs share a separate timer block already
handled by the rockchip-timer driver. Therefore adapt this driver to also
be able to act as clocksource and sched clock on rk3188.

In order to test clocksource you can run following commands and check
how much time it take in real. On rk3188 it take about ~45 seconds.

    cpufreq-set -f 1.6GHZ
    date; sleep 60; date

In order to use the patch you need to declare two timers in the dts
file. The first timer will be initialized as clockevent provider
and the second one as clocksource. The clockevent must be from
alive subsystem as it used as backup for the local timers at sleep
time.

The patch does not break compatibility with older device tree files.
The older device tree files contain only one timer. The timer
will be initialized as clockevent, as expected.

rk3288 (and probably anything newer) is irrelevant to this patch,
as it has the arch timer interface. This patch may be useful
for Cortex-A9/A5 based parts.

Signed-off-by: Alexander Kochetkov <al.kochet@gmail.com>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
2017-04-07 16:23:05 +02:00
..
acpi_pm.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
arc_timer.c clocksource: Add missing line break to error messages 2017-04-07 16:23:04 +02:00
arm_arch_timer.c clocksource: Add missing line break to error messages 2017-04-07 16:23:04 +02:00
arm_global_timer.c Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-12-25 14:30:04 -08:00
armv7m_systick.c clocksource/drivers/armv7m_systick: Add the COMPILE_TEST option 2016-06-28 10:22:05 +02:00
asm9260_timer.c clocksource: Add missing line break to error messages 2017-04-07 16:23:04 +02:00
bcm2835_timer.c clocksource: Add missing line break to error messages 2017-04-07 16:23:04 +02:00
bcm_kona_timer.c clocksource: Add missing line break to error messages 2017-04-07 16:23:04 +02:00
cadence_ttc_timer.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
clkevt-probe.c clockevents: Add a clkevt-of mechanism like clksrc-of 2017-02-07 20:58:30 +01:00
clksrc_st_lpc.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
clksrc-dbx500-prcmu.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
clksrc-probe.c clocksource: Add missing line break to error messages 2017-04-07 16:23:04 +02:00
clps711x-timer.c ARM: SoC driver updates for v4.8 2016-08-01 18:36:01 -04:00
cs5535-clockevt.c clockevents/drivers/cs5535: Migrate to new 'set-state' interface 2015-08-06 12:16:42 +02:00
dummy_timer.c cpu/hotplug: Cleanup state names 2016-12-25 10:47:44 +01:00
dw_apb_timer_of.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
dw_apb_timer.c clocksource: Add missing line break to error messages 2017-04-07 16:23:04 +02:00
em_sti.c clocksource: em_sti: Compute rate before registration 2017-03-23 12:14:03 -07:00
exynos_mct.c clocksource/exynos_mct: Clear interrupt when cpu is shut down 2017-01-17 10:08:38 +01:00
fsl_ftm_timer.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
h8300_timer8.c clocksource: h8300_timer8: Don't reset rate in ->set_state_oneshot() 2017-03-23 12:14:04 -07:00
h8300_timer16.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
h8300_tpu.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
i8253.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
jcore-pit.c Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-12-25 14:30:04 -08:00
Kconfig clocksource/drivers/rockchip_timer: Implement clocksource timer 2017-04-07 16:23:05 +02:00
Makefile clocksource/drivers/ostm: Add renesas-ostm timer driver 2017-02-07 20:58:30 +01:00
meson6_timer.c clocksource: Add missing line break to error messages 2017-04-07 16:23:04 +02:00
metag_generic.c Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-12-25 14:30:04 -08:00
mips-gic-timer.c clocksource: Add missing line break to error messages 2017-04-07 16:23:04 +02:00
mmio.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
moxart_timer.c clocksource/drivers/moxart: Plug memory and mapping leaks 2016-12-19 11:19:57 +01:00
mps2-timer.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
mtk_timer.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
mxs_timer.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
nomadik-mtu.c clocksource: Add missing line break to error messages 2017-04-07 16:23:04 +02:00
numachip.c x86/numachip: Fix timer build conflict 2015-09-23 05:39:20 +02:00
pxa_timer.c clocksource: Add missing line break to error messages 2017-04-07 16:23:04 +02:00
qcom-timer.c Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-12-25 14:30:04 -08:00
renesas-ostm.c clocksource/drivers/ostm: Add renesas-ostm timer driver 2017-02-07 20:58:30 +01:00
rockchip_timer.c clocksource/drivers/rockchip_timer: Implement clocksource timer 2017-04-07 16:23:05 +02:00
samsung_pwm_timer.c clocksource: Add missing line break to error messages 2017-04-07 16:23:04 +02:00
scx200_hrt.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
sh_cmt.c clocksource: sh_cmt: Compute rate before registration again 2017-03-23 12:14:00 -07:00
sh_mtu2.c clocksource/drivers/sh_mtu2: Fix multiple shutdown call issue 2015-10-28 15:22:56 +01:00
sh_tmu.c clocksource: sh_tmu: Compute rate before registration again 2017-03-23 12:14:01 -07:00
sun4i_timer.c clocksource: Add missing line break to error messages 2017-04-07 16:23:04 +02:00
tango_xtal.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
tcb_clksrc.c Revert "clocksource/drivers/tcb_clksrc: Use 32 bit tcb as sched_clock" 2017-03-11 22:03:34 +01:00
tegra20_timer.c clocksource: Add missing line break to error messages 2017-04-07 16:23:04 +02:00
time-armada-370-xp.c clocksource: Add missing line break to error messages 2017-04-07 16:23:04 +02:00
time-efm32.c clocksource: Add missing line break to error messages 2017-04-07 16:23:04 +02:00
time-lpc32xx.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
time-orion.c clocksource: Add missing line break to error messages 2017-04-07 16:23:04 +02:00
time-pistachio.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
timer-atlas7.c Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-12-25 14:30:04 -08:00
timer-atmel-pit.c clocksource: Add missing line break to error messages 2017-04-07 16:23:04 +02:00
timer-atmel-st.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
timer-digicolor.c clocksource: Add missing line break to error messages 2017-04-07 16:23:04 +02:00
timer-gemini.c clocksource/drivers/gemini: Add driver for the Cortina Gemini 2017-02-07 20:58:30 +01:00
timer-imx-gpt.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
timer-integrator-ap.c clocksource: Add missing line break to error messages 2017-04-07 16:23:04 +02:00
timer-keystone.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
timer-nps.c clocksource: Add missing line break to error messages 2017-04-07 16:23:04 +02:00
timer-oxnas-rps.c clocksource/drivers/oxnas: Add OX820 compatible 2016-09-12 07:28:46 +02:00
timer-prima2.c clocksource: Add missing line break to error messages 2017-04-07 16:23:04 +02:00
timer-sp804.c clocksource: Add missing line break to error messages 2017-04-07 16:23:04 +02:00
timer-sp.h ARM: 8366/1: move Dual-Timer SP804 driver to drivers/clocksource 2015-06-02 09:58:18 +01:00
timer-stm32.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
timer-sun5i.c clocksource: Add missing line break to error messages 2017-04-07 16:23:04 +02:00
timer-ti-32k.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
timer-u300.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
versatile.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
vf_pit_timer.c clocksource: Add missing line break to error messages 2017-04-07 16:23:04 +02:00
vt8500_timer.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
zevio-timer.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00