[ARM] MXC: rework timer/clock initialisation

- rename mxc_clocks_init to architecture specific versions. This
  allows us to have more than one architecture compiled in.
- call mxc_timer_init from clock initialisation instead from board
  code

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Sascha Hauer
2009-02-16 14:36:49 +01:00
parent a2865197a5
commit 30c730f8f9
13 changed files with 30 additions and 36 deletions

View File

@@ -34,9 +34,6 @@
static struct clock_event_device clockevent_mxc;
static enum clock_event_mode clockevent_mode = CLOCK_EVT_MODE_UNUSED;
/* clock source for the timer */
static struct clk *timer_clk;
/* clock source */
static cycle_t mxc_get_cycles(void)
@@ -53,7 +50,7 @@ static struct clocksource clocksource_mxc = {
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
};
static int __init mxc_clocksource_init(void)
static int __init mxc_clocksource_init(struct clk *timer_clk)
{
unsigned int clock;
@@ -177,7 +174,7 @@ static struct clock_event_device clockevent_mxc = {
.rating = 200,
};
static int __init mxc_clockevent_init(void)
static int __init mxc_clockevent_init(struct clk *timer_clk)
{
unsigned int clock;
@@ -197,14 +194,8 @@ static int __init mxc_clockevent_init(void)
return 0;
}
void __init mxc_timer_init(const char *clk_timer)
void __init mxc_timer_init(struct clk *timer_clk)
{
timer_clk = clk_get(NULL, clk_timer);
if (!timer_clk) {
printk(KERN_ERR"Cannot determine timer clock. Giving up.\n");
return;
}
clk_enable(timer_clk);
/*
@@ -219,10 +210,9 @@ void __init mxc_timer_init(const char *clk_timer)
TIMER_BASE + MXC_TCTL);
/* init and register the timer to the framework */
mxc_clocksource_init();
mxc_clockevent_init();
mxc_clocksource_init(timer_clk);
mxc_clockevent_init(timer_clk);
/* Make irqs happen */
setup_irq(TIMER_INTERRUPT, &mxc_timer_irq);
}