aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFeng Tang <feng.tang@intel.com>2013-01-15 11:09:49 -0500
committerJohn Stultz <john.stultz@linaro.org>2013-01-15 21:16:08 -0500
commit05ad717c77b1b8e98a1dd768c3700036d634629e (patch)
treec52d75ca925bcd9b4c7125aad4c1059d7d3a43ee
parent9ecf37eb7a81e3295a1b274eafb6f83d7d2cabf0 (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/Kconfig2
-rw-r--r--include/linux/time.h5
-rw-r--r--kernel/time/Kconfig5
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
20config RTC_HCTOSYS 20config 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
28config RTC_SYSTOHC 29config 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
118extern bool persistent_clock_exist; 118extern bool persistent_clock_exist;
119
120#ifdef CONFIG_HAS_PERSISTENT_CLOCK
121#define has_persistent_clock() true
122#else
119static inline bool has_persistent_clock(void) 123static inline bool has_persistent_clock(void)
120{ 124{
121 return persistent_clock_exist; 125 return persistent_clock_exist;
122} 126}
127#endif
123 128
124extern void read_persistent_clock(struct timespec *ts); 129extern void read_persistent_clock(struct timespec *ts);
125extern void read_boot_clock(struct timespec *ts); 130extern 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
12config ARCH_CLOCKSOURCE_DATA 12config ARCH_CLOCKSOURCE_DATA
13 bool 13 bool
14 14
15# Platforms has a persistent clock
16config HAS_PERSISTENT_CLOCK
17 bool
18 default n
19
15# Timekeeping vsyscall support 20# Timekeeping vsyscall support
16config GENERIC_TIME_VSYSCALL 21config GENERIC_TIME_VSYSCALL
17 bool 22 bool