3280c8865e
This patch removes the old MTU2 driver (CONFIG_SH_MTU2/timer-mtu2.c) As replacement, select the sh_cmt driver with CONFIG_SH_TIMER_MTU2 and configure timer channel using platform data. If multiple MTU channels are enabled using platform data, use the earlytimer parameter on the kernel command line to select channel. For instance, use "earlytimer=sh_mtu2.0" to select the first channel. To verify which timer is being used, look at printouts or the timer irq count in /proc/interrupts. Signed-off-by: Magnus Damm <damm@igel.co.jp> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
49 lines
1,011 B
C
49 lines
1,011 B
C
/*
|
|
* arch/sh/kernel/timers/timer.c - Common timer code
|
|
*
|
|
* Copyright (C) 2005 Paul Mundt
|
|
*
|
|
* This file is subject to the terms and conditions of the GNU General Public
|
|
* License. See the file "COPYING" in the main directory of this archive
|
|
* for more details.
|
|
*/
|
|
#include <linux/kernel.h>
|
|
#include <linux/init.h>
|
|
#include <linux/timer.h>
|
|
#include <linux/string.h>
|
|
#include <asm/timer.h>
|
|
|
|
static struct sys_timer *sys_timers[] = {
|
|
#ifdef CONFIG_SH_TMU
|
|
&tmu_timer,
|
|
#endif
|
|
NULL,
|
|
};
|
|
|
|
static char timer_override[10];
|
|
static int __init timer_setup(char *str)
|
|
{
|
|
if (str)
|
|
strlcpy(timer_override, str, sizeof(timer_override));
|
|
return 1;
|
|
}
|
|
__setup("timer=", timer_setup);
|
|
|
|
struct sys_timer *get_sys_timer(void)
|
|
{
|
|
int i;
|
|
|
|
for (i = 0; i < ARRAY_SIZE(sys_timers); i++) {
|
|
struct sys_timer *t = sys_timers[i];
|
|
|
|
if (unlikely(!t))
|
|
break;
|
|
if (unlikely(timer_override[0]))
|
|
if ((strcmp(timer_override, t->name) != 0))
|
|
continue;
|
|
if (likely(t->ops->init() == 0))
|
|
return t;
|
|
}
|
|
|
|
return NULL;
|
|
}
|