All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dario Binacchi <dariobin@libero.it>
To: u-boot@lists.denx.de
Cc: Dario Binacchi <dariobin@libero.it>, Lokesh Vutla <lokeshvutla@ti.com>
Subject: [PATCH v2 5/8] rtc: davinci: use unlock/lock mechanism
Date: Wed,  2 Jun 2021 22:38:02 +0200	[thread overview]
Message-ID: <20210602203805.11494-6-dariobin@libero.it> (raw)
In-Reply-To: <20210602203805.11494-1-dariobin@libero.it>

The RTC module contains a kicker mechanism to prevent any spurious
writes from changing the register values. To set the time, you must
first unlock the TC registers, update them and then lock.

Signed-off-by: Dario Binacchi <dariobin@libero.it>
---

(no changes since v1)

 drivers/rtc/davinci.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/drivers/rtc/davinci.c b/drivers/rtc/davinci.c
index 7b8c729f3b..82e5eb3b43 100644
--- a/drivers/rtc/davinci.c
+++ b/drivers/rtc/davinci.c
@@ -16,6 +16,18 @@
 #define RTC_BASE DAVINCI_RTC_BASE
 #endif
 
+static void davinci_rtc_lock(struct davinci_rtc *rtc)
+{
+	writel(0, &rtc->kick0r);
+	writel(0, &rtc->kick1r);
+}
+
+static void davinci_rtc_unlock(struct davinci_rtc *rtc)
+{
+	writel(RTC_KICK0R_WE, &rtc->kick0r);
+	writel(RTC_KICK1R_WE, &rtc->kick1r);
+}
+
 static int davinci_rtc_wait_not_busy(struct davinci_rtc *rtc)
 {
 	int count;
@@ -89,6 +101,7 @@ int rtc_set(struct rtc_time *tmp)
 	if (ret)
 		return ret;
 
+	davinci_rtc_unlock(rtc);
 	writeb(bin2bcd(tmp->tm_year % 100), &rtc->year);
 	writeb(bin2bcd(tmp->tm_mon), &rtc->month);
 
@@ -97,6 +110,7 @@ int rtc_set(struct rtc_time *tmp)
 	writeb(bin2bcd(tmp->tm_hour), &rtc->hours);
 	writeb(bin2bcd(tmp->tm_min), &rtc->minutes);
 	writeb(bin2bcd(tmp->tm_sec), &rtc->second);
+	davinci_rtc_lock(rtc);
 
 	debug("Set DATE: %4d-%02d-%02d (wday=%d)  TIME: %2d:%02d:%02d\n",
 	      tmp->tm_year, tmp->tm_mon, tmp->tm_mday, tmp->tm_wday,
-- 
2.17.1


  parent reply	other threads:[~2021-06-02 20:39 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-02 20:37 [PATCH v2 0/8] rtc: davinci: add driver model support Dario Binacchi
2021-06-02 20:37 ` [PATCH v2 1/8] rtc: davinci: enable compilation for omap architectures Dario Binacchi
2021-06-02 20:37 ` [PATCH v2 2/8] rtc: davinci: fix compiler errors Dario Binacchi
2021-06-02 20:38 ` [PATCH v2 3/8] rtc: davinci: replace 32bit access with 8bit access Dario Binacchi
2021-06-02 20:38 ` [PATCH v2 4/8] rtc: davinci: check BUSY bit before set TC registers Dario Binacchi
2021-06-02 20:38 ` Dario Binacchi [this message]
2021-06-02 20:38 ` [PATCH v2 6/8] arm: dts: sync rtc node of am335x boards with Linux 5.9-rc7 Dario Binacchi
2021-06-02 20:38 ` [PATCH v2 7/8] rtc: davinci: add driver model support Dario Binacchi
2021-06-02 20:38 ` [PATCH v2 8/8] rtc: davinci: fix date loaded on reset Dario Binacchi
2021-06-09 16:55 ` [PATCH v2 0/8] rtc: davinci: add driver model support Lokesh Vutla

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210602203805.11494-6-dariobin@libero.it \
    --to=dariobin@libero.it \
    --cc=lokeshvutla@ti.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.