ARM: SP804: make Integrator/CP timer pick clock from DT
authorLinus Walleij <linus.walleij@linaro.org>
Fri, 10 Jan 2014 14:54:34 +0000 (15:54 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Thu, 13 Feb 2014 10:20:36 +0000 (11:20 +0100)
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>
arch/arm/common/timer-sp.c

index 53c6a26b633d678f6d63f530931157aaefc68f84..fd6bff0c5b967a7503c8912c8ef2a52101e4c7eb 100644 (file)
@@ -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);
@@ -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++;