timer: Add generic driver for RISC-V privileged architecture defined timer
authorBin Meng <bmeng.cn@gmail.com>
Wed, 12 Dec 2018 14:12:27 +0000 (06:12 -0800)
committerAndes <uboot@andestech.com>
Tue, 18 Dec 2018 01:56:26 +0000 (09:56 +0800)
commit60262cd041529cabd5fbabb6f2077495fa922fca
tree85e5cbb9425db511409952a9cf556febcc3e14cb
parent833508c05c1309624cd397dbea2714b723d58c35
timer: Add generic driver for RISC-V privileged architecture defined timer

RISC-V privileged architecture v1.10 defines a real-time counter,
exposed as a memory-mapped machine-mode register - mtime. mtime must
run at constant frequency, and the platform must provide a mechanism
for determining the timebase of mtime. The mtime register has a
64-bit precision on all RV32, RV64, and RV128 systems.

Different platform may have different implementation of the mtime
block hence an API riscv_get_time() is required by this driver for
platform codes to hide such implementation details. For example,
on some platforms mtime is provided by the CLINT module, while on
some other platforms a simple 'rdtime' can be used to get the timer
counter.

With this timer driver the U-Boot timer functionalities like delay
works correctly now.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Lukas Auer <lukas.auer@aisec.fraunhofer.de>
Reviewed-by: Anup Patel <anup@brainfault.org>
drivers/timer/Kconfig
drivers/timer/Makefile
drivers/timer/riscv_timer.c [new file with mode: 0644]