tile/time: Set ->min_delta_ticks and ->max_delta_ticks
authorNicolai Stange <nicstange@gmail.com>
Thu, 30 Mar 2017 19:57:43 +0000 (21:57 +0200)
committerJohn Stultz <john.stultz@linaro.org>
Fri, 14 Apr 2017 20:11:21 +0000 (13:11 -0700)
In preparation for making the clockevents core NTP correction aware,
all clockevent device drivers must set ->min_delta_ticks and
->max_delta_ticks rather than ->min_delta_ns and ->max_delta_ns: a
clockevent device's rate is going to change dynamically and thus, the
ratio of ns to ticks ceases to stay invariant.

Currently, the tile's timer clockevent device is initialized as follows:

  evt->max_delta_ns = clockevent_delta2ns(MAX_TICK, evt);

and

  .min_delta_ns = 1000,

The first one translates to a ->max_delta_ticks value of MAX_TICK.
For the latter, note that the clockevent core will superimpose a
minimum of 1us by itself -- setting ->min_delta_ticks to 1 is safe here.

Initialize ->min_delta_ticks and ->max_delta_ticks with these values.

This patch alone doesn't introduce any change in functionality as the
clockevents core still looks exclusively at the (untouched) ->min_delta_ns
and ->max_delta_ns. As soon as this has changed, a followup patch will
purge the initialization of ->min_delta_ns and ->max_delta_ns from this
driver.

Cc: Ingo Molnar <mingo@redhat.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: Richard Cochran <richardcochran@gmail.com>
Cc: Prarit Bhargava <prarit@redhat.com>
Cc: Stephen Boyd <sboyd@codeaurora.org>
Cc: Chris Metcalf <cmetcalf@mellanox.com>
Signed-off-by: Nicolai Stange <nicstange@gmail.com>
Signed-off-by: John Stultz <john.stultz@linaro.org>
arch/tile/kernel/time.c

index 5bd4e88c7c604a3e2f6c7d4286723544da3aaea6..6643ffbc06155cfa0336c4648e82e584dabf4a22 100644 (file)
@@ -155,6 +155,8 @@ static DEFINE_PER_CPU(struct clock_event_device, tile_timer) = {
        .name = "tile timer",
        .features = CLOCK_EVT_FEAT_ONESHOT,
        .min_delta_ns = 1000,
+       .min_delta_ticks = 1,
+       .max_delta_ticks = MAX_TICK,
        .rating = 100,
        .irq = -1,
        .set_next_event = tile_timer_set_next_event,