Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit eeca6e60 authored by Shawn Guo's avatar Shawn Guo
Browse files

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: default avatarShawn Guo <shawn.guo@linaro.org>
parent 0b76c541
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -389,8 +389,9 @@
			};
			};


			timrot@80068000 {
			timrot@80068000 {
				compatible = "fsl,imx23-timrot", "fsl,timrot";
				reg = <0x80068000 0x2000>;
				reg = <0x80068000 0x2000>;
				status = "disabled";
				interrupts = <28 29 30 31>;
			};
			};


			auart0: serial@8006c000 {
			auart0: serial@8006c000 {
+2 −1
Original line number Original line Diff line number Diff line
@@ -683,8 +683,9 @@
			};
			};


			timrot@80068000 {
			timrot@80068000 {
				compatible = "fsl,imx28-timrot", "fsl,timrot";
				reg = <0x80068000 0x2000>;
				reg = <0x80068000 0x2000>;
				status = "disabled";
				interrupts = <48 49 50 51>;
			};
			};


			auart0: serial@8006a000 {
			auart0: serial@8006a000 {
+1 −1
Original line number Original line Diff line number Diff line
@@ -13,7 +13,7 @@


extern const u32 *mxs_get_ocotp(void);
extern const u32 *mxs_get_ocotp(void);
extern int mxs_reset_block(void __iomem *);
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 void mxs_restart(char, const char *);
extern int mxs_saif_clkmux_select(unsigned int clkmux);
extern int mxs_saif_clkmux_select(unsigned int clkmux);


+12 −1
Original line number Original line Diff line number Diff line
@@ -25,6 +25,8 @@
#include <linux/irq.h>
#include <linux/irq.h>
#include <linux/clockchips.h>
#include <linux/clockchips.h>
#include <linux/clk.h>
#include <linux/clk.h>
#include <linux/of.h>
#include <linux/of_irq.h>


#include <asm/mach/time.h>
#include <asm/mach/time.h>
#include <mach/mxs.h>
#include <mach/mxs.h>
@@ -244,9 +246,17 @@ static int __init mxs_clocksource_init(struct clk *timer_clk)
	return 0;
	return 0;
}
}


void __init mxs_timer_init(int irq)
void __init mxs_timer_init(void)
{
{
	struct device_node *np;
	struct clk *timer_clk;
	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);
	timer_clk = clk_get_sys("timrot", NULL);
	if (IS_ERR(timer_clk)) {
	if (IS_ERR(timer_clk)) {
@@ -295,5 +305,6 @@ void __init mxs_timer_init(int irq)
	mxs_clockevent_init(timer_clk);
	mxs_clockevent_init(timer_clk);


	/* Make irqs happen */
	/* Make irqs happen */
	irq = irq_of_parse_and_map(np, 0);
	setup_irq(irq, &mxs_timer_irq);
	setup_irq(irq, &mxs_timer_irq);
}
}
+1 −1
Original line number Original line Diff line number Diff line
@@ -200,7 +200,7 @@ int __init mx23_clocks_init(void)
	for (i = 0; i < ARRAY_SIZE(clks_init_on); i++)
	for (i = 0; i < ARRAY_SIZE(clks_init_on); i++)
		clk_prepare_enable(clks[clks_init_on[i]]);
		clk_prepare_enable(clks[clks_init_on[i]]);


	mxs_timer_init(MX23_INT_TIMER0);
	mxs_timer_init();


	return 0;
	return 0;
}
}
Loading