Pull timer fix from Thomas Gleixner: "A single bugfix for an init order problem in the sun4i subarch clockevents code" * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: clockevent: sun4i: Fix race condition in the probe code
Unified · Split
| @@ -182,6 +182,12 @@ static void __init sun4i_timer_init(struct device_node *node) · 181 unmodified lines | ||
| 182 | 182 | /* Make sure timer is stopped before playing with interrupts */ |
| 183 | 183 | sun4i_clkevt_time_stop(0); |
| 184 | 184 | |
| 185 | + sun4i_clockevent.cpumask = cpu_possible_mask; | |
| 186 | + sun4i_clockevent.irq = irq; | |
| 187 | + | |
| 188 | + clockevents_config_and_register(&sun4i_clockevent, rate, | |
| 189 | + TIMER_SYNC_TICKS, 0xffffffff); | |
| 190 | + | |
| 185 | 191 | ret = setup_irq(irq, &sun4i_timer_irq); |
| 186 | 192 | if (ret) |
| 187 | 193 | pr_warn("failed to setup irq %d\n", irq); |
| @@ -189,12 +195,6 @@ static void __init sun4i_timer_init(struct device_node *node) · 1 unmodified line | ||
| 189 | 195 | /* Enable timer0 interrupt */ |
| 190 | 196 | val = readl(timer_base + TIMER_IRQ_EN_REG); |
| 191 | 197 | writel(val | TIMER_IRQ_EN(0), timer_base + TIMER_IRQ_EN_REG); |
| 192 | − | |
| 193 | − sun4i_clockevent.cpumask = cpu_possible_mask; | |
| 194 | − sun4i_clockevent.irq = irq; | |
| 195 | − | |
| 196 | − clockevents_config_and_register(&sun4i_clockevent, rate, | |
| 197 | − TIMER_SYNC_TICKS, 0xffffffff); | |
| 198 | 198 | } |
| 199 | 199 | CLOCKSOURCE_OF_DECLARE(sun4i, "allwinner,sun4i-a10-timer", |
| 200 | 200 | sun4i_timer_init); |