1
0
Fork 0

rtc: NTP: Add CONFIG_RTC_SYSTOHC_DEVICE for NTP synchronization

Currently, CONFIG_RTC_SYSTOHC uses CONFIG_RTC_HCTOSYS_DEVICE which
is originally used by CONFIG_RTC_HCTOSYS, but this rtc device has
some limiations, for example, it must be battery-backed, be able
to work with irq off and through system suspension, etc.

So add CONFIG_RTC_SYSTOHC_DEVICE used exclusively for CONFIG_RTC_SYSTOHC,
it is more lenient compared to CONFIG_RTC_HCTOSYS_DEVICE, and could
be assigned any available RTC in the system.

Default value is CONFIG_RTC_HCTOSYS_DEVICE which is "rtc0" by default.
After this patch, NTP will sync up "rtc0" by default.

Cc: Paul Bolle <pebolle@tiscali.nl>
Signed-off-by: Xunlei Pang <pang.xunlei@linaro.org>
Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
steinar/wifi_calib_4_9_kernel
Xunlei Pang 2015-06-12 11:10:16 +08:00 committed by Alexandre Belloni
parent 9033fd8ba7
commit 9c5150b31b
2 changed files with 21 additions and 10 deletions

View File

@ -25,17 +25,9 @@ config RTC_HCTOSYS
the value read from a specified RTC device. This is useful to avoid the value read from a specified RTC device. This is useful to avoid
unnecessary fsck runs at boot time, and to network better. unnecessary fsck runs at boot time, and to network better.
config RTC_SYSTOHC
bool "Set the RTC time based on NTP synchronization"
default y
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
minutes if userspace reports synchronized NTP status.
config RTC_HCTOSYS_DEVICE config RTC_HCTOSYS_DEVICE
string "RTC used to set the system time" string "RTC used to set the system time"
depends on RTC_HCTOSYS = y || RTC_SYSTOHC = y depends on RTC_HCTOSYS
default "rtc0" default "rtc0"
help help
The RTC device that will be used to (re)initialize the system The RTC device that will be used to (re)initialize the system
@ -56,6 +48,25 @@ config RTC_HCTOSYS_DEVICE
sleep states. Do not specify an RTC here unless it stays powered sleep states. Do not specify an RTC here unless it stays powered
during all this system's supported sleep states. during all this system's supported sleep states.
config RTC_SYSTOHC
bool "Set the RTC time based on NTP synchronization"
default y
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
minutes if userspace reports synchronized NTP status.
config RTC_SYSTOHC_DEVICE
string "RTC used to synchronize NTP adjustment"
depends on RTC_SYSTOHC
default RTC_HCTOSYS_DEVICE if RTC_HCTOSYS
default "rtc0"
help
The RTC device used for NTP synchronization. The main difference
between RTC_HCTOSYS_DEVICE and RTC_SYSTOHC_DEVICE is that this
one can sleep when setting time, because it runs in the workqueue
context.
config RTC_DEBUG config RTC_DEBUG
bool "RTC debug support" bool "RTC debug support"
help help

View File

@ -31,7 +31,7 @@ int rtc_set_ntp_time(struct timespec64 now)
else else
rtc_time64_to_tm(now.tv_sec + 1, &tm); rtc_time64_to_tm(now.tv_sec + 1, &tm);
rtc = rtc_class_open(CONFIG_RTC_HCTOSYS_DEVICE); rtc = rtc_class_open(CONFIG_RTC_SYSTOHC_DEVICE);
if (rtc) { if (rtc) {
/* rtc_hctosys exclusively uses UTC, so we call set_time here, /* rtc_hctosys exclusively uses UTC, so we call set_time here,
* not set_mmss. */ * not set_mmss. */