diff options
Diffstat (limited to 'drivers/clocksource/arc_timer.c')
| -rw-r--r-- | drivers/clocksource/arc_timer.c | 22 | 
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/clocksource/arc_timer.c b/drivers/clocksource/arc_timer.c index 20da9b1d7f7d..b28970ca4a7a 100644 --- a/drivers/clocksource/arc_timer.c +++ b/drivers/clocksource/arc_timer.c @@ -23,6 +23,7 @@  #include <linux/cpu.h>  #include <linux/of.h>  #include <linux/of_irq.h> +#include <linux/sched_clock.h>  #include <soc/arc/timers.h>  #include <soc/arc/mcip.h> @@ -88,6 +89,11 @@ static u64 arc_read_gfrc(struct clocksource *cs)  	return (((u64)h) << 32) | l;  } +static notrace u64 arc_gfrc_clock_read(void) +{ +	return arc_read_gfrc(NULL); +} +  static struct clocksource arc_counter_gfrc = {  	.name   = "ARConnect GFRC",  	.rating = 400, @@ -111,6 +117,8 @@ static int __init arc_cs_setup_gfrc(struct device_node *node)  	if (ret)  		return ret; +	sched_clock_register(arc_gfrc_clock_read, 64, arc_timer_freq); +  	return clocksource_register_hz(&arc_counter_gfrc, arc_timer_freq);  }  TIMER_OF_DECLARE(arc_gfrc, "snps,archs-timer-gfrc", arc_cs_setup_gfrc); @@ -139,6 +147,11 @@ static u64 arc_read_rtc(struct clocksource *cs)  	return (((u64)h) << 32) | l;  } +static notrace u64 arc_rtc_clock_read(void) +{ +	return arc_read_rtc(NULL); +} +  static struct clocksource arc_counter_rtc = {  	.name   = "ARCv2 RTC",  	.rating = 350, @@ -170,6 +183,8 @@ static int __init arc_cs_setup_rtc(struct device_node *node)  	write_aux_reg(AUX_RTC_CTRL, 1); +	sched_clock_register(arc_rtc_clock_read, 64, arc_timer_freq); +  	return clocksource_register_hz(&arc_counter_rtc, arc_timer_freq);  }  TIMER_OF_DECLARE(arc_rtc, "snps,archs-timer-rtc", arc_cs_setup_rtc); @@ -185,6 +200,11 @@ static u64 arc_read_timer1(struct clocksource *cs)  	return (u64) read_aux_reg(ARC_REG_TIMER1_CNT);  } +static notrace u64 arc_timer1_clock_read(void) +{ +	return arc_read_timer1(NULL); +} +  static struct clocksource arc_counter_timer1 = {  	.name   = "ARC Timer1",  	.rating = 300, @@ -209,6 +229,8 @@ static int __init arc_cs_setup_timer1(struct device_node *node)  	write_aux_reg(ARC_REG_TIMER1_CNT, 0);  	write_aux_reg(ARC_REG_TIMER1_CTRL, TIMER_CTRL_NH); +	sched_clock_register(arc_timer1_clock_read, 32, arc_timer_freq); +  	return clocksource_register_hz(&arc_counter_timer1, arc_timer_freq);  }  | 
