|
@@ -308,7 +308,7 @@ static irqreturn_t sh_cmt_interrupt(int irq, void *dev_id)
|
|
|
* isr before we end up here.
|
|
|
*/
|
|
|
if (p->flags & FLAG_CLOCKSOURCE)
|
|
|
- p->total_cycles += p->match_value;
|
|
|
+ p->total_cycles += p->match_value + 1;
|
|
|
|
|
|
if (!(p->flags & FLAG_REPROGRAM))
|
|
|
p->next_match_value = p->max_match_value;
|
|
@@ -403,7 +403,7 @@ static cycle_t sh_cmt_clocksource_read(struct clocksource *cs)
|
|
|
raw = sh_cmt_get_counter(p, &has_wrapped);
|
|
|
|
|
|
if (unlikely(has_wrapped))
|
|
|
- raw += p->match_value;
|
|
|
+ raw += p->match_value + 1;
|
|
|
spin_unlock_irqrestore(&p->lock, flags);
|
|
|
|
|
|
return value + raw;
|
|
@@ -478,7 +478,7 @@ static void sh_cmt_clock_event_start(struct sh_cmt_priv *p, int periodic)
|
|
|
ced->min_delta_ns = clockevent_delta2ns(0x1f, ced);
|
|
|
|
|
|
if (periodic)
|
|
|
- sh_cmt_set_next(p, (p->rate + HZ/2) / HZ);
|
|
|
+ sh_cmt_set_next(p, ((p->rate + HZ/2) / HZ) - 1);
|
|
|
else
|
|
|
sh_cmt_set_next(p, p->max_match_value);
|
|
|
}
|
|
@@ -523,9 +523,9 @@ static int sh_cmt_clock_event_next(unsigned long delta,
|
|
|
|
|
|
BUG_ON(ced->mode != CLOCK_EVT_MODE_ONESHOT);
|
|
|
if (likely(p->flags & FLAG_IRQCONTEXT))
|
|
|
- p->next_match_value = delta;
|
|
|
+ p->next_match_value = delta - 1;
|
|
|
else
|
|
|
- sh_cmt_set_next(p, delta);
|
|
|
+ sh_cmt_set_next(p, delta - 1);
|
|
|
|
|
|
return 0;
|
|
|
}
|