From 11b3adf17fd4e252d880bd9f4dcab54e42e990fe Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Sun, 19 Nov 2023 23:39:47 +0800 Subject: [PATCH] drivers/rtc/rpmsg: Move clock_synchronize rpmsg_rtc_server_settime Signed-off-by: Xiang Xiao --- drivers/timers/rpmsg_rtc.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/drivers/timers/rpmsg_rtc.c b/drivers/timers/rpmsg_rtc.c index d1277172c0e..0e94e43a89c 100644 --- a/drivers/timers/rpmsg_rtc.c +++ b/drivers/timers/rpmsg_rtc.c @@ -472,10 +472,22 @@ static int rpmsg_rtc_server_settime(FAR struct rtc_lowerhalf_s *lower, ret = server->lower->ops->settime(server->lower, rtctime); if (ret >= 0) { - nxmutex_lock(&server->lock); msg.sec = timegm((FAR struct tm *)rtctime); msg.nsec = rtctime->tm_nsec; msg.header.command = RPMSG_RTC_SYNC; + + if (ret == 0) + { + struct timespec tp; + + tp.tv_sec = msg.sec; + tp.tv_nsec = msg.nsec; + clock_synchronize(&tp); + + ret = 1; /* Request the upper half skip clock synchronize */ + } + + nxmutex_lock(&server->lock); list_for_every(&server->list, node) { client = (FAR struct rpmsg_rtc_client_s *)node; @@ -649,16 +661,6 @@ static int rpmsg_rtc_server_ept_cb(FAR struct rpmsg_endpoint *ept, rtctime.tm_nsec = msg->nsec; header->result = rpmsg_rtc_server_settime(priv, &rtctime); - if (header->result >= 0) - { - struct timespec tp; - - tp.tv_sec = msg->sec; - tp.tv_nsec = msg->nsec; - - clock_synchronize(&tp); - } - return rpmsg_send(ept, msg, sizeof(*msg)); }