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>
This commit is contained in:
Родитель
0b76c54121
Коммит
eeca6e6040
|
@ -389,8 +389,9 @@
|
|||
};
|
||||
|
||||
timrot@80068000 {
|
||||
compatible = "fsl,imx23-timrot", "fsl,timrot";
|
||||
reg = <0x80068000 0x2000>;
|
||||
status = "disabled";
|
||||
interrupts = <28 29 30 31>;
|
||||
};
|
||||
|
||||
auart0: serial@8006c000 {
|
||||
|
|
|
@ -683,8 +683,9 @@
|
|||
};
|
||||
|
||||
timrot@80068000 {
|
||||
compatible = "fsl,imx28-timrot", "fsl,timrot";
|
||||
reg = <0x80068000 0x2000>;
|
||||
status = "disabled";
|
||||
interrupts = <48 49 50 51>;
|
||||
};
|
||||
|
||||
auart0: serial@8006a000 {
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
extern const u32 *mxs_get_ocotp(void);
|
||||
extern int mxs_reset_block(void __iomem *);
|
||||
extern void mxs_timer_init(int);
|
||||
extern void mxs_timer_init(void);
|
||||
extern void mxs_restart(char, const char *);
|
||||
extern int mxs_saif_clkmux_select(unsigned int clkmux);
|
||||
|
||||
|
|
|
@ -25,6 +25,8 @@
|
|||
#include <linux/irq.h>
|
||||
#include <linux/clockchips.h>
|
||||
#include <linux/clk.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_irq.h>
|
||||
|
||||
#include <asm/mach/time.h>
|
||||
#include <mach/mxs.h>
|
||||
|
@ -244,9 +246,17 @@ static int __init mxs_clocksource_init(struct clk *timer_clk)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void __init mxs_timer_init(int irq)
|
||||
void __init mxs_timer_init(void)
|
||||
{
|
||||
struct device_node *np;
|
||||
struct clk *timer_clk;
|
||||
int irq;
|
||||
|
||||
np = of_find_compatible_node(NULL, NULL, "fsl,timrot");
|
||||
if (!np) {
|
||||
pr_err("%s: failed find timrot node\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
timer_clk = clk_get_sys("timrot", NULL);
|
||||
if (IS_ERR(timer_clk)) {
|
||||
|
@ -295,5 +305,6 @@ void __init mxs_timer_init(int irq)
|
|||
mxs_clockevent_init(timer_clk);
|
||||
|
||||
/* Make irqs happen */
|
||||
irq = irq_of_parse_and_map(np, 0);
|
||||
setup_irq(irq, &mxs_timer_irq);
|
||||
}
|
||||
|
|
|
@ -200,7 +200,7 @@ int __init mx23_clocks_init(void)
|
|||
for (i = 0; i < ARRAY_SIZE(clks_init_on); i++)
|
||||
clk_prepare_enable(clks[clks_init_on[i]]);
|
||||
|
||||
mxs_timer_init(MX23_INT_TIMER0);
|
||||
mxs_timer_init();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -337,7 +337,7 @@ int __init mx28_clocks_init(void)
|
|||
for (i = 0; i < ARRAY_SIZE(clks_init_on); i++)
|
||||
clk_prepare_enable(clks[clks_init_on[i]]);
|
||||
|
||||
mxs_timer_init(MX28_INT_TIMER0);
|
||||
mxs_timer_init();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче