summaryrefslogtreecommitdiffstats
path: root/drivers/clocksource
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/clocksource')
-rw-r--r--drivers/clocksource/timer-riscv.c17
1 files changed, 4 insertions, 13 deletions
diff --git a/drivers/clocksource/timer-riscv.c b/drivers/clocksource/timer-riscv.c
index 09e031176bc6..470c7ef02ea4 100644
--- a/drivers/clocksource/timer-riscv.c
+++ b/drivers/clocksource/timer-riscv.c
@@ -2,6 +2,10 @@
2/* 2/*
3 * Copyright (C) 2012 Regents of the University of California 3 * Copyright (C) 2012 Regents of the University of California
4 * Copyright (C) 2017 SiFive 4 * Copyright (C) 2017 SiFive
5 *
6 * All RISC-V systems have a timer attached to every hart. These timers can be
7 * read from the "time" and "timeh" CSRs, and can use the SBI to setup
8 * events.
5 */ 9 */
6#include <linux/clocksource.h> 10#include <linux/clocksource.h>
7#include <linux/clockchips.h> 11#include <linux/clockchips.h>
@@ -12,19 +16,6 @@
12#include <asm/smp.h> 16#include <asm/smp.h>
13#include <asm/sbi.h> 17#include <asm/sbi.h>
14 18
15/*
16 * All RISC-V systems have a timer attached to every hart. These timers can be
17 * read by the 'rdcycle' pseudo instruction, and can use the SBI to setup
18 * events. In order to abstract the architecture-specific timer reading and
19 * setting functions away from the clock event insertion code, we provide
20 * function pointers to the clockevent subsystem that perform two basic
21 * operations: rdtime() reads the timer on the current CPU, and
22 * next_event(delta) sets the next timer event to 'delta' cycles in the future.
23 * As the timers are inherently a per-cpu resource, these callbacks perform
24 * operations on the current hart. There is guaranteed to be exactly one timer
25 * per hart on all RISC-V systems.
26 */
27
28static int riscv_clock_next_event(unsigned long delta, 19static int riscv_clock_next_event(unsigned long delta,
29 struct clock_event_device *ce) 20 struct clock_event_device *ce)
30{ 21{