Committer: Michael Beasley <mike@snafu.setup>
[mikesnafu-overlay.git] / arch / sh / kernel / timers / timer.c
blob4e7e747d1b696c59a16016cb42aedbe516ae734b
1 /*
2 * arch/sh/kernel/timers/timer.c - Common timer code
4 * Copyright (C) 2005 Paul Mundt
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10 #include <linux/kernel.h>
11 #include <linux/init.h>
12 #include <linux/timer.h>
13 #include <linux/string.h>
14 #include <asm/timer.h>
16 static struct sys_timer *sys_timers[] = {
17 #ifdef CONFIG_SH_TMU
18 &tmu_timer,
19 #endif
20 #ifdef CONFIG_SH_MTU2
21 &mtu2_timer,
22 #endif
23 #ifdef CONFIG_SH_CMT
24 &cmt_timer,
25 #endif
26 NULL,
29 static char timer_override[10];
30 static int __init timer_setup(char *str)
32 if (str)
33 strlcpy(timer_override, str, sizeof(timer_override));
34 return 1;
36 __setup("timer=", timer_setup);
38 struct sys_timer *get_sys_timer(void)
40 int i;
42 for (i = 0; i < ARRAY_SIZE(sys_timers); i++) {
43 struct sys_timer *t = sys_timers[i];
45 if (unlikely(!t))
46 break;
47 if (unlikely(timer_override[0]))
48 if ((strcmp(timer_override, t->name) != 0))
49 continue;
50 if (likely(t->ops->init() == 0))
51 return t;
54 return NULL;