You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by pk...@apache.org on 2023/11/20 12:28:19 UTC
(nuttx) 03/03: drivers/rtc/rpmsg: Move clock_synchronize rpmsg_rtc_server_settime
This is an automated email from the ASF dual-hosted git repository.
pkarashchenko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit 11b3adf17fd4e252d880bd9f4dcab54e42e990fe
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Sun Nov 19 23:39:47 2023 +0800
drivers/rtc/rpmsg: Move clock_synchronize rpmsg_rtc_server_settime
Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
---
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 d1277172c0..0e94e43a89 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));
}