timecounter: provide a helper function to shift the time.
authorRichard Cochran <richardcochran@gmail.com>
Sun, 21 Dec 2014 18:46:57 +0000 (19:46 +0100)
committerDavid S. Miller <davem@davemloft.net>
Tue, 30 Dec 2014 23:29:25 +0000 (18:29 -0500)
Some PTP Hardware Clock drivers use a struct timecounter to represent
their clock. To adjust the time by a given offset, these drivers all
perform a two step read/write of their timecounter. However, it is
better and simpler just to adjust the offset in one step. This patch
introduces a little routine to help drivers implement the adjtime
method.

Suggested-by: Janusz Użycki <j.uzycki@elproma.com.pl>
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/timecounter.h

index 146f07a..af3dfa4 100644 (file)
@@ -78,6 +78,15 @@ static inline u64 cyclecounter_cyc2ns(const struct cyclecounter *cc,
        return ret;
 }
 
+/**
+ * timecounter_adjtime - Shifts the time of the clock.
+ * @delta:     Desired change in nanoseconds.
+ */
+static inline void timecounter_adjtime(struct timecounter *tc, s64 delta)
+{
+       tc->nsec += delta;
+}
+
 /**
  * timecounter_init - initialize a time counter
  * @tc:                        Pointer to time counter which is to be initialized/reset