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 c0_hpt_read(struct clocksource * cs)13static cycle_t c0_hpt_read(struct clocksource *cs) 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 init_r4k_clocksource(void)25int __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 } 39