diff options
| -rw-r--r-- | drivers/clocksource/vt8500_timer.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/clocksource/vt8500_timer.c b/drivers/clocksource/vt8500_timer.c index a92e94b40b5b..dfc3bb410b00 100644 --- a/drivers/clocksource/vt8500_timer.c +++ b/drivers/clocksource/vt8500_timer.c | |||
| @@ -50,6 +50,8 @@ | |||
| 50 | 50 | ||
| 51 | #define msecs_to_loops(t) (loops_per_jiffy / 1000 * HZ * t) | 51 | #define msecs_to_loops(t) (loops_per_jiffy / 1000 * HZ * t) |
| 52 | 52 | ||
| 53 | #define MIN_OSCR_DELTA 16 | ||
| 54 | |||
| 53 | static void __iomem *regbase; | 55 | static void __iomem *regbase; |
| 54 | 56 | ||
| 55 | static cycle_t vt8500_timer_read(struct clocksource *cs) | 57 | static cycle_t vt8500_timer_read(struct clocksource *cs) |
| @@ -80,7 +82,7 @@ static int vt8500_timer_set_next_event(unsigned long cycles, | |||
| 80 | cpu_relax(); | 82 | cpu_relax(); |
| 81 | writel((unsigned long)alarm, regbase + TIMER_MATCH_VAL); | 83 | writel((unsigned long)alarm, regbase + TIMER_MATCH_VAL); |
| 82 | 84 | ||
| 83 | if ((signed)(alarm - clocksource.read(&clocksource)) <= 16) | 85 | if ((signed)(alarm - clocksource.read(&clocksource)) <= MIN_OSCR_DELTA) |
| 84 | return -ETIME; | 86 | return -ETIME; |
| 85 | 87 | ||
| 86 | writel(1, regbase + TIMER_IER_VAL); | 88 | writel(1, regbase + TIMER_IER_VAL); |
| @@ -151,7 +153,7 @@ static void __init vt8500_timer_init(struct device_node *np) | |||
| 151 | pr_err("%s: setup_irq failed for %s\n", __func__, | 153 | pr_err("%s: setup_irq failed for %s\n", __func__, |
| 152 | clockevent.name); | 154 | clockevent.name); |
| 153 | clockevents_config_and_register(&clockevent, VT8500_TIMER_HZ, | 155 | clockevents_config_and_register(&clockevent, VT8500_TIMER_HZ, |
| 154 | 4, 0xf0000000); | 156 | MIN_OSCR_DELTA * 2, 0xf0000000); |
| 155 | } | 157 | } |
| 156 | 158 | ||
| 157 | CLOCKSOURCE_OF_DECLARE(vt8500, "via,vt8500-timer", vt8500_timer_init); | 159 | CLOCKSOURCE_OF_DECLARE(vt8500, "via,vt8500-timer", vt8500_timer_init); |
