Linux RTC
 help / color / mirror / Atom feed
From: Valentin Caron <valentin.caron@foss.st.com>
To: Alessandro Zummo <a.zummo@towertech.it>,
	Alexandre Belloni <alexandre.belloni@bootlin.com>
Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>,
	Antonio Borneo <antonio.borneo@foss.st.com>,
	Christophe Guibout <christophe.guibout@foss.st.com>,
	Gabriel Fernandez <gabriel.fernandez@foss.st.com>,
	<linux-rtc@vger.kernel.org>,
	<linux-stm32@st-md-mailman.stormreply.com>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-kernel@vger.kernel.org>,
	Valentin Caron <valentin.caron@foss.st.com>
Subject: [PATCH 1/7] rtc: stm32: use the proper register sequence to read date/time
Date: Thu, 15 Jun 2023 11:27:47 +0200	[thread overview]
Message-ID: <20230615092753.323844-2-valentin.caron@foss.st.com> (raw)
In-Reply-To: <20230615092753.323844-1-valentin.caron@foss.st.com>

From: Antonio Borneo <antonio.borneo@foss.st.com>

Date and time are read from two separate RTC registers.
To ensure consistency between the two registers, reading the time
register locks the values in the shadow date register until the
date register is read.
Thus, the whole date/time read requires reading the time register
first, followed by reading the date register.
If the reads are done in reversed order, the shadow date register
will remain locked until a future read operation. The future read
will read the former date value that could be already invalid.

Fix the read order of date/time registers in stm32_rtc_valid_alrm()

Signed-off-by: Antonio Borneo <antonio.borneo@foss.st.com>
Signed-off-by: Valentin Caron <valentin.caron@foss.st.com>
---
 drivers/rtc/rtc-stm32.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/rtc/rtc-stm32.c b/drivers/rtc/rtc-stm32.c
index 3d36e11cff80..abb77ad774a1 100644
--- a/drivers/rtc/rtc-stm32.c
+++ b/drivers/rtc/rtc-stm32.c
@@ -429,8 +429,8 @@ static int stm32_rtc_valid_alrm(struct stm32_rtc *rtc, struct rtc_time *tm)
 {
 	const struct stm32_rtc_registers *regs = &rtc->data->regs;
 	int cur_day, cur_mon, cur_year, cur_hour, cur_min, cur_sec;
-	unsigned int dr = readl_relaxed(rtc->base + regs->dr);
 	unsigned int tr = readl_relaxed(rtc->base + regs->tr);
+	unsigned int dr = readl_relaxed(rtc->base + regs->dr);
 
 	cur_day = (dr & STM32_RTC_DR_DATE) >> STM32_RTC_DR_DATE_SHIFT;
 	cur_mon = (dr & STM32_RTC_DR_MONTH) >> STM32_RTC_DR_MONTH_SHIFT;
-- 
2.25.1


  reply	other threads:[~2023-06-15  9:32 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-15  9:27 [PATCH 0/7] rtc: stm32: multiple bug fixes and improvements Valentin Caron
2023-06-15  9:27 ` Valentin Caron [this message]
2023-06-15  9:27 ` [PATCH 2/7] rtc: stm32: don't stop time counter if not needed Valentin Caron
2023-06-15  9:27 ` [PATCH 3/7] rtc: stm32: improve rtc precision Valentin Caron
2023-06-25 23:14   ` Alexandre Belloni
2023-07-05 15:57     ` Valentin CARON
2023-06-15  9:27 ` [PATCH 4/7] rtc: stm32: don't print an error on probe deferral Valentin Caron
2023-06-15  9:27 ` [PATCH 5/7] rtc: stm32: change PM callbacks to "_noirq()" Valentin Caron
2023-06-15  9:27 ` [PATCH 6/7] rtc: stm32: fix unnecessary parentheses Valentin Caron
2023-06-25 23:16   ` Alexandre Belloni
2023-07-05 16:02     ` Valentin CARON
2023-06-15  9:27 ` [PATCH 7/7] rtc: stm32: fix issues of stm32_rtc_valid_alrm function Valentin Caron

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=20230615092753.323844-2-valentin.caron@foss.st.com \
    --to=valentin.caron@foss.st.com \
    --cc=a.zummo@towertech.it \
    --cc=alexandre.belloni@bootlin.com \
    --cc=alexandre.torgue@foss.st.com \
    --cc=antonio.borneo@foss.st.com \
    --cc=christophe.guibout@foss.st.com \
    --cc=gabriel.fernandez@foss.st.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rtc@vger.kernel.org \
    --cc=linux-stm32@st-md-mailman.stormreply.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox