diff --git a/arch/sim/src/sim/up_rtc.c b/arch/sim/src/sim/up_rtc.c index b020bb7266..36c57742f9 100644 --- a/arch/sim/src/sim/up_rtc.c +++ b/arch/sim/src/sim/up_rtc.c @@ -128,6 +128,6 @@ int up_rtc_initialize(void) #ifdef CONFIG_RTC_RPMSG_SERVER rtc = rpmsg_rtc_server_initialize(rtc); #endif - up_rtc_set_lowerhalf(rtc); + up_rtc_set_lowerhalf(rtc, true); return rtc_initialize(0, rtc); } diff --git a/boards/sim/sim/sim/src/sim_bringup.c b/boards/sim/sim/sim/src/sim_bringup.c index d040673729..b497051b3b 100644 --- a/boards/sim/sim/sim/src/sim_bringup.c +++ b/boards/sim/sim/sim/src/sim_bringup.c @@ -450,7 +450,7 @@ int sim_bringup(void) #if defined(CONFIG_RTC_RPMSG) && !defined(CONFIG_RTC_RPMSG_SERVER) rtc = rpmsg_rtc_initialize(); - up_rtc_set_lowerhalf(rtc); + up_rtc_set_lowerhalf(rtc, true); rtc_initialize(0, rtc); #endif diff --git a/drivers/timers/arch_rtc.c b/drivers/timers/arch_rtc.c index 6e1b90f3a1..c6c3cc10ed 100644 --- a/drivers/timers/arch_rtc.c +++ b/drivers/timers/arch_rtc.c @@ -50,13 +50,16 @@ volatile bool g_rtc_enabled = false; * Public Functions ****************************************************************************/ -void up_rtc_set_lowerhalf(FAR struct rtc_lowerhalf_s *lower) +void up_rtc_set_lowerhalf(FAR struct rtc_lowerhalf_s *lower, bool sync) { g_rtc_lower = lower; g_rtc_enabled = true; #ifdef CONFIG_RTC_EXTERNAL - clock_synchronize(); + if (sync) + { + clock_synchronize(); + } #endif } diff --git a/include/nuttx/timers/arch_rtc.h b/include/nuttx/timers/arch_rtc.h index 2a2a803480..e4092bda75 100644 --- a/include/nuttx/timers/arch_rtc.h +++ b/include/nuttx/timers/arch_rtc.h @@ -42,11 +42,11 @@ extern "C" #ifdef CONFIG_RTC_ARCH -void up_rtc_set_lowerhalf(FAR struct rtc_lowerhalf_s *lower); +void up_rtc_set_lowerhalf(FAR struct rtc_lowerhalf_s *lower, bool sync); #else -# define up_rtc_set_lowerhalf(lower) +# define up_rtc_set_lowerhalf(lower, sync) #endif /* CONFIG_RTC_ARCH */