• Alexander Kochetkov's avatar
    clocksource/drivers/rockchip_timer: Implement clocksource timer · 5e0a39d0
    Alexander Kochetkov authored
    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: default avatarAlexander Kochetkov <al.kochet@gmail.com>
    Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
    5e0a39d0
rockchip_timer.c 6.94 KB