]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - arch/mips/kernel/csrc-r4k.c
Merge remote-tracking branch 'metag/for-next'
[karo-tx-linux.git] / arch / mips / kernel / csrc-r4k.c
1 /*
2  * This file is subject to the terms and conditions of the GNU General Public
3  * License.  See the file "COPYING" in the main directory of this archive
4  * for more details.
5  *
6  * Copyright (C) 2007 by Ralf Baechle
7  */
8 #include <linux/clocksource.h>
9 #include <linux/init.h>
10 #include <linux/sched_clock.h>
11
12 #include <asm/time.h>
13
14 static cycle_t c0_hpt_read(struct clocksource *cs)
15 {
16         return read_c0_count();
17 }
18
19 static struct clocksource clocksource_mips = {
20         .name           = "MIPS",
21         .read           = c0_hpt_read,
22         .mask           = CLOCKSOURCE_MASK(32),
23         .flags          = CLOCK_SOURCE_IS_CONTINUOUS,
24 };
25
26 static u64 notrace r4k_read_sched_clock(void)
27 {
28         return read_c0_count();
29 }
30
31 int __init init_r4k_clocksource(void)
32 {
33         if (!cpu_has_counter || !mips_hpt_frequency)
34                 return -ENXIO;
35
36         /* Calculate a somewhat reasonable rating value */
37         clocksource_mips.rating = 200 + mips_hpt_frequency / 10000000;
38
39         clocksource_register_hz(&clocksource_mips, mips_hpt_frequency);
40
41         sched_clock_register(r4k_read_sched_clock, 32, mips_hpt_frequency);
42
43         return 0;
44 }