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

Commit d99c3871 authored by Kevin Hilman's avatar Kevin Hilman
Browse files

davinci: timers: don't enable timer until clocksource is initialized



On da830, when the same timer is used for clocksource and clockevent,
the timer can be started before the clockevent is
registered/initialzed.  This creates a window where a timer
interrupt might fire before the clockevent handler has been
setup and causes a crash.

This patch moves the actual enable/start of the timer after
the clockevent has ben registered.

Signed-off-by: default avatarKevin Hilman <khilman@deeprootsystems.com>
parent 2eaa9cfd
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -253,8 +253,6 @@ static void __init timer_init(void)
			irq = USING_COMPARE(t) ? dtip[i].cmp_irq : irq;
			setup_irq(irq, &t->irqaction);
		}

		timer32_config(&timers[i]);
	}
}

@@ -331,6 +329,7 @@ static void __init davinci_timer_init(void)
	unsigned int clocksource_id;
	static char err[] __initdata = KERN_ERR
		"%s: can't register clocksource!\n";
	int i;

	clockevent_id = soc_info->timer_info->clockevent_id;
	clocksource_id = soc_info->timer_info->clocksource_id;
@@ -389,6 +388,9 @@ static void __init davinci_timer_init(void)

	clockevent_davinci.cpumask = cpumask_of(0);
	clockevents_register_device(&clockevent_davinci);

	for (i=0; i< ARRAY_SIZE(timers); i++)
		timer32_config(&timers[i]);
}

struct sys_timer davinci_timer = {