f1a2893931edc99327763fa3f711da0351336883
[linux-2.6.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
11 #include <asm/time.h>
12
13 static cycle_t c0_hpt_read(void)
14 {
15         return read_c0_count();
16 }
17
18 static struct clocksource clocksource_mips = {
19         .name           = "MIPS",
20         .read           = c0_hpt_read,
21         .mask           = CLOCKSOURCE_MASK(32),
22         .flags          = CLOCK_SOURCE_IS_CONTINUOUS,
23 };
24
25 int __init init_r4k_clocksource(void)
26 {
27         if (!cpu_has_counter || !mips_hpt_frequency)
28                 return -ENXIO;
29
30         /* Calculate a somewhat reasonable rating value */
31         clocksource_mips.rating = 200 + mips_hpt_frequency / 10000000;
32
33         clocksource_set_clock(&clocksource_mips, mips_hpt_frequency);
34
35         clocksource_register(&clocksource_mips);
36
37         return 0;
38 }