Skip to content

Commit

Permalink
ARM: SP804: make Integrator/CP timer pick clock from DT
Browse files Browse the repository at this point in the history
This modifies the SP804 driver so that the clock will be taken
from the device tree node for the timer.

Cc: Russell King <rmk+kernel@arm.linux.org.uk>
Cc: Rob Herring <rob.herring@linaro.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
  • Loading branch information
Linus Walleij committed Feb 13, 2014
1 parent b792985 commit 9cf3138
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions arch/arm/common/timer-sp.c
Original file line number Diff line number Diff line change
Expand Up @@ -271,10 +271,14 @@ static void __init integrator_cp_of_init(struct device_node *np)
void __iomem *base;
int irq;
const char *name = of_get_property(np, "compatible", NULL);
struct clk *clk;

base = of_iomap(np, 0);
if (WARN_ON(!base))
return;
clk = of_clk_get(np, 0);
if (WARN_ON(IS_ERR(clk)))
return;

/* Ensure timer is disabled */
writel(0, base + TIMER_CTRL);
Expand All @@ -283,13 +287,13 @@ static void __init integrator_cp_of_init(struct device_node *np)
goto err;

if (!init_count)
sp804_clocksource_init(base, name);
__sp804_clocksource_and_sched_clock_init(base, name, clk, 0);
else {
irq = irq_of_parse_and_map(np, 0);
if (irq <= 0)
goto err;

sp804_clockevents_init(base, irq, name);
__sp804_clockevents_init(base, irq, clk, name);
}

init_count++;
Expand Down

0 comments on commit 9cf3138

Please sign in to comment.