From: Valentin Caron <valentin.caron@foss.st.com>
To: Alexandre Belloni <alexandre.belloni@bootlin.com>,
Alessandro Zummo <a.zummo@towertech.it>
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 v2 1/7] rtc: stm32: use the proper register sequence to read date/time
Date: Wed, 5 Jul 2023 19:43:51 +0200 [thread overview]
Message-ID: <20230705174357.353616-2-valentin.caron@foss.st.com> (raw)
In-Reply-To: <20230705174357.353616-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
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2023-07-05 17:44 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-05 17:43 [PATCH v2 0/7] rtc: stm32: multiple bug fixes and improvements Valentin Caron
2023-07-05 17:43 ` Valentin Caron [this message]
2023-07-05 17:43 ` [PATCH v2 2/7] rtc: stm32: don't stop time counter if not needed Valentin Caron
2023-07-05 17:43 ` [PATCH v2 3/7] rtc: stm32: improve rtc precision Valentin Caron
2023-07-05 17:43 ` [PATCH v2 4/7] rtc: stm32: don't print an error on probe deferral Valentin Caron
2023-07-05 17:43 ` [PATCH v2 5/7] rtc: stm32: change PM callbacks to "_noirq()" Valentin Caron
2023-07-05 17:43 ` [PATCH v2 6/7] rtc: stm32: fix issues of stm32_rtc_valid_alrm function Valentin Caron
2023-07-05 17:43 ` [PATCH v2 7/7] rtc: stm32: fix unnecessary parentheses Valentin Caron
2023-07-27 21:04 ` [PATCH v2 0/7] rtc: stm32: multiple bug fixes and improvements Alexandre Belloni
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=20230705174357.353616-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;
as well as URLs for NNTP newsgroup(s).