]> rtime.felk.cvut.cz Git - linux-imx.git/blobdiff - drivers/clocksource/sunxi_timer.c
clocksource: sunxi: make use of CLKSRC_OF
[linux-imx.git] / drivers / clocksource / sunxi_timer.c
index 7a3ea236be52804eff13dd3750f5f08ba589e82e..308bbe32831864714b60b1893ff91da0503eb64d 100644 (file)
@@ -22,8 +22,6 @@
 #include <linux/of.h>
 #include <linux/of_address.h>
 #include <linux/of_irq.h>
-#include <linux/sunxi_timer.h>
-#include <linux/clk/sunxi.h>
 
 #define TIMER_IRQ_EN_REG       0x00
 #define TIMER_IRQ_EN(val)              (1 << val)
@@ -98,23 +96,13 @@ static struct irqaction sunxi_timer_irq = {
        .dev_id = &sunxi_clockevent,
 };
 
-static struct of_device_id sunxi_timer_dt_ids[] = {
-       { .compatible = "allwinner,sunxi-timer" },
-       { }
-};
-
-void __init sunxi_timer_init(void)
+static void __init sunxi_timer_init(struct device_node *node)
 {
-       struct device_node *node;
        unsigned long rate = 0;
        struct clk *clk;
        int ret, irq;
        u32 val;
 
-       node = of_find_matching_node(NULL, sunxi_timer_dt_ids);
-       if (!node)
-               panic("No sunxi timer node");
-
        timer_base = of_iomap(node, 0);
        if (!timer_base)
                panic("Can't map registers");
@@ -123,8 +111,6 @@ void __init sunxi_timer_init(void)
        if (irq <= 0)
                panic("Can't parse IRQ");
 
-       sunxi_init_clocks();
-
        clk = of_clk_get(node, 0);
        if (IS_ERR(clk))
                panic("Can't get timer clock");
@@ -158,3 +144,5 @@ void __init sunxi_timer_init(void)
        clockevents_config_and_register(&sunxi_clockevent, rate / TIMER_SCAL,
                                        0x1, 0xff);
 }
+CLOCKSOURCE_OF_DECLARE(sunxi, "allwinner,sunxi-timer",
+                      sunxi_timer_init);