|
@@ -19,6 +19,7 @@
|
|
#include <linux/of_address.h>
|
|
#include <linux/of_address.h>
|
|
#include <linux/io.h>
|
|
#include <linux/io.h>
|
|
#include <linux/slab.h>
|
|
#include <linux/slab.h>
|
|
|
|
+#include <linux/sched_clock.h>
|
|
|
|
|
|
#include <asm/arch_timer.h>
|
|
#include <asm/arch_timer.h>
|
|
#include <asm/virt.h>
|
|
#include <asm/virt.h>
|
|
@@ -471,6 +472,15 @@ static int __init arch_timer_register(void)
|
|
goto out;
|
|
goto out;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ clocksource_register_hz(&clocksource_counter, arch_timer_rate);
|
|
|
|
+ cyclecounter.mult = clocksource_counter.mult;
|
|
|
|
+ cyclecounter.shift = clocksource_counter.shift;
|
|
|
|
+ timecounter_init(&timecounter, &cyclecounter,
|
|
|
|
+ arch_counter_get_cntvct());
|
|
|
|
+
|
|
|
|
+ /* 56 bits minimum, so we assume worst case rollover */
|
|
|
|
+ sched_clock_register(arch_timer_read_counter, 56, arch_timer_rate);
|
|
|
|
+
|
|
if (arch_timer_use_virtual) {
|
|
if (arch_timer_use_virtual) {
|
|
ppi = arch_timer_ppi[VIRT_PPI];
|
|
ppi = arch_timer_ppi[VIRT_PPI];
|
|
err = request_percpu_irq(ppi, arch_timer_handler_virt,
|
|
err = request_percpu_irq(ppi, arch_timer_handler_virt,
|