diff options
author | Feng Tang <feng.tang@intel.com> | 2013-01-15 11:09:49 -0500 |
---|---|---|
committer | John Stultz <john.stultz@linaro.org> | 2013-01-15 21:16:08 -0500 |
commit | 05ad717c77b1b8e98a1dd768c3700036d634629e (patch) | |
tree | c52d75ca925bcd9b4c7125aad4c1059d7d3a43ee | |
parent | 9ecf37eb7a81e3295a1b274eafb6f83d7d2cabf0 (diff) |
timekeeping: Add CONFIG_HAS_PERSISTENT_CLOCK option
Make the persistent clock check a kernel config option, so that some
platform can explicitely select it, also make CONFIG_RTC_HCTOSYS and
RTC_SYSTOHC depend on its non-existence, which could prevent the
persistent clock and RTC code from doing similar thing twice during
system's init/suspend/resume phases.
If the CONFIG_HAS_PERSISTENT_CLOCK=n, then no change happens for kernel
which still does the persistent clock check in timekeeping_init().
Cc: Thomas Gleixner <tglx@linutronix.de>
Suggested-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Feng Tang <feng.tang@intel.com>
[jstultz: Added dependency for RTC_SYSTOHC as well]
Signed-off-by: John Stultz <john.stultz@linaro.org>
-rw-r--r-- | drivers/rtc/Kconfig | 2 | ||||
-rw-r--r-- | include/linux/time.h | 5 | ||||
-rw-r--r-- | kernel/time/Kconfig | 5 |
3 files changed, 12 insertions, 0 deletions
diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig index b377e9672497..05761de7929b 100644 --- a/drivers/rtc/Kconfig +++ b/drivers/rtc/Kconfig | |||
@@ -20,6 +20,7 @@ if RTC_CLASS | |||
20 | config RTC_HCTOSYS | 20 | config RTC_HCTOSYS |
21 | bool "Set system time from RTC on startup and resume" | 21 | bool "Set system time from RTC on startup and resume" |
22 | default y | 22 | default y |
23 | depends on !HAS_PERSISTENT_CLOCK | ||
23 | help | 24 | help |
24 | If you say yes here, the system time (wall clock) will be set using | 25 | If you say yes here, the system time (wall clock) will be set using |
25 | the value read from a specified RTC device. This is useful to avoid | 26 | the value read from a specified RTC device. This is useful to avoid |
@@ -28,6 +29,7 @@ config RTC_HCTOSYS | |||
28 | config RTC_SYSTOHC | 29 | config RTC_SYSTOHC |
29 | bool "Set the RTC time based on NTP synchronization" | 30 | bool "Set the RTC time based on NTP synchronization" |
30 | default y | 31 | default y |
32 | depends on !HAS_PERSISTENT_CLOCK | ||
31 | help | 33 | help |
32 | If you say yes here, the system time (wall clock) will be stored | 34 | If you say yes here, the system time (wall clock) will be stored |
33 | in the RTC specified by RTC_HCTOSYS_DEVICE approximately every 11 | 35 | in the RTC specified by RTC_HCTOSYS_DEVICE approximately every 11 |
diff --git a/include/linux/time.h b/include/linux/time.h index dfbc4e82e8ba..369b6e3b87d8 100644 --- a/include/linux/time.h +++ b/include/linux/time.h | |||
@@ -116,10 +116,15 @@ static inline bool timespec_valid_strict(const struct timespec *ts) | |||
116 | } | 116 | } |
117 | 117 | ||
118 | extern bool persistent_clock_exist; | 118 | extern bool persistent_clock_exist; |
119 | |||
120 | #ifdef CONFIG_HAS_PERSISTENT_CLOCK | ||
121 | #define has_persistent_clock() true | ||
122 | #else | ||
119 | static inline bool has_persistent_clock(void) | 123 | static inline bool has_persistent_clock(void) |
120 | { | 124 | { |
121 | return persistent_clock_exist; | 125 | return persistent_clock_exist; |
122 | } | 126 | } |
127 | #endif | ||
123 | 128 | ||
124 | extern void read_persistent_clock(struct timespec *ts); | 129 | extern void read_persistent_clock(struct timespec *ts); |
125 | extern void read_boot_clock(struct timespec *ts); | 130 | extern void read_boot_clock(struct timespec *ts); |
diff --git a/kernel/time/Kconfig b/kernel/time/Kconfig index 8601f0db1261..f7e45b9b142b 100644 --- a/kernel/time/Kconfig +++ b/kernel/time/Kconfig | |||
@@ -12,6 +12,11 @@ config CLOCKSOURCE_WATCHDOG | |||
12 | config ARCH_CLOCKSOURCE_DATA | 12 | config ARCH_CLOCKSOURCE_DATA |
13 | bool | 13 | bool |
14 | 14 | ||
15 | # Platforms has a persistent clock | ||
16 | config HAS_PERSISTENT_CLOCK | ||
17 | bool | ||
18 | default n | ||
19 | |||
15 | # Timekeeping vsyscall support | 20 | # Timekeeping vsyscall support |
16 | config GENERIC_TIME_VSYSCALL | 21 | config GENERIC_TIME_VSYSCALL |
17 | bool | 22 | bool |