Commit | Line | Data |
---|---|---|
940f6b48 RB |
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 | */ | |
e6a1bb72 RB |
8 | #include <linux/clocksource.h> |
9 | #include <linux/init.h> | |
10 | ||
11 | #include <asm/time.h> | |
940f6b48 | 12 | |
8e19608e | 13 | static cycle_t c0_hpt_read(struct clocksource *cs) |
940f6b48 RB |
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 | ||
779e7d41 | 25 | int __init init_r4k_clocksource(void) |
940f6b48 | 26 | { |
69e634f1 RB |
27 | if (!cpu_has_counter || !mips_hpt_frequency) |
28 | return -ENXIO; | |
29 | ||
664c4bbb | 30 | /* Calculate a somewhat reasonable rating value */ |
940f6b48 RB |
31 | clocksource_mips.rating = 200 + mips_hpt_frequency / 10000000; |
32 | ||
75c4fd8c | 33 | clocksource_register_hz(&clocksource_mips, mips_hpt_frequency); |
69e634f1 RB |
34 | |
35 | return 0; | |
940f6b48 | 36 | } |