[PATCH v2 1/7] riscv: Rework riscv timer driver to only support S-mode

Bin Meng bmeng.cn at gmail.com
Thu Aug 20 09:36:55 CEST 2020

On Wed, Jul 29, 2020 at 5:56 PM Sean Anderson <seanga2 at gmail.com> wrote:
> The riscv-timer driver currently serves as a shim for several riscv timer
> drivers. This is not too desirable because it bypasses the usual timer
> selection via the driver model. There is no easy way to specify an
> alternate timing driver, or have the tick rate depend on the cpu's
> configured frequency. The timer drivers also do not have device structs,
> and so have to rely on storing parameters in gd_t. Lastly, there is no
> initialization call, so driver init is done in the same function which
> reads the time. This can result in confusing error messages. To a user, it
> looks like the driver failed when trying to read the time, whereas it may
> have failed while initializing.
> This patch removes the shim functionality from the riscv-timer driver, and
> has it instead implement the former rdtime.c timer driver. This is because
> existing u-boot users who pass in a device tree (e.g. qemu) do not create a
> timer device for S-mode u-boot. The existing behavior of creating the
> riscv-timer device in the riscv cpu driver must be kept. The actual reading
> of the CSRs has been redone in the style of Linux's get_cycles64.
> Signed-off-by: Sean Anderson <seanga2 at gmail.com>
> ---
> Changes in v2:
> - Remove RISCV_RDTIME KConfig option
>  arch/riscv/Kconfig          |  8 --------
>  arch/riscv/lib/Makefile     |  1 -
>  arch/riscv/lib/rdtime.c     | 38 ------------------------------------
>  drivers/timer/Kconfig       |  6 +++---
>  drivers/timer/riscv_timer.c | 39 +++++++++++++++++++------------------
>  5 files changed, 23 insertions(+), 69 deletions(-)
>  delete mode 100644 arch/riscv/lib/rdtime.c

Reviewed-by: Bin Meng <bin.meng at windriver.com>

More information about the U-Boot mailing list