diff options
Diffstat (limited to 'drivers/clocksource/sun4i_timer.c')
-rw-r--r-- | drivers/clocksource/sun4i_timer.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/clocksource/sun4i_timer.c b/drivers/clocksource/sun4i_timer.c index a4f6119aafd8..bf497afba9ad 100644 --- a/drivers/clocksource/sun4i_timer.c +++ b/drivers/clocksource/sun4i_timer.c | |||
@@ -114,7 +114,7 @@ static int sun4i_clkevt_next_event(unsigned long evt, | |||
114 | 114 | ||
115 | static struct clock_event_device sun4i_clockevent = { | 115 | static struct clock_event_device sun4i_clockevent = { |
116 | .name = "sun4i_tick", | 116 | .name = "sun4i_tick", |
117 | .rating = 300, | 117 | .rating = 350, |
118 | .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, | 118 | .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, |
119 | .set_mode = sun4i_clkevt_mode, | 119 | .set_mode = sun4i_clkevt_mode, |
120 | .set_next_event = sun4i_clkevt_next_event, | 120 | .set_next_event = sun4i_clkevt_next_event, |
@@ -138,7 +138,7 @@ static struct irqaction sun4i_timer_irq = { | |||
138 | .dev_id = &sun4i_clockevent, | 138 | .dev_id = &sun4i_clockevent, |
139 | }; | 139 | }; |
140 | 140 | ||
141 | static u32 sun4i_timer_sched_read(void) | 141 | static u64 notrace sun4i_timer_sched_read(void) |
142 | { | 142 | { |
143 | return ~readl(timer_base + TIMER_CNTVAL_REG(1)); | 143 | return ~readl(timer_base + TIMER_CNTVAL_REG(1)); |
144 | } | 144 | } |
@@ -170,9 +170,9 @@ static void __init sun4i_timer_init(struct device_node *node) | |||
170 | TIMER_CTL_CLK_SRC(TIMER_CTL_CLK_SRC_OSC24M), | 170 | TIMER_CTL_CLK_SRC(TIMER_CTL_CLK_SRC_OSC24M), |
171 | timer_base + TIMER_CTL_REG(1)); | 171 | timer_base + TIMER_CTL_REG(1)); |
172 | 172 | ||
173 | setup_sched_clock(sun4i_timer_sched_read, 32, rate); | 173 | sched_clock_register(sun4i_timer_sched_read, 32, rate); |
174 | clocksource_mmio_init(timer_base + TIMER_CNTVAL_REG(1), node->name, | 174 | clocksource_mmio_init(timer_base + TIMER_CNTVAL_REG(1), node->name, |
175 | rate, 300, 32, clocksource_mmio_readl_down); | 175 | rate, 350, 32, clocksource_mmio_readl_down); |
176 | 176 | ||
177 | ticks_per_jiffy = DIV_ROUND_UP(rate, HZ); | 177 | ticks_per_jiffy = DIV_ROUND_UP(rate, HZ); |
178 | 178 | ||
@@ -190,7 +190,8 @@ static void __init sun4i_timer_init(struct device_node *node) | |||
190 | val = readl(timer_base + TIMER_IRQ_EN_REG); | 190 | val = readl(timer_base + TIMER_IRQ_EN_REG); |
191 | writel(val | TIMER_IRQ_EN(0), timer_base + TIMER_IRQ_EN_REG); | 191 | writel(val | TIMER_IRQ_EN(0), timer_base + TIMER_IRQ_EN_REG); |
192 | 192 | ||
193 | sun4i_clockevent.cpumask = cpumask_of(0); | 193 | sun4i_clockevent.cpumask = cpu_possible_mask; |
194 | sun4i_clockevent.irq = irq; | ||
194 | 195 | ||
195 | clockevents_config_and_register(&sun4i_clockevent, rate, | 196 | clockevents_config_and_register(&sun4i_clockevent, rate, |
196 | TIMER_SYNC_TICKS, 0xffffffff); | 197 | TIMER_SYNC_TICKS, 0xffffffff); |