diff options
author | Shawn Guo <shawn.guo@linaro.org> | 2012-08-19 20:51:45 -0400 |
---|---|---|
committer | Shawn Guo <shawn.guo@linaro.org> | 2012-09-02 21:31:50 -0400 |
commit | eeca6e604032af8336baafef84144dd47f5a0f99 (patch) | |
tree | cff564b1bf3de3ead8186fac9dec332a0cf3a170 /arch/arm/mach-mxs/timer.c | |
parent | 0b76c5412146c1c9e8aef495d2926f31351bc3c0 (diff) |
ARM: mxs: retrieve timer irq from device tree
Rather than using the static timer irq definition, we should retrieve
timer irq from device tree for better.
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Diffstat (limited to 'arch/arm/mach-mxs/timer.c')
-rw-r--r-- | arch/arm/mach-mxs/timer.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/arch/arm/mach-mxs/timer.c b/arch/arm/mach-mxs/timer.c index 02d36de9c4e8..7c3792613392 100644 --- a/arch/arm/mach-mxs/timer.c +++ b/arch/arm/mach-mxs/timer.c | |||
@@ -25,6 +25,8 @@ | |||
25 | #include <linux/irq.h> | 25 | #include <linux/irq.h> |
26 | #include <linux/clockchips.h> | 26 | #include <linux/clockchips.h> |
27 | #include <linux/clk.h> | 27 | #include <linux/clk.h> |
28 | #include <linux/of.h> | ||
29 | #include <linux/of_irq.h> | ||
28 | 30 | ||
29 | #include <asm/mach/time.h> | 31 | #include <asm/mach/time.h> |
30 | #include <mach/mxs.h> | 32 | #include <mach/mxs.h> |
@@ -244,9 +246,17 @@ static int __init mxs_clocksource_init(struct clk *timer_clk) | |||
244 | return 0; | 246 | return 0; |
245 | } | 247 | } |
246 | 248 | ||
247 | void __init mxs_timer_init(int irq) | 249 | void __init mxs_timer_init(void) |
248 | { | 250 | { |
251 | struct device_node *np; | ||
249 | struct clk *timer_clk; | 252 | struct clk *timer_clk; |
253 | int irq; | ||
254 | |||
255 | np = of_find_compatible_node(NULL, NULL, "fsl,timrot"); | ||
256 | if (!np) { | ||
257 | pr_err("%s: failed find timrot node\n", __func__); | ||
258 | return; | ||
259 | } | ||
250 | 260 | ||
251 | timer_clk = clk_get_sys("timrot", NULL); | 261 | timer_clk = clk_get_sys("timrot", NULL); |
252 | if (IS_ERR(timer_clk)) { | 262 | if (IS_ERR(timer_clk)) { |
@@ -295,5 +305,6 @@ void __init mxs_timer_init(int irq) | |||
295 | mxs_clockevent_init(timer_clk); | 305 | mxs_clockevent_init(timer_clk); |
296 | 306 | ||
297 | /* Make irqs happen */ | 307 | /* Make irqs happen */ |
308 | irq = irq_of_parse_and_map(np, 0); | ||
298 | setup_irq(irq, &mxs_timer_irq); | 309 | setup_irq(irq, &mxs_timer_irq); |
299 | } | 310 | } |