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>
This commit is contained in:
Родитель
9ecf37eb7a
Коммит
05ad717c77
|
@ -20,6 +20,7 @@ if RTC_CLASS
|
|||
config RTC_HCTOSYS
|
||||
bool "Set system time from RTC on startup and resume"
|
||||
default y
|
||||
depends on !HAS_PERSISTENT_CLOCK
|
||||
help
|
||||
If you say yes here, the system time (wall clock) will be set using
|
||||
the value read from a specified RTC device. This is useful to avoid
|
||||
|
@ -28,6 +29,7 @@ config RTC_HCTOSYS
|
|||
config RTC_SYSTOHC
|
||||
bool "Set the RTC time based on NTP synchronization"
|
||||
default y
|
||||
depends on !HAS_PERSISTENT_CLOCK
|
||||
help
|
||||
If you say yes here, the system time (wall clock) will be stored
|
||||
in the RTC specified by RTC_HCTOSYS_DEVICE approximately every 11
|
||||
|
|
|
@ -116,10 +116,15 @@ static inline bool timespec_valid_strict(const struct timespec *ts)
|
|||
}
|
||||
|
||||
extern bool persistent_clock_exist;
|
||||
|
||||
#ifdef CONFIG_HAS_PERSISTENT_CLOCK
|
||||
#define has_persistent_clock() true
|
||||
#else
|
||||
static inline bool has_persistent_clock(void)
|
||||
{
|
||||
return persistent_clock_exist;
|
||||
}
|
||||
#endif
|
||||
|
||||
extern void read_persistent_clock(struct timespec *ts);
|
||||
extern void read_boot_clock(struct timespec *ts);
|
||||
|
|
|
@ -12,6 +12,11 @@ config CLOCKSOURCE_WATCHDOG
|
|||
config ARCH_CLOCKSOURCE_DATA
|
||||
bool
|
||||
|
||||
# Platforms has a persistent clock
|
||||
config HAS_PERSISTENT_CLOCK
|
||||
bool
|
||||
default n
|
||||
|
||||
# Timekeeping vsyscall support
|
||||
config GENERIC_TIME_VSYSCALL
|
||||
bool
|
||||
|
|
Загрузка…
Ссылка в новой задаче