|
@@ -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);
|