Commit 9c5150b3 authored by Xunlei Pang's avatar Xunlei Pang Committed by Alexandre Belloni
Browse files

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: default avatarXunlei Pang <pang.xunlei@linaro.org>
Signed-off-by: default avatarAlexandre Belloni <alexandre.belloni@free-electrons.com>
parent 9033fd8b
Loading
Loading
Loading
Loading
+20 −9
Original line number Diff line number Diff line
@@ -25,17 +25,9 @@ config RTC_HCTOSYS
	  the value read from a specified RTC device. This is useful to avoid
	  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
	string "RTC used to set the system time"
	depends on RTC_HCTOSYS = y || RTC_SYSTOHC = y
	depends on RTC_HCTOSYS
	default "rtc0"
	help
	  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
	  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
	bool "RTC debug support"
	help
+1 −1
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@ int rtc_set_ntp_time(struct timespec64 now)
	else
		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) {
		/* rtc_hctosys exclusively uses UTC, so we call set_time here,
		 * not set_mmss. */